Chromium Code Reviews| Index: test/mjsunit/arguments-apply-deopt.js |
| diff --git a/test/mjsunit/regress/regress-crbug-150545.js b/test/mjsunit/arguments-apply-deopt.js |
| similarity index 67% |
| copy from test/mjsunit/regress/regress-crbug-150545.js |
| copy to test/mjsunit/arguments-apply-deopt.js |
| index 8238d2fa0d36ffd40be60628d333f5dcb1f0ba51..f7cb605de4c9e30ca10bf78f573f32125ac00e5c 100644 |
| --- a/test/mjsunit/regress/regress-crbug-150545.js |
| +++ b/test/mjsunit/arguments-apply-deopt.js |
| @@ -27,29 +27,50 @@ |
| // Flags: --allow-natives-syntax |
| -// Test that we do not generate OSR entry points that have an arguments |
| -// stack height different from zero. The OSR machinery cannot generate |
| -// frames for that. |
| - |
| -(function() { |
| - "use strict"; |
| - |
| - var instantReturn = false; |
| - function inner() { |
| - if (instantReturn) return; |
| - assertSame(3, arguments.length); |
| - assertSame(1, arguments[0]); |
| - assertSame(2, arguments[1]); |
| - assertSame(3, arguments[2]); |
| +(function ApplyArgumentsDeoptInReceiverMapCheck() { |
| + function invoker(h, r) { |
| + return function XXXXX() { |
|
Jakob Kummerow
2014/01/10 13:47:03
nit: indentation is inconsistent here and again se
Jarin
2014/01/10 14:14:45
Done.
|
| + var res = h.apply({ fffffff : r(this) }, arguments); |
| + return res; |
| + }; |
| } |
| - function outer() { |
| - inner(1,2,3); |
| - // Trigger OSR, if optimization is not disabled. |
| - if (%GetOptimizationStatus(outer) != 4) { |
| - while (%GetOptimizationCount(outer) == 0) {} |
| - } |
| + var y = invoker(m, selfOf); |
| + |
| + function selfOf(c) { |
| + var sssss = c.self_; |
| + return sssss; |
| + } |
| + |
| + function m() { |
| + return this.fffffff; |
| + } |
| + |
| + for (var i = 0; i < 200; i++) { |
|
Jakob Kummerow
2014/01/10 13:47:03
use a smaller loop count here (say, 3), and %Optim
Jarin
2014/01/10 14:14:45
Done.
|
| + y.apply({ self_ : 3 }); |
| + } |
| + |
| + assertEquals(y.apply({ self_ : 3, uuu : 4 }), 3); |
| +})(); |
| + |
| +(function ApplyArgumetsDeoptInReceiverExplicit() { |
|
Jakob Kummerow
2014/01/10 13:47:03
nit: s/Argumets/Arguments/
Jarin
2014/01/10 14:14:45
Done.
|
| + |
| + function f() { return this + 21; } |
| + |
| + function deopt() { |
| + %DeoptimizeFunction(XXXXX); |
| + return 21; |
| } |
| - outer(); |
| + function XXXXX() { |
| + return f.apply(deopt(), arguments); |
| + }; |
| + |
| + XXXXX(); |
| + XXXXX(); |
| + XXXXX(); |
| + |
| + %OptimizeFunctionOnNextCall(XXXXX); |
| + |
| + assertEquals(42, XXXXX()); |
| })(); |