Index: test/mjsunit/debug-optimize.js |
diff --git a/test/mjsunit/debug-optimize.js b/test/mjsunit/debug-optimize.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d1ce63d5a06a763a592be5dfd997153d5cb7d74b |
--- /dev/null |
+++ b/test/mjsunit/debug-optimize.js |
@@ -0,0 +1,54 @@ |
+// Copyright 2015 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Flags: --expose-debug-as debug --allow-natives-syntax --use-inlining |
+ |
+var Debug = debug.Debug; |
+ |
+function f1() { |
+ return 1; |
+} |
+ |
+function f2() { |
+ return 2; |
+} |
+ |
+function f3() { |
+ return f1(); |
+} |
+ |
+function f4() { |
+ return 4; |
+} |
+ |
+ |
+function optimize(f) { |
+ f(); |
+ f(); |
+ %OptimizeFunctionOnNextCall(f); |
+ f(); |
+} |
+ |
+optimize(f1); |
+optimize(f2); |
+optimize(f3); |
+ |
+Debug.setListener(function() {}); |
+ |
+assertOptimized(f1); |
+assertOptimized(f2); |
+assertOptimized(f3); |
+ |
+Debug.setBreakPoint(f1, 1); |
+ |
+// Setting break point deoptimizes f1 and f3 (which inlines f1). |
+assertUnoptimized(f1); |
+assertOptimized(f2); |
+assertUnoptimized(f3); |
+ |
+// We can optimize with break points set. |
+optimize(f4); |
+assertOptimized(f4); |
+ |
+Debug.setListener(null); |