| Index: test/mjsunit/regress/regress-crbug-125148.js
|
| diff --git a/test/mjsunit/regress/regress-crbug-125148.js b/test/mjsunit/regress/regress-crbug-125148.js
|
| index 025f9a5a4bd358cf71041254de202c4a28408e0d..142f14035c2f45dd53ce022893fe5649ee18aeb9 100644
|
| --- a/test/mjsunit/regress/regress-crbug-125148.js
|
| +++ b/test/mjsunit/regress/regress-crbug-125148.js
|
| @@ -27,26 +27,42 @@
|
|
|
| // Flags: --allow-natives-syntax
|
|
|
| -var A = {
|
| - foo: function() { assertUnreachable(); }
|
| +function ToDictionaryMode(x) {
|
| + %OptimizeObjectForAddingMultipleProperties(x, 100);
|
| }
|
|
|
| -var B = {
|
| - b: 2,
|
| - foo: function() { return 1; }
|
| -}
|
| -B.__proto__ = A;
|
| +var A, B, C;
|
|
|
| -var C = {};
|
| -C.__proto__ = B;
|
| +// The initial bug report was about calling a know function...
|
| +A = {};
|
| +Object.defineProperty(A, "foo", { value: function() { assertUnreachable(); }});
|
|
|
| -function bar(x) {
|
| - return x.foo();
|
| -}
|
| +B = Object.create(A);
|
| +Object.defineProperty(B, "foo", { value: function() { return 111; }});
|
|
|
| -for (var i = 0; i < 3; i++) {
|
| - assertEquals(1, bar(C));
|
| -}
|
| -%OptimizeObjectForAddingMultipleProperties(B, 100); // Force dictionary mode.
|
| +C = Object.create(B);
|
| +
|
| +function bar(x) { return x.foo(); }
|
| +
|
| +assertEquals(111, bar(C));
|
| +assertEquals(111, bar(C));
|
| +ToDictionaryMode(B);
|
| %OptimizeFunctionOnNextCall(bar);
|
| -assertEquals(1, bar(C));
|
| +assertEquals(111, bar(C));
|
| +
|
| +// Although this was not in the initial bug report: The same for getters...
|
| +A = {};
|
| +Object.defineProperty(A, "baz", { get: function() { assertUnreachable(); }});
|
| +
|
| +B = Object.create(A);
|
| +Object.defineProperty(B, "baz", { get: function() { return 111; }});
|
| +
|
| +C = Object.create(B);
|
| +
|
| +function boo(x) { return x.baz; }
|
| +
|
| +assertEquals(111, boo(C));
|
| +assertEquals(111, boo(C));
|
| +ToDictionaryMode(B);
|
| +%OptimizeFunctionOnNextCall(boo);
|
| +assertEquals(111, boo(C));
|
|
|