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