Upgrade V8 to version 4.9.385.28
https://chromium.googlesource.com/v8/v8/+/4.9.385.28
FPIIM-449
Change-Id: I4b2e74289d4bf3667f2f3dc8aa2e541f63e26eb4
diff --git a/test/cctest/test-deoptimization.cc b/test/cctest/test-deoptimization.cc
index a201ccd..7ba16b5 100644
--- a/test/cctest/test-deoptimization.cc
+++ b/test/cctest/test-deoptimization.cc
@@ -32,7 +32,7 @@
#include "src/api.h"
#include "src/base/platform/platform.h"
#include "src/compilation-cache.h"
-#include "src/debug.h"
+#include "src/debug/debug.h"
#include "src/deoptimizer.h"
#include "src/isolate.h"
#include "test/cctest/cctest.h"
@@ -48,50 +48,60 @@
// Size of temp buffer for formatting small strings.
#define SMALL_STRING_BUFFER_SIZE 80
-// Utility class to set --allow-natives-syntax --always-opt and --nouse-inlining
-// when constructed and return to their default state when destroyed.
+// Utility class to set the following runtime flags when constructed and return
+// to their default state when destroyed:
+// --allow-natives-syntax --always-opt --noturbo-inlining --nouse-inlining
class AlwaysOptimizeAllowNativesSyntaxNoInlining {
public:
AlwaysOptimizeAllowNativesSyntaxNoInlining()
: always_opt_(i::FLAG_always_opt),
allow_natives_syntax_(i::FLAG_allow_natives_syntax),
+ turbo_inlining_(i::FLAG_turbo_inlining),
use_inlining_(i::FLAG_use_inlining) {
i::FLAG_always_opt = true;
i::FLAG_allow_natives_syntax = true;
+ i::FLAG_turbo_inlining = false;
i::FLAG_use_inlining = false;
}
~AlwaysOptimizeAllowNativesSyntaxNoInlining() {
- i::FLAG_allow_natives_syntax = allow_natives_syntax_;
i::FLAG_always_opt = always_opt_;
+ i::FLAG_allow_natives_syntax = allow_natives_syntax_;
+ i::FLAG_turbo_inlining = turbo_inlining_;
i::FLAG_use_inlining = use_inlining_;
}
private:
bool always_opt_;
bool allow_natives_syntax_;
+ bool turbo_inlining_;
bool use_inlining_;
};
-// Utility class to set --allow-natives-syntax and --nouse-inlining when
-// constructed and return to their default state when destroyed.
+// Utility class to set the following runtime flags when constructed and return
+// to their default state when destroyed:
+// --allow-natives-syntax --noturbo-inlining --nouse-inlining
class AllowNativesSyntaxNoInlining {
public:
AllowNativesSyntaxNoInlining()
: allow_natives_syntax_(i::FLAG_allow_natives_syntax),
+ turbo_inlining_(i::FLAG_turbo_inlining),
use_inlining_(i::FLAG_use_inlining) {
i::FLAG_allow_natives_syntax = true;
+ i::FLAG_turbo_inlining = false;
i::FLAG_use_inlining = false;
}
~AllowNativesSyntaxNoInlining() {
i::FLAG_allow_natives_syntax = allow_natives_syntax_;
+ i::FLAG_turbo_inlining = turbo_inlining_;
i::FLAG_use_inlining = use_inlining_;
}
private:
bool allow_natives_syntax_;
+ bool turbo_inlining_;
bool use_inlining_;
};
@@ -99,21 +109,19 @@
// Abort any ongoing incremental marking to make sure that all weak global
// handle callbacks are processed.
static void NonIncrementalGC(i::Isolate* isolate) {
- isolate->heap()->CollectAllGarbage(i::Heap::kAbortIncrementalMarkingMask);
+ isolate->heap()->CollectAllGarbage();
}
-static Handle<JSFunction> GetJSFunction(v8::Handle<v8::Object> obj,
+static Handle<JSFunction> GetJSFunction(v8::Local<v8::Context> context,
const char* property_name) {
- v8::Local<v8::Function> fun =
- v8::Local<v8::Function>::Cast(obj->Get(v8_str(property_name)));
- return v8::Utils::OpenHandle(*fun);
+ v8::Local<v8::Function> fun = v8::Local<v8::Function>::Cast(
+ context->Global()->Get(context, v8_str(property_name)).ToLocalChecked());
+ return i::Handle<i::JSFunction>::cast(v8::Utils::OpenHandle(*fun));
}
TEST(DeoptimizeSimple) {
- i::FLAG_turbo_deoptimization = true;
-
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -129,8 +137,12 @@
}
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK(!GetJSFunction(env->Global(), "f")->IsOptimized());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK(!GetJSFunction(env.local(), "f")->IsOptimized());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
// Test lazy deoptimization of a simple function. Call the function after the
@@ -145,15 +157,17 @@
}
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK(!GetJSFunction(env->Global(), "f")->IsOptimized());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK(!GetJSFunction(env.local(), "f")->IsOptimized());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
}
TEST(DeoptimizeSimpleWithArguments) {
- i::FLAG_turbo_deoptimization = true;
-
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -169,8 +183,12 @@
}
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK(!GetJSFunction(env->Global(), "f")->IsOptimized());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK(!GetJSFunction(env.local(), "f")->IsOptimized());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
// Test lazy deoptimization of a simple function with some arguments. Call the
@@ -186,15 +204,17 @@
}
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK(!GetJSFunction(env->Global(), "f")->IsOptimized());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK(!GetJSFunction(env.local(), "f")->IsOptimized());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
}
TEST(DeoptimizeSimpleNested) {
- i::FLAG_turbo_deoptimization = true;
-
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -211,16 +231,23 @@
"result = f(1, 2, 3);");
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(6, env->Global()->Get(v8_str("result"))->Int32Value());
- CHECK(!GetJSFunction(env->Global(), "f")->IsOptimized());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(6, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK(!GetJSFunction(env.local(), "f")->IsOptimized());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
}
}
TEST(DeoptimizeRecursive) {
- i::FLAG_turbo_deoptimization = true;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -237,18 +264,27 @@
}
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(11, env->Global()->Get(v8_str("calls"))->Int32Value());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(11, env->Global()
+ ->Get(env.local(), v8_str("calls"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
v8::Local<v8::Function> fun = v8::Local<v8::Function>::Cast(
- env->Global()->Get(v8::String::NewFromUtf8(CcTest::isolate(), "f")));
+ env->Global()
+ ->Get(env.local(), v8_str(CcTest::isolate(), "f"))
+ .ToLocalChecked());
CHECK(!fun.IsEmpty());
}
TEST(DeoptimizeMultiple) {
- i::FLAG_turbo_deoptimization = true;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -270,14 +306,21 @@
}
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(14, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(14, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
}
TEST(DeoptimizeConstructor) {
- i::FLAG_turbo_deoptimization = true;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -292,8 +335,15 @@
}
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK(env->Global()->Get(v8_str("result"))->IsTrue());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK(env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->IsTrue());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
{
@@ -309,14 +359,21 @@
}
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(3, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(3, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
}
TEST(DeoptimizeConstructorMultiple) {
- i::FLAG_turbo_deoptimization = true;
LocalContext env;
v8::HandleScope scope(env->GetIsolate());
@@ -339,17 +396,26 @@
}
NonIncrementalGC(CcTest::i_isolate());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(14, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(14, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(CcTest::i_isolate()));
}
UNINITIALIZED_TEST(DeoptimizeBinaryOperationADDString) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
AllowNativesSyntaxNoInlining options;
- v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
isolate->Enter();
{
@@ -381,7 +447,7 @@
CompileRun(f_source);
CompileRun("f('a+', new X());");
CHECK(!i_isolate->use_crankshaft() ||
- GetJSFunction(env->Global(), "f")->IsOptimized());
+ GetJSFunction(env.local(), "f")->IsOptimized());
// Call f and force deoptimization while processing the binary operation.
CompileRun(
@@ -390,12 +456,17 @@
}
NonIncrementalGC(i_isolate);
- CHECK(!GetJSFunction(env->Global(), "f")->IsOptimized());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- v8::Handle<v8::Value> result = env->Global()->Get(v8_str("result"));
+ CHECK(!GetJSFunction(env.local(), "f")->IsOptimized());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ v8::Local<v8::Value> result =
+ env->Global()->Get(env.local(), v8_str("result")).ToLocalChecked();
CHECK(result->IsString());
v8::String::Utf8Value utf8(result);
- CHECK_EQ("a+an X", *utf8);
+ CHECK_EQ(0, strcmp("a+an X", *utf8));
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(i_isolate));
}
isolate->Exit();
@@ -438,20 +509,21 @@
CompileRun(f_source);
CompileRun("f(7, new X());");
CHECK(!i_isolate->use_crankshaft() ||
- GetJSFunction((*env)->Global(), "f")->IsOptimized());
+ GetJSFunction((*env).local(), "f")->IsOptimized());
// Call f and force deoptimization while processing the binary operation.
CompileRun("deopt = true;"
"var result = f(7, new X());");
NonIncrementalGC(i_isolate);
- CHECK(!GetJSFunction((*env)->Global(), "f")->IsOptimized());
+ CHECK(!GetJSFunction((*env).local(), "f")->IsOptimized());
}
UNINITIALIZED_TEST(DeoptimizeBinaryOperationADD) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
- v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
isolate->Enter();
{
@@ -460,8 +532,16 @@
TestDeoptimizeBinaryOpHelper(&env, "+");
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(15, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(15, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(i_isolate));
}
isolate->Exit();
@@ -470,9 +550,10 @@
UNINITIALIZED_TEST(DeoptimizeBinaryOperationSUB) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
- v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
isolate->Enter();
{
@@ -481,8 +562,16 @@
TestDeoptimizeBinaryOpHelper(&env, "-");
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(-1, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(-1, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(i_isolate));
}
isolate->Exit();
@@ -491,9 +580,10 @@
UNINITIALIZED_TEST(DeoptimizeBinaryOperationMUL) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
- v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
isolate->Enter();
{
@@ -502,8 +592,16 @@
TestDeoptimizeBinaryOpHelper(&env, "*");
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(56, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(56, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(i_isolate));
}
isolate->Exit();
@@ -512,9 +610,10 @@
UNINITIALIZED_TEST(DeoptimizeBinaryOperationDIV) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
- v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
isolate->Enter();
{
@@ -523,8 +622,16 @@
TestDeoptimizeBinaryOpHelper(&env, "/");
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(0, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(0, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(i_isolate));
}
isolate->Exit();
@@ -533,9 +640,10 @@
UNINITIALIZED_TEST(DeoptimizeBinaryOperationMOD) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
- v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
isolate->Enter();
{
@@ -544,8 +652,16 @@
TestDeoptimizeBinaryOpHelper(&env, "%");
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(7, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(7, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(i_isolate));
}
isolate->Exit();
@@ -554,9 +670,10 @@
UNINITIALIZED_TEST(DeoptimizeCompare) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
- v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
isolate->Enter();
{
@@ -589,7 +706,7 @@
CompileRun(f_source);
CompileRun("f('a', new X());");
CHECK(!i_isolate->use_crankshaft() ||
- GetJSFunction(env->Global(), "f")->IsOptimized());
+ GetJSFunction(env.local(), "f")->IsOptimized());
// Call f and force deoptimization while processing the comparison.
CompileRun(
@@ -598,9 +715,17 @@
}
NonIncrementalGC(i_isolate);
- CHECK(!GetJSFunction(env->Global(), "f")->IsOptimized());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(true, env->Global()->Get(v8_str("result"))->BooleanValue());
+ CHECK(!GetJSFunction(env.local(), "f")->IsOptimized());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(true, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->BooleanValue(env.local())
+ .FromJust());
CHECK_EQ(0, Deoptimizer::GetDeoptimizedCodeCount(i_isolate));
}
isolate->Exit();
@@ -609,9 +734,10 @@
UNINITIALIZED_TEST(DeoptimizeLoadICStoreIC) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
- v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
isolate->Enter();
{
@@ -671,10 +797,10 @@
CompileRun("f2(new X(), 'z');");
CompileRun("g2(new X(), 'z');");
if (i_isolate->use_crankshaft()) {
- CHECK(GetJSFunction(env->Global(), "f1")->IsOptimized());
- CHECK(GetJSFunction(env->Global(), "g1")->IsOptimized());
- CHECK(GetJSFunction(env->Global(), "f2")->IsOptimized());
- CHECK(GetJSFunction(env->Global(), "g2")->IsOptimized());
+ CHECK(GetJSFunction(env.local(), "f1")->IsOptimized());
+ CHECK(GetJSFunction(env.local(), "g1")->IsOptimized());
+ CHECK(GetJSFunction(env.local(), "f2")->IsOptimized());
+ CHECK(GetJSFunction(env.local(), "g2")->IsOptimized());
}
// Call functions and force deoptimization while processing the ics.
@@ -687,12 +813,20 @@
}
NonIncrementalGC(i_isolate);
- CHECK(!GetJSFunction(env->Global(), "f1")->IsOptimized());
- CHECK(!GetJSFunction(env->Global(), "g1")->IsOptimized());
- CHECK(!GetJSFunction(env->Global(), "f2")->IsOptimized());
- CHECK(!GetJSFunction(env->Global(), "g2")->IsOptimized());
- CHECK_EQ(4, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(13, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK(!GetJSFunction(env.local(), "f1")->IsOptimized());
+ CHECK(!GetJSFunction(env.local(), "g1")->IsOptimized());
+ CHECK(!GetJSFunction(env.local(), "f2")->IsOptimized());
+ CHECK(!GetJSFunction(env.local(), "g2")->IsOptimized());
+ CHECK_EQ(4, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(13, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
}
isolate->Exit();
isolate->Dispose();
@@ -700,9 +834,10 @@
UNINITIALIZED_TEST(DeoptimizeLoadICStoreICNested) {
- i::FLAG_turbo_deoptimization = true;
i::FLAG_concurrent_recompilation = false;
- v8::Isolate* isolate = v8::Isolate::New();
+ v8::Isolate::CreateParams create_params;
+ create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
+ v8::Isolate* isolate = v8::Isolate::New(create_params);
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
isolate->Enter();
{
@@ -766,10 +901,10 @@
CompileRun("f2(new X(), 'z');");
CompileRun("g2(new X(), 'z');");
if (i_isolate->use_crankshaft()) {
- CHECK(GetJSFunction(env->Global(), "f1")->IsOptimized());
- CHECK(GetJSFunction(env->Global(), "g1")->IsOptimized());
- CHECK(GetJSFunction(env->Global(), "f2")->IsOptimized());
- CHECK(GetJSFunction(env->Global(), "g2")->IsOptimized());
+ CHECK(GetJSFunction(env.local(), "f1")->IsOptimized());
+ CHECK(GetJSFunction(env.local(), "g1")->IsOptimized());
+ CHECK(GetJSFunction(env.local(), "f2")->IsOptimized());
+ CHECK(GetJSFunction(env.local(), "g2")->IsOptimized());
}
// Call functions and force deoptimization while processing the ics.
@@ -779,12 +914,20 @@
}
NonIncrementalGC(i_isolate);
- CHECK(!GetJSFunction(env->Global(), "f1")->IsOptimized());
- CHECK(!GetJSFunction(env->Global(), "g1")->IsOptimized());
- CHECK(!GetJSFunction(env->Global(), "f2")->IsOptimized());
- CHECK(!GetJSFunction(env->Global(), "g2")->IsOptimized());
- CHECK_EQ(1, env->Global()->Get(v8_str("count"))->Int32Value());
- CHECK_EQ(13, env->Global()->Get(v8_str("result"))->Int32Value());
+ CHECK(!GetJSFunction(env.local(), "f1")->IsOptimized());
+ CHECK(!GetJSFunction(env.local(), "g1")->IsOptimized());
+ CHECK(!GetJSFunction(env.local(), "f2")->IsOptimized());
+ CHECK(!GetJSFunction(env.local(), "g2")->IsOptimized());
+ CHECK_EQ(1, env->Global()
+ ->Get(env.local(), v8_str("count"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
+ CHECK_EQ(13, env->Global()
+ ->Get(env.local(), v8_str("result"))
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
}
isolate->Exit();
isolate->Dispose();