Chromium Code Reviews| 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 } |
| } |
| }; |