hughfdjackson / persistent-hash-trie

Pure string:val storage, using structural sharing
19 stars 3 forks source link

Running out of stack space in ie10 (and possibly below) #22

Open hughfdjackson opened 11 years ago

hughfdjackson commented 11 years ago

According to immutable's tests on reduce-based object iteration, ie10 (and possibly others) are failing due to growing stack space:

Acceptance:

1..76
ok 1 im.array freezes arrays on creation if available
ok 2 im.array .immutable should be set to true
ok 3 im.array .assoc should allow a new version to be made with added properties
ok 4 im.array .assoc should return an im.array
ok 5 im.array .assoc shouldn't copy over properties on the prototype
ok 6 im.array .length should get updated to be the largest int + 1
ok 7 im.array .mutable should return an array with all properties copied
ok 8 im.array .mutable should represent gaps with missing data
ok 9 im.array .toJSON should be an alias for .mutable
ok 10 im.array .map should create an immutable object with updated values
ok 11 im.array .map should pass val, key, array
ok 12 im.array .forEach should pass val, key, array, but return nothing
ok 13 im.array .every should return false if the predicate does once
ok 14 im.array .every should return true if predicate always is satisfied
ok 15 im.array .every should pass val, key, array
ok 16 im.array .some should return true if the predicate does once
ok 17 im.array .some should return false if predicate never is satisfied
ok 18 im.array .some should pass val, key, array
ok 19 im.array .filter should filter a collection
ok 20 im.array .filter should pass val, key, array
ok 21 im.array .reduce should reduce over collection in left to right order
ok 22 im.array .reduce should use first item as seed if none passed
ok 23 im.array .reduceRight should reduce over collection in right to left order
ok 24 im.array .reduceRight should use first item as seed if none passed
ok 25 im.array .equal should return false if the value is not an immutable object
ok 26 im.array .equal should equal itself
ok 27 im.array .equal should make two empty objects equal
ok 28 im.array .equal should return false for two structurally different objects
ok 29 im.array .equal should return true for two structurally equal objects
ok 30 im.array .equal should return false for two different mutable objects as properties
ok 31 im.array .equal should recurse with equal
ok 32 im.array .push should add on a new array member at the end
ok 33 im.array .indexOf should return the indexOf an element found with .equal
ok 34 im.array .indexOf should return the indexOf an element with ===
ok 35 im.array .indexOf should return -1 for not found (ugh - it is standard though)
ok 36 im.array .indexOf should return the first index
ok 37 immutable should export API
ok 38 im.object has the right constructor
ok 39 im.object freezes object on creation if Object.freeze is available
ok 40 im.object creation should be a newless constructor
ok 41 im.object creation creates an empty object if no props are passed
ok 42 im.object creation creates an object with props passed in
ok 43 im.object creation shouldn't copy over properties on the prototype
ok 44 im.object .immutable should be set to true
ok 45 im.object .assoc returns a new immutable object with props updated
ok 46 im.object .dissoc returns a new immutable object with props removed
ok 47 im.object .get should return a value of a stored property, or else undefined
ok 48 im.object .has should return true or false, indicating whether a property exists on the prop
ok 49 im.object .mutable should return a mutable version of the immutable object
ok 50 im.object .toJSON should be an alias for mutable
not ok 51 im.object .map should create an immutable object with updated values
  Error: Out of stack space
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:3613:5)
     at emit (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:522:7)
     at fail (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4250:3)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4454:11)
     at runTest (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4406:5)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4450:7)
     at next (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4330:7)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4339:7)
     at next (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4287:16)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4307:5)
not ok 52 im.object .forEach should pass val, key, object, but return nothing
  Error: Out of stack space
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:3613:5)
     at emit (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:522:7)
     at fail (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4250:3)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4454:11)
     at runTest (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4406:5)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4450:7)
     at next (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4330:7)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4339:7)
     at next (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4287:16)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4307:5)
not ok 53 im.object .every should return false if the predicate does once
  Error: Out of stack space
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:3613:5)
     at emit (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:522:7)
     at fail (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4250:3)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4454:11)
     at runTest (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4406:5)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4450:7)
     at next (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4330:7)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4339:7)
     at next (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4287:16)
     at Anonymous function (http://git.testling.com/work/hughfdjackson/repos/9fc9c87b451aee69f8784a47d4fa62aead12c5ff.1371762090890/node_modules/mocha/mocha.js:4307:5)
ok 54 im.object .some should return true if the predicate does once