Index: test/cctest/compiler/test-run-deopt.cc |
diff --git a/test/cctest/compiler/test-run-deopt.cc b/test/cctest/compiler/test-run-deopt.cc |
index af173d6be6e5b917393ab4205b227902fb1f0798..069aa0369c9965a1de66cfc4a2dea8af115c875b 100644 |
--- a/test/cctest/compiler/test-run-deopt.cc |
+++ b/test/cctest/compiler/test-run-deopt.cc |
@@ -4,11 +4,26 @@ |
#include "src/v8.h" |
+#include "test/cctest/cctest.h" |
#include "test/cctest/compiler/function-tester.h" |
+using namespace v8; |
using namespace v8::internal; |
using namespace v8::internal::compiler; |
+static void IsOptimized(const FunctionCallbackInfo<v8::Value>& args) { |
+ JavaScriptFrameIterator it(CcTest::i_isolate()); |
+ JavaScriptFrame* frame = it.frame(); |
+ return args.GetReturnValue().Set(frame->is_optimized()); |
+} |
+ |
+ |
+static void InstallIsOptimizedHelper(v8::Isolate* isolate) { |
+ Local<v8::Context> context = isolate->GetCurrentContext(); |
+ Local<v8::FunctionTemplate> t = FunctionTemplate::New(isolate, IsOptimized); |
+ context->Global()->Set(v8_str("IsOptimized"), t->GetFunction()); |
+} |
+ |
#if V8_TURBOFAN_TARGET |
TEST(TurboSimpleDeopt) { |
@@ -18,11 +33,12 @@ TEST(TurboSimpleDeopt) { |
FunctionTester T( |
"(function f(a) {" |
"var b = 1;" |
- "if (!%IsOptimized()) return 0;" |
+ "if (!IsOptimized()) return 0;" |
"%DeoptimizeFunction(f);" |
- "if (%IsOptimized()) return 0;" |
+ "if (IsOptimized()) return 0;" |
"return a + b; })"); |
+ InstallIsOptimizedHelper(CcTest::isolate()); |
T.CheckCall(T.Val(2), T.Val(1)); |
} |
@@ -35,11 +51,12 @@ TEST(TurboSimpleDeoptInExpr) { |
"(function f(a) {" |
"var b = 1;" |
"var c = 2;" |
- "if (!%IsOptimized()) return 0;" |
+ "if (!IsOptimized()) return 0;" |
"var d = b + (%DeoptimizeFunction(f), c);" |
- "if (%IsOptimized()) return 0;" |
+ "if (IsOptimized()) return 0;" |
"return d + a; })"); |
+ InstallIsOptimizedHelper(CcTest::isolate()); |
T.CheckCall(T.Val(6), T.Val(3)); |
} |