Skip to content

Instantly share code, notes, and snippets.

/*
Strong implementation must check that key is object,
hide weakMapN_ from enumeration, make it externally readonly and non deletable(Object.defineProperty, if presents),
but its bad for performance.
*/
(function($G)
{
var nextStoreKeyId = 0;
// http://en.wikipedia.org/wiki/Fast_inverse_square_root
/*
Discovering old well known algorithm speed in js.
*/
/*
Update 1
Added 3rd variant - 1st with removed <y> varable. Hm, it really become more faster. Thanks Andrea!
*/
/*
This test detects if engine cache bytecode or not.
*/
var _main = function()
{
var bigCode = String(_main);
bigCode = bigCode.slice(bigCode.indexOf('{') + 1, bigCode.lastIndexOf('}'));
bigCode = new Array(11).join(bigCode); // *= 10 to make really big code
enum ValueType
{
NULL,
UNDEFINED,
NUMBER_INT,
NUMBER_DOUBLE,
STRING,
String String::slice(Int begin, Int end)
{
String a;
// calculate real begin and end
a.begin = buffer->begin + begin;
a.length = end - begin;
a.buffer = buffer;
buffer->refCount++;
Const Value& HashTable::_lookup(Const String& key)
{
int hash = _hash(key);
int p = hash%entriesCount;
while(entries[p].hash == hash && p < entriesCount)
{
if(_stringCompare(entries[p].key, key))
return entries[p].value;
struct HashTable // Open addressing Hash Table with linear probing
{
int entriesCount;
int id;
HashTableEntry entries[0];
};
void HashTable::_set(Const String key, Value& value)
{
// if key is new
Object.prototype.__defineGetter__ = function(name, _fn)
{
var self = this;
var _wrapper = function()
{
return _fn.call(self);
};
this[name] =
{
(function($G)
{
var defaultThis = (function(){ return this; })();
var Vector = function(x, y, z)
{
// cast
if(this === defaultThis)
{
return Vector.prototype._calc(x);

Lazy evaluation

Goals

  • Provide easy transparent lazy evaluation pattern with memorization for values itself(not object properties)

Examples

` var _fn = function(a, b, c) { var d = new Evaluator(