New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Starred by 255 users

Comments by non-members will not trigger notification emails to users who starred this issue.

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Feb 2016
Cc:
Components:
HW: All
NextAction: ----
OS: All
Priority: 2
Type: FeatureRequest


Sign in to add a comment

Implement Proxy proposal

Project Member Reported by rossberg@chromium.org, Jul 7 2011 Back to list

Issue description

Proxy implementation is still rudimentary.

Should work:

- get and set traps.
- Object.defineProperty and Object.defineProperties
- object equality
- typeof
- instanceof
- Object.getPrototype
- Object.getOwnPropertyNames and Object.keys
- ToString and ToValue

Not yet working:

- Object.getOwnPropertyDescriptor
- Object.prototype.hasOwnProperty
- Object.seal, Object.freeze, and Object.preventExtension
- Object.isSealed, Object.isFrozen, and Object.isExtensible
- in
- for-in
- with
- function proxies

Also, more test cases are needed.

 
 Issue 633  has been merged into this issue.
Now working:

- delete
- Object.getOwnPropertyDescriptor
- Object.seal, Object.freeze, and Object.preventExtension
- Object.isSealed, Object.isFrozen, and Object.isExtensible

Comment 3 by n...@andyet.net, Aug 31 2011

Would love to see function proxies working. Not sure how applicable it would be to the integration into V8 core, but they have been implemented on top of V8 in https://github.com/samshull/node-proxy if that's helpful.
Sorry, I haven't updated this in a while. Also working:

- all Object.prototype methods
- in
- plus lots of bug fixes and corner cases

The function proxy implementation is currently under review and should land in a little while. See:

http://codereview.chromium.org/7623011/
http://codereview.chromium.org/7628021/

The first implementation is approaching completion. All of the following should now also be working:

- function proxies
- proxies as keys to WeakMaps
- proxies in the prototype chain
- elements (integer-indexed properties)
- descriptor conversion

The main features still missing are for-in loops and the with statement. Also, the API is not proxy aware yet.

Looks like there's a problem with the this-binding for function proxies. Running the attached file should print `42` not `undefined`. 
fproxy.js
1.8 KB View Download
Update: the implementation is feature-complete (and the above issue fixed).

The only known issues at the moment are:

1. Using `new' with a function proxy that does not have an explicit construct trap sometimes sets the wrong prototype.

2. A function proxy with a construct trap returning a non-object will no longer return the right result when frozen.

3. In some cases, the call trap of a function proxy will receive the global object even though the trap is a strict-mode function.

If you observe other issues, please report them here.
Awesome! When would app developers be able to use proxies in V8 without flag?
We have no immediate plans for that. The feature has to be field-tested first. Since it touches so many corners of the implementation, there is lots of opportunities for fatal bugs. So we want to be confident that everything works as expected before turning it on for everybody.

You can help by trying it out. :)

Comment 10 by pim...@live.nl, Dec 4 2011

I think I may have encountered a bug regarding to the proxy implementation. Please see the attached script. For some reason, the following code does not work properly:

    var key = "foo";

    proxy["foo"] = "bar"; // triggers the `set` function on the proxy
    proxy[ key ] = "bar"; // does _not_ trigger the `set` function on the proxy (bug?)
proxytest.js
408 bytes View Download

Comment 11 by pim...@live.nl, Dec 6 2011

Regarding comment #10, perhaps it might be useful to see a little more detail on what cases fail.

Given a proxy "proxy" with a "set" trap, only the "PASS" marked expressions of the following cases cause the "set" trap to be triggered. The "FAIL" marked expressions somehow do *not* make the "set" trap get triggered.

    var key = "foo";

    proxy.foo = "bar";         // PASS
    proxy["foo"] = "bar";      // PASS
    proxy["foo" + ""] = "bar"; // *FAIL*
    proxy[key] = "bar";        // *FAIL*
    proxy[123] = "bar";        // *FAIL*
    proxy["123"] = "bar";      // *FAIL*
    proxy["123foo"] = "bar";   // PASS

Does anyone know whether this behaviour is buggy or intended?
proxy_bug_tests.js
614 bytes View Download
That certainly is a bug. Thanks for reporting! I will look into it soon.

/Andreas
Hm, how did you run this, what architecture, and what version of V8 and/or Chrome? I'm afraid I cannot reproduce the failures in the D8 shell (with s/console.log/print/g), on none of our supported architectures.

Comment 14 by pim...@live.nl, Dec 7 2011

I'm running V8 as part of Node.js version 0.6.5, which uses V8 version 3.6.6.11. I now see it's not the latest version, so perhaps it has been fixed already. In that case I'm sorry.

I'm not very technical but I can tell have an Intel T1400 processor.
Ah, OK. Yes, the proxy implementation is far from complete in that version of V8. You'd need to update to a more recent 3.7.x.

Comment 16 by pim...@live.nl, Jan 20 2012

I'm sorry for posting again, but I would like to mention the following behaviour which I think is a bug. I can reproduce it with the latest revision.

When creating a proxy function, calling it works fine. However, passing it as the argument to e.g. `Array.prototype.map` fails. It throws "illegal access" in that case.

Please see the attached test case.
proxy_func_map.js
302 bytes View Download
Thanks for the bug report! Yes, this is a bug, the fix should land soon.

See: https://chromiumcodereview.appspot.com/9270004/

Comment 18 by tvcut...@gmail.com, May 24 2012

There seems to be an issue with the getOwnPropertyNames and keys traps, when they return property names that are also present in Object.prototype. Somehow this raises a TypeError that duplicate property names were returned. See the attached testcase.
prototype_keys_bug.js
463 bytes View Download
Hi Tom, thanks for the bug report.

I fixed this (including the broken error message with the "undefined" trap name), and also the receiver bug you point out on github (https://github.com/tvcutsem/harmony-reflect/issues/4#issuecomment-5831098).

On the other hand, as you probably have guessed, the fact that V8 does not call the `has' trap separately for assignment to inherited properties is intentional, and should match the refactored spec.
When will this land? I've been waiting for this feature to be available in v8 and Chrome
If you are referring to proxies in Javascript, it already landed, but hidden behind a flag. To turn it on, go to chrome://flags/ and "Enable Experimental JavaScript".

Comment 22 by metaw...@gmail.com, Nov 21 2012

Google Apps Script's Html Service relies on Firefox's proxies implementation and falls back on a much less efficient hack on other browsers; it would be great for us if it could come out from behind the flag soon.

Comment 23 by bruan...@gmail.com, Nov 21 2012

How much are they relying on it? Firefox implementation is incomplete and has many known (and likely unknown!) bugs.
Also, to my knowledge, current V8 implementation relates to the old Proxy design. I don't think work to support direct proxies has started (if I'm wrong, please point me to the right V8 bug)
Re: comment 23 -- "(and likely unknown!) bugs" is LOL unreal. Since when did V8 ship without unknown bugs? How do you prove a negative?

How are you going to find and fix proxy bugs that Google itself seems to want fixed, without turning on proxies? How are you going to help fix the ES6 draft spec, which we helped get in shape by prototyping proxies two years ago?

Fear of bugs does not prevent all sorts of innovation from being shipped in Chrome -- some of it on no standards track and very unlikely ever to be.

BTW SpiderMonkey supports direct proxies (yes, with bugs -- please file them as they become known) now. Time to get V8 interop-testing so we can fix the spec as well as the implementations, and lead the other browsers to implement as well.

/be
Ghostery, a popular privacy extension for browsers, is waiting on Proxies in V8 to provide better script surrogation to its users.

Script surrogation is the act of replacing blocked tracker scripts with dummy copies in order to allow badly-coded websites to continue to function. However, listing out every method call for every tracker script isn't scalable.

__noSuchMethod__ is Firefox-only and deprecated. Proxies are the future, but have been "on the way" for a while now.

Comment 26 by arte...@gmail.com, Jan 31 2013

Any plans on when this is going to be implemented?

Comment 27 by arv@chromium.org, Jan 31 2013

Proxies are still seeing a lot of churn in the ES6 draft so it seems better to wait until the API stabilizes a bit more.
By "this" you mean?

No concrete plans right now. There is some likelihood that the ES6 proxy design will undergo another substantial change, so it seems wiser to hold off.

Comment 29 by arte...@gmail.com, Jan 31 2013

I'm sorry, guys. By "this" I meant proxies, of course.

Thanks for the info!
hg7fb9fu6qn9

Comment 31 by bruan...@gmail.com, Oct 19 2013

"Proxies are still seeing a lot of churn in the ES6 draft so it seems better to wait until the API stabilizes a bit more."
"There is some likelihood that the ES6 proxy design will undergo another substantial change, so it seems wiser to hold off."
=> At the May 2013 TC39 meeting, it's been agreed that direct proxies (new Proxy(target, handler)) would be the final design.
https://github.com/rwaldron/tc39-notes/blob/master/es6/2013-05/may-21.md#44-proxies

