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(); |