Closed Bug 770344 Opened 8 years ago Closed 7 years ago

Experiment implementing __proto__ as an accessor

Categories

(Core :: JavaScript Engine, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla17

People

(Reporter: Waldo, Assigned: Waldo)

References

Details

(Whiteboard: [js:t])

Attachments

(1 file, 1 obsolete file)

Attached patch Patch (obsolete) — Splinter Review
Other engines are testing this out.  We should, too; it's fairly simple to do, and implementing it this way has several nice properties that implementing it the current way doesn't.
Attachment #638505 - Flags: review?(luke)
Comment on attachment 638505 [details] [diff] [review]
Patch

dmandelin, feel free to offer any comments you have on this, too, since I guess this is module-owner-ish territory.
Attachment #638505 - Flags: feedback?(dmandelin)
Comment on attachment 638505 [details] [diff] [review]
Patch

I like the patch; it moves the engine one key step away from JSPropertyOp which, it seems, we should ultimately remove.  jsc has already done this which would imply that the flip to accessor property doesn't break the web.

One nit: I'd like the getter/setter to use BoxNonStrictThis (after error-checking null/undefined) instead of explicitly handling primitive types.

(The title says "experimental", so I assume this won't be landing soon without some higher-level semantic consensus.)
Attachment #638505 - Flags: review?(luke) → review+
Depends on: 770586
Comment on attachment 638505 [details] [diff] [review]
Patch

Review of attachment 638505 [details] [diff] [review]:
-----------------------------------------------------------------

I like the idea of moving the implementation away from JSPropertySpec getters/setters.
Attachment #638505 - Flags: feedback?(dmandelin) → feedback+
Whiteboard: [js:t]
Depends on: 773850
Okay, this is good to go, and there are no lingering issues which have me suspicious that it might possibly have any lurking fundamental problems.

If you want to test this, apply the patch in bug 773850, then apply this atop it.  I pushed a very-slightly-different version of this patch to try and got only unrelated M4 failures, so the concept is solid.  Here's a repush of this exact patch to hopefully get a fully clean bill of health:

https://tbpl.mozilla.org/?tree=Try&rev=eb81fb9c4cb8

As you're aware, speedy review here and in bug 773850 is highly appreciated, given my impending travel plans.  :-)
Attachment #638505 - Attachment is obsolete: true
Attachment #642181 - Flags: review?(luke)
The X orange in that try-push is from my changes being atop a bad m-i changeset, which was later backed out for it:

https://hg.mozilla.org/integration/mozilla-inbound/rev/1f9add03a089

So that's a definite clean bill of health.
Attachment #642181 - Flags: review?(luke) → review+
Since we're at the very start of a development cycle, I pushed to get data as to the effectiveness of this technique.  There's no substitute for good, hard data.  And we can always back it out if necessary, or tweak if we hit easily-fixt issues.

https://hg.mozilla.org/integration/mozilla-inbound/rev/7a26f7c820bd
Target Milestone: --- → mozilla17
https://hg.mozilla.org/mozilla-central/rev/7a26f7c820bd
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Duplicate of this bug: 699945
You need to log in before you can comment on or make changes to this bug.