From what I know, the design is now very stable. Maybe time to reconsider? :-)
The Node.js team has a use for direct proxies: allowing us to create fake globals that intercept defineProperties on them for use in the vm module. Currently we use ObjectTemplate which has GlobalPropertyGetterCallback, GlobalPropertySetterCallback, GlobalPropertyQueryCallback, GlobalPropertyDeleterCallback, GlobalPropertyEnumeratorCallback, but this does not encompass all operations. In particular, it does not have defineProperty, so if people declare global functions inside the vm, we have no way to intercept that.

If direct proxies were available, we could turn them on in V8, then use them to implement this desired proxying behavior. As is, we shouldn't turn on --harmony-proxies, because then Node.js consumers would start using the old API.

More details about the particular use case at https://github.com/joyent/node/pull/6417.

Comment 33 by slbre...@gmail.com, Oct 29 2013

Since harmony is almost finished, can we get any idea of when updating proxies to match the direct proxy design will start being looked at?
ES6 comes with a _lot_ of new features, many of which we still have to work on. To be honest, proxies are not at the top of our priority list.
I'm not asking for a fully functional direct proxy implementation in chrome (V8), all I would like to know is that when ES6 comes out I'm gonna be able to use the same code in firefox and chrome (with direct proxies).
Is there any chance for that?
You can achieve writing the same Proxy code for firefox, chrome and node today by using my shim:
<https://github.com/tvcutsem/harmony-reflect>
It's not perfect, but people are using it so it could be useful in the short term.
It is very unlikely that we are going to be finished with implementing all of ES6 the day the standard is officially sanctioned, if that's what you are asking.
Thats obvious, my quetion was only about direct proxies since their implementation is nearly complete in gecko.
I thought I already answered that: it's not high on our priority list, so it gets done when we get to it. The ES6 spec release date has no more influence on proxies than on any other ES6 feature.

Comment 40 by nat...@github.com, Apr 3 2014

A stable proxies implementation could also help us on the Atom team. We'd love to start experimenting with membranes to implement sophisticated security policies.
Blockedon: v8:3310
I'd just like to add a friendly +1 here. Been experimenting with proxies a lot in FF, and I'm very eagerly awaiting this in V8.
@Ross wouldn't it better to finish implementing ES6 before the standard is officially sanctionned, so you can give some implementor feedback before shipping flawed specs ?

Anyway, we're really looking forward to be able to use ES6 feature :)
Looks like the old Proxy (pre-direct) implementation was removed, so harmony-reflect no longer works. Is there any intention to restore the old Proxy, or will it be gone until the ES6 direct-proxy implementation is ready?

Comment 45 by arv@chromium.org, Oct 15 2014

It wasn't removed. It was removed from --harmony due to some security(?) issues. Try using --harmony-proxies instead.
I think my issue belongs in the chromium issue tracker instead of here - it's no longer exposed to the browser, although it is available in v8. Sorry for the confusion.

Comment 47 by tomvc...@gmail.com, Oct 16 2014

Where can I read more about the (security?) issues that caused the old Proxy object to be removed? Thanks.
#46: no reason to report this on chromium, here was the right place.
Blockedon: v8:2141 v8:2145 v8:3510

Comment 50 by habl...@google.com, Apr 29 2015

Status: Assigned
Blockedon: v8:2142
Blockedon: v8:4130
Any estimate on when this can land?
#53: None.
+1 for Proxy object support. Please :)
Blockedon: chromium:507282
Blockedon: v8:3270 v8:4381
Cc: bmeu...@chromium.org neis@chromium.org
Labels: HW-All Area-Language OS-All
Are there any plans to get this even under a flag in the near future? 
Cc: cbruni@chromium.org
Project Member

Comment 62 by bugdroid1@chromium.org, Nov 13 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/24e058d0ede601c683b1128419c9f7775d546af8

commit 24e058d0ede601c683b1128419c9f7775d546af8
Author: cbruni <cbruni@chromium.org>
Date: Fri Nov 13 14:13:50 2015

[runtime] support new Proxy() instead of Proxy.create and install getPrototypeOf trap

LOG=N
BUG= v8:1543 

Review URL: https://codereview.chromium.org/1417063011

