| Index: test/mjsunit/for-in-opt.js
|
| diff --git a/test/mjsunit/for-in-opt.js b/test/mjsunit/for-in-opt.js
|
| index c5ececd74a7e2e5003cb7658aec9ad323aca303e..bc59a1b0877e0ebd687d4698ac4b32ab724d7869 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 = {
|
| - 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()
|
| + return { enumerable: true, configurable: true }
|
| }
|
| };
|
|
|
|
|