Index: test/cctest/test-heap.cc |
diff --git a/test/cctest/test-heap.cc b/test/cctest/test-heap.cc |
index 945d0cded576cdebbd5580a357bc3f35cc9444de..b6cd09b5c487fcdd827840a9cbd9d7447ff08243 100644 |
--- a/test/cctest/test-heap.cc |
+++ b/test/cctest/test-heap.cc |
@@ -25,6 +25,9 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
+// TODO(jochen): Remove this after the setting is turned on globally. |
+#define V8_IMMINENT_DEPRECATION_WARNINGS |
+ |
#include <stdlib.h> |
#include <utility> |
@@ -43,7 +46,6 @@ |
#include "test/cctest/heap-tester.h" |
#include "test/cctest/test-feedback-vector.h" |
-using v8::Just; |
namespace v8 { |
namespace internal { |
@@ -1648,7 +1650,7 @@ int CountNativeContexts() { |
// Count the number of user functions in the weak list of optimized |
// functions attached to a native context. |
-static int CountOptimizedUserFunctions(v8::Handle<v8::Context> context) { |
+static int CountOptimizedUserFunctions(v8::Local<v8::Context> context) { |
int count = 0; |
Handle<Context> icontext = v8::Utils::OpenHandle(*context); |
Object* object = icontext->get(Context::OPTIMIZED_FUNCTIONS_LIST); |
@@ -1676,7 +1678,7 @@ TEST(TestInternalWeakLists) { |
Isolate* isolate = CcTest::i_isolate(); |
Heap* heap = isolate->heap(); |
HandleScope scope(isolate); |
- v8::Handle<v8::Context> ctx[kNumTestContexts]; |
+ v8::Local<v8::Context> ctx[kNumTestContexts]; |
if (!isolate->use_crankshaft()) return; |
CHECK_EQ(0, CountNativeContexts()); |
@@ -1789,7 +1791,7 @@ static int CountNativeContextsWithGC(Isolate* isolate, int n) { |
// Count the number of user functions in the weak list of optimized |
// functions attached to a native context causing a GC after the |
// specified number of elements. |
-static int CountOptimizedUserFunctionsWithGC(v8::Handle<v8::Context> context, |
+static int CountOptimizedUserFunctionsWithGC(v8::Local<v8::Context> context, |
int n) { |
int count = 0; |
Handle<Context> icontext = v8::Utils::OpenHandle(*context); |
@@ -1817,7 +1819,7 @@ TEST(TestInternalWeakListsTraverseWithGC) { |
Isolate* isolate = CcTest::i_isolate(); |
HandleScope scope(isolate); |
- v8::Handle<v8::Context> ctx[kNumTestContexts]; |
+ v8::Local<v8::Context> ctx[kNumTestContexts]; |
if (!isolate->use_crankshaft()) return; |
CHECK_EQ(0, CountNativeContexts()); |
@@ -2389,16 +2391,19 @@ TEST(LeakNativeContextViaMap) { |
CompileRun("var v = {x: 42}"); |
v8::Local<v8::Context> ctx1 = v8::Local<v8::Context>::New(isolate, ctx1p); |
v8::Local<v8::Context> ctx2 = v8::Local<v8::Context>::New(isolate, ctx2p); |
- v8::Local<v8::Value> v = ctx1->Global()->Get(v8_str("v")); |
+ v8::Local<v8::Value> v = |
+ ctx1->Global()->Get(ctx1, v8_str("v")).ToLocalChecked(); |
ctx2->Enter(); |
- ctx2->Global()->Set(v8_str("o"), v); |
+ CHECK(ctx2->Global()->Set(ctx2, v8_str("o"), v).FromJust()); |
v8::Local<v8::Value> res = CompileRun( |
"function f() { return o.x; }" |
"for (var i = 0; i < 10; ++i) f();" |
"%OptimizeFunctionOnNextCall(f);" |
"f();"); |
- CHECK_EQ(42, res->Int32Value()); |
- ctx2->Global()->Set(v8_str("o"), v8::Int32::New(isolate, 0)); |
+ CHECK_EQ(42, res->Int32Value(ctx2).FromJust()); |
+ CHECK(ctx2->Global() |
+ ->Set(ctx2, v8_str("o"), v8::Int32::New(isolate, 0)) |
+ .FromJust()); |
ctx2->Exit(); |
v8::Local<v8::Context>::New(isolate, ctx1)->Exit(); |
ctx1p.Reset(); |
@@ -2435,16 +2440,19 @@ TEST(LeakNativeContextViaFunction) { |
CompileRun("var v = function() { return 42; }"); |
v8::Local<v8::Context> ctx1 = v8::Local<v8::Context>::New(isolate, ctx1p); |
v8::Local<v8::Context> ctx2 = v8::Local<v8::Context>::New(isolate, ctx2p); |
- v8::Local<v8::Value> v = ctx1->Global()->Get(v8_str("v")); |
+ v8::Local<v8::Value> v = |
+ ctx1->Global()->Get(ctx1, v8_str("v")).ToLocalChecked(); |
ctx2->Enter(); |
- ctx2->Global()->Set(v8_str("o"), v); |
+ CHECK(ctx2->Global()->Set(ctx2, v8_str("o"), v).FromJust()); |
v8::Local<v8::Value> res = CompileRun( |
"function f(x) { return x(); }" |
"for (var i = 0; i < 10; ++i) f(o);" |
"%OptimizeFunctionOnNextCall(f);" |
"f(o);"); |
- CHECK_EQ(42, res->Int32Value()); |
- ctx2->Global()->Set(v8_str("o"), v8::Int32::New(isolate, 0)); |
+ CHECK_EQ(42, res->Int32Value(ctx2).FromJust()); |
+ CHECK(ctx2->Global() |
+ ->Set(ctx2, v8_str("o"), v8::Int32::New(isolate, 0)) |
+ .FromJust()); |
ctx2->Exit(); |
ctx1->Exit(); |
ctx1p.Reset(); |
@@ -2479,16 +2487,19 @@ TEST(LeakNativeContextViaMapKeyed) { |
CompileRun("var v = [42, 43]"); |
v8::Local<v8::Context> ctx1 = v8::Local<v8::Context>::New(isolate, ctx1p); |
v8::Local<v8::Context> ctx2 = v8::Local<v8::Context>::New(isolate, ctx2p); |
- v8::Local<v8::Value> v = ctx1->Global()->Get(v8_str("v")); |
+ v8::Local<v8::Value> v = |
+ ctx1->Global()->Get(ctx1, v8_str("v")).ToLocalChecked(); |
ctx2->Enter(); |
- ctx2->Global()->Set(v8_str("o"), v); |
+ CHECK(ctx2->Global()->Set(ctx2, v8_str("o"), v).FromJust()); |
v8::Local<v8::Value> res = CompileRun( |
"function f() { return o[0]; }" |
"for (var i = 0; i < 10; ++i) f();" |
"%OptimizeFunctionOnNextCall(f);" |
"f();"); |
- CHECK_EQ(42, res->Int32Value()); |
- ctx2->Global()->Set(v8_str("o"), v8::Int32::New(isolate, 0)); |
+ CHECK_EQ(42, res->Int32Value(ctx2).FromJust()); |
+ CHECK(ctx2->Global() |
+ ->Set(ctx2, v8_str("o"), v8::Int32::New(isolate, 0)) |
+ .FromJust()); |
ctx2->Exit(); |
ctx1->Exit(); |
ctx1p.Reset(); |
@@ -2523,9 +2534,10 @@ TEST(LeakNativeContextViaMapProto) { |
CompileRun("var v = { y: 42}"); |
v8::Local<v8::Context> ctx1 = v8::Local<v8::Context>::New(isolate, ctx1p); |
v8::Local<v8::Context> ctx2 = v8::Local<v8::Context>::New(isolate, ctx2p); |
- v8::Local<v8::Value> v = ctx1->Global()->Get(v8_str("v")); |
+ v8::Local<v8::Value> v = |
+ ctx1->Global()->Get(ctx1, v8_str("v")).ToLocalChecked(); |
ctx2->Enter(); |
- ctx2->Global()->Set(v8_str("o"), v); |
+ CHECK(ctx2->Global()->Set(ctx2, v8_str("o"), v).FromJust()); |
v8::Local<v8::Value> res = CompileRun( |
"function f() {" |
" var p = {x: 42};" |
@@ -2535,8 +2547,10 @@ TEST(LeakNativeContextViaMapProto) { |
"for (var i = 0; i < 10; ++i) f();" |
"%OptimizeFunctionOnNextCall(f);" |
"f();"); |
- CHECK_EQ(42, res->Int32Value()); |
- ctx2->Global()->Set(v8_str("o"), v8::Int32::New(isolate, 0)); |
+ CHECK_EQ(42, res->Int32Value(ctx2).FromJust()); |
+ CHECK(ctx2->Global() |
+ ->Set(ctx2, v8_str("o"), v8::Int32::New(isolate, 0)) |
+ .FromJust()); |
ctx2->Exit(); |
ctx1->Exit(); |
ctx1p.Reset(); |
@@ -2560,6 +2574,7 @@ TEST(InstanceOfStubWriteBarrier) { |
if (!CcTest::i_isolate()->use_crankshaft()) return; |
if (i::FLAG_force_marking_deque_overflows) return; |
v8::HandleScope outer_scope(CcTest::isolate()); |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
{ |
v8::HandleScope scope(CcTest::isolate()); |
@@ -2577,8 +2592,9 @@ TEST(InstanceOfStubWriteBarrier) { |
marking->Stop(); |
CcTest::heap()->StartIncrementalMarking(); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ i::Handle<JSFunction> f = i::Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
CHECK(f->IsOptimized()); |
@@ -2593,10 +2609,10 @@ TEST(InstanceOfStubWriteBarrier) { |
{ |
v8::HandleScope scope(CcTest::isolate()); |
- v8::Handle<v8::Object> global = CcTest::global(); |
- v8::Handle<v8::Function> g = |
- v8::Handle<v8::Function>::Cast(global->Get(v8_str("g"))); |
- g->Call(global, 0, NULL); |
+ v8::Local<v8::Object> global = CcTest::global(); |
+ v8::Local<v8::Function> g = v8::Local<v8::Function>::Cast( |
+ global->Get(ctx, v8_str("g")).ToLocalChecked()); |
+ g->Call(ctx, global, 0, nullptr).ToLocalChecked(); |
} |
CcTest::heap()->incremental_marking()->set_should_hurry(true); |
@@ -2616,12 +2632,13 @@ TEST(PrototypeTransitionClearing) { |
Isolate* isolate = CcTest::i_isolate(); |
Factory* factory = isolate->factory(); |
v8::HandleScope scope(CcTest::isolate()); |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
CompileRun("var base = {};"); |
- Handle<JSObject> baseObject = |
- v8::Utils::OpenHandle( |
- *v8::Handle<v8::Object>::Cast( |
- CcTest::global()->Get(v8_str("base")))); |
+ i::Handle<JSObject> baseObject = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("base")).ToLocalChecked())); |
+ |
int initialTransitions = NumberOfProtoTransitions(baseObject->map()); |
CompileRun( |
@@ -2680,6 +2697,7 @@ TEST(ResetSharedFunctionInfoCountersDuringIncrementalMarking) { |
CcTest::InitializeVM(); |
if (!CcTest::i_isolate()->use_crankshaft()) return; |
v8::HandleScope outer_scope(CcTest::isolate()); |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
{ |
v8::HandleScope scope(CcTest::isolate()); |
@@ -2693,8 +2711,9 @@ TEST(ResetSharedFunctionInfoCountersDuringIncrementalMarking) { |
"%OptimizeFunctionOnNextCall(f);" |
"f();"); |
} |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ i::Handle<JSFunction> f = i::Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
CHECK(f->IsOptimized()); |
IncrementalMarking* marking = CcTest::heap()->incremental_marking(); |
@@ -2720,6 +2739,7 @@ TEST(ResetSharedFunctionInfoCountersDuringMarkSweep) { |
CcTest::InitializeVM(); |
if (!CcTest::i_isolate()->use_crankshaft()) return; |
v8::HandleScope outer_scope(CcTest::isolate()); |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
{ |
v8::HandleScope scope(CcTest::isolate()); |
@@ -2733,8 +2753,10 @@ TEST(ResetSharedFunctionInfoCountersDuringMarkSweep) { |
"%OptimizeFunctionOnNextCall(f);" |
"f();"); |
} |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ i::Handle<JSFunction> f = i::Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
+ |
CHECK(f->IsOptimized()); |
CcTest::heap()->incremental_marking()->Stop(); |
@@ -2834,7 +2856,7 @@ TEST(OptimizedAllocationAlwaysInNewSpace) { |
if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; |
if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; |
v8::HandleScope scope(CcTest::isolate()); |
- |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
SimulateFullSpace(CcTest::heap()->new_space()); |
AlwaysAllocateScope always_allocate(CcTest::i_isolate()); |
v8::Local<v8::Value> res = CompileRun( |
@@ -2848,11 +2870,15 @@ TEST(OptimizedAllocationAlwaysInNewSpace) { |
"f(1); f(2); f(3);" |
"%OptimizeFunctionOnNextCall(f);" |
"f(4);"); |
- CHECK_EQ( |
- 4, res.As<v8::Object>()->GetRealNamedProperty(v8_str("x"))->Int32Value()); |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ CHECK_EQ(4, res.As<v8::Object>() |
+ ->GetRealNamedProperty(ctx, v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(ctx) |
+ .FromJust()); |
+ |
+ i::Handle<JSObject> o = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InNewSpace(*o)); |
} |
@@ -2865,7 +2891,7 @@ TEST(OptimizedPretenuringAllocationFolding) { |
if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; |
if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; |
v8::HandleScope scope(CcTest::isolate()); |
- |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
// Grow new space unitl maximum capacity reached. |
while (!CcTest::heap()->new_space()->IsAtMaximumCapacity()) { |
CcTest::heap()->new_space()->Grow(); |
@@ -2890,15 +2916,17 @@ TEST(OptimizedPretenuringAllocationFolding) { |
v8::Local<v8::Value> res = CompileRun(source.start()); |
- v8::Local<v8::Value> int_array = v8::Object::Cast(*res)->Get(v8_str("0")); |
- Handle<JSObject> int_array_handle = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(int_array)); |
- v8::Local<v8::Value> double_array = v8::Object::Cast(*res)->Get(v8_str("1")); |
- Handle<JSObject> double_array_handle = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(double_array)); |
- |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ v8::Local<v8::Value> int_array = |
+ v8::Object::Cast(*res)->Get(ctx, v8_str("0")).ToLocalChecked(); |
+ i::Handle<JSObject> int_array_handle = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(int_array)); |
+ v8::Local<v8::Value> double_array = |
+ v8::Object::Cast(*res)->Get(ctx, v8_str("1")).ToLocalChecked(); |
+ i::Handle<JSObject> double_array_handle = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(double_array)); |
+ |
+ i::Handle<JSObject> o = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InOldSpace(*o)); |
CHECK(CcTest::heap()->InOldSpace(*int_array_handle)); |
CHECK(CcTest::heap()->InOldSpace(int_array_handle->elements())); |
@@ -2939,8 +2967,8 @@ TEST(OptimizedPretenuringObjectArrayLiterals) { |
v8::Local<v8::Value> res = CompileRun(source.start()); |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ i::Handle<JSObject> o = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InOldSpace(o->elements())); |
CHECK(CcTest::heap()->InOldSpace(*o)); |
@@ -2980,8 +3008,8 @@ TEST(OptimizedPretenuringMixedInObjectProperties) { |
v8::Local<v8::Value> res = CompileRun(source.start()); |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ i::Handle<JSObject> o = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InOldSpace(*o)); |
FieldIndex idx1 = FieldIndex::ForPropertyIndex(o->map(), 0); |
@@ -3037,8 +3065,8 @@ TEST(OptimizedPretenuringDoubleArrayProperties) { |
v8::Local<v8::Value> res = CompileRun(source.start()); |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ i::Handle<JSObject> o = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InOldSpace(*o)); |
CHECK(CcTest::heap()->InOldSpace(o->properties())); |
@@ -3077,8 +3105,8 @@ TEST(OptimizedPretenuringdoubleArrayLiterals) { |
v8::Local<v8::Value> res = CompileRun(source.start()); |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ i::Handle<JSObject> o = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InOldSpace(o->elements())); |
CHECK(CcTest::heap()->InOldSpace(*o)); |
@@ -3092,7 +3120,7 @@ TEST(OptimizedPretenuringNestedMixedArrayLiterals) { |
if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; |
if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; |
v8::HandleScope scope(CcTest::isolate()); |
- |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
// Grow new space unitl maximum capacity reached. |
while (!CcTest::heap()->new_space()->IsAtMaximumCapacity()) { |
CcTest::heap()->new_space()->Grow(); |
@@ -3116,15 +3144,16 @@ TEST(OptimizedPretenuringNestedMixedArrayLiterals) { |
v8::Local<v8::Value> res = CompileRun(source.start()); |
- v8::Local<v8::Value> int_array = v8::Object::Cast(*res)->Get(v8_str("0")); |
- Handle<JSObject> int_array_handle = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(int_array)); |
- v8::Local<v8::Value> double_array = v8::Object::Cast(*res)->Get(v8_str("1")); |
- Handle<JSObject> double_array_handle = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(double_array)); |
+ v8::Local<v8::Value> int_array = |
+ v8::Object::Cast(*res)->Get(ctx, v8_str("0")).ToLocalChecked(); |
+ i::Handle<JSObject> int_array_handle = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(int_array)); |
+ v8::Local<v8::Value> double_array = |
+ v8::Object::Cast(*res)->Get(ctx, v8_str("1")).ToLocalChecked(); |
+ i::Handle<JSObject> double_array_handle = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(double_array)); |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ Handle<JSObject> o = v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InOldSpace(*o)); |
CHECK(CcTest::heap()->InOldSpace(*int_array_handle)); |
CHECK(CcTest::heap()->InOldSpace(int_array_handle->elements())); |
@@ -3140,7 +3169,7 @@ TEST(OptimizedPretenuringNestedObjectLiterals) { |
if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; |
if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; |
v8::HandleScope scope(CcTest::isolate()); |
- |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
// Grow new space unitl maximum capacity reached. |
while (!CcTest::heap()->new_space()->IsAtMaximumCapacity()) { |
CcTest::heap()->new_space()->Grow(); |
@@ -3165,15 +3194,16 @@ TEST(OptimizedPretenuringNestedObjectLiterals) { |
v8::Local<v8::Value> res = CompileRun(source.start()); |
- v8::Local<v8::Value> int_array_1 = v8::Object::Cast(*res)->Get(v8_str("0")); |
+ v8::Local<v8::Value> int_array_1 = |
+ v8::Object::Cast(*res)->Get(ctx, v8_str("0")).ToLocalChecked(); |
Handle<JSObject> int_array_handle_1 = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(int_array_1)); |
- v8::Local<v8::Value> int_array_2 = v8::Object::Cast(*res)->Get(v8_str("1")); |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(int_array_1)); |
+ v8::Local<v8::Value> int_array_2 = |
+ v8::Object::Cast(*res)->Get(ctx, v8_str("1")).ToLocalChecked(); |
Handle<JSObject> int_array_handle_2 = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(int_array_2)); |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(int_array_2)); |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ Handle<JSObject> o = v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InOldSpace(*o)); |
CHECK(CcTest::heap()->InOldSpace(*int_array_handle_1)); |
CHECK(CcTest::heap()->InOldSpace(int_array_handle_1->elements())); |
@@ -3189,7 +3219,7 @@ TEST(OptimizedPretenuringNestedDoubleLiterals) { |
if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; |
if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; |
v8::HandleScope scope(CcTest::isolate()); |
- |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
// Grow new space unitl maximum capacity reached. |
while (!CcTest::heap()->new_space()->IsAtMaximumCapacity()) { |
CcTest::heap()->new_space()->Grow(); |
@@ -3215,16 +3245,16 @@ TEST(OptimizedPretenuringNestedDoubleLiterals) { |
v8::Local<v8::Value> res = CompileRun(source.start()); |
v8::Local<v8::Value> double_array_1 = |
- v8::Object::Cast(*res)->Get(v8_str("0")); |
- Handle<JSObject> double_array_handle_1 = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(double_array_1)); |
+ v8::Object::Cast(*res)->Get(ctx, v8_str("0")).ToLocalChecked(); |
+ i::Handle<JSObject> double_array_handle_1 = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(double_array_1)); |
v8::Local<v8::Value> double_array_2 = |
- v8::Object::Cast(*res)->Get(v8_str("1")); |
- Handle<JSObject> double_array_handle_2 = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(double_array_2)); |
+ v8::Object::Cast(*res)->Get(ctx, v8_str("1")).ToLocalChecked(); |
+ i::Handle<JSObject> double_array_handle_2 = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(double_array_2)); |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ i::Handle<JSObject> o = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InOldSpace(*o)); |
CHECK(CcTest::heap()->InOldSpace(*double_array_handle_1)); |
CHECK(CcTest::heap()->InOldSpace(double_array_handle_1->elements())); |
@@ -3240,7 +3270,7 @@ TEST(OptimizedAllocationArrayLiterals) { |
if (!CcTest::i_isolate()->use_crankshaft() || i::FLAG_always_opt) return; |
if (i::FLAG_gc_global || i::FLAG_stress_compaction) return; |
v8::HandleScope scope(CcTest::isolate()); |
- |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
v8::Local<v8::Value> res = CompileRun( |
"function f() {" |
" var numbers = new Array(1, 2, 3);" |
@@ -3250,11 +3280,14 @@ TEST(OptimizedAllocationArrayLiterals) { |
"f(); f(); f();" |
"%OptimizeFunctionOnNextCall(f);" |
"f();"); |
- CHECK_EQ(static_cast<int>(3.14), |
- v8::Object::Cast(*res)->Get(v8_str("0"))->Int32Value()); |
+ CHECK_EQ(static_cast<int>(3.14), v8::Object::Cast(*res) |
+ ->Get(ctx, v8_str("0")) |
+ .ToLocalChecked() |
+ ->Int32Value(ctx) |
+ .FromJust()); |
- Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
+ i::Handle<JSObject> o = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
CHECK(CcTest::heap()->InNewSpace(o->elements())); |
} |
@@ -3274,6 +3307,7 @@ TEST(Regress1465) { |
i::FLAG_retain_maps_for_n_gc = 0; |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
static const int transitions_count = 256; |
CompileRun("function F() {}"); |
@@ -3287,10 +3321,8 @@ TEST(Regress1465) { |
CompileRun("var root = new F;"); |
} |
- Handle<JSObject> root = |
- v8::Utils::OpenHandle( |
- *v8::Handle<v8::Object>::Cast( |
- CcTest::global()->Get(v8_str("root")))); |
+ i::Handle<JSObject> root = v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("root")).ToLocalChecked())); |
// Count number of live transitions before marking. |
int transitions_before = CountMapTransitions(root->map()); |
@@ -3319,10 +3351,11 @@ static void AddTransitions(int transitions_count) { |
} |
-static Handle<JSObject> GetByName(const char* name) { |
- return v8::Utils::OpenHandle( |
- *v8::Handle<v8::Object>::Cast( |
- CcTest::global()->Get(v8_str(name)))); |
+static i::Handle<JSObject> GetByName(const char* name) { |
+ return v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast( |
+ CcTest::global() |
+ ->Get(CcTest::isolate()->GetCurrentContext(), v8_str(name)) |
+ .ToLocalChecked())); |
} |
@@ -3482,10 +3515,10 @@ TEST(Regress2143a) { |
// Explicitly request GC to perform final marking step and sweeping. |
CcTest::heap()->CollectAllGarbage(); |
- Handle<JSObject> root = |
- v8::Utils::OpenHandle( |
- *v8::Handle<v8::Object>::Cast( |
- CcTest::global()->Get(v8_str("root")))); |
+ Handle<JSObject> root = v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast( |
+ CcTest::global() |
+ ->Get(CcTest::isolate()->GetCurrentContext(), v8_str("root")) |
+ .ToLocalChecked())); |
// The root object should be in a sane state. |
CHECK(root->IsJSObject()); |
@@ -3525,10 +3558,10 @@ TEST(Regress2143b) { |
// Explicitly request GC to perform final marking step and sweeping. |
CcTest::heap()->CollectAllGarbage(); |
- Handle<JSObject> root = |
- v8::Utils::OpenHandle( |
- *v8::Handle<v8::Object>::Cast( |
- CcTest::global()->Get(v8_str("root")))); |
+ Handle<JSObject> root = v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast( |
+ CcTest::global() |
+ ->Get(CcTest::isolate()->GetCurrentContext(), v8_str("root")) |
+ .ToLocalChecked())); |
// The root object should be in a sane state. |
CHECK(root->IsJSObject()); |
@@ -3615,11 +3648,13 @@ TEST(CountForcedGC) { |
TEST(PrintSharedFunctionInfo) { |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
const char* source = "f = function() { return 987654321; }\n" |
"g = function() { return 123456789; }\n"; |
CompileRun(source); |
- Handle<JSFunction> g = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("g"))))); |
+ i::Handle<JSFunction> g = i::Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("g")).ToLocalChecked()))); |
OFStream os(stdout); |
g->shared()->Print(os); |
@@ -3633,27 +3668,28 @@ TEST(IncrementalMarkingPreservesMonomorphicCallIC) { |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |
v8::Local<v8::Value> fun1, fun2; |
- |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
{ |
LocalContext env; |
CompileRun("function fun() {};"); |
- fun1 = env->Global()->Get(v8_str("fun")); |
+ fun1 = env->Global()->Get(env.local(), v8_str("fun")).ToLocalChecked(); |
} |
{ |
LocalContext env; |
CompileRun("function fun() {};"); |
- fun2 = env->Global()->Get(v8_str("fun")); |
+ fun2 = env->Global()->Get(env.local(), v8_str("fun")).ToLocalChecked(); |
} |
// Prepare function f that contains type feedback for closures |
// originating from two different native contexts. |
- CcTest::global()->Set(v8_str("fun1"), fun1); |
- CcTest::global()->Set(v8_str("fun2"), fun2); |
+ CHECK(CcTest::global()->Set(ctx, v8_str("fun1"), fun1).FromJust()); |
+ CHECK(CcTest::global()->Set(ctx, v8_str("fun2"), fun2).FromJust()); |
CompileRun("function f(a, b) { a(); b(); } f(fun1, fun2);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
Handle<TypeFeedbackVector> feedback_vector(f->shared()->feedback_vector()); |
FeedbackVectorHelper feedback_helper(feedback_vector); |
@@ -3725,10 +3761,10 @@ TEST(ICInBuiltInIsClearedAppropriately) { |
{ |
LocalContext env; |
v8::Local<v8::Value> res = CompileRun("Function.apply"); |
- Handle<JSObject> maybe_apply = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(res)); |
- apply = Handle<JSFunction>::cast(maybe_apply); |
- Handle<TypeFeedbackVector> vector(apply->shared()->feedback_vector()); |
+ i::Handle<JSObject> maybe_apply = |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(res)); |
+ apply = i::Handle<JSFunction>::cast(maybe_apply); |
+ i::Handle<TypeFeedbackVector> vector(apply->shared()->feedback_vector()); |
FeedbackVectorHelper feedback_helper(vector); |
CHECK_EQ(1, feedback_helper.slot_count()); |
CheckVectorIC(apply, 0, UNINITIALIZED); |
@@ -3753,15 +3789,15 @@ TEST(IncrementalMarkingPreservesMonomorphicConstructor) { |
if (i::FLAG_always_opt) return; |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |
- |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
// Prepare function f that contains a monomorphic IC for object |
// originating from the same native context. |
CompileRun( |
"function fun() { this.x = 1; };" |
"function f(o) { return new o(); } f(fun); f(fun);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
- |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
Handle<TypeFeedbackVector> vector(f->shared()->feedback_vector()); |
CHECK(vector->Get(FeedbackVectorSlot(0))->IsWeakCell()); |
@@ -3779,21 +3815,23 @@ TEST(IncrementalMarkingClearsMonomorphicConstructor) { |
Isolate* isolate = CcTest::i_isolate(); |
v8::HandleScope scope(CcTest::isolate()); |
v8::Local<v8::Value> fun1; |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
{ |
LocalContext env; |
CompileRun("function fun() { this.x = 1; };"); |
- fun1 = env->Global()->Get(v8_str("fun")); |
+ fun1 = env->Global()->Get(env.local(), v8_str("fun")).ToLocalChecked(); |
} |
// Prepare function f that contains a monomorphic constructor for object |
// originating from a different native context. |
- CcTest::global()->Set(v8_str("fun1"), fun1); |
+ CHECK(CcTest::global()->Set(ctx, v8_str("fun1"), fun1).FromJust()); |
CompileRun( |
"function fun() { this.x = 1; };" |
"function f(o) { return new o(); } f(fun1); f(fun1);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
Handle<TypeFeedbackVector> vector(f->shared()->feedback_vector()); |
@@ -3813,13 +3851,14 @@ TEST(IncrementalMarkingPreservesMonomorphicIC) { |
if (i::FLAG_always_opt) return; |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |
- |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
// Prepare function f that contains a monomorphic IC for object |
// originating from the same native context. |
CompileRun("function fun() { this.x = 1; }; var obj = new fun();" |
"function f(o) { return o.x; } f(obj); f(obj);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
CheckVectorIC(f, 0, MONOMORPHIC); |
@@ -3835,19 +3874,21 @@ TEST(IncrementalMarkingClearsMonomorphicIC) { |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |
v8::Local<v8::Value> obj1; |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
{ |
LocalContext env; |
CompileRun("function fun() { this.x = 1; }; var obj = new fun();"); |
- obj1 = env->Global()->Get(v8_str("obj")); |
+ obj1 = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
} |
// Prepare function f that contains a monomorphic IC for object |
// originating from a different native context. |
- CcTest::global()->Set(v8_str("obj1"), obj1); |
+ CHECK(CcTest::global()->Set(ctx, v8_str("obj1"), obj1).FromJust()); |
CompileRun("function f(o) { return o.x; } f(obj1); f(obj1);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
CheckVectorIC(f, 0, MONOMORPHIC); |
@@ -3865,26 +3906,28 @@ TEST(IncrementalMarkingPreservesPolymorphicIC) { |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |
v8::Local<v8::Value> obj1, obj2; |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
{ |
LocalContext env; |
CompileRun("function fun() { this.x = 1; }; var obj = new fun();"); |
- obj1 = env->Global()->Get(v8_str("obj")); |
+ obj1 = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
} |
{ |
LocalContext env; |
CompileRun("function fun() { this.x = 2; }; var obj = new fun();"); |
- obj2 = env->Global()->Get(v8_str("obj")); |
+ obj2 = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
} |
// Prepare function f that contains a polymorphic IC for objects |
// originating from two different native contexts. |
- CcTest::global()->Set(v8_str("obj1"), obj1); |
- CcTest::global()->Set(v8_str("obj2"), obj2); |
+ CHECK(CcTest::global()->Set(ctx, v8_str("obj1"), obj1).FromJust()); |
+ CHECK(CcTest::global()->Set(ctx, v8_str("obj2"), obj2).FromJust()); |
CompileRun("function f(o) { return o.x; } f(obj1); f(obj1); f(obj2);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
CheckVectorIC(f, 0, POLYMORPHIC); |
@@ -3901,26 +3944,28 @@ TEST(IncrementalMarkingClearsPolymorphicIC) { |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |
v8::Local<v8::Value> obj1, obj2; |
+ v8::Local<v8::Context> ctx = CcTest::isolate()->GetCurrentContext(); |
{ |
LocalContext env; |
CompileRun("function fun() { this.x = 1; }; var obj = new fun();"); |
- obj1 = env->Global()->Get(v8_str("obj")); |
+ obj1 = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
} |
{ |
LocalContext env; |
CompileRun("function fun() { this.x = 2; }; var obj = new fun();"); |
- obj2 = env->Global()->Get(v8_str("obj")); |
+ obj2 = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
} |
// Prepare function f that contains a polymorphic IC for objects |
// originating from two different native contexts. |
- CcTest::global()->Set(v8_str("obj1"), obj1); |
- CcTest::global()->Set(v8_str("obj2"), obj2); |
+ CHECK(CcTest::global()->Set(ctx, v8_str("obj1"), obj1).FromJust()); |
+ CHECK(CcTest::global()->Set(ctx, v8_str("obj2"), obj2).FromJust()); |
CompileRun("function f(o) { return o.x; } f(obj1); f(obj1); f(obj2);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(ctx, v8_str("f")).ToLocalChecked()))); |
CheckVectorIC(f, 0, POLYMORPHIC); |
@@ -3966,10 +4011,14 @@ void ReleaseStackTraceDataTest(v8::Isolate* isolate, const char* source, |
SourceResource* resource = new SourceResource(i::StrDup(source)); |
{ |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::String> source_string = |
- v8::String::NewExternal(isolate, resource); |
+ v8::Local<v8::Context> ctx = isolate->GetCurrentContext(); |
+ v8::Local<v8::String> source_string = |
+ v8::String::NewExternalOneByte(isolate, resource).ToLocalChecked(); |
i_isolate->heap()->CollectAllAvailableGarbage(); |
- v8::Script::Compile(source_string)->Run(); |
+ v8::Script::Compile(ctx, source_string) |
+ .ToLocalChecked() |
+ ->Run(ctx) |
+ .ToLocalChecked(); |
CHECK(!resource->IsDisposed()); |
} |
// i_isolate->heap()->CollectAllAvailableGarbage(); |
@@ -4047,6 +4096,7 @@ TEST(Regress159140) { |
i::FLAG_allow_natives_syntax = true; |
CcTest::InitializeVM(); |
Isolate* isolate = CcTest::i_isolate(); |
+ LocalContext env; |
Heap* heap = isolate->heap(); |
HandleScope scope(isolate); |
@@ -4072,13 +4122,15 @@ TEST(Regress159140) { |
"%OptimizeFunctionOnNextCall(f); f(3);" |
"%OptimizeFunctionOnNextCall(h); h(3);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(env.local(), v8_str("f")).ToLocalChecked()))); |
CHECK(f->is_compiled()); |
CompileRun("f = null;"); |
- Handle<JSFunction> g = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("g"))))); |
+ Handle<JSFunction> g = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(env.local(), v8_str("g")).ToLocalChecked()))); |
CHECK(g->is_compiled()); |
const int kAgingThreshold = 6; |
for (int i = 0; i < kAgingThreshold; i++) { |
@@ -4115,6 +4167,7 @@ TEST(Regress165495) { |
// but make sure the optimized code is unreachable. |
{ |
HandleScope inner_scope(isolate); |
+ LocalContext env; |
CompileRun("function mkClosure() {" |
" return function(x) { return x + 1; };" |
"}" |
@@ -4122,8 +4175,9 @@ TEST(Regress165495) { |
"f(1); f(2);" |
"%OptimizeFunctionOnNextCall(f); f(3);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(env.local(), v8_str("f")).ToLocalChecked()))); |
CHECK(f->is_compiled()); |
const int kAgingThreshold = 6; |
for (int i = 0; i < kAgingThreshold; i++) { |
@@ -4161,14 +4215,16 @@ TEST(Regress169209) { |
Handle<SharedFunctionInfo> shared1; |
{ |
HandleScope inner_scope(isolate); |
+ LocalContext env; |
CompileRun("function f() { return 'foobar'; }" |
"function g(x) { if (x) f(); }" |
"f();" |
"g(false);" |
"g(false);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(env.local(), v8_str("f")).ToLocalChecked()))); |
CHECK(f->is_compiled()); |
const int kAgingThreshold = 6; |
for (int i = 0; i < kAgingThreshold; i++) { |
@@ -4183,12 +4239,14 @@ TEST(Regress169209) { |
Handle<SharedFunctionInfo> shared2; |
{ |
HandleScope inner_scope(isolate); |
+ LocalContext env; |
CompileRun("function flushMe() { return 0; }" |
"flushMe(1);"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast( |
- v8::Utils::OpenHandle(*v8::Handle<v8::Function>::Cast( |
- CcTest::global()->Get(v8_str("flushMe"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
+ *v8::Local<v8::Function>::Cast(CcTest::global() |
+ ->Get(env.local(), v8_str("flushMe")) |
+ .ToLocalChecked()))); |
CHECK(f->is_compiled()); |
const int kAgingThreshold = 6; |
for (int i = 0; i < kAgingThreshold; i++) { |
@@ -4220,6 +4278,7 @@ TEST(Regress169928) { |
i::FLAG_crankshaft = false; |
CcTest::InitializeVM(); |
Isolate* isolate = CcTest::i_isolate(); |
+ LocalContext env; |
Factory* factory = isolate->factory(); |
v8::HandleScope scope(CcTest::isolate()); |
@@ -4245,7 +4304,9 @@ TEST(Regress169928) { |
v8_str("fastliteralcase(mote, 2.5);"); |
v8::Local<v8::String> array_name = v8_str("mote"); |
- CcTest::global()->Set(array_name, v8::Int32::New(CcTest::isolate(), 0)); |
+ CHECK(CcTest::global() |
+ ->Set(env.local(), array_name, v8::Int32::New(CcTest::isolate(), 0)) |
+ .FromJust()); |
// First make sure we flip spaces |
CcTest::heap()->CollectGarbage(NEW_SPACE); |
@@ -4277,13 +4338,16 @@ TEST(Regress169928) { |
addr_obj, AllocationMemento::kSize + kPointerSize); |
// Give the array a name, making sure not to allocate strings. |
- v8::Handle<v8::Object> array_obj = v8::Utils::ToLocal(array); |
- CcTest::global()->Set(array_name, array_obj); |
+ v8::Local<v8::Object> array_obj = v8::Utils::ToLocal(array); |
+ CHECK(CcTest::global()->Set(env.local(), array_name, array_obj).FromJust()); |
// This should crash with a protection violation if we are running a build |
// with the bug. |
AlwaysAllocateScope aa_scope(isolate); |
- v8::Script::Compile(mote_code_string)->Run(); |
+ v8::Script::Compile(env.local(), mote_code_string) |
+ .ToLocalChecked() |
+ ->Run(env.local()) |
+ .ToLocalChecked(); |
} |
@@ -4294,6 +4358,7 @@ TEST(Regress513507) { |
i::FLAG_gc_global = true; |
CcTest::InitializeVM(); |
Isolate* isolate = CcTest::i_isolate(); |
+ LocalContext env; |
Heap* heap = isolate->heap(); |
HandleScope scope(isolate); |
@@ -4304,8 +4369,9 @@ TEST(Regress513507) { |
CompileRun("function f() { return 1 }" |
"f(); %OptimizeFunctionOnNextCall(f); f();"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(env.local(), v8_str("f")).ToLocalChecked()))); |
shared = inner_scope.CloseAndEscape(handle(f->shared(), isolate)); |
CompileRun("f = null"); |
} |
@@ -4317,8 +4383,9 @@ TEST(Regress513507) { |
CompileRun("function g() { return 2 }" |
"g(); %OptimizeFunctionOnNextCall(g); g();"); |
- Handle<JSFunction> g = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("g"))))); |
+ Handle<JSFunction> g = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(env.local(), v8_str("g")).ToLocalChecked()))); |
code = inner_scope.CloseAndEscape(handle(g->code(), isolate)); |
if (!code->is_optimized_code()) return; |
} |
@@ -4345,6 +4412,7 @@ TEST(Regress514122) { |
i::FLAG_allow_natives_syntax = true; |
CcTest::InitializeVM(); |
Isolate* isolate = CcTest::i_isolate(); |
+ LocalContext env; |
Heap* heap = isolate->heap(); |
HandleScope scope(isolate); |
@@ -4358,8 +4426,9 @@ TEST(Regress514122) { |
CompileRun("function f() { return 1 }" |
"f(); %OptimizeFunctionOnNextCall(f); f();"); |
- Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ Handle<JSFunction> f = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(env.local(), v8_str("f")).ToLocalChecked()))); |
shared = inner_scope.CloseAndEscape(handle(f->shared(), isolate)); |
CompileRun("f = null"); |
} |
@@ -4371,8 +4440,9 @@ TEST(Regress514122) { |
CompileRun("function g() { return 2 }" |
"g(); %OptimizeFunctionOnNextCall(g); g();"); |
- Handle<JSFunction> g = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("g"))))); |
+ Handle<JSFunction> g = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global()->Get(env.local(), v8_str("g")).ToLocalChecked()))); |
code = inner_scope.CloseAndEscape(handle(g->code(), isolate)); |
if (!code->is_optimized_code()) return; |
} |
@@ -4446,6 +4516,7 @@ TEST(Regress513496) { |
// outer optimized code is kept in the optimized code map. |
Handle<SharedFunctionInfo> shared; |
{ |
+ LocalContext context; |
HandleScope inner_scope(isolate); |
CompileRun( |
"function g(x) { return x + 1 }" |
@@ -4457,7 +4528,9 @@ TEST(Regress513496) { |
"%OptimizeFunctionOnNextCall(f); f(3);"); |
Handle<JSFunction> g = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("g"))))); |
+ *v8::Local<v8::Function>::Cast(CcTest::global() |
+ ->Get(context.local(), v8_str("g")) |
+ .ToLocalChecked()))); |
CHECK(g->shared()->is_compiled()); |
const int kAgingThreshold = 6; |
for (int i = 0; i < kAgingThreshold; i++) { |
@@ -4465,7 +4538,9 @@ TEST(Regress513496) { |
} |
Handle<JSFunction> f = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("f"))))); |
+ *v8::Local<v8::Function>::Cast(CcTest::global() |
+ ->Get(context.local(), v8_str("f")) |
+ .ToLocalChecked()))); |
CHECK(f->is_compiled()); |
shared = inner_scope.CloseAndEscape(handle(f->shared(), isolate)); |
CompileRun("f = null"); |
@@ -4653,8 +4728,10 @@ TEST(EnsureAllocationSiteDependentCodesProcessed) { |
Code* function_bar = Code::cast( |
WeakCell::cast(site->dependent_code()->object_at(index))->value()); |
Handle<JSFunction> bar_handle = Handle<JSFunction>::cast( |
- v8::Utils::OpenHandle(*v8::Handle<v8::Function>::Cast( |
- CcTest::global()->Get(v8_str("bar"))))); |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global() |
+ ->Get(context.local(), v8_str("bar")) |
+ .ToLocalChecked()))); |
CHECK_EQ(bar_handle->code(), function_bar); |
} |
@@ -4701,7 +4778,9 @@ TEST(CellsInOptimizedCodeAreWeak) { |
" return bar;})();"); |
Handle<JSFunction> bar = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("bar"))))); |
+ *v8::Local<v8::Function>::Cast(CcTest::global() |
+ ->Get(context.local(), v8_str("bar")) |
+ .ToLocalChecked()))); |
code = scope.CloseAndEscape(Handle<Code>(bar->code())); |
} |
@@ -4740,7 +4819,9 @@ TEST(ObjectsInOptimizedCodeAreWeak) { |
"bar();"); |
Handle<JSFunction> bar = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str("bar"))))); |
+ *v8::Local<v8::Function>::Cast(CcTest::global() |
+ ->Get(context.local(), v8_str("bar")) |
+ .ToLocalChecked()))); |
code = scope.CloseAndEscape(Handle<Code>(bar->code())); |
} |
@@ -4804,7 +4885,8 @@ TEST(NoWeakHashTableLeakWithIncrementalMarking) { |
} |
-static Handle<JSFunction> OptimizeDummyFunction(const char* name) { |
+static Handle<JSFunction> OptimizeDummyFunction(v8::Isolate* isolate, |
+ const char* name) { |
EmbeddedVector<char, 256> source; |
SNPrintF(source, |
"function %s() { return 0; }" |
@@ -4812,8 +4894,11 @@ static Handle<JSFunction> OptimizeDummyFunction(const char* name) { |
"%%OptimizeFunctionOnNextCall(%s);" |
"%s();", name, name, name, name, name); |
CompileRun(source.start()); |
- Handle<JSFunction> fun = Handle<JSFunction>::cast(v8::Utils::OpenHandle( |
- *v8::Handle<v8::Function>::Cast(CcTest::global()->Get(v8_str(name))))); |
+ i::Handle<JSFunction> fun = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global() |
+ ->Get(isolate->GetCurrentContext(), v8_str(name)) |
+ .ToLocalChecked()))); |
return fun; |
} |
@@ -4842,8 +4927,10 @@ TEST(NextCodeLinkIsWeak) { |
int code_chain_length_before, code_chain_length_after; |
{ |
HandleScope scope(heap->isolate()); |
- Handle<JSFunction> mortal = OptimizeDummyFunction("mortal"); |
- Handle<JSFunction> immortal = OptimizeDummyFunction("immortal"); |
+ Handle<JSFunction> mortal = |
+ OptimizeDummyFunction(CcTest::isolate(), "mortal"); |
+ Handle<JSFunction> immortal = |
+ OptimizeDummyFunction(CcTest::isolate(), "immortal"); |
CHECK_EQ(immortal->code()->next_code_link(), mortal->code()); |
code_chain_length_before = GetCodeChainLength(immortal->code()); |
// Keep the immortal code and let the mortal code die. |
@@ -4914,14 +5001,17 @@ TEST(WeakFunctionInConstructor) { |
i::FLAG_stress_compaction = false; |
CcTest::InitializeVM(); |
v8::Isolate* isolate = CcTest::isolate(); |
+ LocalContext env; |
v8::HandleScope scope(isolate); |
CompileRun( |
"function createObj(obj) {" |
" return new obj();" |
"}"); |
- Handle<JSFunction> createObj = Handle<JSFunction>::cast( |
- v8::Utils::OpenHandle(*v8::Handle<v8::Function>::Cast( |
- CcTest::global()->Get(v8_str("createObj"))))); |
+ i::Handle<JSFunction> createObj = Handle<JSFunction>::cast( |
+ v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
+ CcTest::global() |
+ ->Get(env.local(), v8_str("createObj")) |
+ .ToLocalChecked()))); |
v8::Persistent<v8::Object> garbage; |
{ |
@@ -4933,7 +5023,10 @@ TEST(WeakFunctionInConstructor) { |
" createObj(hat);" |
" return hat;" |
" })();"; |
- garbage.Reset(isolate, CompileRun(source)->ToObject(isolate)); |
+ garbage.Reset(isolate, CompileRun(env.local(), source) |
+ .ToLocalChecked() |
+ ->ToObject(env.local()) |
+ .ToLocalChecked()); |
} |
weak_ic_cleared = false; |
garbage.SetWeak(&garbage, &ClearWeakIC, v8::WeakCallbackType::kParameter); |
@@ -4968,11 +5061,15 @@ void CheckWeakness(const char* source) { |
i::FLAG_stress_compaction = false; |
CcTest::InitializeVM(); |
v8::Isolate* isolate = CcTest::isolate(); |
+ LocalContext env; |
v8::HandleScope scope(isolate); |
v8::Persistent<v8::Object> garbage; |
{ |
v8::HandleScope scope(isolate); |
- garbage.Reset(isolate, CompileRun(source)->ToObject(isolate)); |
+ garbage.Reset(isolate, CompileRun(env.local(), source) |
+ .ToLocalChecked() |
+ ->ToObject(env.local()) |
+ .ToLocalChecked()); |
} |
weak_ic_cleared = false; |
garbage.SetWeak(&garbage, &ClearWeakIC, v8::WeakCallbackType::kParameter); |
@@ -5315,7 +5412,7 @@ TEST(AddInstructionChangesNewSpacePromotion) { |
v8::HandleScope scope(CcTest::isolate()); |
Isolate* isolate = CcTest::i_isolate(); |
Heap* heap = isolate->heap(); |
- |
+ LocalContext env; |
CompileRun( |
"function add(a, b) {" |
" return a + b;" |
@@ -5336,13 +5433,13 @@ TEST(AddInstructionChangesNewSpacePromotion) { |
"%OptimizeFunctionOnNextCall(crash);" |
"crash(1);"); |
- v8::Handle<v8::Object> global = CcTest::global(); |
- v8::Handle<v8::Function> g = |
- v8::Handle<v8::Function>::Cast(global->Get(v8_str("crash"))); |
- v8::Handle<v8::Value> args1[] = { v8_num(1) }; |
+ v8::Local<v8::Object> global = CcTest::global(); |
+ v8::Local<v8::Function> g = v8::Local<v8::Function>::Cast( |
+ global->Get(env.local(), v8_str("crash")).ToLocalChecked()); |
+ v8::Local<v8::Value> args1[] = {v8_num(1)}; |
heap->DisableInlineAllocation(); |
heap->set_allocation_timeout(1); |
- g->Call(global, 1, args1); |
+ g->Call(env.local(), global, 1, args1).ToLocalChecked(); |
heap->CollectAllGarbage(); |
} |
@@ -5357,9 +5454,9 @@ TEST(CEntryStubOOM) { |
i::FLAG_allow_natives_syntax = true; |
CcTest::InitializeVM(); |
v8::HandleScope scope(CcTest::isolate()); |
- v8::V8::SetFatalErrorHandler(OnFatalErrorExpectOOM); |
+ CcTest::isolate()->SetFatalErrorHandler(OnFatalErrorExpectOOM); |
- v8::Handle<v8::Value> result = CompileRun( |
+ v8::Local<v8::Value> result = CompileRun( |
"%SetFlags('--gc-interval=1');" |
"var a = [];" |
"a.__proto__ = [];" |
@@ -5415,9 +5512,11 @@ TEST(Regress357137) { |
CcTest::InitializeVM(); |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope hscope(isolate); |
- v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New(isolate); |
- global->Set(v8::String::NewFromUtf8(isolate, "interrupt"), |
- v8::FunctionTemplate::New(isolate, RequestInterrupt)); |
+ v8::Local<v8::ObjectTemplate> global = v8::ObjectTemplate::New(isolate); |
+ global->Set( |
+ v8::String::NewFromUtf8(isolate, "interrupt", v8::NewStringType::kNormal) |
+ .ToLocalChecked(), |
+ v8::FunctionTemplate::New(isolate, RequestInterrupt)); |
v8::Local<v8::Context> context = v8::Context::New(isolate, NULL, global); |
DCHECK(!context.IsEmpty()); |
v8::Context::Scope cscope(context); |
@@ -5428,7 +5527,7 @@ TEST(Regress357137) { |
"eval('function f() {' + locals + 'return function() { return v0; }; }');" |
"interrupt();" // This triggers a fake stack overflow in f. |
"f()()"); |
- CHECK_EQ(42.0, result->ToNumber(isolate)->Value()); |
+ CHECK_EQ(42.0, result->ToNumber(context).ToLocalChecked()->Value()); |
} |
@@ -5474,7 +5573,7 @@ TEST(ArrayShiftSweeping) { |
"array;"); |
Handle<JSObject> o = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(result)); |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(result)); |
CHECK(heap->InOldSpace(o->elements())); |
CHECK(heap->InOldSpace(*o)); |
Page* page = Page::FromAddress(o->elements()->address()); |
@@ -5623,7 +5722,7 @@ TEST(Regress3631) { |
} |
// Incrementally mark the backing store. |
Handle<JSObject> obj = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(result)); |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(result)); |
Handle<JSWeakCollection> weak_map(reinterpret_cast<JSWeakCollection*>(*obj)); |
while (!Marking::IsBlack( |
Marking::MarkBitFrom(HeapObject::cast(weak_map->table()))) && |
@@ -5683,7 +5782,7 @@ TEST(Regress3877) { |
HandleScope inner_scope(isolate); |
v8::Local<v8::Value> result = CompileRun("cls.prototype"); |
Handle<JSObject> proto = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(result)); |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(result)); |
weak_prototype = inner_scope.CloseAndEscape(factory->NewWeakCell(proto)); |
} |
CHECK(!weak_prototype->cleared()); |
@@ -5711,7 +5810,7 @@ Handle<WeakCell> AddRetainedMap(Isolate* isolate, Heap* heap) { |
v8::Local<v8::Value> result = |
CompileRun("(function () { return {x : 10}; })();"); |
Handle<JSObject> proto = |
- v8::Utils::OpenHandle(*v8::Handle<v8::Object>::Cast(result)); |
+ v8::Utils::OpenHandle(*v8::Local<v8::Object>::Cast(result)); |
Map::SetPrototype(map, proto); |
heap->AddRetainedMap(map); |
return inner_scope.CloseAndEscape(Map::WeakCellForMap(map)); |
@@ -5899,6 +5998,7 @@ TEST(BootstrappingExports) { |
FLAG_expose_natives_as = "utils"; |
CcTest::InitializeVM(); |
v8::Isolate* isolate = CcTest::isolate(); |
+ LocalContext env; |
if (Snapshot::HaveASnapshotToStartFrom(CcTest::i_isolate())) return; |
@@ -5909,8 +6009,12 @@ TEST(BootstrappingExports) { |
{ |
v8::HandleScope scope(isolate); |
v8::Local<v8::String> name = v8_str("utils"); |
- utils.Reset(isolate, CcTest::global()->Get(name)->ToObject(isolate)); |
- CcTest::global()->Delete(name); |
+ utils.Reset(isolate, CcTest::global() |
+ ->Get(env.local(), name) |
+ .ToLocalChecked() |
+ ->ToObject(env.local()) |
+ .ToLocalChecked()); |
+ CHECK(CcTest::global()->Delete(env.local(), name).FromJust()); |
} |
utils.SetWeak(&utils, UtilsHasBeenCollected, |
@@ -5929,7 +6033,10 @@ TEST(Regress1878) { |
v8::HandleScope scope(isolate); |
v8::Local<v8::Function> constructor = v8::Utils::CallableToLocal( |
CcTest::i_isolate()->internal_array_function()); |
- CcTest::global()->Set(v8_str("InternalArray"), constructor); |
+ LocalContext env; |
+ CHECK(CcTest::global() |
+ ->Set(env.local(), v8_str("InternalArray"), constructor) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
@@ -6083,9 +6190,11 @@ TEST(MessageObjectLeak) { |
CcTest::InitializeVM(); |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New(isolate); |
- global->Set(v8::String::NewFromUtf8(isolate, "check"), |
- v8::FunctionTemplate::New(isolate, CheckLeak)); |
+ v8::Local<v8::ObjectTemplate> global = v8::ObjectTemplate::New(isolate); |
+ global->Set( |
+ v8::String::NewFromUtf8(isolate, "check", v8::NewStringType::kNormal) |
+ .ToLocalChecked(), |
+ v8::FunctionTemplate::New(isolate, CheckLeak)); |
v8::Local<v8::Context> context = v8::Context::New(isolate, NULL, global); |
v8::Context::Scope cscope(context); |
@@ -6136,7 +6245,7 @@ TEST(CanonicalSharedFunctionInfo) { |
CcTest::InitializeVM(); |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> global = v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> global = v8::ObjectTemplate::New(isolate); |
global->Set(isolate, "check", v8::FunctionTemplate::New( |
isolate, CheckEqualSharedFunctionInfos)); |
global->Set(isolate, "remove", |