Cr-Commit-Position: refs/heads/master@{#31983}

[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/bootstrapper.cc
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/builtins.cc
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/factory.cc
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/factory.h
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/heap/heap.h
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/js/messages.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/js/proxy.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/messages.h
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/objects-inl.h
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/objects-printer.cc
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/objects.cc
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/objects.h
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/runtime/runtime-debug.cc
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/runtime/runtime-object.cc
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/src/runtime/runtime-proxy.cc
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/es6/iteration-semantics.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/es6/regress/regress-cr493566.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/for-in-opt.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/proxies-example-membrane.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/proxies-for.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/proxies-hash.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/proxies-json.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/proxies-symbols.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/proxies-with-unscopables.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/proxies-with.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/proxies.js
[add] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/proxy/proxy-getPrototypeOf.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/reflect-enumerate-opt.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/regress/regress-2219.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/regress/regress-2225.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/regress/regress-405844.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/regress/regress-crbug-448730.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/regress/regress-crbug-461520.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/harmony/regress/regress-lookup-transition.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/mjsunit.status
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/readonly.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/regress/regress-crbug-493568.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/regress/regress-crbug-505907.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/regress/regress-crbug-506956.js
[modify] http://crrev.com/24e058d0ede601c683b1128419c9f7775d546af8/test/mjsunit/strong/load-proxy.js

Project Member

Comment 63 by bugdroid1@chromium.org, Nov 16 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/c3688c1aec3a8658271d4d8d248c0b26f7925f9d

commit c3688c1aec3a8658271d4d8d248c0b26f7925f9d
Author: jkummerow <jkummerow@chromium.org>
Date: Mon Nov 16 11:59:33 2015

Implement JSProxy::GetOwnPropertyDescriptor.

Next step: expose it to JS and test it.

BUG= v8:1543 
LOG=n
R=cbruni@chromium.org

Review URL: https://codereview.chromium.org/1439353004

Cr-Commit-Position: refs/heads/master@{#32006}

[modify] http://crrev.com/c3688c1aec3a8658271d4d8d248c0b26f7925f9d/src/messages.h
[modify] http://crrev.com/c3688c1aec3a8658271d4d8d248c0b26f7925f9d/src/objects.cc
[modify] http://crrev.com/c3688c1aec3a8658271d4d8d248c0b26f7925f9d/src/objects.h

Project Member

Comment 66 by bugdroid1@chromium.org, Nov 26 2015

Project Member

Comment 68 by bugdroid1@chromium.org, Nov 26 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/87f7dc61faac63fd017b84eb214bae0a34f73514

commit 87f7dc61faac63fd017b84eb214bae0a34f73514
Author: machenbach <machenbach@chromium.org>
Date: Thu Nov 26 16:20:51 2015

Revert of [Proxies] Support constructable proxy as new.target (patchset #3 id:40001 of https://codereview.chromium.org/1481613003/ )

Reason for revert:
[Sheriff] Breaks:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap%20-%20debug/builds/3977

Original issue's description:
> [Proxies] Support constructable proxy as new.target
>
> BUG= v8:1543 ,  v8:3330 ,  v8:3931 
> LOG=n
>
> Committed: https://crrev.com/88ac8aa5236195137d4a7aa18bcc5650a3bdca5a
> Cr-Commit-Position: refs/heads/master@{#32346}

TBR=ishell@chromium.org,verwaest@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:1543 ,  v8:3330 ,  v8:3931 

Review URL: https://codereview.chromium.org/1480673004

Cr-Commit-Position: refs/heads/master@{#32350}

[modify] http://crrev.com/87f7dc61faac63fd017b84eb214bae0a34f73514/src/objects.cc
[modify] http://crrev.com/87f7dc61faac63fd017b84eb214bae0a34f73514/src/objects.h
[modify] http://crrev.com/87f7dc61faac63fd017b84eb214bae0a34f73514/src/runtime/runtime-object.cc
[delete] http://crrev.com/138d9bae5d7014e0d205634a49b5eac3697744c8/test/mjsunit/es6/classes-proxy.js

Project Member

Comment 70 by bugdroid1@chromium.org, Nov 27 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/970a7ad7583c0270b86e602331a24e7cdfdadc8e

commit 970a7ad7583c0270b86e602331a24e7cdfdadc8e
Author: verwaest <verwaest@chromium.org>
Date: Fri Nov 27 21:44:27 2015

Fix Reflect.construct wrt proxy, generator, and non-subclass new.target

This makes sure that proxy + Function/Array works
Makes sure that new.target can be a generator
Makes sure that if new.target is not a subclass, but does not have a prototype, that we'll get that same prototype back the next time we look at new.target.prototype.

BUG= v8:1543 ,  v8:3330 ,  v8:3931 
LOG=n

Review URL: https://codereview.chromium.org/1484473002

Cr-Commit-Position: refs/heads/master@{#32382}

[modify] http://crrev.com/970a7ad7583c0270b86e602331a24e7cdfdadc8e/src/objects.cc
[modify] http://crrev.com/970a7ad7583c0270b86e602331a24e7cdfdadc8e/src/objects.h
[modify] http://crrev.com/970a7ad7583c0270b86e602331a24e7cdfdadc8e/src/runtime/runtime-array.cc
[modify] http://crrev.com/970a7ad7583c0270b86e602331a24e7cdfdadc8e/src/runtime/runtime-function.cc
[modify] http://crrev.com/970a7ad7583c0270b86e602331a24e7cdfdadc8e/src/runtime/runtime-object.cc
[modify] http://crrev.com/970a7ad7583c0270b86e602331a24e7cdfdadc8e/test/mjsunit/es6/classes-proxy.js
[modify] http://crrev.com/970a7ad7583c0270b86e602331a24e7cdfdadc8e/test/mjsunit/harmony/reflect-construct.js

Project Member

Comment 72 by bugdroid1@chromium.org, Nov 28 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/97def40dc0b252b016e770eef0902d72643bcbaa

commit 97def40dc0b252b016e770eef0902d72643bcbaa
Author: machenbach <machenbach@chromium.org>
Date: Sat Nov 28 14:16:06 2015

Revert of [proxies] Implement [[Enumerate]] and [[OwnPropertyKeys]] (patchset #3 id:40001 of https://codereview.chromium.org/1474083003/ )

Reason for revert:
[Sheriff] Speculative revert for gc mole:
https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20gcmole/builds/5164

Original issue's description:
> [proxies] Implement [[Enumerate]] and [[OwnPropertyKeys]]
>
> Both are integrated into JSReceiver::GetKeys().
>
> For now, the implementation ignores Symbol/DONT_ENUM filtering.
>
> BUG= v8:1543 
> LOG=n
>
> Committed: https://crrev.com/42c6056e6f247724d14dc887f6619a6bf5867a97
> Cr-Commit-Position: refs/heads/master@{#32384}

TBR=verwaest@chromium.org,bmeurer@chromium.org,jkummerow@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:1543 

Review URL: https://codereview.chromium.org/1482113002

Cr-Commit-Position: refs/heads/master@{#32385}

[modify] http://crrev.com/97def40dc0b252b016e770eef0902d72643bcbaa/src/js/proxy.js
[modify] http://crrev.com/97def40dc0b252b016e770eef0902d72643bcbaa/src/key-accumulator.cc
[modify] http://crrev.com/97def40dc0b252b016e770eef0902d72643bcbaa/src/key-accumulator.h
[modify] http://crrev.com/97def40dc0b252b016e770eef0902d72643bcbaa/src/messages.h
[modify] http://crrev.com/97def40dc0b252b016e770eef0902d72643bcbaa/src/objects.cc
[modify] http://crrev.com/97def40dc0b252b016e770eef0902d72643bcbaa/src/objects.h
[delete] http://crrev.com/42c6056e6f247724d14dc887f6619a6bf5867a97/test/mjsunit/harmony/proxies-enumerate.js
[delete] http://crrev.com/42c6056e6f247724d14dc887f6619a6bf5867a97/test/mjsunit/harmony/proxies-ownkeys.js

Project Member

Comment 75 by bugdroid1@chromium.org, Dec 1 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/48b72f3ca925e64d1aecd0fa54f9a1802e11a7f6

commit 48b72f3ca925e64d1aecd0fa54f9a1802e11a7f6
Author: mbrandy <mbrandy@us.ibm.com>
Date: Tue Dec 01 03:05:28 2015

PPC: [Proxies] Support constructable proxy as new.target (reland)

Port 7ceaf727082c5c2473afcba9c3b8bc1a7c3b498a

R=verwaest@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG= v8:1543 ,  v8:3330 ,  v8:3931 
LOG=n

Review URL: https://codereview.chromium.org/1480423002

Cr-Commit-Position: refs/heads/master@{#32433}

[modify] http://crrev.com/48b72f3ca925e64d1aecd0fa54f9a1802e11a7f6/src/ppc/builtins-ppc.cc

Project Member

Comment 80 by bugdroid1@chromium.org, Dec 1 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f4d4051521e329d0f45b91426a92b6e99ac3cfe0

commit f4d4051521e329d0f45b91426a92b6e99ac3cfe0
Author: cbruni <cbruni@chromium.org>
Date: Tue Dec 01 17:31:47 2015

[runtime] [proxy] Runtime_HasOwnProperty and thus
Object.prototype.hasOwnProperty should use JSReceiver::HasOwnProperty for
proxies.

BUG= v8:1543 
LOG=N

Review URL: https://codereview.chromium.org/1480213004

Cr-Commit-Position: refs/heads/master@{#32475}

[modify] http://crrev.com/f4d4051521e329d0f45b91426a92b6e99ac3cfe0/src/js/v8natives.js
[modify] http://crrev.com/f4d4051521e329d0f45b91426a92b6e99ac3cfe0/src/runtime/runtime-object.cc
[add] http://crrev.com/f4d4051521e329d0f45b91426a92b6e99ac3cfe0/test/mjsunit/harmony/proxies-has-own-property.js

Project Member

Comment 83 by bugdroid1@chromium.org, Dec 3 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a330af0ed1f237ba17ac2242ce16cad5616c0597

commit a330af0ed1f237ba17ac2242ce16cad5616c0597
Author: bmeurer <bmeurer@chromium.org>
Date: Thu Dec 03 06:22:17 2015

[crankshaft] Deoptimize if HHasInPrototypeChainAndBranch hits a proxy.

The optimized code generated by Crankshaft cannot properly deal
with proxies (in the prototype chain), and there's probably no
point in trying to make that work^Wfast with Crankshaft at all.
TurboFan will handle that properly; Crankshaft just bails out
to fullcodegen, which then goes to the runtime, which should do
the right thing soon.

BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1492983002

Cr-Commit-Position: refs/heads/master@{#32539}

[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/arm/lithium-arm.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/arm/lithium-codegen-arm.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/arm64/lithium-arm64.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/arm64/lithium-arm64.h
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/arm64/lithium-codegen-arm64.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/hydrogen-instructions.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/ia32/lithium-codegen-ia32.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/ia32/lithium-ia32.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/mips/lithium-codegen-mips.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/mips/lithium-mips.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/mips64/lithium-codegen-mips64.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/mips64/lithium-mips64.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/x64/lithium-codegen-x64.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/crankshaft/x64/lithium-x64.cc
[modify] http://crrev.com/a330af0ed1f237ba17ac2242ce16cad5616c0597/src/deoptimizer.h

Project Member

Comment 84 by bugdroid1@chromium.org, Dec 3 2015

Project Member

Comment 85 by bugdroid1@chromium.org, Dec 3 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a32096c43c5551173bed312d153efa27c52a2fd1

commit a32096c43c5551173bed312d153efa27c52a2fd1
Author: cbruni <cbruni@chromium.org>
Date: Thu Dec 03 12:43:04 2015

[runtime] [proxy] Remove JSProxy::CallTrap

LOG=n
BUG= v8:1543 

Review URL: https://codereview.chromium.org/1500553002

Cr-Commit-Position: refs/heads/master@{#32557}

[modify] http://crrev.com/a32096c43c5551173bed312d153efa27c52a2fd1/src/objects.cc
[modify] http://crrev.com/a32096c43c5551173bed312d153efa27c52a2fd1/src/objects.h

Project Member

Comment 87 by bugdroid1@chromium.org, Dec 3 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/384ec6dc92df8ad5dac328195de4866cdff46deb

commit 384ec6dc92df8ad5dac328195de4866cdff46deb
Author: neis <neis@chromium.org>
Date: Thu Dec 03 17:41:08 2015

[proxies] Adapt and reenable harmony/proxies-for.js test.

R=rossberg
BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1491863002

Cr-Commit-Position: refs/heads/master@{#32579}

[modify] http://crrev.com/384ec6dc92df8ad5dac328195de4866cdff46deb/test/mjsunit/harmony/proxies-for.js
[modify] http://crrev.com/384ec6dc92df8ad5dac328195de4866cdff46deb/test/mjsunit/mjsunit.status

Project Member

Comment 88 by bugdroid1@chromium.org, Dec 3 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/90e4179f2d005de3d4b302cea1b0fb59a9242b5c

commit 90e4179f2d005de3d4b302cea1b0fb59a9242b5c
Author: mbrandy <mbrandy@us.ibm.com>
Date: Thu Dec 03 19:35:39 2015

PPC: [crankshaft] Deoptimize if HHasInPrototypeChainAndBranch hits a proxy.

Port a330af0ed1f237ba17ac2242ce16cad5616c0597

Original commit message:
    The optimized code generated by Crankshaft cannot properly deal
    with proxies (in the prototype chain), and there's probably no
    point in trying to make that work^Wfast with Crankshaft at all.
    TurboFan will handle that properly; Crankshaft just bails out
    to fullcodegen, which then goes to the runtime, which should do
    the right thing soon.

R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1496843004

Cr-Commit-Position: refs/heads/master@{#32583}

[modify] http://crrev.com/90e4179f2d005de3d4b302cea1b0fb59a9242b5c/src/crankshaft/ppc/lithium-codegen-ppc.cc
[modify] http://crrev.com/90e4179f2d005de3d4b302cea1b0fb59a9242b5c/src/crankshaft/ppc/lithium-ppc.cc

Project Member

Comment 89 by bugdroid1@chromium.org, Dec 3 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/c902d4ff9de47a94e8935fc838c6468c88bbb95a

commit c902d4ff9de47a94e8935fc838c6468c88bbb95a
Author: mbrandy <mbrandy@us.ibm.com>
Date: Thu Dec 03 19:39:01 2015

PPC: [proxies] InstanceOfStub should bailout to %HasInPrototypeChain for proxies.

Port 0e95683376c77332b6c5cf9195dd389f256e6ec4

Original commit message:
    Whenever the InstanceOfStub finds a proxy (either passed as object or
    somewhere on the prototype chain), it should bailout to the
    %HasInPrototypeChain runtime function, which will do the right thing
    (soonish).

R=bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1495513004

Cr-Commit-Position: refs/heads/master@{#32586}

[modify] http://crrev.com/c902d4ff9de47a94e8935fc838c6468c88bbb95a/src/ppc/code-stubs-ppc.cc

Project Member

Comment 90 by bugdroid1@chromium.org, Dec 3 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/48fba9439f291edd5929e19951262dc7e8a09609

commit 48fba9439f291edd5929e19951262dc7e8a09609
Author: machenbach <machenbach@chromium.org>
Date: Thu Dec 03 20:24:01 2015

Revert of [proxies] Make Object.prototype.isPrototypeOf work with proxies. (patchset #2 id:20001 of https://codereview.chromium.org/1492863002/ )

Reason for revert:
[Sheriff] Speculative revert for:
https://uberchromegw.corp.google.com/i/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/3225

Can just be relanded if it doesn't get green.

Original issue's description:
> [proxies] Make Object.prototype.isPrototypeOf step into proxies.
>
> R=rossberg, verwaest@chromium.org
> BUG= v8:1543 
> LOG=n
>
> Committed: https://crrev.com/4ca1180d2e7c409312ae0761cb12843989466573
> Cr-Commit-Position: refs/heads/master@{#32569}

TBR=rossberg@chromium.org,verwaest@chromium.org,neis@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:1543 

Review URL: https://codereview.chromium.org/1494283002

Cr-Commit-Position: refs/heads/master@{#32588}

[modify] http://crrev.com/48fba9439f291edd5929e19951262dc7e8a09609/src/objects-inl.h
[modify] http://crrev.com/48fba9439f291edd5929e19951262dc7e8a09609/src/objects.cc
[modify] http://crrev.com/48fba9439f291edd5929e19951262dc7e8a09609/src/objects.h
[modify] http://crrev.com/48fba9439f291edd5929e19951262dc7e8a09609/src/prototype.h
[modify] http://crrev.com/48fba9439f291edd5929e19951262dc7e8a09609/src/runtime/runtime-debug.cc
[modify] http://crrev.com/48fba9439f291edd5929e19951262dc7e8a09609/src/runtime/runtime-object.cc
[modify] http://crrev.com/48fba9439f291edd5929e19951262dc7e8a09609/test/mjsunit/harmony/proxies-get-prototype-of.js

Project Member

Comment 91 by bugdroid1@chromium.org, Dec 4 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/2cb40dc722340035c7d4c57449a420a315b0e7e0

commit 2cb40dc722340035c7d4c57449a420a315b0e7e0
Author: machenbach <machenbach@chromium.org>
Date: Fri Dec 04 06:38:45 2015

Reland of [proxies] Make Object.prototype.isPrototypeOf work with proxies. (patchset #1 id:1 of https://codereview.chromium.org/1494283002/ )

Reason for revert:
Did not help...

Original issue's description:
> Revert of [proxies] Make Object.prototype.isPrototypeOf work with proxies. (patchset #2 id:20001 of https://codereview.chromium.org/1492863002/ )
>
> Reason for revert:
> [Sheriff] Speculative revert for:
> https://uberchromegw.corp.google.com/i/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/3225
>
> Can just be relanded if it doesn't get green.
>
> Original issue's description:
> > [proxies] Make Object.prototype.isPrototypeOf step into proxies.
> >
> > R=rossberg, verwaest@chromium.org
> > BUG= v8:1543 
> > LOG=n
> >
> > Committed: https://crrev.com/4ca1180d2e7c409312ae0761cb12843989466573
> > Cr-Commit-Position: refs/heads/master@{#32569}
>
> TBR=rossberg@chromium.org,verwaest@chromium.org,neis@chromium.org
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG= v8:1543 
>
> Committed: https://crrev.com/48fba9439f291edd5929e19951262dc7e8a09609
> Cr-Commit-Position: refs/heads/master@{#32588}

TBR=rossberg@chromium.org,verwaest@chromium.org,neis@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:1543 

Review URL: https://codereview.chromium.org/1491743010

Cr-Commit-Position: refs/heads/master@{#32598}

[modify] http://crrev.com/2cb40dc722340035c7d4c57449a420a315b0e7e0/src/objects-inl.h
[modify] http://crrev.com/2cb40dc722340035c7d4c57449a420a315b0e7e0/src/objects.cc
[modify] http://crrev.com/2cb40dc722340035c7d4c57449a420a315b0e7e0/src/objects.h
[modify] http://crrev.com/2cb40dc722340035c7d4c57449a420a315b0e7e0/src/prototype.h
[modify] http://crrev.com/2cb40dc722340035c7d4c57449a420a315b0e7e0/src/runtime/runtime-debug.cc
[modify] http://crrev.com/2cb40dc722340035c7d4c57449a420a315b0e7e0/src/runtime/runtime-object.cc
[modify] http://crrev.com/2cb40dc722340035c7d4c57449a420a315b0e7e0/test/mjsunit/harmony/proxies-get-prototype-of.js

Project Member

Comment 93 by bugdroid1@chromium.org, Dec 4 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/747f455b074751040cc8ac0ede83f3880ccc488b

commit 747f455b074751040cc8ac0ede83f3880ccc488b
Author: cbruni <cbruni@chromium.org>
Date: Fri Dec 04 13:49:08 2015

[runtime] [proxy] removing JSFunctionProxy and related code.

BUG= v8:1543 
LOG=N

Review URL: https://codereview.chromium.org/1496503002

Cr-Commit-Position: refs/heads/master@{#32616}

[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/include/v8.h
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/arm/builtins-arm.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/arm64/builtins-arm64.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/compiler/js-generic-lowering.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/compiler/js-typed-lowering.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/crankshaft/arm/lithium-codegen-arm.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/crankshaft/arm64/lithium-codegen-arm64.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/crankshaft/hydrogen.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/crankshaft/ia32/lithium-codegen-ia32.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/crankshaft/mips/lithium-codegen-mips.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/crankshaft/mips64/lithium-codegen-mips64.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/crankshaft/ppc/lithium-codegen-ppc.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/crankshaft/x64/lithium-codegen-x64.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/crankshaft/x87/lithium-codegen-x87.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/factory.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/factory.h
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/full-codegen/arm/full-codegen-arm.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/full-codegen/arm64/full-codegen-arm64.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/full-codegen/ia32/full-codegen-ia32.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/full-codegen/mips/full-codegen-mips.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/full-codegen/mips64/full-codegen-mips64.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/full-codegen/ppc/full-codegen-ppc.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/full-codegen/x64/full-codegen-x64.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/full-codegen/x87/full-codegen-x87.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/heap/objects-visiting.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/ia32/builtins-ia32.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/js/proxy.js
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/js/v8natives.js
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/mips/builtins-mips.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/mips64/builtins-mips64.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/objects-body-descriptors-inl.h
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/objects-debug.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/objects-inl.h
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/objects-printer.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/objects.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/objects.h
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/ppc/builtins-ppc.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/runtime/runtime-interpreter.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/runtime/runtime-proxy.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/runtime/runtime.h
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/types.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/x64/builtins-x64.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/src/x87/builtins-x87.cc
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/test/mjsunit/harmony/proxies-for.js
[modify] http://crrev.com/747f455b074751040cc8ac0ede83f3880ccc488b/test/mjsunit/mjsunit.status

Project Member

Comment 94 by bugdroid1@chromium.org, Dec 4 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/7d1263db477c812d40789c75be2f368e4c0b9769

commit 7d1263db477c812d40789c75be2f368e4c0b9769
Author: jkummerow <jkummerow@chromium.org>
Date: Fri Dec 04 15:20:31 2015

[proxies] Use JSReceiver::GetKeys() for more purposes

Having beefed up GetKeys() to support everything, use it for everything now.

This fixes Object.getOwnPropertyNames and Object.getOwnPropertySymbols for
Proxies, and gets rid of a bunch of code duplication.

BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1498593006

Cr-Commit-Position: refs/heads/master@{#32620}

[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/debug/mirrors.js
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/isolate.cc
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/isolate.h
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/js/macros.py
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/js/prologue.js
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/js/symbol.js
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/js/v8natives.js
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/objects.cc
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/objects.h
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/runtime/runtime-object.cc
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/src/runtime/runtime.h
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/test/cctest/test-api.cc
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/test/cctest/test-debug.cc
[modify] http://crrev.com/7d1263db477c812d40789c75be2f368e4c0b9769/test/mjsunit/harmony/proxies-for.js

Project Member

Comment 95 by bugdroid1@chromium.org, Dec 4 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/412aefac61098c13ac1a09036411294028293e64

commit 412aefac61098c13ac1a09036411294028293e64
Author: mbrandy <mbrandy@us.ibm.com>
Date: Fri Dec 04 17:53:51 2015

PPC: Refine "[runtime] [proxy] removing JSFunctionProxy and related code."

R=cbruni@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG= v8:1543 
LOG=N

Review URL: https://codereview.chromium.org/1500993003

Cr-Commit-Position: refs/heads/master@{#32626}

[modify] http://crrev.com/412aefac61098c13ac1a09036411294028293e64/src/ppc/builtins-ppc.cc

Project Member

Comment 96 by bugdroid1@chromium.org, Dec 7 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b

commit 4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b
Author: neis <neis@chromium.org>
Date: Mon Dec 07 11:01:16 2015

[proxies] Make Object.{freeze,seal} behave correctly for proxies.

- Add JSReceiver::SetIntegrityLevel, with a fast path for regular objects.
- Make Object.{freeze,seal} call this via %Object{Freeze,Seal}, thus no longer
  using broken or deprecated functions from v8natives.js.
- Add JSReceiver::OwnPropertyKeys convenience function.
- Reenable harmony/proxies-hash.js test.

R=rossberg
BUG= v8:1543 
LOG=N

Review URL: https://codereview.chromium.org/1489423002

Cr-Commit-Position: refs/heads/master@{#32651}

[modify] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/src/js/v8natives.js
[modify] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/src/objects.cc
[modify] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/src/objects.h
[modify] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/src/runtime/runtime-classes.cc
[modify] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/src/runtime/runtime-object.cc
[modify] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/test/mjsunit/es7/object-observe.js
[modify] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/test/mjsunit/harmony/proxies-hash.js
[add] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/test/mjsunit/harmony/proxies-integrity.js
[modify] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/test/mjsunit/mjsunit.status
[delete] http://crrev.com/ec37add662b0d2620b2bfdb796ba3418fae6383c/test/mjsunit/regress/regress-380049.js
[modify] http://crrev.com/4e2c0dd7a994a84c5ee0dae3736f8ea3640ec55b/test/mjsunit/strong/eval-direct.js

Project Member

Comment 98 by bugdroid1@chromium.org, Dec 8 2015

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/72994124733215c15ff0022616949a2291f3c26c

commit 72994124733215c15ff0022616949a2291f3c26c
Author: cbruni <cbruni@chromium.org>
Date: Tue Dec 08 16:04:08 2015

[runtime] [proxy] Implementing [[Call]]

BUG= v8:1543 
LOG=N

Review URL: https://codereview.chromium.org/1499593003

Cr-Commit-Position: refs/heads/master@{#32675}

[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/arm/builtins-arm.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/arm64/builtins-arm64.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/bootstrapper.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/builtins.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/contexts.h
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/factory.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/factory.h
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/heap/heap.h
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/ia32/builtins-ia32.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/mips/builtins-mips.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/mips64/builtins-mips64.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/objects.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/ppc/builtins-ppc.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/runtime/runtime-proxy.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/runtime/runtime.h
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/x64/builtins-x64.cc
[modify] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/src/x87/builtins-x87.cc
[add] http://crrev.com/72994124733215c15ff0022616949a2291f3c26c/test/mjsunit/harmony/proxies-apply.js

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/a2d5641bc42f561117ed77c28fe672d33581a4ca

commit a2d5641bc42f561117ed77c28fe672d33581a4ca
Author: cbruni <cbruni@chromium.org>
Date: Wed Dec 09 14:55:00 2015

[runtime] [proxy] implement [[Construct]]

LOG=N
BUG= v8:1543 

Review URL: https://codereview.chromium.org/1509603005

Cr-Commit-Position: refs/heads/master@{#32718}

[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/arm/builtins-arm.cc
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/arm64/builtins-arm64.cc
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/ia32/builtins-ia32.cc
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/messages.h
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/mips/builtins-mips.cc
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/mips64/builtins-mips64.cc
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/ppc/builtins-ppc.cc
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/runtime/runtime-proxy.cc
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/runtime/runtime.h
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/x64/builtins-x64.cc
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/src/x87/builtins-x87.cc
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/test/mjsunit/es6/classes-proxy.js
[add] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/test/mjsunit/harmony/proxies-construct.js
[modify] http://crrev.com/a2d5641bc42f561117ed77c28fe672d33581a4ca/test/mjsunit/mjsunit.status

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/43c7ced3c1461d18b896725768139581c1ff83e8

commit 43c7ced3c1461d18b896725768139581c1ff83e8
Author: mbrandy <mbrandy@us.ibm.com>
Date: Wed Dec 09 18:34:17 2015

PPC: Refine "[runtime] [proxy] implement [[Construct]]"

R=cbruni@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
LOG=N
BUG= v8:1543 

Review URL: https://codereview.chromium.org/1510283002

Cr-Commit-Position: refs/heads/master@{#32726}

[modify] http://crrev.com/43c7ced3c1461d18b896725768139581c1ff83e8/src/ppc/builtins-ppc.cc

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e2dd98a39e98363843aa6f9c73cdf25ce4a7072a

commit e2dd98a39e98363843aa6f9c73cdf25ce4a7072a
Author: jkummerow <jkummerow@chromium.org>
Date: Thu Dec 10 15:12:01 2015

[proxies] Fix "with" statements for proxies

BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1510913005

Cr-Commit-Position: refs/heads/master@{#32756}

[modify] http://crrev.com/e2dd98a39e98363843aa6f9c73cdf25ce4a7072a/src/contexts.cc

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/df2a92972b0a087080e67496177e879e9409d5b0

commit df2a92972b0a087080e67496177e879e9409d5b0
Author: cbruni <cbruni@chromium.org>
Date: Fri Dec 11 14:55:20 2015

[proxy] fixing for-in for proxies, fixing harmony/proxy.js tests, improving error messages and some drive-by fixes

BUG= v8:1543 
LOG=n

patch from issue 1519473002 at patchset 1 (http://crrev.com/1519473002#ps1)

Review URL: https://codereview.chromium.org/1516843002

Cr-Commit-Position: refs/heads/master@{#32801}

[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/builtins.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/compiler/js-generic-lowering.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/compiler/js-typed-lowering.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/full-codegen/arm/full-codegen-arm.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/full-codegen/arm64/full-codegen-arm64.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/full-codegen/ia32/full-codegen-ia32.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/full-codegen/mips/full-codegen-mips.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/full-codegen/mips64/full-codegen-mips64.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/full-codegen/ppc/full-codegen-ppc.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/full-codegen/x64/full-codegen-x64.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/full-codegen/x87/full-codegen-x87.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/js/proxy.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/js/v8natives.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/messages.h
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/src/objects.cc
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/es6/regress/regress-cr493566.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/for-in-opt.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/harmony/debug-stepin-proxies.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/harmony/proxies-enumerate.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/harmony/proxies-for.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/harmony/proxies-with.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/harmony/proxies.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/harmony/regress/regress-2219.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/harmony/regress/regress-2225.js
[delete] http://crrev.com/d83057b4ce27e9852cdca8a90d5bab9dcb4b6489/test/mjsunit/harmony/regress/regress-405844.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/harmony/regress/regress-crbug-461520.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/harmony/regress/regress-lookup-transition.js
[modify] http://crrev.com/df2a92972b0a087080e67496177e879e9409d5b0/test/mjsunit/mjsunit.status
[delete] http://crrev.com/d83057b4ce27e9852cdca8a90d5bab9dcb4b6489/test/mjsunit/regress/regress-crbug-493568.js

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4460b85a3e595a19a759876bd563f67bcb8cb586

commit 4460b85a3e595a19a759876bd563f67bcb8cb586
Author: neis <neis@chromium.org>
Date: Mon Dec 14 12:49:13 2015

[proxies] Add missing condition to GetProperty consistency check.

BUG= v8:1543 
LOG=N
R=cbruni@chromium.org,jkummerow@chromium.org

Review URL: https://codereview.chromium.org/1519073002

Cr-Commit-Position: refs/heads/master@{#32832}

[modify] http://crrev.com/4460b85a3e595a19a759876bd563f67bcb8cb586/src/objects.cc
[modify] http://crrev.com/4460b85a3e595a19a759876bd563f67bcb8cb586/test/mjsunit/harmony/proxies-get.js

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/5483cfea5db4733130af2cf01dd61bf9e07a548b

commit 5483cfea5db4733130af2cf01dd61bf9e07a548b
Author: jkummerow <jkummerow@chromium.org>
Date: Mon Dec 14 13:16:02 2015

[proxies] Turn on ClusterFuzz testing for Proxies and Reflect

BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1514123002

Cr-Commit-Position: refs/heads/master@{#32834}

[modify] http://crrev.com/5483cfea5db4733130af2cf01dd61bf9e07a548b/src/flag-definitions.h

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/e960636571729b530cc24d56ccc27d09193df9d7

commit e960636571729b530cc24d56ccc27d09193df9d7
Author: neis <neis@chromium.org>
Date: Mon Dec 14 13:44:38 2015

[proxies] Improve error messages.

This CL makes proxy-related error messages more accurate and verbose.
(Exception: those used in deprecated functions in v8natives.js.)  Some of
the old error messages were simply wrong.

On the side, fix ShouldThrow semantics of JSProxy::SetPrototype and
JSProxy::DefineOwnProperty.

R=cbruni@chromium.org, jkummerow@chromium.org
BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1527583002

Cr-Commit-Position: refs/heads/master@{#32836}

[modify] http://crrev.com/e960636571729b530cc24d56ccc27d09193df9d7/src/builtins.cc
[modify] http://crrev.com/e960636571729b530cc24d56ccc27d09193df9d7/src/js/proxy.js
[modify] http://crrev.com/e960636571729b530cc24d56ccc27d09193df9d7/src/js/v8natives.js
[modify] http://crrev.com/e960636571729b530cc24d56ccc27d09193df9d7/src/messages.h
[modify] http://crrev.com/e960636571729b530cc24d56ccc27d09193df9d7/src/objects.cc
[modify] http://crrev.com/e960636571729b530cc24d56ccc27d09193df9d7/src/objects.h
[modify] http://crrev.com/e960636571729b530cc24d56ccc27d09193df9d7/src/runtime/runtime-object.cc
[modify] http://crrev.com/e960636571729b530cc24d56ccc27d09193df9d7/src/runtime/runtime-proxy.cc

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/1596b015ff1ac5df72637e8423ab1467a137c8c6

commit 1596b015ff1ac5df72637e8423ab1467a137c8c6
Author: neis <neis@chromium.org>
Date: Mon Dec 14 15:11:55 2015

[proxies] Support proxies in JSON.parse and JSON.stringify.

This CL tries to correctly support the following:
- stringifying a proxy,
- stringifying with a proxy as replacer (callable or arraylike),
- stringifying with a replacer that returns a proxy,
- parsing with a callable proxy as reviver,
- parsing with a reviver that inserts proxies into the object,
- and whatever else you can imagine.

This also fixes some bugs observable without proxies.

BUG= v8:3139 , v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1515133002

Cr-Commit-Position: refs/heads/master@{#32843}

[modify] http://crrev.com/1596b015ff1ac5df72637e8423ab1467a137c8c6/src/bootstrapper.cc
[modify] http://crrev.com/1596b015ff1ac5df72637e8423ab1467a137c8c6/src/contexts.h
[modify] http://crrev.com/1596b015ff1ac5df72637e8423ab1467a137c8c6/src/js/json.js
[modify] http://crrev.com/1596b015ff1ac5df72637e8423ab1467a137c8c6/test/mjsunit/harmony/proxies-json.js
[modify] http://crrev.com/1596b015ff1ac5df72637e8423ab1467a137c8c6/test/mjsunit/json.js
[modify] http://crrev.com/1596b015ff1ac5df72637e8423ab1467a137c8c6/test/mjsunit/mjsunit.status
[modify] http://crrev.com/1596b015ff1ac5df72637e8423ab1467a137c8c6/test/test262/test262.status

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/0e2ea6a508b18a807a4192e6f578051a773aac87

commit 0e2ea6a508b18a807a4192e6f578051a773aac87
Author: jkummerow <jkummerow@chromium.org>
Date: Mon Dec 14 16:37:02 2015

[proxies] [tests] Un-skip proxies-with-unscopables, delete proxies-symbols

- proxies-with-unscopables needed updating of trap names
- proxies-symbols doesn't make sense any more: it tested symbol fitering/
  blacklisting, but Proxies interact with Symbols just fine according to
  the current spec.

BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1529473002

Cr-Commit-Position: refs/heads/master@{#32844}

[delete] http://crrev.com/1596b015ff1ac5df72637e8423ab1467a137c8c6/test/mjsunit/harmony/proxies-symbols.js
[modify] http://crrev.com/0e2ea6a508b18a807a4192e6f578051a773aac87/test/mjsunit/harmony/proxies-with-unscopables.js
[modify] http://crrev.com/0e2ea6a508b18a807a4192e6f578051a773aac87/test/mjsunit/mjsunit.status

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/3d8b51e2485b0f104e7b5c60ce5764f1cd4a9f42

commit 3d8b51e2485b0f104e7b5c60ce5764f1cd4a9f42
Author: jkummerow <jkummerow@chromium.org>
Date: Tue Dec 15 17:23:14 2015

[proxies] Check for stack overflow in Proxy internal methods

The proxy may be on its own target's or handler's prototype chain, leading
to infinite recursion either when looking up the trap, or when calling
through to the target.
We can't eagerly prevent this from happening (e.g. at "foo.__proto__ = bar"
calling time) because the presence of traps can change at any time.

BUG= v8:1543 , chromium:569882 
LOG=n

Review URL: https://codereview.chromium.org/1526953002

Cr-Commit-Position: refs/heads/master@{#32872}

[modify] http://crrev.com/3d8b51e2485b0f104e7b5c60ce5764f1cd4a9f42/src/objects.cc
[add] http://crrev.com/3d8b51e2485b0f104e7b5c60ce5764f1cd4a9f42/test/mjsunit/harmony/proxies-prototype-handler-stackoverflow.js
[add] http://crrev.com/3d8b51e2485b0f104e7b5c60ce5764f1cd4a9f42/test/mjsunit/harmony/proxies-prototype-target-stackoverflow.js

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f723b12336b2ff0ee6a9e6f9a676e4901706ede1

commit f723b12336b2ff0ee6a9e6f9a676e4901706ede1
Author: neis <neis@chromium.org>
Date: Wed Dec 16 14:27:15 2015

[proxies] Recognize arraylike proxies in Object.prototype.toString.

We must print "[object Array]" for proxies that satisfy Array.isArray.

Cosmetic change on the side: move ObjectProtoToString from JSObject to Object
since it deals with arbitrary objects.

R=adamk@chromium.org, verwaest@chromium.org
BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1526023002

Cr-Commit-Position: refs/heads/master@{#32902}

[modify] http://crrev.com/f723b12336b2ff0ee6a9e6f9a676e4901706ede1/src/objects.cc
[modify] http://crrev.com/f723b12336b2ff0ee6a9e6f9a676e4901706ede1/src/objects.h
[modify] http://crrev.com/f723b12336b2ff0ee6a9e6f9a676e4901706ede1/test/mjsunit/es6/object-tostring.js

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/0d83aad55725f8c20fe050f06c37ff51ed773e8b

commit 0d83aad55725f8c20fe050f06c37ff51ed773e8b
Author: neis <neis@chromium.org>
Date: Thu Dec 17 09:07:16 2015

[proxies] Correctly handle proxies in Function.prototype.bind

- Before getting the length property, we must check for it
  using [[GetOwnProperty]].  Also, if the obtained length
  is a number, we must properly convert it to an integer.

- In order to get the prototype we must use [[GetPrototypeOf]],
  and do so before checking the length.

R=cbruni@chromium.org, jkummerow@chromium.org
BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1530893002

Cr-Commit-Position: refs/heads/master@{#32934}

[modify] http://crrev.com/0d83aad55725f8c20fe050f06c37ff51ed773e8b/src/js/v8natives.js
[modify] http://crrev.com/0d83aad55725f8c20fe050f06c37ff51ed773e8b/src/runtime/runtime-function.cc
[modify] http://crrev.com/0d83aad55725f8c20fe050f06c37ff51ed773e8b/src/runtime/runtime.h
[modify] http://crrev.com/0d83aad55725f8c20fe050f06c37ff51ed773e8b/test/mjsunit/function-bind.js
[add] http://crrev.com/0d83aad55725f8c20fe050f06c37ff51ed773e8b/test/mjsunit/harmony/proxies-bind.js

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/d30693880c833e1d504e296aeca2260924cf6b1c

commit d30693880c833e1d504e296aeca2260924cf6b1c
Author: jkummerow <jkummerow@chromium.org>
Date: Fri Dec 18 11:11:44 2015

Stage Proxies and Reflect behind --harmony flag

BUG= v8:1543 , v8:3931 
LOG=y

Review URL: https://codereview.chromium.org/1528423002

Cr-Commit-Position: refs/heads/master@{#32967}

[modify] http://crrev.com/d30693880c833e1d504e296aeca2260924cf6b1c/src/flag-definitions.h
[modify] http://crrev.com/d30693880c833e1d504e296aeca2260924cf6b1c/test/test262/test262.status

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847

commit 8bfb7189a3472bc9d0820a1bd4534eaaf78ff847
Author: cbruni <cbruni@chromium.org>
Date: Mon Dec 21 12:47:15 2015

[proxies] Better print for proxies in d8

Function proxies would not be printed so far since they ended up in Function.prototype.toString which only works with Function as a receiver but no Proxy. Additionally added support for more gracefully dealing with recursive __proto__ structures introduced by proxies.

BUG= v8:1543 
LOG=n

Review URL: https://codereview.chromium.org/1530293004

Cr-Commit-Position: refs/heads/master@{#32985}

[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/d8.js
[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/js/collection.js
[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/js/json.js
[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/js/macros.py
[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/js/messages.js
[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/js/object-observe.js
[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/js/proxy.js
[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/js/v8natives.js
[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/runtime/runtime-proxy.cc
[modify] http://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847/src/runtime/runtime.h

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f4cd91c75f967da4f9cb3d368543ef1e77df4965

commit f4cd91c75f967da4f9cb3d368543ef1e77df4965
Author: cbruni <cbruni@chromium.org>
Date: Tue Dec 22 08:57:32 2015

Revert of [proxies] Better print for proxies in d8 (patchset #6 id:100001 of https://codereview.chromium.org/1530293004/ )

Reason for revert:
needs --allow-natives-syntax

Original issue's description:
> [proxies] Better print for proxies in d8
>
> Function proxies would not be printed so far since they ended up in Function.prototype.toString which only works with Function as a receiver but no Proxy. Additionally added support for more gracefully dealing with recursive __proto__ structures introduced by proxies.
>
> BUG= v8:1543 
> LOG=n
>
> Committed: https://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847
> Cr-Commit-Position: refs/heads/master@{#32985}

TBR=neis@chromium.org,yangguo@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:1543 

Review URL: https://codereview.chromium.org/1543803002

Cr-Commit-Position: refs/heads/master@{#33001}

[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/d8.js
[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/js/collection.js
[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/js/json.js
[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/js/macros.py
[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/js/messages.js
[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/js/object-observe.js
[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/js/proxy.js
[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/js/v8natives.js
[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/runtime/runtime-proxy.cc
[modify] http://crrev.com/f4cd91c75f967da4f9cb3d368543ef1e77df4965/src/runtime/runtime.h

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3

commit b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3
Author: cbruni <cbruni@chromium.org>
Date: Tue Dec 22 13:49:23 2015

[proxies] Better print for proxies in d8

Function proxies would not be printed so far since they ended up in Function.prototype.toString which only works with Function as a receiver but no Proxy. Additionally added support for more gracefully dealing with recursive __proto__ structures introduced by proxies.

drive-by-fix: use IS_PROXY if possible in .js files.

BUG= v8:1543 
LOG=n

Committed: https://crrev.com/8bfb7189a3472bc9d0820a1bd4534eaaf78ff847
Cr-Commit-Position: refs/heads/master@{#32985}

Review URL: https://codereview.chromium.org/1530293004

Cr-Commit-Position: refs/heads/master@{#33010}

[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/d8.js
[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/js/collection.js
[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/js/json.js
[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/js/macros.py
[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/js/messages.js
[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/js/object-observe.js
[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/js/proxy.js
[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/js/v8natives.js
[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/runtime/runtime-proxy.cc
[modify] http://crrev.com/b7ff2bd5cdfdd22cbfaa510e1c42e70f4ea1d8a3/src/runtime/runtime.h

Cc: adamk@chromium.org littledan@chromium.org
Is there anything blocking moving this to shipping?
As far as I know, there's still the issue with private symbols.  Andreas, can you comment on this?

Thanks.
Do they still leak through any traps? I thought we resigned to "well, just don't leak them outside of internal code" (if I understand Toon in https://codereview.chromium.org/1492923002)
Yes, at least defineProperty, as mentioned in one of the comments
above.  I'm working on this now (and found that the CL introduced two
bugs leading to failing DCHECKs when deleting or setting).
There is no need for so-called private Symbols to be Symbols. They must never become accessible to JS code. If introducing Proxies raises this danger, we're better off without proxies than we are with any significant danger of so-called private Symbols leaking.

Why don't we replace these so-called private Symbols with a distinct data type which cannot be reified and accessed by JS  code?
@erights: Private symbols are not exposed to user-land JS right now, and in the embedder API they _are_ in fact treated as non-values. Even internally, we use some macros that abstract from their nature as a regular value.

They are implemented as symbols internally because that makes their implementation simple, and they immediately benefit from literally hundreds of existing optimisations. A separate mechanism of comparable quality would be 3 orders of magnitude more work and complexity.


The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/284010c8b3cf0d73bfdf8ecbf9dede21ce7eb772

commit 284010c8b3cf0d73bfdf8ecbf9dede21ce7eb772
Author: machenbach <machenbach@chromium.org>
Date: Tue Jan 12 13:07:26 2016

Revert of [Proxies] Ship Proxies + Reflect (patchset #2 id:20001 of https://codereview.chromium.org/1580693002/ )

Reason for revert:
[Sheriff] Breaks layout tests. Please fix upstream first.

https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2032/builds/3587
https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/3873

Original issue's description:
> [Proxies] Ship Proxies + Reflect
>
> BUG= v8:3931 , v8:1543 
> LOG=Y
> R=verwaest@chromium.org, rossberg@chromium.org
>
> Committed: https://crrev.com/9ce5162fd2a36daf318e0ec3838cd90f4e179168
> Cr-Commit-Position: refs/heads/master@{#33234}

TBR=rossberg@chromium.org,verwaest@chromium.org,hablich@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG= v8:3931 , v8:1543 

Review URL: https://codereview.chromium.org/1579573004

Cr-Commit-Position: refs/heads/master@{#33236}

[modify] http://crrev.com/284010c8b3cf0d73bfdf8ecbf9dede21ce7eb772/src/flag-definitions.h
[modify] http://crrev.com/284010c8b3cf0d73bfdf8ecbf9dede21ce7eb772/test/mjsunit/mjsunit.status

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/96ec06efb0fa73bb3cc74d95bb3f1ebea83233de

commit 96ec06efb0fa73bb3cc74d95bb3f1ebea83233de
Author: neis <neis@chromium.org>
Date: Tue Jan 12 17:19:45 2016

Reland of "[Proxies] Ship Proxies + Reflect."

Failing chromium layout tests were marked for rebaselining.

Addition to original CL (https://codereview.chromium.org/1580693002/):
Skip some more ignition tests.

BUG= v8:3931 , v8:1543 
LOG=Y
R=hablich@chromium.org
CC=verwaest@chromium.org, rossberg@chromium.org,rmcilroy, oth

Review URL: https://codereview.chromium.org/1580783002

Cr-Commit-Position: refs/heads/master@{#33244}

[modify] http://crrev.com/96ec06efb0fa73bb3cc74d95bb3f1ebea83233de/src/flag-definitions.h
[modify] http://crrev.com/96ec06efb0fa73bb3cc74d95bb3f1ebea83233de/test/cctest/cctest.status
[modify] http://crrev.com/96ec06efb0fa73bb3cc74d95bb3f1ebea83233de/test/mjsunit/mjsunit.status

Is there anything blocking moving this to shipping?
Status: Fixed
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/07d05dddceab37f4da8d382e3fe60e90e02b99e5

commit 07d05dddceab37f4da8d382e3fe60e90e02b99e5
Author: cbruni <cbruni@chromium.org>
Date: Thu Feb 04 17:54:55 2016

[proxies] allow duplicate keys for [[OwnPropertyKeys]] trap.

BUG= v8:4724 ,  v8:1543 
LOG=N

Review URL: https://codereview.chromium.org/1668853002

Cr-Commit-Position: refs/heads/master@{#33747}

[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/api.cc
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/builtins.cc
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/debug/debug-scopes.cc
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/debug/debug-scopes.h
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/json-stringifier.h
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/key-accumulator.cc
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/key-accumulator.h
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/objects.cc
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/objects.h
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/runtime/runtime-array.cc
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/runtime/runtime-forin.cc
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/src/runtime/runtime-object.cc
[modify] http://crrev.com/07d05dddceab37f4da8d382e3fe60e90e02b99e5/test/mjsunit/harmony/proxies-ownkeys.js

Project Member

Comment 137 by bugdroid1@chromium.org, Mar 3 2016

Project Member

Comment 138 by bugdroid1@chromium.org, Mar 3 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/392435bc1458978c28a86f448a7b1eb6717a9ff1

commit 392435bc1458978c28a86f448a7b1eb6717a9ff1
Author: mbrandy <mbrandy@us.ibm.com>
Date: Thu Mar 03 18:12:01 2016

PPC: [proxies] throw TypeError if is_callable Map bit is unset

Port 18b9c1ce705e5fe38c23bdd19fcbbfbe3121c611

Original commit message:
    Per ProxyCreate() (https://tc39.github.io/ecma262/#sec-proxycreate), a Proxy
    is only given a [[Call]] slot if the target has a [[Call]] slot as well. This
    was previously implemented correctly for [[Construct]], but not for [[Call]].

R=caitpotter88@gmail.com, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG= v8:4797 ,  v8:4796 ,  v8:1543 
LOG=N

Review URL: https://codereview.chromium.org/1758283002

Cr-Commit-Position: refs/heads/master@{#34465}

[modify] https://crrev.com/392435bc1458978c28a86f448a7b1eb6717a9ff1/src/ppc/builtins-ppc.cc

Blockedon: -chromium:507282 chromium:507282
Hey so, would it make sense to merge the `is_callable` fixes for 4.9 and 5.0? it looks like these have been shipping for a while

Comment 140 Deleted

sorry about the accidental "Blockedon" change --- I didn't edit the form field in any way, and am not sure what happened ._.
One day is not 'shipping for a while'. What do you mean?
Proxies have been shipped for a while with this bug.
Do we want to backmerge it (even though in native code, I think the fix is pretty simple)?
I think we definitely want to merge this to 5.0 (once we have Canary coverage). 4.9 seems riskier.
Project Member

Comment 145 by bugdroid1@chromium.org, Mar 8 2016

Labels: merge-merged-5.0
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25

commit fb3e637ccaf5d48cfec43ad73f8b546f4b196a25
Author: Adam Klein <adamk@chromium.org>
Date: Tue Mar 08 19:40:28 2016

Version 5.0.71.10 (cherry-pick)

Merged 18b9c1ce705e5fe38c23bdd19fcbbfbe3121c611
Merged 392435bc1458978c28a86f448a7b1eb6717a9ff1

[proxies] throw TypeError if is_callable Map bit is unset

PPC: [proxies] throw TypeError if is_callable Map bit is unset

BUG= v8:1543 , v8:4796 , v8:4797 
LOG=N
TBR=hablich@chromium.org

Review URL: https://codereview.chromium.org/1774113003 .

Cr-Commit-Position: refs/branch-heads/5.0@{#15}
Cr-Branched-From: ad16e6c2cbd2c6b0f2e8ff944ac245561c682ac2-refs/heads/5.0.71@{#1}
Cr-Branched-From: bd9df50d75125ee2ad37b3d92c8f50f0a8b5f030-refs/heads/master@{#34215}

[modify] https://crrev.com/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25/include/v8-version.h
[modify] https://crrev.com/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25/src/arm/builtins-arm.cc
[modify] https://crrev.com/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25/src/arm64/builtins-arm64.cc
[modify] https://crrev.com/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25/src/ia32/builtins-ia32.cc
[modify] https://crrev.com/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25/src/mips/builtins-mips.cc
[modify] https://crrev.com/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25/src/mips64/builtins-mips64.cc
[modify] https://crrev.com/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25/src/ppc/builtins-ppc.cc
[modify] https://crrev.com/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25/src/x64/builtins-x64.cc
[modify] https://crrev.com/fb3e637ccaf5d48cfec43ad73f8b546f4b196a25/test/mjsunit/harmony/proxies-apply.js

Project Member

Comment 146 by bugdroid1@chromium.org, Mar 9 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/76ea63ba64f4510b871c436542046ad30f94226d

commit 76ea63ba64f4510b871c436542046ad30f94226d
Author: zhengxing.li <zhengxing.li@intel.com>
Date: Wed Mar 09 09:38:28 2016

Version 5.0.71.11 (cherry-pick)

Merged 1736ad786ff96212fe452acb793b9543ca154da6

X87: [proxies] throw TypeError if is_callable Map bit is unset.

R=hablich@chromium.org
BUG= v8:1543 , v8:4796 , v8:4797 
LOG=N
NOTRY=true
NOPRESUBMIT=true

Review URL: https://codereview.chromium.org/1777853002

Cr-Commit-Position: refs/branch-heads/5.0@{#17}
Cr-Branched-From: ad16e6c2cbd2c6b0f2e8ff944ac245561c682ac2-refs/heads/5.0.71@{#1}
Cr-Branched-From: bd9df50d75125ee2ad37b3d92c8f50f0a8b5f030-refs/heads/master@{#34215}

[modify] https://crrev.com/76ea63ba64f4510b871c436542046ad30f94226d/src/x87/builtins-x87.cc

Project Member

Comment 147 by bugdroid1@chromium.org, Mar 23 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/2efc1381313248352630b05f6d48064badfe7671

commit 2efc1381313248352630b05f6d48064badfe7671
Author: cbruni <cbruni@chromium.org>
Date: Wed Mar 23 08:26:35 2016

[proxies] use [[GetPrototypeOf]] trap in for-in key accumulation

With the recent spec change removing the [[Enumerate]] internal method, we now
have to walk the complete prototype chain. This implies that we call the
[[GetPrototypeOf]] trap on proxies.

As a secondary change we now trigger the [[GetOwnProperty]] trap for the for-in
filter step to see whether the properties are still enumerable. Before we did this
in the key-accumulation phase. This way we slightly reduce the number of traps
invoked. Whilst this is not ideal, it comes closer to the Spec's example
implementation.

BUG= v8:1543 ,  v8:4768 
LOG=n

Review URL: https://codereview.chromium.org/1748923003

Cr-Commit-Position: refs/heads/master@{#35017}

[modify] https://crrev.com/2efc1381313248352630b05f6d48064badfe7671/src/keys.cc
[modify] https://crrev.com/2efc1381313248352630b05f6d48064badfe7671/src/keys.h
[modify] https://crrev.com/2efc1381313248352630b05f6d48064badfe7671/src/objects-inl.h
[modify] https://crrev.com/2efc1381313248352630b05f6d48064badfe7671/src/objects.cc
[modify] https://crrev.com/2efc1381313248352630b05f6d48064badfe7671/src/objects.h
[modify] https://crrev.com/2efc1381313248352630b05f6d48064badfe7671/src/prototype.h
[modify] https://crrev.com/2efc1381313248352630b05f6d48064badfe7671/src/runtime/runtime-forin.cc
[modify] https://crrev.com/2efc1381313248352630b05f6d48064badfe7671/test/mjsunit/es6/proxies-for.js
[modify] https://crrev.com/2efc1381313248352630b05f6d48064badfe7671/test/mjsunit/for-in-opt.js

Blocking: chromium:399951
Project Member

Comment 153 by bugdroid1@chromium.org, Aug 1 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/f4f06c50298b275b531e510f7521df48778c2b0a

commit f4f06c50298b275b531e510f7521df48778c2b0a
Author: cbruni <cbruni@chromium.org>
Date: Mon Aug 01 10:08:54 2016

[keys] Trigger [[getOwnPropertyDescriptor]] trap on proxies for Object.keys

This CL fixes a long-standing bug with Object.keys where the enumerability
check was omitted if the [ownKeys] trap is not present. The only distinction the
KeyAccumulator needs is whether it collects keys for for-in (is_for_in_) or not.
ForInFilter performs a separate step to filter out non-enumerable keys later-on
while in all the other use-cases we have to filter keys.

BUG= v8:1543 ,  v8:5250 

Review-Url: https://codereview.chromium.org/2176113009
Cr-Commit-Position: refs/heads/master@{#38199}

[modify] https://crrev.com/f4f06c50298b275b531e510f7521df48778c2b0a/src/keys.cc
[modify] https://crrev.com/f4f06c50298b275b531e510f7521df48778c2b0a/src/keys.h
[modify] https://crrev.com/f4f06c50298b275b531e510f7521df48778c2b0a/src/runtime/runtime-forin.cc
[modify] https://crrev.com/f4f06c50298b275b531e510f7521df48778c2b0a/test/mjsunit/es6/proxies-keys.js

Labels: NodeJS-Backport-Rejected
Labels: Priority-2

Sign in to add a comment