Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1852)

Unified Diff: test/mjsunit/for-in-opt.js

Issue 1748923003: [proxies] use [[GetPrototypeOf]] trap in for-in (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: do not create a HandleScope when passing LookuptIterator* Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/mjsunit/for-in-opt.js
diff --git a/test/mjsunit/for-in-opt.js b/test/mjsunit/for-in-opt.js
index 8f735393825446e52a91f9e8ec156c7ba3f04870..d486b6f0e92a316b899979f2a2e0e2c885a87c77 100644
--- a/test/mjsunit/for-in-opt.js
+++ b/test/mjsunit/for-in-opt.js
@@ -23,9 +23,9 @@ assertEquals(["0","1","2"], f("bla"));
// Test the lazy deopt points.
var keys = ["a", "b", "c", "d"];
-var has_keys = [];
-var deopt_has = false;
+var property_descriptor_keys = [];
var deopt_enum = false;
+var deopt_property_descriptor = false;
var handler = {
ownKeys() {
@@ -35,16 +35,14 @@ var handler = {
}
return keys;
},
- getOwnPropertyDescriptor() { return { enumerable: true, configurable: true }},
-
- has(target, k) {
- if (deopt_has) {
+ getOwnPropertyDescriptor(target, k) {
+ if (deopt_property_descriptor) {
%DeoptimizeFunction(f2);
- deopt_has = false;
+ deopt_property_descriptor = false;
}
- has_keys.push(k);
- return true;
- }
+ property_descriptor_keys.push(k);
+ return { enumerable: true, configurable: true }
+ },
};
@@ -61,8 +59,8 @@ function f2(o) {
function check_f2() {
assertEquals(keys, f2(o));
- assertEquals(keys, has_keys);
- has_keys.length = 0;
+ assertEquals(keys, property_descriptor_keys);
+ property_descriptor_keys.length = 0;
}
check_f2();
@@ -75,9 +73,10 @@ check_f2();
// Test lazy deopt after FILTER_KEY
%OptimizeFunctionOnNextCall(f2);
-deopt_has = true;
+deopt_property_descriptor = true;
check_f2();
+
function f3(o) {
for (var i in o) {
}
@@ -91,14 +90,6 @@ f3(undefined);
f3(null);
// Reliable repro for an issue previously flushed out by GC stress.
-var handler2 = {
Jakob Kummerow 2016/03/18 14:12:00 That's weird. This careful setup of handler2/proxy
Camillo Bruni 2016/03/18 17:46:34 yeah, this confused me more that it should have...
- getPropertyDescriptor(target, k) {
- has_keys.push(k);
- return {value: 10, configurable: true, writable: false, enumerable: true};
- }
-}
-var proxy2 = new Proxy({}, handler2);
-var o2 = {__proto__: proxy2};
var p = {x: "x"}
function f4(o, p) {
@@ -112,8 +103,8 @@ function f4(o, p) {
function check_f4() {
assertEquals(keys, f4(o, p));
- assertEquals(keys, has_keys);
- has_keys.length = 0;
+ assertEquals(keys, property_descriptor_keys);
+ property_descriptor_keys.length = 0;
}
check_f4();
@@ -138,12 +129,10 @@ function listener(event, exec_state, event_data, data) {
var handler3 = {
ownKeys() { return ["a", "b"] },
- getOwnPropertyDescriptor() { return { enumerable: true, configurable: true }},
-
- has(target, k) {
+ getOwnPropertyDescriptor(target, k) {
if (k == "a") count++;
- if (x) %ScheduleBreak();
- return true;
+ if (x) %ScheduleBreak()
Jakob Kummerow 2016/03/18 14:12:00 nit: why drop the semicolons?
Camillo Bruni 2016/03/18 17:46:34 random... will re-add ;)
+ return { enumerable: true, configurable: true }
}
};

Powered by Google App Engine
This is Rietveld 408576698