| Index: test/mjsunit/assert-opt-and-deopt.js
|
| diff --git a/test/mjsunit/assert-opt-and-deopt.js b/test/mjsunit/assert-opt-and-deopt.js
|
| index e9aba1d3c92d0f7a4ecf47df08f091fc210fe7a4..0a2f95d8725845c20d0d58bc82bde21080053871 100644
|
| --- a/test/mjsunit/assert-opt-and-deopt.js
|
| +++ b/test/mjsunit/assert-opt-and-deopt.js
|
| @@ -181,3 +181,37 @@ tracker.AssertOptCount(f, 2);
|
| tracker.AssertIsOptimized(f, true);
|
| tracker.AssertDeoptHappened(f, true);
|
| tracker.AssertDeoptCount(f, 1);
|
| +
|
| +
|
| +function deoptTest() {
|
| + function k(a) {
|
| + return a / 10;
|
| + }
|
| +
|
| + function f(a) {
|
| + return k(a);
|
| + }
|
| +
|
| + var tracker = new OptTracker();
|
| + tracker.CheckpointOptCount(f);
|
| +
|
| + f(10);
|
| + %OptimizeFunctionOnNextCall(f);
|
| + f(10);
|
| +
|
| + tracker.AssertOptCount(f, 1);
|
| + tracker.AssertIsOptimized(f, true);
|
| + tracker.AssertDeoptHappened(f, false);
|
| + tracker.AssertDeoptCount(f, 0);
|
| +
|
| + try {
|
| + f('a');
|
| + } catch(e) {
|
| + }
|
| +
|
| + tracker.AssertIsOptimized(f, false);
|
| + tracker.AssertDeoptHappened(f, true);
|
| + tracker.AssertDeoptCount(f, 1);
|
| +}
|
| +
|
| +deoptTest();
|
|
|