c763de6a2fde3ef9741a4960574ebe72f4af1b81: Bug 645416, part 25 - Add support for enumerating symbol-keyed properties. r=Waldo.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:57:03 -0500 - rev 190292
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 25 - Add support for enumerating symbol-keyed properties. r=Waldo. Object.keys, Object.getOwnPropertyNames, and for-in loops skip symbol-keyed properties per spec, but Object.defineProperties sees them, and a future Reflect.ownKeys API will need to be able to see them. This patch changes the comments on JSITER_FOREACH and JSITER_KEYVALUE, but not the behavior. The comments were just wrong.
22f03ec25fcc1b3ceea0e77569748d38adb48132: Bug 645416, part 24 - Modify proxy tests to add testing for symbol-keyed properties. r=efaust.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:57:02 -0500 - rev 190291
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 24 - Modify proxy tests to add testing for symbol-keyed properties. r=efaust. This patch also updates legacy direct proxies to cope with symbols. Uniform behavior seems like the easiest thing to carry forward.
3e98ff68c3ddba725492b260bb82d32cd33cb086: Bug 645416, part 23 - Implement ValueToId for symbols. This makes symbols work as property keys. r=efaust.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:57:02 -0500 - rev 190290
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 23 - Implement ValueToId for symbols. This makes symbols work as property keys. r=efaust.
828bbf42999554ce67dbebcd968885d8c0a75af5: Bug 645416, part 22 - Remove JSCompartment::wrapId. r=terrence.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:57:02 -0500 - rev 190289
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 22 - Remove JSCompartment::wrapId. r=terrence. This is unnecessary now that object jsids no longer exist. Both string and symbol jsids point only to GC things in the atoms compartment, which are safe to pass to any compartment without wrapping.
fdcaf5436d38fa38c7d1ad10b6b03485ab425b54: Bug 645416, part 21 - Add symbol jsids (SYMBOL_TO_JSID), removing the legacy support for object jsids (OBJECT_TO_JSID). r=terrence,r=jimb,r=efaust.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:52 -0500 - rev 190288
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 21 - Add symbol jsids (SYMBOL_TO_JSID), removing the legacy support for object jsids (OBJECT_TO_JSID). r=terrence,r=jimb,r=efaust. With just this patch, there are not actually any symbol jsids flowing through the system, just as there are not actually any object jsids. But a subsequent patch (part 23) changes this. This patch deletes some code in CTypes.cpp that is simply confused about how element accesses work: Int64 and UInt64 objects were never actually converted to object jsids, so the code being removed here was already dead code.
81bd2529fa18cb4f41afcc286ece3491b8aef8f5: Bug 645416, part 20 - Add JS::Symbol::dump() method for debugging. r=efaust.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:52 -0500 - rev 190287
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 20 - Add JS::Symbol::dump() method for debugging. r=efaust.
7513cafd84cd6893742f83bdb94b81dfffeec7f3: Bug 645416, part 19 - Update assertDeepEq for symbols. r=till.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:51 -0500 - rev 190286
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 19 - Update assertDeepEq for symbols. r=till. The contract of assertDeepEq(a, b) is that the assertion passes iff a and b have the isomorphic heap graphs. Symbols, like objects, are treated as nodes in this graph. So, for example, if a and b are distinct symbols, then [a, b] is not deepEq to [b, b] because they have distinct graphs. There are three nodes in [a, b]: the array, a, and b. There are only two nodes in [b, b]: the array, and b.
7b12b5a75bb42fccfe9a80fdc1d3257ccf5fc90f: Bug 645416, part 18 - Update ValueToSource for symbols. r=sfink.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:51 -0500 - rev 190285
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 18 - Update ValueToSource for symbols. r=sfink.
1870f6bc071b1a8cbc1386c6534aa2b81316df16: Bug 645416, part 17 - Implement ToPrimitive on Symbol wrapper objects. r=sfink.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:51 -0500 - rev 190284
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 17 - Implement ToPrimitive on Symbol wrapper objects. r=sfink. The spec defines this by way of a @@toPrimitive method. We fake it using a JSClass::convert hook. (Once @@toPrimitive is implemented, convert hooks can be removed entirely, but we need symbols first.)
db9d35e7c4fd4665c7f508239bb4e0103561a866: Bug 645416, part 16 - Implement Symbol.prototype.valueOf. r=sfink.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:51 -0500 - rev 190283
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 16 - Implement Symbol.prototype.valueOf. r=sfink.
4ad5047763c05acfd90ce97c0d07ad6380f15efe: Bug 645417, part 15 - Tests for ToObject on symbols. r=sfink.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:51 -0500 - rev 190282
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645417, part 15 - Tests for ToObject on symbols. r=sfink. The test as-base-value.js is not testing symbols as property keys (which is implemented in a later patch), but on the other side of the . operator: as things that can have property accesses done to them, just like you can do "name".length or (3.14).toString().
fa33d2ea3793de423336b9c5413981da7f14c604: Bug 645416, part 14 - Update ToString for symbols. r=sfink.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:50 -0500 - rev 190281
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 14 - Update ToString for symbols. r=sfink. The change in jit-test/tests/symbol/toString.js is that we now check that an exception is actually thrown. Until this patch, stringifying a symbol did not throw. (The test was mainly checking that we did not assert in Ion.) No changes in Ion. If a symbol is being stringified, it's ok to be in a slow path because that is going to throw anyway.
3140892419ab448be0b6aaafbb7788630e464d49: Bug 645416, part 13 - Update ToNumber for symbols. r=sfink.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:50 -0500 - rev 190280
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 13 - Update ToNumber for symbols. r=sfink. Not terribly interesting; converting a symbol to a number always produces NaN.
7171929b009012887c01b97d99766fe09a26029d: Bug 645416, part 12 - Update ToBoolean for symbols. r=sfink.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:50 -0500 - rev 190279
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 12 - Update ToBoolean for symbols. r=sfink.
edcb8617d09fe1f1eec5749e3c4e2912688fe49f: Bug 645416, part 11 - Update GDB pretty-printers for symbols. r=jimb.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:50 -0500 - rev 190278
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 11 - Update GDB pretty-printers for symbols. r=jimb.
d8e2600e9aa3abe063ef443781f13586f023687f: Bug 645417, part 10 - Well-known symbols. r=terrence,r=efaust.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:49 -0500 - rev 190277
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645417, part 10 - Well-known symbols. r=terrence,r=efaust. At present there is only one, Symbol.iterator, and it is not hooked up to anything (this happens in bug 918828). ES6 defines 8 well-known symbols. Each one is attached to a feature, so we'll add the symbols as we add features. Symbol.create will appear when @@create semantics are implemented.
82afa573b28538462fef8d78c06e3fbd39033d5a: Bug 645416, part 9 - Implement the symbol registry and Symbol.for(). r=terrence,r=efaust.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:49 -0500 - rev 190276
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 9 - Implement the symbol registry and Symbol.for(). r=terrence,r=efaust.
0513197d722ecddd0b7a3f3a8a4caa7b6bc9f39f: Bug 645416, part 8 - Support passing symbols across compartment boundaries. r=terrence.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:49 -0500 - rev 190275
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 8 - Support passing symbols across compartment boundaries. r=terrence. Trivial. Since symbols are always allocated in the atoms compartment and all compartments are allowed to have direct references to them, Compartment::wrap on a symbol is a no-op.
cdf258b25a12c688a7821f6351dd06ea6d99b93f: Bug 645416, part 7 - Support symbols as Map keys. r=terrence.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:48 -0500 - rev 190274
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 7 - Support symbols as Map keys. r=terrence.
e08a6942e21cbd09bd9a976f76115386e4b48fb9: Bug 645416, part 6 - JIT support for symbol values. r=jandem.
Jason Orendorff <jorendorff@mozilla.com> - Mon, 23 Jun 2014 10:56:18 -0500 - rev 190273
Push 27004 by emorley@mozilla.com at Tue, 24 Jun 2014 15:52:34 +0000
Bug 645416, part 6 - JIT support for symbol values. r=jandem. Symbols are not yet supported as property keys at this point in the stack. The work here is to pass symbol pointers around in Ion JIT code unboxed. The baseline compiler doesn't need much new code. A few kinds of ICs need to know all the primitive types.
(0) -100000 -30000 -10000 -3000 -1000 -300 -100 -50 -20 +20 +50 +100 +300 +1000 +3000 +10000 +30000 +100000 +300000 tip