Confirmed users
3,314
edits
(Note removal of shortids/tinyids) |
|||
Line 72: | Line 72: | ||
Allowing properties to exist using a different name than the canonical ECMAScript name introduces a fair bit of complexity into SpiderMonkey. (And if there's a part of SpiderMonkey that absolutely can't afford extra complexity, it's our property representation/lookup code paths.) Doing so doesn't appear to have a memory cost, because the extra name fits into what would otherwise be padding. But it's extra work to keep track of it, extra work to preserve it, extra work to distinguish properties that differ only in their shortid -- and all this only for the benefit of users of <code>JSPropertyOp</code> and <code>JSStrictPropertyOp</code>, which as previously noted we want to remove. | Allowing properties to exist using a different name than the canonical ECMAScript name introduces a fair bit of complexity into SpiderMonkey. (And if there's a part of SpiderMonkey that absolutely can't afford extra complexity, it's our property representation/lookup code paths.) Doing so doesn't appear to have a memory cost, because the extra name fits into what would otherwise be padding. But it's extra work to keep track of it, extra work to preserve it, extra work to distinguish properties that differ only in their shortid -- and all this only for the benefit of users of <code>JSPropertyOp</code> and <code>JSStrictPropertyOp</code>, which as previously noted we want to remove. | ||
=== Removal of the <code>jsval</code> typedef in favor of <code>JS::Value</code> === | === <strike>Removal of the <code>jsval</code> typedef in favor of <code>JS::Value</code></strike> (FIXED) === | ||
<code>jsval</code> and <code>JS::Value</code> are identical. As part of moving more fully to cleaner C++, we should get rid of <code>jsval</code>. Doing so requires cleaning all use of <code>jsval</code> from Gecko -- not hard, but again, just not on anyone's critical path. (Embedders can easily adapt to this by adding <code>typedef JS::Value jsval;</code> to their code as a temporary fix, if needed.) | <code>jsval</code> and <code>JS::Value</code> are identical. As part of moving more fully to cleaner C++, we should get rid of <code>jsval</code>. Doing so requires cleaning all use of <code>jsval</code> from Gecko -- not hard, but again, just not on anyone's critical path. (Embedders can easily adapt to this by adding <code>typedef JS::Value jsval;</code> to their code as a temporary fix, if needed.) | ||
* {{bug|842186}} - Replace all use of jsval with JS::Value | * <strike>{{bug|842186}}</strike> - Replace all use of jsval with JS::Value | ||
=== <code>JSNative</code>'s signature will be changed to accept <code>const JS::CallArgs&</code> === | === <code>JSNative</code>'s signature will be changed to accept <code>const JS::CallArgs&</code> === |