Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(476)

Unified Diff: test/cctest/test-api.cc

Issue 1516483002: Remove deprecated APIs from test-api.cc, lines 10k - 17k. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-api.cc
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
index bd26f9277b4ad4d5142ad6e8daf65e5f264b582a..7857d55b2ecff7bdc436962ae8f436dec08279b2 100644
--- a/test/cctest/test-api.cc
+++ b/test/cctest/test-api.cc
@@ -2432,19 +2432,6 @@ THREADED_TEST(EmbedderData) {
}
-// TODO(vogelheim): Does this test even make sense in a post-deprecation world?
-/*
-THREADED_TEST(GetIsolate) {
- LocalContext env;
- v8::Isolate* isolate = env->GetIsolate();
- v8::HandleScope scope(isolate);
- Local<v8::Object> obj = v8::Object::New(isolate);
- CHECK_EQ(isolate, obj->GetIsolate());
- CHECK_EQ(isolate, CcTest::global()->GetIsolate());
-}
-*/
-
-
THREADED_TEST(IdentityHash) {
LocalContext env;
v8::Isolate* isolate = env->GetIsolate();
@@ -11284,24 +11271,27 @@ THREADED_TEST(CrossEval) {
// Check that new variables are introduced in other context.
Local<Script> script = v8_compile("other.eval('var foo = 1234')");
script->Run(current.local()).ToLocalChecked();
- Local<Value> foo = other->Global()->Get(v8_str("foo"));
+ Local<Value> foo =
+ other->Global()->Get(current.local(), v8_str("foo")).ToLocalChecked();
CHECK_EQ(1234, foo->Int32Value(other.local()).FromJust());
- CHECK(!current->Global()->Has(v8_str("foo")));
+ CHECK(!current->Global()->Has(current.local(), v8_str("foo")).FromJust());
// Check that writing to non-existing properties introduces them in
// the other context.
script = v8_compile("other.eval('na = 1234')");
- script->Run();
- CHECK_EQ(
- 1234,
- other->Global()->Get(v8_str("na"))->Int32Value(other.local()).FromJust());
- CHECK(!current->Global()->Has(v8_str("na")));
+ script->Run(current.local()).ToLocalChecked();
+ CHECK_EQ(1234, other->Global()
+ ->Get(current.local(), v8_str("na"))
+ .ToLocalChecked()
+ ->Int32Value(other.local())
+ .FromJust());
+ CHECK(!current->Global()->Has(current.local(), v8_str("na")).FromJust());
// Check that global variables in current context are not visible in other
// context.
v8::TryCatch try_catch(CcTest::isolate());
script = v8_compile("var bar = 42; other.eval('bar');");
- Local<Value> result = script->Run();
+ CHECK(script->Run(current.local()).IsEmpty());
CHECK(try_catch.HasCaught());
try_catch.Reset();
@@ -11312,7 +11302,7 @@ THREADED_TEST(CrossEval) {
" var baz = 87;"
" return other.eval('baz');"
"})();");
- result = script->Run();
+ CHECK(script->Run(current.local()).IsEmpty());
CHECK(try_catch.HasCaught());
try_catch.Reset();
@@ -11322,30 +11312,33 @@ THREADED_TEST(CrossEval) {
->Set(other.local(), v8_str("bis"), v8_num(1234))
.FromJust());
script = v8_compile("other.eval('bis')");
- CHECK_EQ(1234, script->Run()->Int32Value(other.local()).FromJust());
+ CHECK_EQ(1234, script->Run(current.local())
+ .ToLocalChecked()
+ ->Int32Value(current.local())
+ .FromJust());
CHECK(!try_catch.HasCaught());
// Check that the 'this' pointer points to the global object evaluating
// code.
CHECK(other->Global()
- ->Set(other.local(), v8_str("t"), other->Global())
+ ->Set(current.local(), v8_str("t"), other->Global())
.FromJust());
script = v8_compile("other.eval('this == t')");
- result = script->Run();
+ Local<Value> result = script->Run(current.local()).ToLocalChecked();
CHECK(result->IsTrue());
CHECK(!try_catch.HasCaught());
// Check that variables introduced in with-statement are not visible in
// other context.
script = v8_compile("with({x:2}){other.eval('x')}");
- result = script->Run();
+ CHECK(script->Run(current.local()).IsEmpty());
CHECK(try_catch.HasCaught());
try_catch.Reset();
// Check that you cannot use 'eval.call' with another object than the
// current global object.
script = v8_compile("other.y = 1; eval.call(other, 'y')");
- result = script->Run();
+ CHECK(script->Run(current.local()).IsEmpty());
CHECK(try_catch.HasCaught());
}
@@ -11400,8 +11393,8 @@ THREADED_TEST(CrossLazyLoad) {
// Trigger lazy loading in other context.
Local<Script> script = v8_compile("other.eval('new Date(42)')");
- Local<Value> value = script->Run();
- CHECK_EQ(42.0, value->NumberValue());
+ Local<Value> value = script->Run(current.local()).ToLocalChecked();
+ CHECK_EQ(42.0, value->NumberValue(current.local()).FromJust());
}
@@ -11489,7 +11482,8 @@ THREADED_TEST(CallAsFunction) {
// Check that the call-as-function handler can be called through
// the API.
v8::Local<Value> args[] = {v8_num(28)};
- value = instance->CallAsFunction(instance, 1, args);
+ value = instance->CallAsFunction(context.local(), instance, 1, args)
+ .ToLocalChecked();
CHECK(!try_catch.HasCaught());
CHECK_EQ(28, value->Int32Value(context.local()).FromJust());
}
@@ -11521,8 +11515,8 @@ THREADED_TEST(CallAsFunction) {
// Call an object without call-as-function handler through the API
value = CompileRun("obj2(28)");
v8::Local<Value> args[] = {v8_num(28)};
- value = instance->CallAsFunction(instance, 1, args);
- CHECK(value.IsEmpty());
+ CHECK(
+ instance->CallAsFunction(context.local(), instance, 1, args).IsEmpty());
CHECK(try_catch.HasCaught());
String::Utf8Value exception_value2(try_catch.Exception());
CHECK_EQ(0,
@@ -11553,7 +11547,8 @@ THREADED_TEST(CallAsFunction) {
try_catch.Reset();
v8::Local<Value> args[] = {v8_num(23)};
- value = instance->CallAsFunction(instance, 1, args);
+ CHECK(
+ instance->CallAsFunction(context.local(), instance, 1, args).IsEmpty());
CHECK(try_catch.HasCaught());
String::Utf8Value exception_value2(try_catch.Exception());
CHECK_EQ(0, strcmp("23", *exception_value2));
@@ -11570,15 +11565,25 @@ THREADED_TEST(CallAsFunction) {
.ToLocalChecked();
Local<v8::Value> a1 =
- instance->CallAsFunction(v8::Undefined(isolate), 0, NULL);
+ instance->CallAsFunction(context.local(), v8::Undefined(isolate), 0,
+ NULL)
+ .ToLocalChecked();
CHECK(a1->StrictEquals(instance));
- Local<v8::Value> a2 = instance->CallAsFunction(v8::Null(isolate), 0, NULL);
+ Local<v8::Value> a2 =
+ instance->CallAsFunction(context.local(), v8::Null(isolate), 0, NULL)
+ .ToLocalChecked();
CHECK(a2->StrictEquals(instance));
- Local<v8::Value> a3 = instance->CallAsFunction(v8_num(42), 0, NULL);
+ Local<v8::Value> a3 =
+ instance->CallAsFunction(context.local(), v8_num(42), 0, NULL)
+ .ToLocalChecked();
CHECK(a3->StrictEquals(instance));
- Local<v8::Value> a4 = instance->CallAsFunction(v8_str("hello"), 0, NULL);
+ Local<v8::Value> a4 =
+ instance->CallAsFunction(context.local(), v8_str("hello"), 0, NULL)
+ .ToLocalChecked();
CHECK(a4->StrictEquals(instance));
- Local<v8::Value> a5 = instance->CallAsFunction(v8::True(isolate), 0, NULL);
+ Local<v8::Value> a5 =
+ instance->CallAsFunction(context.local(), v8::True(isolate), 0, NULL)
+ .ToLocalChecked();
CHECK(a5->StrictEquals(instance));
}
@@ -11592,41 +11597,65 @@ THREADED_TEST(CallAsFunction) {
" return this;"
"}");
Local<Function> ReturnThisSloppy = Local<Function>::Cast(
- context->Global()->Get(v8_str("ReturnThisSloppy")));
+ context->Global()
+ ->Get(context.local(), v8_str("ReturnThisSloppy"))
+ .ToLocalChecked());
Local<Function> ReturnThisStrict = Local<Function>::Cast(
- context->Global()->Get(v8_str("ReturnThisStrict")));
+ context->Global()
+ ->Get(context.local(), v8_str("ReturnThisStrict"))
+ .ToLocalChecked());
Local<v8::Value> a1 =
- ReturnThisSloppy->CallAsFunction(v8::Undefined(isolate), 0, NULL);
+ ReturnThisSloppy->CallAsFunction(context.local(),
+ v8::Undefined(isolate), 0, NULL)
+ .ToLocalChecked();
CHECK(a1->StrictEquals(context->Global()));
Local<v8::Value> a2 =
- ReturnThisSloppy->CallAsFunction(v8::Null(isolate), 0, NULL);
+ ReturnThisSloppy->CallAsFunction(context.local(), v8::Null(isolate), 0,
+ NULL)
+ .ToLocalChecked();
CHECK(a2->StrictEquals(context->Global()));
- Local<v8::Value> a3 = ReturnThisSloppy->CallAsFunction(v8_num(42), 0, NULL);
+ Local<v8::Value> a3 =
+ ReturnThisSloppy->CallAsFunction(context.local(), v8_num(42), 0, NULL)
+ .ToLocalChecked();
CHECK(a3->IsNumberObject());
CHECK_EQ(42.0, a3.As<v8::NumberObject>()->ValueOf());
Local<v8::Value> a4 =
- ReturnThisSloppy->CallAsFunction(v8_str("hello"), 0, NULL);
+ ReturnThisSloppy->CallAsFunction(context.local(), v8_str("hello"), 0,
+ NULL)
+ .ToLocalChecked();
CHECK(a4->IsStringObject());
CHECK(a4.As<v8::StringObject>()->ValueOf()->StrictEquals(v8_str("hello")));
Local<v8::Value> a5 =
- ReturnThisSloppy->CallAsFunction(v8::True(isolate), 0, NULL);
+ ReturnThisSloppy->CallAsFunction(context.local(), v8::True(isolate), 0,
+ NULL)
+ .ToLocalChecked();
CHECK(a5->IsBooleanObject());
CHECK(a5.As<v8::BooleanObject>()->ValueOf());
Local<v8::Value> a6 =
- ReturnThisStrict->CallAsFunction(v8::Undefined(isolate), 0, NULL);
+ ReturnThisStrict->CallAsFunction(context.local(),
+ v8::Undefined(isolate), 0, NULL)
+ .ToLocalChecked();
CHECK(a6->IsUndefined());
Local<v8::Value> a7 =
- ReturnThisStrict->CallAsFunction(v8::Null(isolate), 0, NULL);
+ ReturnThisStrict->CallAsFunction(context.local(), v8::Null(isolate), 0,
+ NULL)
+ .ToLocalChecked();
CHECK(a7->IsNull());
- Local<v8::Value> a8 = ReturnThisStrict->CallAsFunction(v8_num(42), 0, NULL);
+ Local<v8::Value> a8 =
+ ReturnThisStrict->CallAsFunction(context.local(), v8_num(42), 0, NULL)
+ .ToLocalChecked();
CHECK(a8->StrictEquals(v8_num(42)));
Local<v8::Value> a9 =
- ReturnThisStrict->CallAsFunction(v8_str("hello"), 0, NULL);
+ ReturnThisStrict->CallAsFunction(context.local(), v8_str("hello"), 0,
+ NULL)
+ .ToLocalChecked();
CHECK(a9->StrictEquals(v8_str("hello")));
Local<v8::Value> a10 =
- ReturnThisStrict->CallAsFunction(v8::True(isolate), 0, NULL);
+ ReturnThisStrict->CallAsFunction(context.local(), v8::True(isolate), 0,
+ NULL)
+ .ToLocalChecked();
CHECK(a10->StrictEquals(v8::True(isolate)));
}
}
@@ -11743,8 +11772,12 @@ static void FastApiCallback_TrivialSignature(
CheckReturnValue(args, FUNCTION_ADDR(FastApiCallback_TrivialSignature));
v8::Isolate* isolate = CcTest::isolate();
CHECK_EQ(isolate, args.GetIsolate());
- CHECK(args.This()->Equals(args.Holder()));
- CHECK(args.Data()->Equals(v8_str("method_data")));
+ CHECK(args.This()
+ ->Equals(isolate->GetCurrentContext(), args.Holder())
+ .FromJust());
+ CHECK(args.Data()
+ ->Equals(isolate->GetCurrentContext(), v8_str("method_data"))
+ .FromJust());
args.GetReturnValue().Set(
args[0]->Int32Value(isolate->GetCurrentContext()).FromJust() + 1);
}
@@ -11755,11 +11788,18 @@ static void FastApiCallback_SimpleSignature(
CheckReturnValue(args, FUNCTION_ADDR(FastApiCallback_SimpleSignature));
v8::Isolate* isolate = CcTest::isolate();
CHECK_EQ(isolate, args.GetIsolate());
- CHECK(args.This()->GetPrototype()->Equals(args.Holder()));
- CHECK(args.Data()->Equals(v8_str("method_data")));
+ CHECK(args.This()
+ ->GetPrototype()
+ ->Equals(isolate->GetCurrentContext(), args.Holder())
+ .FromJust());
+ CHECK(args.Data()
+ ->Equals(isolate->GetCurrentContext(), v8_str("method_data"))
+ .FromJust());
// Note, we're using HasRealNamedProperty instead of Has to avoid
// invoking the interceptor again.
- CHECK(args.Holder()->HasRealNamedProperty(v8_str("foo")));
+ CHECK(args.Holder()
+ ->HasRealNamedProperty(isolate->GetCurrentContext(), v8_str("foo"))
+ .FromJust());
args.GetReturnValue().Set(
args[0]->Int32Value(isolate->GetCurrentContext()).FromJust() + 1);
}
@@ -11840,7 +11880,7 @@ THREADED_TEST(CallICFastApi_DirectCall_Throw) {
" }"
"}"
"f(); result;");
- CHECK(v8_str("ggggg")->Equals(result));
+ CHECK(v8_str("ggggg")->Equals(context.local(), result).FromJust());
}
@@ -11882,7 +11922,9 @@ static void LoadICFastApi_DirectCall_GCMoveStub(Accessor accessor) {
" return o1.p1"
"}"
"f();");
- CHECK(v8_str("Direct Getter Result")->Equals(result));
+ CHECK(v8_str("Direct Getter Result")
+ ->Equals(context.local(), result)
+ .FromJust());
CHECK_EQ(31, p_getter_count_3);
}
@@ -11915,7 +11957,7 @@ THREADED_TEST(LoadICFastApi_DirectCall_Throw) {
" try { o1.p1; } catch (e) { result += e; }"
"}"
"result;");
- CHECK(v8_str("ggggg")->Equals(result));
+ CHECK(v8_str("ggggg")->Equals(context.local(), result).FromJust());
}
@@ -11948,7 +11990,8 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_TrivialSignature) {
" result = o.method(41);"
"}");
CHECK_EQ(42, context->Global()
- ->Get(v8_str("result"))
+ ->Get(context.local(), v8_str("result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
CHECK_EQ(100, interceptor_call_count);
@@ -11988,7 +12031,8 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature) {
" result = receiver.method(41);"
"}");
CHECK_EQ(42, context->Global()
- ->Get(v8_str("result"))
+ ->Get(context.local(), v8_str("result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
CHECK_EQ(100, interceptor_call_count);
@@ -12033,11 +12077,13 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss1) {
" }"
"}");
CHECK_EQ(40, context->Global()
- ->Get(v8_str("result"))
+ ->Get(context.local(), v8_str("result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
CHECK_EQ(42, context->Global()
- ->Get(v8_str("saved_result"))
+ ->Get(context.local(), v8_str("saved_result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
CHECK_GE(interceptor_call_count, 50);
@@ -12082,11 +12128,13 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss2) {
" }"
"}");
CHECK_EQ(40, context->Global()
- ->Get(v8_str("result"))
+ ->Get(context.local(), v8_str("result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
CHECK_EQ(42, context->Global()
- ->Get(v8_str("saved_result"))
+ ->Get(context.local(), v8_str("saved_result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
CHECK_GE(interceptor_call_count, 50);
@@ -12133,10 +12181,15 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss3) {
"}");
CHECK(try_catch.HasCaught());
// TODO(verwaest): Adjust message.
- CHECK(v8_str("TypeError: receiver.method is not a function")
- ->Equals(try_catch.Exception()->ToString(isolate)));
+ CHECK(
+ v8_str("TypeError: receiver.method is not a function")
+ ->Equals(
+ context.local(),
+ try_catch.Exception()->ToString(context.local()).ToLocalChecked())
+ .FromJust());
CHECK_EQ(42, context->Global()
- ->Get(v8_str("saved_result"))
+ ->Get(context.local(), v8_str("saved_result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
CHECK_GE(interceptor_call_count, 50);
@@ -12182,10 +12235,15 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_TypeError) {
" }"
"}");
CHECK(try_catch.HasCaught());
- CHECK(v8_str("TypeError: Illegal invocation")
- ->Equals(try_catch.Exception()->ToString(isolate)));
+ CHECK(
+ v8_str("TypeError: Illegal invocation")
+ ->Equals(
+ context.local(),
+ try_catch.Exception()->ToString(context.local()).ToLocalChecked())
+ .FromJust());
CHECK_EQ(42, context->Global()
- ->Get(v8_str("saved_result"))
+ ->Get(context.local(), v8_str("saved_result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
CHECK_GE(interceptor_call_count, 50);
@@ -12219,7 +12277,8 @@ THREADED_PROFILED_TEST(CallICFastApi_TrivialSignature) {
"}");
CHECK_EQ(42, context->Global()
- ->Get(v8_str("result"))
+ ->Get(context.local(), v8_str("result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
}
@@ -12256,7 +12315,8 @@ THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature) {
"}");
CHECK_EQ(42, context->Global()
- ->Get(v8_str("result"))
+ ->Get(context.local(), v8_str("result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
}
@@ -12297,11 +12357,13 @@ THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature_Miss1) {
" }"
"}");
CHECK_EQ(40, context->Global()
- ->Get(v8_str("result"))
+ ->Get(context.local(), v8_str("result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
CHECK_EQ(42, context->Global()
- ->Get(v8_str("saved_result"))
+ ->Get(context.local(), v8_str("saved_result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
}
@@ -12344,10 +12406,15 @@ THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature_Miss2) {
"}");
CHECK(try_catch.HasCaught());
// TODO(verwaest): Adjust message.
- CHECK(v8_str("TypeError: receiver.method is not a function")
- ->Equals(try_catch.Exception()->ToString(isolate)));
+ CHECK(
+ v8_str("TypeError: receiver.method is not a function")
+ ->Equals(
+ context.local(),
+ try_catch.Exception()->ToString(context.local()).ToLocalChecked())
+ .FromJust());
CHECK_EQ(42, context->Global()
- ->Get(v8_str("saved_result"))
+ ->Get(context.local(), v8_str("saved_result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
}
@@ -12389,10 +12456,15 @@ THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature_TypeError) {
" }"
"}");
CHECK(try_catch.HasCaught());
- CHECK(v8_str("TypeError: Illegal invocation")
- ->Equals(try_catch.Exception()->ToString(isolate)));
+ CHECK(
+ v8_str("TypeError: Illegal invocation")
+ ->Equals(
+ context.local(),
+ try_catch.Exception()->ToString(context.local()).ToLocalChecked())
+ .FromJust());
CHECK_EQ(42, context->Global()
- ->Get(v8_str("saved_result"))
+ ->Get(context.local(), v8_str("saved_result"))
+ .ToLocalChecked()
->Int32Value(context.local())
.FromJust());
}
@@ -12420,7 +12492,7 @@ THREADED_TEST(VariousGetPropertiesAndThrowingCallbacks) {
.ToLocalChecked();
Local<Object> another = Object::New(context->GetIsolate());
- another->SetPrototype(instance);
+ CHECK(another->SetPrototype(context.local(), instance).FromJust());
Local<Object> with_js_getter = CompileRun(
"o = {};\n"
@@ -12430,49 +12502,53 @@ THREADED_TEST(VariousGetPropertiesAndThrowingCallbacks) {
TryCatch try_catch(context->GetIsolate());
- Local<Value> result = instance->GetRealNamedProperty(v8_str("f"));
+ v8::MaybeLocal<Value> result =
+ instance->GetRealNamedProperty(context.local(), v8_str("f"));
CHECK(try_catch.HasCaught());
try_catch.Reset();
CHECK(result.IsEmpty());
Maybe<PropertyAttribute> attr =
- instance->GetRealNamedPropertyAttributes(v8_str("f"));
+ instance->GetRealNamedPropertyAttributes(context.local(), v8_str("f"));
CHECK(!try_catch.HasCaught());
CHECK(Just(None) == attr);
- result = another->GetRealNamedProperty(v8_str("f"));
+ result = another->GetRealNamedProperty(context.local(), v8_str("f"));
CHECK(try_catch.HasCaught());
try_catch.Reset();
CHECK(result.IsEmpty());
- attr = another->GetRealNamedPropertyAttributes(v8_str("f"));
+ attr = another->GetRealNamedPropertyAttributes(context.local(), v8_str("f"));
CHECK(!try_catch.HasCaught());
CHECK(Just(None) == attr);
- result = another->GetRealNamedPropertyInPrototypeChain(v8_str("f"));
+ result = another->GetRealNamedPropertyInPrototypeChain(context.local(),
+ v8_str("f"));
CHECK(try_catch.HasCaught());
try_catch.Reset();
CHECK(result.IsEmpty());
- attr = another->GetRealNamedPropertyAttributesInPrototypeChain(v8_str("f"));
+ attr = another->GetRealNamedPropertyAttributesInPrototypeChain(
+ context.local(), v8_str("f"));
CHECK(!try_catch.HasCaught());
CHECK(Just(None) == attr);
- result = another->Get(v8_str("f"));
+ result = another->Get(context.local(), v8_str("f"));
CHECK(try_catch.HasCaught());
try_catch.Reset();
CHECK(result.IsEmpty());
- result = with_js_getter->GetRealNamedProperty(v8_str("f"));
+ result = with_js_getter->GetRealNamedProperty(context.local(), v8_str("f"));
CHECK(try_catch.HasCaught());
try_catch.Reset();
CHECK(result.IsEmpty());
- attr = with_js_getter->GetRealNamedPropertyAttributes(v8_str("f"));
+ attr = with_js_getter->GetRealNamedPropertyAttributes(context.local(),
+ v8_str("f"));
CHECK(!try_catch.HasCaught());
CHECK(Just(None) == attr);
- result = with_js_getter->Get(v8_str("f"));
+ result = with_js_getter->Get(context.local(), v8_str("f"));
CHECK(try_catch.HasCaught());
try_catch.Reset();
CHECK(result.IsEmpty());
@@ -12535,7 +12611,7 @@ THREADED_TEST(ExceptionsDoNotPropagatePastTryCatch) {
for (unsigned i = 0; i < sizeof(callbacks)/sizeof(callbacks[0]); i++) {
MessageCallback callback = callbacks[i];
if (callback != NULL) {
- V8::AddMessageListener(callback);
+ isolate->AddMessageListener(callback);
}
// Some small number to control number of times message handler should
// throw an exception.
@@ -12545,7 +12621,7 @@ THREADED_TEST(ExceptionsDoNotPropagatePastTryCatch) {
"try { func(); } catch(e) { thrown = true; }\n"
"thrown\n");
if (callback != NULL) {
- V8::RemoveMessageListeners(callback);
+ isolate->RemoveMessageListeners(callback);
}
}
}
@@ -12612,18 +12688,18 @@ THREADED_TEST(Overriding) {
CHECK(context->Global()
->Set(context.local(), v8_str("o"), instance)
.FromJust());
- Local<Value> value = v8_compile("o.f")->Run();
+ Local<Value> value = v8_compile("o.f")->Run(context.local()).ToLocalChecked();
// Check that the 'g' that was added last is hit.
CHECK_EQ(42, value->Int32Value(context.local()).FromJust());
- value = v8_compile("o.g")->Run();
+ value = v8_compile("o.g")->Run(context.local()).ToLocalChecked();
CHECK_EQ(42, value->Int32Value(context.local()).FromJust());
// Check that 'h' cannot be shadowed.
- value = v8_compile("o.h = 3; o.h")->Run();
+ value = v8_compile("o.h = 3; o.h")->Run(context.local()).ToLocalChecked();
CHECK_EQ(1, value->Int32Value(context.local()).FromJust());
// Check that 'i' cannot be shadowed or changed.
- value = v8_compile("o.i = 3; o.i")->Run();
+ value = v8_compile("o.i = 3; o.i")->Run(context.local()).ToLocalChecked();
CHECK_EQ(42, value->Int32Value(context.local()).FromJust());
}
@@ -12649,10 +12725,10 @@ THREADED_TEST(IsConstructCall) {
->Set(context.local(), v8_str("f"),
templ->GetFunction(context.local()).ToLocalChecked())
.FromJust());
- Local<Value> value = v8_compile("f()")->Run();
- CHECK(!value->BooleanValue());
- value = v8_compile("new f()")->Run();
- CHECK(value->BooleanValue());
+ Local<Value> value = v8_compile("f()")->Run(context.local()).ToLocalChecked();
+ CHECK(!value->BooleanValue(context.local()).FromJust());
+ value = v8_compile("new f()")->Run(context.local()).ToLocalChecked();
+ CHECK(value->BooleanValue(context.local()).FromJust());
}
@@ -12667,30 +12743,41 @@ THREADED_TEST(ObjectProtoToString) {
Local<String> customized_tostring = v8_str("customized toString");
// Replace Object.prototype.toString
- v8_compile("Object.prototype.toString = function() {"
- " return 'customized toString';"
- "}")->Run();
+ v8_compile(
+ "Object.prototype.toString = function() {"
+ " return 'customized toString';"
+ "}")
+ ->Run(context.local())
+ .ToLocalChecked();
// Normal ToString call should call replaced Object.prototype.toString
Local<v8::Object> instance = templ->GetFunction(context.local())
.ToLocalChecked()
->NewInstance(context.local())
.ToLocalChecked();
- Local<String> value = instance->ToString(isolate);
- CHECK(value->IsString() && value->Equals(customized_tostring));
+ Local<String> value = instance->ToString(context.local()).ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), customized_tostring).FromJust());
// ObjectProtoToString should not call replace toString function.
- value = instance->ObjectProtoToString();
- CHECK(value->IsString() && value->Equals(v8_str("[object MyClass]")));
+ value = instance->ObjectProtoToString(context.local()).ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), v8_str("[object MyClass]")).FromJust());
// Check global
- value = context->Global()->ObjectProtoToString();
- CHECK(value->IsString() && value->Equals(v8_str("[object global]")));
+ value =
+ context->Global()->ObjectProtoToString(context.local()).ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), v8_str("[object global]")).FromJust());
// Check ordinary object
- Local<Value> object = v8_compile("new Object()")->Run();
- value = object.As<v8::Object>()->ObjectProtoToString();
- CHECK(value->IsString() && value->Equals(v8_str("[object Object]")));
+ Local<Value> object =
+ v8_compile("new Object()")->Run(context.local()).ToLocalChecked();
+ value = object.As<v8::Object>()
+ ->ObjectProtoToString(context.local())
+ .ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), v8_str("[object Object]")).FromJust());
}
@@ -12716,32 +12803,44 @@ TEST(ObjectProtoToStringES6) {
.ToLocalChecked()
->NewInstance(context.local())
.ToLocalChecked();
- Local<String> value = instance->ToString(isolate);
- CHECK(value->IsString() && value->Equals(customized_tostring));
+ Local<String> value = instance->ToString(context.local()).ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), customized_tostring).FromJust());
// ObjectProtoToString should not call replace toString function.
- value = instance->ObjectProtoToString();
- CHECK(value->IsString() && value->Equals(v8_str("[object MyClass]")));
+ value = instance->ObjectProtoToString(context.local()).ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), v8_str("[object MyClass]")).FromJust());
// Check global
- value = context->Global()->ObjectProtoToString();
- CHECK(value->IsString() && value->Equals(v8_str("[object global]")));
+ value =
+ context->Global()->ObjectProtoToString(context.local()).ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), v8_str("[object global]")).FromJust());
// Check ordinary object
Local<Value> object = CompileRun("new Object()");
- value = object.As<v8::Object>()->ObjectProtoToString();
- CHECK(value->IsString() && value->Equals(v8_str("[object Object]")));
+ value = object.As<v8::Object>()
+ ->ObjectProtoToString(context.local())
+ .ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), v8_str("[object Object]")).FromJust());
// Check that ES6 semantics using @@toStringTag work
Local<v8::Symbol> toStringTag = v8::Symbol::GetToStringTag(isolate);
-#define TEST_TOSTRINGTAG(type, tag, expected) \
- do { \
- object = CompileRun("new " #type "()"); \
- object.As<v8::Object>()->Set(toStringTag, v8_str(#tag)); \
- value = object.As<v8::Object>()->ObjectProtoToString(); \
- CHECK(value->IsString() && \
- value->Equals(v8_str("[object " #expected "]"))); \
+#define TEST_TOSTRINGTAG(type, tag, expected) \
+ do { \
+ object = CompileRun("new " #type "()"); \
+ CHECK(object.As<v8::Object>() \
+ ->Set(context.local(), toStringTag, v8_str(#tag)) \
+ .FromJust()); \
+ value = object.As<v8::Object>() \
+ ->ObjectProtoToString(context.local()) \
+ .ToLocalChecked(); \
+ CHECK(value->IsString() && \
+ value->Equals(context.local(), v8_str("[object " #expected "]")) \
+ .FromJust()); \
} while (0)
TEST_TOSTRINGTAG(Array, Object, Object);
@@ -12758,8 +12857,9 @@ TEST(ObjectProtoToStringES6) {
#undef TEST_TOSTRINGTAG
- Local<v8::RegExp> valueRegExp = v8::RegExp::New(v8_str("^$"),
- v8::RegExp::kNone);
+ Local<v8::RegExp> valueRegExp =
+ v8::RegExp::New(context.local(), v8_str("^$"), v8::RegExp::kNone)
+ .ToLocalChecked();
Local<Value> valueNumber = v8_num(123);
Local<v8::Symbol> valueSymbol = v8_symbol("TestSymbol");
Local<v8::Function> valueFunction =
@@ -12768,13 +12868,18 @@ TEST(ObjectProtoToStringES6) {
Local<v8::Primitive> valueNull = v8::Null(v8::Isolate::GetCurrent());
Local<v8::Primitive> valueUndef = v8::Undefined(v8::Isolate::GetCurrent());
-#define TEST_TOSTRINGTAG(type, tagValue, expected) \
- do { \
- object = CompileRun("new " #type "()"); \
- object.As<v8::Object>()->Set(toStringTag, tagValue); \
- value = object.As<v8::Object>()->ObjectProtoToString(); \
- CHECK(value->IsString() && \
- value->Equals(v8_str("[object " #expected "]"))); \
+#define TEST_TOSTRINGTAG(type, tagValue, expected) \
+ do { \
+ object = CompileRun("new " #type "()"); \
+ CHECK(object.As<v8::Object>() \
+ ->Set(context.local(), toStringTag, tagValue) \
+ .FromJust()); \
+ value = object.As<v8::Object>() \
+ ->ObjectProtoToString(context.local()) \
+ .ToLocalChecked(); \
+ CHECK(value->IsString() && \
+ value->Equals(context.local(), v8_str("[object " #expected "]")) \
+ .FromJust()); \
} while (0)
#define TEST_TOSTRINGTAG_TYPES(tagValue) \
@@ -12799,22 +12904,28 @@ TEST(ObjectProtoToStringES6) {
// @@toStringTag getter throws
Local<Value> obj = v8::Object::New(isolate);
- obj.As<v8::Object>()->SetAccessor(toStringTag, ThrowingSymbolAccessorGetter);
+ obj.As<v8::Object>()
+ ->SetAccessor(context.local(), toStringTag, ThrowingSymbolAccessorGetter)
+ .FromJust();
{
TryCatch try_catch(isolate);
- value = obj.As<v8::Object>()->ObjectProtoToString();
- CHECK(value.IsEmpty());
+ CHECK(obj.As<v8::Object>()->ObjectProtoToString(context.local()).IsEmpty());
CHECK(try_catch.HasCaught());
}
// @@toStringTag getter does not throw
obj = v8::Object::New(isolate);
- obj.As<v8::Object>()->SetAccessor(
- toStringTag, SymbolAccessorGetterReturnsDefault, 0, v8_str("Test"));
+ obj.As<v8::Object>()
+ ->SetAccessor(context.local(), toStringTag,
+ SymbolAccessorGetterReturnsDefault, 0, v8_str("Test"))
+ .FromJust();
{
TryCatch try_catch(isolate);
- value = obj.As<v8::Object>()->ObjectProtoToString();
- CHECK(value->IsString() && value->Equals(v8_str("[object Test]")));
+ value = obj.As<v8::Object>()
+ ->ObjectProtoToString(context.local())
+ .ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), v8_str("[object Test]")).FromJust());
CHECK(!try_catch.HasCaught());
}
@@ -12822,8 +12933,11 @@ TEST(ObjectProtoToStringES6) {
obj = CompileRun("obj = {}; obj[Symbol.toStringTag] = 'Test'; obj");
{
TryCatch try_catch(isolate);
- value = obj.As<v8::Object>()->ObjectProtoToString();
- CHECK(value->IsString() && value->Equals(v8_str("[object Test]")));
+ value = obj.As<v8::Object>()
+ ->ObjectProtoToString(context.local())
+ .ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), v8_str("[object Test]")).FromJust());
CHECK(!try_catch.HasCaught());
}
@@ -12834,8 +12948,7 @@ TEST(ObjectProtoToStringES6) {
"}); obj");
{
TryCatch try_catch(isolate);
- value = obj.As<v8::Object>()->ObjectProtoToString();
- CHECK(value.IsEmpty());
+ CHECK(obj.As<v8::Object>()->ObjectProtoToString(context.local()).IsEmpty());
CHECK(try_catch.HasCaught());
}
@@ -12846,8 +12959,11 @@ TEST(ObjectProtoToStringES6) {
"}); obj");
{
TryCatch try_catch(isolate);
- value = obj.As<v8::Object>()->ObjectProtoToString();
- CHECK(value->IsString() && value->Equals(v8_str("[object Test]")));
+ value = obj.As<v8::Object>()
+ ->ObjectProtoToString(context.local())
+ .ToLocalChecked();
+ CHECK(value->IsString() &&
+ value->Equals(context.local(), v8_str("[object Test]")).FromJust());
CHECK(!try_catch.HasCaught());
}
}
@@ -12867,25 +12983,44 @@ THREADED_TEST(ObjectGetConstructorName) {
"var c = new Child();"
"var x = new outer.inner();"
"var proto = Child.prototype;")
- ->Run();
+ ->Run(context.local())
+ .ToLocalChecked();
- Local<v8::Value> p = context->Global()->Get(v8_str("p"));
+ Local<v8::Value> p =
+ context->Global()->Get(context.local(), v8_str("p")).ToLocalChecked();
CHECK(p->IsObject() &&
- p->ToObject(isolate)->GetConstructorName()->Equals(v8_str("Parent")));
+ p->ToObject(context.local())
+ .ToLocalChecked()
+ ->GetConstructorName()
+ ->Equals(context.local(), v8_str("Parent"))
+ .FromJust());
- Local<v8::Value> c = context->Global()->Get(v8_str("c"));
+ Local<v8::Value> c =
+ context->Global()->Get(context.local(), v8_str("c")).ToLocalChecked();
CHECK(c->IsObject() &&
- c->ToObject(isolate)->GetConstructorName()->Equals(v8_str("Child")));
+ c->ToObject(context.local())
+ .ToLocalChecked()
+ ->GetConstructorName()
+ ->Equals(context.local(), v8_str("Child"))
+ .FromJust());
- Local<v8::Value> x = context->Global()->Get(v8_str("x"));
+ Local<v8::Value> x =
+ context->Global()->Get(context.local(), v8_str("x")).ToLocalChecked();
CHECK(x->IsObject() &&
- x->ToObject(isolate)->GetConstructorName()->Equals(
- v8_str("outer.inner")));
+ x->ToObject(context.local())
+ .ToLocalChecked()
+ ->GetConstructorName()
+ ->Equals(context.local(), v8_str("outer.inner"))
+ .FromJust());
- Local<v8::Value> child_prototype = context->Global()->Get(v8_str("proto"));
+ Local<v8::Value> child_prototype =
+ context->Global()->Get(context.local(), v8_str("proto")).ToLocalChecked();
CHECK(child_prototype->IsObject() &&
- child_prototype->ToObject(isolate)->GetConstructorName()->Equals(
- v8_str("Parent")));
+ child_prototype->ToObject(context.local())
+ .ToLocalChecked()
+ ->GetConstructorName()
+ ->Equals(context.local(), v8_str("Parent"))
+ .FromJust());
}
@@ -12899,15 +13034,26 @@ THREADED_TEST(SubclassGetConstructorName) {
"class Child extends Parent {}"
"var p = new Parent();"
"var c = new Child();")
- ->Run();
+ ->Run(context.local())
+ .ToLocalChecked();
- Local<v8::Value> p = context->Global()->Get(v8_str("p"));
+ Local<v8::Value> p =
+ context->Global()->Get(context.local(), v8_str("p")).ToLocalChecked();
CHECK(p->IsObject() &&
- p->ToObject(isolate)->GetConstructorName()->Equals(v8_str("Parent")));
+ p->ToObject(context.local())
+ .ToLocalChecked()
+ ->GetConstructorName()
+ ->Equals(context.local(), v8_str("Parent"))
+ .FromJust());
- Local<v8::Value> c = context->Global()->Get(v8_str("c"));
+ Local<v8::Value> c =
+ context->Global()->Get(context.local(), v8_str("c")).ToLocalChecked();
CHECK(c->IsObject() &&
- c->ToObject(isolate)->GetConstructorName()->Equals(v8_str("Child")));
+ c->ToObject(context.local())
+ .ToLocalChecked()
+ ->GetConstructorName()
+ ->Equals(context.local(), v8_str("Child"))
+ .FromJust());
}
@@ -13133,7 +13279,10 @@ TEST(NestedLockers) {
" return e * 13;"
" }"
"})();");
- CHECK_EQ(91, script->Run()->Int32Value(env.local()).FromJust());
+ CHECK_EQ(91, script->Run(env.local())
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
}
@@ -13155,7 +13304,10 @@ TEST(NestedLockersNoTryCatch) {
" return e * 13;"
" }"
"})();");
- CHECK_EQ(91, script->Run()->Int32Value(env.local()).FromJust());
+ CHECK_EQ(91, script->Run(env.local())
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
}
@@ -13189,7 +13341,10 @@ THREADED_TEST(LockUnlockLock) {
" unlock_for_a_moment();"
" return 42;"
"})();");
- CHECK_EQ(42, script->Run()->Int32Value(env.local()).FromJust());
+ CHECK_EQ(42, script->Run(env.local())
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
}
{
v8::Locker locker(CcTest::isolate());
@@ -13205,7 +13360,10 @@ THREADED_TEST(LockUnlockLock) {
" unlock_for_a_moment();"
" return 42;"
"})();");
- CHECK_EQ(42, script->Run()->Int32Value(env.local()).FromJust());
+ CHECK_EQ(42, script->Run(env.local())
+ .ToLocalChecked()
+ ->Int32Value(env.local())
+ .FromJust());
}
}
@@ -13256,14 +13414,14 @@ TEST(DontLeakGlobalObjects) {
{ v8::HandleScope scope(CcTest::isolate());
LocalContext context;
- v8_compile("Date")->Run();
+ v8_compile("Date")->Run(context.local()).ToLocalChecked();
}
CcTest::isolate()->ContextDisposedNotification();
CheckSurvivingGlobalObjectsCount(0);
{ v8::HandleScope scope(CcTest::isolate());
LocalContext context;
- v8_compile("/aaa/")->Run();
+ v8_compile("/aaa/")->Run(context.local()).ToLocalChecked();
}
CcTest::isolate()->ContextDisposedNotification();
CheckSurvivingGlobalObjectsCount(0);
@@ -13272,7 +13430,7 @@ TEST(DontLeakGlobalObjects) {
const char* extension_list[] = { "v8/gc" };
v8::ExtensionConfiguration extensions(1, extension_list);
LocalContext context(&extensions);
- v8_compile("gc();")->Run();
+ v8_compile("gc();")->Run(context.local()).ToLocalChecked();
}
CcTest::isolate()->ContextDisposedNotification();
CheckSurvivingGlobalObjectsCount(0);
@@ -13324,7 +13482,9 @@ TEST(WeakCallbackApi) {
{
v8::HandleScope scope(isolate);
v8::Local<v8::Object> obj = v8::Object::New(isolate);
- obj->Set(v8_str("key"), v8::Integer::New(isolate, 231));
+ CHECK(
+ obj->Set(context.local(), v8_str("key"), v8::Integer::New(isolate, 231))
+ .FromJust());
v8::Persistent<v8::Object>* handle =
new v8::Persistent<v8::Object>(isolate, obj);
handle->SetWeak<v8::Persistent<v8::Object>>(
@@ -13489,7 +13649,7 @@ THREADED_TEST(NestedHandleScopeAndContexts) {
v8::Local<Context> env = Context::New(isolate);
env->Enter();
v8::Local<Value> value = NestedScope(env);
- v8::Local<String> str(value->ToString(isolate));
+ v8::Local<String> str(value->ToString(env).ToLocalChecked());
CHECK(!str.IsEmpty());
env->Exit();
}
@@ -13751,13 +13911,12 @@ void SetFunctionEntryHookTest::RunLoopInNewEnv(v8::Isolate* isolate) {
"// Invoke on the runtime function.\n"
"obj.asdf()";
CompileRun(script);
- bar_func_ = i::Handle<i::JSFunction>::cast(
- v8::Utils::OpenHandle(*env->Global()->Get(v8_str("bar"))));
+ bar_func_ = i::Handle<i::JSFunction>::cast(v8::Utils::OpenHandle(
+ *env->Global()->Get(env, v8_str("bar")).ToLocalChecked()));
CHECK(!bar_func_.is_null());
- foo_func_ =
- i::Handle<i::JSFunction>::cast(
- v8::Utils::OpenHandle(*env->Global()->Get(v8_str("foo"))));
+ foo_func_ = i::Handle<i::JSFunction>::cast(v8::Utils::OpenHandle(
+ *env->Global()->Get(env, v8_str("foo")).ToLocalChecked()));
CHECK(!foo_func_.is_null());
v8::Local<v8::Value> value = CompileRun("bar();");
@@ -14019,10 +14178,18 @@ UNINITIALIZED_TEST(SetJitCodeEventHandler) {
CompileRun(script);
// Keep a strong reference to the code object in the handle scope.
- i::Handle<i::Code> bar_code(i::Handle<i::JSFunction>::cast(
- v8::Utils::OpenHandle(*env->Global()->Get(v8_str("bar"))))->code());
- i::Handle<i::Code> foo_code(i::Handle<i::JSFunction>::cast(
- v8::Utils::OpenHandle(*env->Global()->Get(v8_str("foo"))))->code());
+ i::Handle<i::Code> bar_code(
+ i::Handle<i::JSFunction>::cast(
+ v8::Utils::OpenHandle(*env->Global()
+ ->Get(env.local(), v8_str("bar"))
+ .ToLocalChecked()))
+ ->code());
+ i::Handle<i::Code> foo_code(
+ i::Handle<i::JSFunction>::cast(
+ v8::Utils::OpenHandle(*env->Global()
+ ->Get(env.local(), v8_str("foo"))
+ .ToLocalChecked()))
+ ->code());
// Clear the compilation cache to get more wastage.
reinterpret_cast<i::Isolate*>(isolate)->compilation_cache()->Clear();
@@ -14154,17 +14321,17 @@ static void CheckTryCatchSourceInfo(v8::Local<v8::Script> script,
int line_offset) {
v8::HandleScope scope(CcTest::isolate());
v8::TryCatch try_catch(CcTest::isolate());
- v8::Local<v8::Value> result = script->Run();
- CHECK(result.IsEmpty());
+ v8::Local<v8::Context> context = CcTest::isolate()->GetCurrentContext();
+ CHECK(script->Run(context).IsEmpty());
CHECK(try_catch.HasCaught());
v8::Local<v8::Message> message = try_catch.Message();
CHECK(!message.IsEmpty());
- CHECK_EQ(10 + line_offset, message->GetLineNumber());
+ CHECK_EQ(10 + line_offset, message->GetLineNumber(context).FromJust());
CHECK_EQ(91, message->GetStartPosition());
CHECK_EQ(92, message->GetEndPosition());
- CHECK_EQ(2, message->GetStartColumn());
- CHECK_EQ(3, message->GetEndColumn());
- v8::String::Utf8Value line(message->GetSourceLine());
+ CHECK_EQ(2, message->GetStartColumn(context).FromJust());
+ CHECK_EQ(3, message->GetEndColumn(context).FromJust());
+ v8::String::Utf8Value line(message->GetSourceLine(context).ToLocalChecked());
CHECK_EQ(0, strcmp(" throw 'nirk';", *line));
v8::String::Utf8Value name(message->GetScriptOrigin().ResourceName());
CHECK_EQ(0, strcmp(resource_name, *name));
@@ -14197,13 +14364,15 @@ THREADED_TEST(TryCatchSourceInfo) {
resource_name = "test1.js";
v8::ScriptOrigin origin1(v8_str(resource_name));
- script = v8::Script::Compile(source, &origin1);
+ script =
+ v8::Script::Compile(context.local(), source, &origin1).ToLocalChecked();
CheckTryCatchSourceInfo(script, resource_name, 0);
resource_name = "test2.js";
v8::ScriptOrigin origin2(v8_str(resource_name),
v8::Integer::New(context->GetIsolate(), 7));
- script = v8::Script::Compile(source, &origin2);
+ script =
+ v8::Script::Compile(context.local(), source, &origin2).ToLocalChecked();
CheckTryCatchSourceInfo(script, resource_name, 7);
}
@@ -14212,11 +14381,11 @@ THREADED_TEST(TryCatchSourceInfoForEOSError) {
LocalContext context;
v8::HandleScope scope(context->GetIsolate());
v8::TryCatch try_catch(context->GetIsolate());
- v8::Script::Compile(v8_str("!\n"));
+ CHECK(v8::Script::Compile(context.local(), v8_str("!\n")).IsEmpty());
CHECK(try_catch.HasCaught());
v8::Local<v8::Message> message = try_catch.Message();
- CHECK_EQ(1, message->GetLineNumber());
- CHECK_EQ(0, message->GetStartColumn());
+ CHECK_EQ(1, message->GetLineNumber(context.local()).FromJust());
+ CHECK_EQ(0, message->GetStartColumn(context.local()).FromJust());
}
@@ -14227,11 +14396,20 @@ THREADED_TEST(CompilationCache) {
v8::Local<v8::String> source1 = v8_str("1234");
v8::Local<v8::Script> script0 = CompileWithOrigin(source0, "test.js");
v8::Local<v8::Script> script1 = CompileWithOrigin(source1, "test.js");
- v8::Local<v8::Script> script2 =
- v8::Script::Compile(source0); // different origin
- CHECK_EQ(1234, script0->Run()->Int32Value(context.local()).FromJust());
- CHECK_EQ(1234, script1->Run()->Int32Value(context.local()).FromJust());
- CHECK_EQ(1234, script2->Run()->Int32Value(context.local()).FromJust());
+ v8::Local<v8::Script> script2 = v8::Script::Compile(context.local(), source0)
+ .ToLocalChecked(); // different origin
+ CHECK_EQ(1234, script0->Run(context.local())
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
+ CHECK_EQ(1234, script1->Run(context.local())
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
+ CHECK_EQ(1234, script2->Run(context.local())
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
}
@@ -14264,7 +14442,7 @@ THREADED_TEST(DateAccess) {
LocalContext context;
v8::HandleScope scope(context->GetIsolate());
v8::Local<v8::Value> date =
- v8::Date::New(context->GetIsolate(), 1224744689038.0);
+ v8::Date::New(context.local(), 1224744689038.0).ToLocalChecked();
CHECK(date->IsDate());
CHECK_EQ(1224744689038.0, date.As<v8::Date>()->ValueOf());
}
@@ -14272,11 +14450,13 @@ THREADED_TEST(DateAccess) {
void CheckProperties(v8::Isolate* isolate, v8::Local<v8::Value> val,
unsigned elmc, const char* elmv[]) {
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Object> obj = val.As<v8::Object>();
- v8::Local<v8::Array> props = obj->GetPropertyNames();
+ v8::Local<v8::Array> props = obj->GetPropertyNames(context).ToLocalChecked();
CHECK_EQ(elmc, props->Length());
for (unsigned i = 0; i < elmc; i++) {
- v8::String::Utf8Value elm(props->Get(v8::Integer::New(isolate, i)));
+ v8::String::Utf8Value elm(
+ props->Get(context, v8::Integer::New(isolate, i)).ToLocalChecked());
CHECK_EQ(0, strcmp(elmv[i], *elm));
}
}
@@ -14284,11 +14464,14 @@ void CheckProperties(v8::Isolate* isolate, v8::Local<v8::Value> val,
void CheckOwnProperties(v8::Isolate* isolate, v8::Local<v8::Value> val,
unsigned elmc, const char* elmv[]) {
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
v8::Local<v8::Object> obj = val.As<v8::Object>();
- v8::Local<v8::Array> props = obj->GetOwnPropertyNames();
+ v8::Local<v8::Array> props =
+ obj->GetOwnPropertyNames(context).ToLocalChecked();
CHECK_EQ(elmc, props->Length());
for (unsigned i = 0; i < elmc; i++) {
- v8::String::Utf8Value elm(props->Get(v8::Integer::New(isolate, i)));
+ v8::String::Utf8Value elm(
+ props->Get(context, v8::Integer::New(isolate, i)).ToLocalChecked());
CHECK_EQ(0, strcmp(elmv[i], *elm));
}
}
@@ -14312,29 +14495,45 @@ THREADED_TEST(PropertyEnumeration) {
int elmc0 = 0;
const char** elmv0 = NULL;
CheckProperties(
- isolate, elms->Get(v8::Integer::New(isolate, 0)), elmc0, elmv0);
+ isolate,
+ elms->Get(context.local(), v8::Integer::New(isolate, 0)).ToLocalChecked(),
+ elmc0, elmv0);
CheckOwnProperties(
- isolate, elms->Get(v8::Integer::New(isolate, 0)), elmc0, elmv0);
+ isolate,
+ elms->Get(context.local(), v8::Integer::New(isolate, 0)).ToLocalChecked(),
+ elmc0, elmv0);
int elmc1 = 2;
const char* elmv1[] = {"a", "b"};
CheckProperties(
- isolate, elms->Get(v8::Integer::New(isolate, 1)), elmc1, elmv1);
+ isolate,
+ elms->Get(context.local(), v8::Integer::New(isolate, 1)).ToLocalChecked(),
+ elmc1, elmv1);
CheckOwnProperties(
- isolate, elms->Get(v8::Integer::New(isolate, 1)), elmc1, elmv1);
+ isolate,
+ elms->Get(context.local(), v8::Integer::New(isolate, 1)).ToLocalChecked(),
+ elmc1, elmv1);
int elmc2 = 3;
const char* elmv2[] = {"0", "1", "2"};
CheckProperties(
- isolate, elms->Get(v8::Integer::New(isolate, 2)), elmc2, elmv2);
+ isolate,
+ elms->Get(context.local(), v8::Integer::New(isolate, 2)).ToLocalChecked(),
+ elmc2, elmv2);
CheckOwnProperties(
- isolate, elms->Get(v8::Integer::New(isolate, 2)), elmc2, elmv2);
+ isolate,
+ elms->Get(context.local(), v8::Integer::New(isolate, 2)).ToLocalChecked(),
+ elmc2, elmv2);
int elmc3 = 4;
const char* elmv3[] = {"w", "z", "x", "y"};
CheckProperties(
- isolate, elms->Get(v8::Integer::New(isolate, 3)), elmc3, elmv3);
+ isolate,
+ elms->Get(context.local(), v8::Integer::New(isolate, 3)).ToLocalChecked(),
+ elmc3, elmv3);
int elmc4 = 2;
const char* elmv4[] = {"w", "z"};
CheckOwnProperties(
- isolate, elms->Get(v8::Integer::New(isolate, 3)), elmc4, elmv4);
+ isolate,
+ elms->Get(context.local(), v8::Integer::New(isolate, 3)).ToLocalChecked(),
+ elmc4, elmv4);
}
@@ -14355,11 +14554,15 @@ THREADED_TEST(PropertyEnumeration2) {
CHECK_EQ(4u, elms->Length());
int elmc0 = 0;
const char** elmv0 = NULL;
- CheckProperties(isolate,
- elms->Get(v8::Integer::New(isolate, 0)), elmc0, elmv0);
-
- v8::Local<v8::Value> val = elms->Get(v8::Integer::New(isolate, 0));
- v8::Local<v8::Array> props = val.As<v8::Object>()->GetPropertyNames();
+ CheckProperties(
+ isolate,
+ elms->Get(context.local(), v8::Integer::New(isolate, 0)).ToLocalChecked(),
+ elmc0, elmv0);
+
+ v8::Local<v8::Value> val =
+ elms->Get(context.local(), v8::Integer::New(isolate, 0)).ToLocalChecked();
+ v8::Local<v8::Array> props =
+ val.As<v8::Object>()->GetPropertyNames(context.local()).ToLocalChecked();
CHECK_EQ(0u, props->Length());
for (uint32_t i = 0; i < props->Length(); i++) {
printf("p[%u]\n", i);
@@ -14420,8 +14623,9 @@ TEST(PreCompileSerialization) {
i::FLAG_min_preparse_length = 0;
const char* script = "function foo(a) { return a+1; }";
v8::ScriptCompiler::Source source(v8_str(script));
- v8::ScriptCompiler::Compile(isolate, &source,
- v8::ScriptCompiler::kProduceParserCache);
+ v8::ScriptCompiler::Compile(env.local(), &source,
+ v8::ScriptCompiler::kProduceParserCache)
+ .ToLocalChecked();
// Serialize.
const v8::ScriptCompiler::CachedData* cd = source.GetCachedData();
i::byte* serialized_data = i::NewArray<i::byte>(cd->length);
@@ -14452,7 +14656,7 @@ THREADED_TEST(DictionaryICLoadedFunction) {
CHECK(context->Global()
->Set(context.local(), v8_str("tmp"), v8::True(CcTest::isolate()))
.FromJust());
- context->Global()->Delete(v8_str("tmp"));
+ context->Global()->Delete(context.local(), v8_str("tmp")).FromJust();
CompileRun("for (var j = 0; j < 10; j++) new RegExp('');");
}
// Test CallIC.
@@ -14461,7 +14665,7 @@ THREADED_TEST(DictionaryICLoadedFunction) {
CHECK(context->Global()
->Set(context.local(), v8_str("tmp"), v8::True(CcTest::isolate()))
.FromJust());
- context->Global()->Delete(v8_str("tmp"));
+ context->Global()->Delete(context.local(), v8_str("tmp")).FromJust();
CompileRun("for (var j = 0; j < 10; j++) RegExp('')");
}
}
@@ -14515,22 +14719,47 @@ TEST(ObjectClone) {
Local<Value> val = CompileRun(sample);
CHECK(val->IsObject());
Local<v8::Object> obj = val.As<v8::Object>();
- obj->Set(v8_str("gamma"), v8_str("cloneme"));
+ obj->Set(env.local(), v8_str("gamma"), v8_str("cloneme")).FromJust();
- CHECK(v8_str("hello")->Equals(obj->Get(v8_str("alpha"))));
- CHECK(v8::Integer::New(isolate, 123)->Equals(obj->Get(v8_str("beta"))));
- CHECK(v8_str("cloneme")->Equals(obj->Get(v8_str("gamma"))));
+ CHECK(v8_str("hello")
+ ->Equals(env.local(),
+ obj->Get(env.local(), v8_str("alpha")).ToLocalChecked())
+ .FromJust());
+ CHECK(v8::Integer::New(isolate, 123)
+ ->Equals(env.local(),
+ obj->Get(env.local(), v8_str("beta")).ToLocalChecked())
+ .FromJust());
+ CHECK(v8_str("cloneme")
+ ->Equals(env.local(),
+ obj->Get(env.local(), v8_str("gamma")).ToLocalChecked())
+ .FromJust());
// Clone it.
Local<v8::Object> clone = obj->Clone();
- CHECK(v8_str("hello")->Equals(clone->Get(v8_str("alpha"))));
- CHECK(v8::Integer::New(isolate, 123)->Equals(clone->Get(v8_str("beta"))));
- CHECK(v8_str("cloneme")->Equals(clone->Get(v8_str("gamma"))));
+ CHECK(v8_str("hello")
+ ->Equals(env.local(),
+ clone->Get(env.local(), v8_str("alpha")).ToLocalChecked())
+ .FromJust());
+ CHECK(v8::Integer::New(isolate, 123)
+ ->Equals(env.local(),
+ clone->Get(env.local(), v8_str("beta")).ToLocalChecked())
+ .FromJust());
+ CHECK(v8_str("cloneme")
+ ->Equals(env.local(),
+ clone->Get(env.local(), v8_str("gamma")).ToLocalChecked())
+ .FromJust());
// Set a property on the clone, verify each object.
- clone->Set(v8_str("beta"), v8::Integer::New(isolate, 456));
- CHECK(v8::Integer::New(isolate, 123)->Equals(obj->Get(v8_str("beta"))));
- CHECK(v8::Integer::New(isolate, 456)->Equals(clone->Get(v8_str("beta"))));
+ CHECK(clone->Set(env.local(), v8_str("beta"), v8::Integer::New(isolate, 456))
+ .FromJust());
+ CHECK(v8::Integer::New(isolate, 123)
+ ->Equals(env.local(),
+ obj->Get(env.local(), v8_str("beta")).ToLocalChecked())
+ .FromJust());
+ CHECK(v8::Integer::New(isolate, 456)
+ ->Equals(env.local(),
+ clone->Get(env.local(), v8_str("beta")).ToLocalChecked())
+ .FromJust());
}
@@ -14622,7 +14851,8 @@ THREADED_TEST(MorphCompositeStringTest) {
&uc16_resource);
// This should UTF-8 without flattening, since everything is ASCII.
- Local<String> cons = v8_compile("cons")->Run().As<String>();
+ Local<String> cons =
+ v8_compile("cons")->Run(env.local()).ToLocalChecked().As<String>();
CHECK_EQ(128, cons->Utf8Length());
int nchars = -1;
CHECK_EQ(129, cons->WriteUtf8(utf_buffer, -1, &nchars));
@@ -14645,10 +14875,22 @@ THREADED_TEST(MorphCompositeStringTest) {
const char* expected_slice_on_cons =
"ow is the time for all good men to come to the aid of the party"
"Now is the time for all good men to come to the aid of the part";
- CHECK(v8_str(expected_cons)->Equals(env->Global()->Get(v8_str("cons"))));
- CHECK(v8_str(expected_slice)->Equals(env->Global()->Get(v8_str("slice"))));
+ CHECK(v8_str(expected_cons)
+ ->Equals(env.local(), env->Global()
+ ->Get(env.local(), v8_str("cons"))
+ .ToLocalChecked())
+ .FromJust());
+ CHECK(v8_str(expected_slice)
+ ->Equals(env.local(), env->Global()
+ ->Get(env.local(), v8_str("slice"))
+ .ToLocalChecked())
+ .FromJust());
CHECK(v8_str(expected_slice_on_cons)
- ->Equals(env->Global()->Get(v8_str("slice_on_cons"))));
+ ->Equals(env.local(),
+ env->Global()
+ ->Get(env.local(), v8_str("slice_on_cons"))
+ .ToLocalChecked())
+ .FromJust());
}
i::DeleteArray(two_byte_string);
}
@@ -14671,8 +14913,9 @@ TEST(CompileExternalTwoByteSource) {
uint16_t* two_byte_string = AsciiToTwoByteString(one_byte_sources[i]);
TestResource* uc16_resource = new TestResource(two_byte_string);
v8::Local<v8::String> source =
- v8::String::NewExternal(context->GetIsolate(), uc16_resource);
- v8::Script::Compile(source);
+ v8::String::NewExternalTwoByte(context->GetIsolate(), uc16_resource)
+ .ToLocalChecked();
+ v8::Script::Compile(context.local(), source).FromMaybe(Local<Script>());
}
}
@@ -14702,7 +14945,7 @@ class RegExpInterruptionThread : public v8::base::Thread {
}
// Wait a bit before terminating.
v8::base::OS::Sleep(v8::base::TimeDelta::FromMilliseconds(50));
- v8::V8::TerminateExecution(isolate_);
+ isolate_->TerminateExecution();
}
private:
@@ -14727,22 +14970,22 @@ void RunBeforeGC(v8::Isolate* isolate, v8::GCType type,
// * turn the subject string from one-byte internal to two-byte external string
// * force termination
TEST(RegExpInterruption) {
- v8::HandleScope scope(CcTest::isolate());
LocalContext env;
+ v8::HandleScope scope(env->GetIsolate());
- RegExpInterruptionThread timeout_thread(CcTest::isolate());
+ RegExpInterruptionThread timeout_thread(env->GetIsolate());
env->GetIsolate()->AddGCPrologueCallback(RunBeforeGC);
static const char* one_byte_content = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
i::uc16* uc16_content = AsciiToTwoByteString(one_byte_content);
v8::Local<v8::String> string = v8_str(one_byte_content);
- CcTest::global()->Set(v8_str("a"), string);
- regexp_interruption_data.string.Reset(CcTest::isolate(), string);
+ env->Global()->Set(env.local(), v8_str("a"), string).FromJust();
+ regexp_interruption_data.string.Reset(env->GetIsolate(), string);
regexp_interruption_data.string_resource = new UC16VectorResource(
i::Vector<const i::uc16>(uc16_content, i::StrLength(one_byte_content)));
- v8::TryCatch try_catch(CcTest::isolate());
+ v8::TryCatch try_catch(env->GetIsolate());
timeout_thread.Start();
CompileRun("/((a*)*)*b/.exec(a)");
@@ -14765,22 +15008,24 @@ TEST(ReadOnlyPropertyInGlobalProto) {
v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate);
LocalContext context(0, templ);
v8::Local<v8::Object> global = context->Global();
- v8::Local<v8::Object> global_proto =
- v8::Local<v8::Object>::Cast(global->Get(v8_str("__proto__")));
- global_proto->ForceSet(v8_str("x"), v8::Integer::New(isolate, 0),
- v8::ReadOnly);
- global_proto->ForceSet(v8_str("y"), v8::Integer::New(isolate, 0),
- v8::ReadOnly);
+ v8::Local<v8::Object> global_proto = v8::Local<v8::Object>::Cast(
+ global->Get(context.local(), v8_str("__proto__")).ToLocalChecked());
+ global_proto->DefineOwnProperty(context.local(), v8_str("x"),
+ v8::Integer::New(isolate, 0), v8::ReadOnly)
+ .FromJust();
+ global_proto->DefineOwnProperty(context.local(), v8_str("y"),
+ v8::Integer::New(isolate, 0), v8::ReadOnly)
+ .FromJust();
// Check without 'eval' or 'with'.
v8::Local<v8::Value> res =
CompileRun("function f() { x = 42; return x; }; f()");
- CHECK(v8::Integer::New(isolate, 0)->Equals(res));
+ CHECK(v8::Integer::New(isolate, 0)->Equals(context.local(), res).FromJust());
// Check with 'eval'.
res = CompileRun("function f() { eval('1'); y = 43; return y; }; f()");
- CHECK(v8::Integer::New(isolate, 0)->Equals(res));
+ CHECK(v8::Integer::New(isolate, 0)->Equals(context.local(), res).FromJust());
// Check with 'with'.
res = CompileRun("function f() { with (this) { y = 44 }; return y; }; f()");
- CHECK(v8::Integer::New(isolate, 0)->Equals(res));
+ CHECK(v8::Integer::New(isolate, 0)->Equals(context.local(), res).FromJust());
}
static int force_set_set_count = 0;
@@ -14831,36 +15076,56 @@ TEST(ForceSet) {
// Ordinary properties
v8::Local<v8::String> simple_property = v8_str("p");
- global->ForceSet(simple_property, v8::Int32::New(isolate, 4), v8::ReadOnly);
- CHECK_EQ(
- 4, global->Get(simple_property)->Int32Value(context.local()).FromJust());
+ global->DefineOwnProperty(context.local(), simple_property,
+ v8::Int32::New(isolate, 4), v8::ReadOnly)
+ .FromJust();
+ CHECK_EQ(4, global->Get(context.local(), simple_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
// This should fail because the property is read-only
- global->Set(simple_property, v8::Int32::New(isolate, 5));
- CHECK_EQ(
- 4, global->Get(simple_property)->Int32Value(context.local()).FromJust());
+ CHECK(
+ global->Set(context.local(), simple_property, v8::Int32::New(isolate, 5))
+ .FromJust());
+ CHECK_EQ(4, global->Get(context.local(), simple_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
// This should succeed even though the property is read-only
- global->ForceSet(simple_property, v8::Int32::New(isolate, 6));
- CHECK_EQ(
- 6, global->Get(simple_property)->Int32Value(context.local()).FromJust());
+ CHECK(global->DefineOwnProperty(context.local(), simple_property,
+ v8::Int32::New(isolate, 6))
+ .FromJust());
+ CHECK_EQ(6, global->Get(context.local(), simple_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
// Accessors
CHECK_EQ(0, force_set_set_count);
CHECK_EQ(0, force_set_get_count);
- CHECK_EQ(
- 3, global->Get(access_property)->Int32Value(context.local()).FromJust());
+ CHECK_EQ(3, global->Get(context.local(), access_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
// CHECK_EQ the property shouldn't override it, just call the setter
// which in this case does nothing.
- global->Set(access_property, v8::Int32::New(isolate, 7));
- CHECK_EQ(
- 3, global->Get(access_property)->Int32Value(context.local()).FromJust());
+ CHECK(
+ global->Set(context.local(), access_property, v8::Int32::New(isolate, 7))
+ .FromJust());
+ CHECK_EQ(3, global->Get(context.local(), access_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
CHECK_EQ(1, force_set_set_count);
CHECK_EQ(2, force_set_get_count);
// ForceSet doesn't call the accessors for now.
// TODO(verwaest): Update once blink doesn't rely on ForceSet to delete api
// accessors.
- global->ForceSet(access_property, v8::Int32::New(isolate, 8));
- CHECK_EQ(
- 8, global->Get(access_property)->Int32Value(context.local()).FromJust());
+ CHECK(global->ForceSet(access_property, v8::Int32::New(isolate, 8)));
+ CHECK_EQ(8, global->Get(context.local(), access_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
CHECK_EQ(1, force_set_set_count);
CHECK_EQ(2, force_set_get_count);
}
@@ -14883,38 +15148,52 @@ TEST(ForceSetWithInterceptor) {
v8::Local<v8::String> some_property = v8_str("a");
CHECK_EQ(0, force_set_set_count);
CHECK_EQ(0, force_set_get_count);
- CHECK_EQ(3,
- global->Get(some_property)->Int32Value(context.local()).FromJust());
+ CHECK_EQ(3, global->Get(context.local(), some_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
// Setting the property shouldn't override it, just call the setter
// which in this case does nothing.
- global->Set(some_property, v8::Int32::New(isolate, 7));
- CHECK_EQ(3,
- global->Get(some_property)->Int32Value(context.local()).FromJust());
+ global->Set(context.local(), some_property, v8::Int32::New(isolate, 7))
+ .FromJust();
+ CHECK_EQ(3, global->Get(context.local(), some_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
CHECK_EQ(1, force_set_set_count);
CHECK_EQ(2, force_set_get_count);
// Getting the property when the interceptor returns an empty handle
// should yield undefined, since the property isn't present on the
// object itself yet.
pass_on_get = true;
- CHECK(global->Get(some_property)->IsUndefined());
+ CHECK(global->Get(context.local(), some_property)
+ .ToLocalChecked()
+ ->IsUndefined());
CHECK_EQ(1, force_set_set_count);
CHECK_EQ(3, force_set_get_count);
// Forcing the property to be set should cause the value to be
// set locally without calling the interceptor.
global->ForceSet(some_property, v8::Int32::New(isolate, 8));
- CHECK_EQ(8,
- global->Get(some_property)->Int32Value(context.local()).FromJust());
+ CHECK_EQ(8, global->Get(context.local(), some_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
CHECK_EQ(1, force_set_set_count);
CHECK_EQ(4, force_set_get_count);
// Reenabling the interceptor should cause it to take precedence over
// the property
pass_on_get = false;
- CHECK_EQ(3,
- global->Get(some_property)->Int32Value(context.local()).FromJust());
+ CHECK_EQ(3, global->Get(context.local(), some_property)
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
CHECK_EQ(1, force_set_set_count);
CHECK_EQ(5, force_set_get_count);
// The interceptor should also work for other properties
- CHECK_EQ(3, global->Get(v8_str("b"))->Int32Value(context.local()).FromJust());
+ CHECK_EQ(3, global->Get(context.local(), v8_str("b"))
+ .ToLocalChecked()
+ ->Int32Value(context.local())
+ .FromJust());
CHECK_EQ(1, force_set_set_count);
CHECK_EQ(6, force_set_get_count);
}
@@ -14931,10 +15210,10 @@ TEST(CreateDataProperty) {
"Object.defineProperty(a, 'foo', {value: 23});"
"Object.defineProperty(a, 'bar', {value: 23, configurable: true});");
- v8::Local<v8::Object> obj =
- v8::Local<v8::Object>::Cast(env->Global()->Get(v8_str("a")));
- v8::Local<v8::Array> arr =
- v8::Local<v8::Array>::Cast(env->Global()->Get(v8_str("b")));
+ v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(
+ env->Global()->Get(env.local(), v8_str("a")).ToLocalChecked());
+ v8::Local<v8::Array> arr = v8::Local<v8::Array>::Cast(
+ env->Global()->Get(env.local(), v8_str("b")).ToLocalChecked());
{
// Can't change a non-configurable properties.
v8::TryCatch try_catch(isolate);
@@ -15034,10 +15313,10 @@ TEST(DefineOwnProperty) {
"Object.defineProperty(a, 'foo', {value: 23});"
"Object.defineProperty(a, 'bar', {value: 23, configurable: true});");
- v8::Local<v8::Object> obj =
- v8::Local<v8::Object>::Cast(env->Global()->Get(v8_str("a")));
- v8::Local<v8::Array> arr =
- v8::Local<v8::Array>::Cast(env->Global()->Get(v8_str("b")));
+ v8::Local<v8::Object> obj = v8::Local<v8::Object>::Cast(
+ env->Global()->Get(env.local(), v8_str("a")).ToLocalChecked());
+ v8::Local<v8::Array> arr = v8::Local<v8::Array>::Cast(
+ env->Global()->Get(env.local(), v8_str("b")).ToLocalChecked());
{
// Can't change a non-configurable properties.
v8::TryCatch try_catch(isolate);
@@ -15180,11 +15459,12 @@ THREADED_TEST(ReplaceConstantFunction) {
v8::Local<v8::FunctionTemplate> func_templ =
v8::FunctionTemplate::New(isolate);
v8::Local<v8::String> foo_string = v8_str("foo");
- obj->Set(foo_string,
- func_templ->GetFunction(context.local()).ToLocalChecked());
+ obj->Set(context.local(), foo_string,
+ func_templ->GetFunction(context.local()).ToLocalChecked())
+ .FromJust();
v8::Local<v8::Object> obj_clone = obj->Clone();
- obj_clone->Set(foo_string, v8_str("Hello"));
- CHECK(!obj->Get(foo_string)->IsUndefined());
+ obj_clone->Set(context.local(), foo_string, v8_str("Hello")).FromJust();
+ CHECK(!obj->Get(context.local(), foo_string).ToLocalChecked()->IsUndefined());
}
@@ -15206,8 +15486,9 @@ static void ObjectWithExternalArrayTestHelper(Local<Context> context,
int64_t low, int64_t high) {
i::Handle<i::JSReceiver> jsobj = v8::Utils::OpenHandle(*obj);
i::Isolate* isolate = jsobj->GetIsolate();
- obj->Set(v8_str("field"),
- v8::Int32::New(reinterpret_cast<v8::Isolate*>(isolate), 1503));
+ obj->Set(context, v8_str("field"),
+ v8::Int32::New(reinterpret_cast<v8::Isolate*>(isolate), 1503))
+ .FromJust();
CHECK(context->Global()->Set(context, v8_str("ext_array"), obj).FromJust());
v8::Local<v8::Value> result = CompileRun("ext_array.field");
CHECK_EQ(1503, result->Int32Value(context).FromJust());
@@ -15292,13 +15573,13 @@ static void ObjectWithExternalArrayTestHelper(Local<Context> context,
boundary_program,
low);
result = CompileRun(test_buf.start());
- CHECK_EQ(low, result->IntegerValue());
+ CHECK_EQ(low, result->IntegerValue(context).FromJust());
i::SNPrintF(test_buf,
boundary_program,
high);
result = CompileRun(test_buf.start());
- CHECK_EQ(high, result->IntegerValue());
+ CHECK_EQ(high, result->IntegerValue(context).FromJust());
// Check misprediction of type in IC.
result = CompileRun("var tmp_array = ext_array;"
@@ -15326,7 +15607,7 @@ static void ObjectWithExternalArrayTestHelper(Local<Context> context,
"caught_exception;",
element_count);
result = CompileRun(test_buf.start());
- CHECK_EQ(false, result->BooleanValue());
+ CHECK_EQ(false, result->BooleanValue(context).FromJust());
// Make sure out-of-range stores do not throw.
i::SNPrintF(test_buf,
@@ -15339,7 +15620,7 @@ static void ObjectWithExternalArrayTestHelper(Local<Context> context,
"caught_exception;",
element_count);
result = CompileRun(test_buf.start());
- CHECK_EQ(false, result->BooleanValue());
+ CHECK_EQ(false, result->BooleanValue(context).FromJust());
// Check other boundary conditions, values and operations.
result = CompileRun("for (var i = 0; i < 8; i++) {"
@@ -15431,7 +15712,7 @@ static void ObjectWithExternalArrayTestHelper(Local<Context> context,
unsigned_data :
(is_pixel_data ? pixel_data : signed_data)));
result = CompileRun(test_buf.start());
- CHECK_EQ(true, result->BooleanValue());
+ CHECK_EQ(true, result->BooleanValue(context).FromJust());
}
i::Handle<ExternalArrayClass> array(ExternalArrayClass::cast(
@@ -15486,7 +15767,8 @@ static void ObjectWithExternalArrayTestHelper(Local<Context> context,
"js_array[0] = 77;"
"js_array;");
CHECK_EQ(77, v8::Object::Cast(*result)
- ->Get(v8_str("0"))
+ ->Get(context, v8_str("0"))
+ .ToLocalChecked()
->Int32Value(context)
.FromJust());
@@ -15495,11 +15777,13 @@ static void ObjectWithExternalArrayTestHelper(Local<Context> context,
"js_array.__proto__ = ext_array;"
"js_array.concat(ext_array);");
CHECK_EQ(77, v8::Object::Cast(*result)
- ->Get(v8_str("0"))
+ ->Get(context, v8_str("0"))
+ .ToLocalChecked()
->Int32Value(context)
.FromJust());
CHECK_EQ(23, v8::Object::Cast(*result)
- ->Get(v8_str("1"))
+ ->Get(context, v8_str("1"))
+ .ToLocalChecked()
->Int32Value(context)
.FromJust());
@@ -15704,7 +15988,7 @@ THREADED_TEST(DataView) {
CheckInternalFieldsAreZero<v8::ArrayBufferView>(dv);
CHECK_EQ(2u, dv->ByteOffset());
CHECK_EQ(kSize, static_cast<int>(dv->ByteLength()));
- CHECK(ab->Equals(dv->Buffer()));
+ CHECK(ab->Equals(env.local(), dv->Buffer()).FromJust());
}
@@ -15844,7 +16128,7 @@ THREADED_TEST(SharedDataView) {
CheckInternalFieldsAreZero<v8::ArrayBufferView>(dv);
CHECK_EQ(2u, dv->ByteOffset());
CHECK_EQ(kSize, static_cast<int>(dv->ByteLength()));
- CHECK(ab->Equals(dv->Buffer()));
+ CHECK(ab->Equals(env.local(), dv->Buffer()).FromJust());
}
@@ -15887,24 +16171,39 @@ THREADED_TEST(ScriptContextDependence) {
v8::NewStringType::kNormal)
.ToLocalChecked());
v8::Local<v8::UnboundScript> indep =
- v8::ScriptCompiler::CompileUnbound(c1->GetIsolate(), &script_source);
- c1->Global()->Set(v8::String::NewFromUtf8(c1->GetIsolate(), "foo",
- v8::NewStringType::kNormal)
- .ToLocalChecked(),
- v8::Integer::New(c1->GetIsolate(), 100));
- CHECK_EQ(dep->Run()->Int32Value(c1.local()).FromJust(), 100);
+ v8::ScriptCompiler::CompileUnboundScript(c1->GetIsolate(), &script_source)
+ .ToLocalChecked();
+ c1->Global()
+ ->Set(c1.local(), v8::String::NewFromUtf8(c1->GetIsolate(), "foo",
+ v8::NewStringType::kNormal)
+ .ToLocalChecked(),
+ v8::Integer::New(c1->GetIsolate(), 100))
+ .FromJust();
CHECK_EQ(
- indep->BindToCurrentContext()->Run()->Int32Value(c1.local()).FromJust(),
+ dep->Run(c1.local()).ToLocalChecked()->Int32Value(c1.local()).FromJust(),
100);
+ CHECK_EQ(indep->BindToCurrentContext()
+ ->Run(c1.local())
+ .ToLocalChecked()
+ ->Int32Value(c1.local())
+ .FromJust(),
+ 100);
LocalContext c2;
- c2->Global()->Set(v8::String::NewFromUtf8(c2->GetIsolate(), "foo",
- v8::NewStringType::kNormal)
- .ToLocalChecked(),
- v8::Integer::New(c2->GetIsolate(), 101));
- CHECK_EQ(dep->Run()->Int32Value(c2.local()).FromJust(), 100);
+ c2->Global()
+ ->Set(c2.local(), v8::String::NewFromUtf8(c2->GetIsolate(), "foo",
+ v8::NewStringType::kNormal)
+ .ToLocalChecked(),
+ v8::Integer::New(c2->GetIsolate(), 101))
+ .FromJust();
CHECK_EQ(
- indep->BindToCurrentContext()->Run()->Int32Value(c2.local()).FromJust(),
- 101);
+ dep->Run(c2.local()).ToLocalChecked()->Int32Value(c2.local()).FromJust(),
+ 100);
+ CHECK_EQ(indep->BindToCurrentContext()
+ ->Run(c2.local())
+ .ToLocalChecked()
+ ->Int32Value(c2.local())
+ .FromJust(),
+ 101);
}
@@ -15916,11 +16215,15 @@ THREADED_TEST(StackTrace) {
v8::Local<v8::String> src = v8_str(source);
v8::Local<v8::String> origin = v8_str("stack-trace-test");
v8::ScriptCompiler::Source script_source(src, v8::ScriptOrigin(origin));
- v8::ScriptCompiler::CompileUnbound(context->GetIsolate(), &script_source)
- ->BindToCurrentContext()
- ->Run();
+ CHECK(v8::ScriptCompiler::CompileUnboundScript(context->GetIsolate(),
+ &script_source)
+ .ToLocalChecked()
+ ->BindToCurrentContext()
+ ->Run(context.local())
+ .IsEmpty());
CHECK(try_catch.HasCaught());
- v8::String::Utf8Value stack(try_catch.StackTrace());
+ v8::String::Utf8Value stack(
+ try_catch.StackTrace(context.local()).ToLocalChecked());
CHECK(strstr(*stack, "at foo (stack-trace-test") != NULL);
}
@@ -15992,31 +16295,31 @@ void AnalyzeStackInNativeCode(const v8::FunctionCallbackInfo<v8::Value>& args) {
CHECK(stackTrace->AsArray()->IsArray());
} else if (testGroup == kFunctionName) {
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
args.GetIsolate(), 5, v8::StackTrace::kOverview);
CHECK_EQ(3, stackTrace->GetFrameCount());
checkStackFrame(origin, "function.name", 2, 24, false, false,
stackTrace->GetFrame(0));
} else if (testGroup == kDisplayName) {
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
args.GetIsolate(), 5, v8::StackTrace::kOverview);
CHECK_EQ(3, stackTrace->GetFrameCount());
checkStackFrame(origin, "function.displayName", 2, 24, false, false,
stackTrace->GetFrame(0));
} else if (testGroup == kFunctionNameAndDisplayName) {
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
args.GetIsolate(), 5, v8::StackTrace::kOverview);
CHECK_EQ(3, stackTrace->GetFrameCount());
checkStackFrame(origin, "function.displayName", 2, 24, false, false,
stackTrace->GetFrame(0));
} else if (testGroup == kDisplayNameIsNotString) {
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
args.GetIsolate(), 5, v8::StackTrace::kOverview);
CHECK_EQ(3, stackTrace->GetFrameCount());
checkStackFrame(origin, "function.name", 2, 24, false, false,
stackTrace->GetFrame(0));
} else if (testGroup == kFunctionNameIsNotString) {
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace(
args.GetIsolate(), 5, v8::StackTrace::kOverview);
CHECK_EQ(3, stackTrace->GetFrameCount());
checkStackFrame(origin, "f", 2, 24, false, false, stackTrace->GetFrame(0));
@@ -16051,9 +16354,11 @@ TEST(CaptureStackTrace) {
v8::ScriptCompiler::Source script_source(overview_src,
v8::ScriptOrigin(origin));
v8::Local<Value> overview_result(
- v8::ScriptCompiler::CompileUnbound(isolate, &script_source)
+ v8::ScriptCompiler::CompileUnboundScript(isolate, &script_source)
+ .ToLocalChecked()
->BindToCurrentContext()
- ->Run());
+ ->Run(context.local())
+ .ToLocalChecked());
CHECK(!overview_result.IsEmpty());
CHECK(overview_result->IsObject());
@@ -16073,9 +16378,11 @@ TEST(CaptureStackTrace) {
v8::ScriptOrigin detailed_origin(origin, line_offset, column_offset);
v8::ScriptCompiler::Source script_source2(detailed_src, detailed_origin);
v8::Local<v8::UnboundScript> detailed_script(
- v8::ScriptCompiler::CompileUnbound(isolate, &script_source2));
- v8::Local<Value> detailed_result(
- detailed_script->BindToCurrentContext()->Run());
+ v8::ScriptCompiler::CompileUnboundScript(isolate, &script_source2)
+ .ToLocalChecked());
+ v8::Local<Value> detailed_result(detailed_script->BindToCurrentContext()
+ ->Run(context.local())
+ .ToLocalChecked());
CHECK(!detailed_result.IsEmpty());
CHECK(detailed_result->IsObject());
@@ -16096,14 +16403,18 @@ TEST(CaptureStackTrace) {
"bar('function.name', 'function.displayName', 5);\n"
"bar('function.name', 239, 6);\n"
"bar(239, undefined, 7);\n";
- v8::Handle<v8::String> function_name_src =
- v8::String::NewFromUtf8(isolate, function_name_source);
+ v8::Local<v8::String> function_name_src =
+ v8::String::NewFromUtf8(isolate, function_name_source,
+ v8::NewStringType::kNormal)
+ .ToLocalChecked();
v8::ScriptCompiler::Source script_source3(function_name_src,
v8::ScriptOrigin(origin));
- v8::Handle<Value> function_name_result(
- v8::ScriptCompiler::CompileUnbound(isolate, &script_source3)
+ v8::Local<Value> function_name_result(
+ v8::ScriptCompiler::CompileUnboundScript(isolate, &script_source3)
+ .ToLocalChecked()
->BindToCurrentContext()
- ->Run());
+ ->Run(context.local())
+ .ToLocalChecked());
CHECK(!function_name_result.IsEmpty());
}
@@ -16123,9 +16434,10 @@ static void StackTraceForUncaughtExceptionListener(
TEST(CaptureStackTraceForUncaughtException) {
report_count = 0;
LocalContext env;
- v8::HandleScope scope(env->GetIsolate());
- v8::V8::AddMessageListener(StackTraceForUncaughtExceptionListener);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(true);
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
+ isolate->AddMessageListener(StackTraceForUncaughtExceptionListener);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(true);
CompileRunWithOrigin(
"function foo() {\n"
@@ -16136,11 +16448,12 @@ TEST(CaptureStackTraceForUncaughtException) {
"};",
"origin");
v8::Local<v8::Object> global = env->Global();
- Local<Value> trouble = global->Get(v8_str("bar"));
+ Local<Value> trouble =
+ global->Get(env.local(), v8_str("bar")).ToLocalChecked();
CHECK(trouble->IsFunction());
- Function::Cast(*trouble)->Call(global, 0, NULL);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(false);
- v8::V8::RemoveMessageListeners(StackTraceForUncaughtExceptionListener);
+ CHECK(Function::Cast(*trouble)->Call(env.local(), global, 0, NULL).IsEmpty());
+ isolate->SetCaptureStackTraceForUncaughtExceptions(false);
+ isolate->RemoveMessageListeners(StackTraceForUncaughtExceptionListener);
CHECK_EQ(1, report_count);
}
@@ -16148,7 +16461,8 @@ TEST(CaptureStackTraceForUncaughtException) {
TEST(GetStackTraceForUncaughtExceptionFromSimpleStackTrace) {
report_count = 0;
LocalContext env;
- v8::HandleScope scope(env->GetIsolate());
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
// Create an Error object first.
CompileRunWithOrigin(
@@ -16161,27 +16475,28 @@ TEST(GetStackTraceForUncaughtExceptionFromSimpleStackTrace) {
"var e;",
"origin");
v8::Local<v8::Object> global = env->Global();
- Local<Value> trouble = global->Get(v8_str("bar"));
+ Local<Value> trouble =
+ global->Get(env.local(), v8_str("bar")).ToLocalChecked();
CHECK(trouble->IsFunction());
- Function::Cast(*trouble)->Call(global, 0, NULL);
+ Function::Cast(*trouble)->Call(env.local(), global, 0, NULL).ToLocalChecked();
// Enable capturing detailed stack trace late, and throw the exception.
// The detailed stack trace should be extracted from the simple stack.
- v8::V8::AddMessageListener(StackTraceForUncaughtExceptionListener);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(true);
+ isolate->AddMessageListener(StackTraceForUncaughtExceptionListener);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(true);
CompileRunWithOrigin("throw e", "origin");
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(false);
- v8::V8::RemoveMessageListeners(StackTraceForUncaughtExceptionListener);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(false);
+ isolate->RemoveMessageListeners(StackTraceForUncaughtExceptionListener);
CHECK_EQ(1, report_count);
}
TEST(CaptureStackTraceForUncaughtExceptionAndSetters) {
LocalContext env;
- v8::HandleScope scope(env->GetIsolate());
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(true,
- 1024,
- v8::StackTrace::kDetailed);
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(true, 1024,
+ v8::StackTrace::kDetailed);
CompileRun(
"var setters = ['column', 'lineNumber', 'scriptName',\n"
@@ -16192,7 +16507,7 @@ TEST(CaptureStackTraceForUncaughtExceptionAndSetters) {
" Object.prototype.__defineSetter__(prop, function() { throw prop; });\n"
"}\n");
CompileRun("throw 'exception';");
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(false);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(false);
}
@@ -16214,7 +16529,8 @@ static void StackTraceFunctionNameListener(v8::Local<v8::Message> message,
TEST(GetStackTraceContainsFunctionsWithFunctionName) {
LocalContext env;
- v8::HandleScope scope(env->GetIsolate());
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
CompileRunWithOrigin(
"function gen(name, counter) {\n"
@@ -16236,11 +16552,11 @@ TEST(GetStackTraceContainsFunctionsWithFunctionName) {
"};",
"origin");
- v8::V8::AddMessageListener(StackTraceFunctionNameListener);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(true);
+ isolate->AddMessageListener(StackTraceFunctionNameListener);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(true);
CompileRunWithOrigin("gen('foo', 3)();", "origin");
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(false);
- v8::V8::RemoveMessageListeners(StackTraceFunctionNameListener);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(false);
+ isolate->RemoveMessageListeners(StackTraceFunctionNameListener);
}
@@ -16262,7 +16578,8 @@ static void RethrowStackTraceHandler(v8::Local<v8::Message> message,
// is first thrown (not where it is rethrown).
TEST(RethrowStackTrace) {
LocalContext env;
- v8::HandleScope scope(env->GetIsolate());
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
// We make sure that
// - the stack trace of the ReferenceError in g() is reported.
// - the stack trace is not overwritten when e1 is rethrown by t().
@@ -16280,11 +16597,11 @@ TEST(RethrowStackTrace) {
" t(e1); \n"
" } \n"
"} \n";
- v8::V8::AddMessageListener(RethrowStackTraceHandler);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(true);
+ isolate->AddMessageListener(RethrowStackTraceHandler);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(true);
CompileRun(source);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(false);
- v8::V8::RemoveMessageListeners(RethrowStackTraceHandler);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(false);
+ isolate->RemoveMessageListeners(RethrowStackTraceHandler);
}
@@ -16304,7 +16621,8 @@ static void RethrowPrimitiveStackTraceHandler(v8::Local<v8::Message> message,
// Test that we do not recognize identity for primitive exceptions.
TEST(RethrowPrimitiveStackTrace) {
LocalContext env;
- v8::HandleScope scope(env->GetIsolate());
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
// We do not capture stack trace for non Error objects on creation time.
// Instead, we capture the stack trace on last throw.
const char* source =
@@ -16316,11 +16634,11 @@ TEST(RethrowPrimitiveStackTrace) {
"} catch (e1) { \n"
" t(e1) \n"
"} \n";
- v8::V8::AddMessageListener(RethrowPrimitiveStackTraceHandler);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(true);
+ isolate->AddMessageListener(RethrowPrimitiveStackTraceHandler);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(true);
CompileRun(source);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(false);
- v8::V8::RemoveMessageListeners(RethrowPrimitiveStackTraceHandler);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(false);
+ isolate->RemoveMessageListeners(RethrowPrimitiveStackTraceHandler);
}
@@ -16338,15 +16656,16 @@ static void RethrowExistingStackTraceHandler(v8::Local<v8::Message> message,
// not where it is thrown.
TEST(RethrowExistingStackTrace) {
LocalContext env;
- v8::HandleScope scope(env->GetIsolate());
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
const char* source =
"var e = new Error(); \n"
"throw e; \n";
- v8::V8::AddMessageListener(RethrowExistingStackTraceHandler);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(true);
+ isolate->AddMessageListener(RethrowExistingStackTraceHandler);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(true);
CompileRun(source);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(false);
- v8::V8::RemoveMessageListeners(RethrowExistingStackTraceHandler);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(false);
+ isolate->RemoveMessageListeners(RethrowExistingStackTraceHandler);
}
@@ -16363,15 +16682,16 @@ static void RethrowBogusErrorStackTraceHandler(v8::Local<v8::Message> message,
// Test that the stack trace is captured where the bogus Error object is thrown.
TEST(RethrowBogusErrorStackTrace) {
LocalContext env;
- v8::HandleScope scope(env->GetIsolate());
+ v8::Isolate* isolate = env->GetIsolate();
+ v8::HandleScope scope(isolate);
const char* source =
"var e = {__proto__: new Error()} \n"
"throw e; \n";
- v8::V8::AddMessageListener(RethrowBogusErrorStackTraceHandler);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(true);
+ isolate->AddMessageListener(RethrowBogusErrorStackTraceHandler);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(true);
CompileRun(source);
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(false);
- v8::V8::RemoveMessageListeners(RethrowBogusErrorStackTraceHandler);
+ isolate->SetCaptureStackTraceForUncaughtExceptions(false);
+ isolate->RemoveMessageListeners(RethrowBogusErrorStackTraceHandler);
}
@@ -16385,21 +16705,28 @@ int promise_reject_column_number = -1;
int promise_reject_frame_count = -1;
void PromiseRejectCallback(v8::PromiseRejectMessage reject_message) {
+ v8::Local<v8::Object> global = CcTest::global();
+ v8::Local<v8::Context> context = CcTest::isolate()->GetCurrentContext();
if (reject_message.GetEvent() == v8::kPromiseRejectWithNoHandler) {
promise_reject_counter++;
- CcTest::global()->Set(v8_str("rejected"), reject_message.GetPromise());
- CcTest::global()->Set(v8_str("value"), reject_message.GetValue());
+ global->Set(context, v8_str("rejected"), reject_message.GetPromise())
+ .FromJust();
+ global->Set(context, v8_str("value"), reject_message.GetValue()).FromJust();
v8::Local<v8::Message> message = v8::Exception::CreateMessage(
CcTest::isolate(), reject_message.GetValue());
v8::Local<v8::StackTrace> stack_trace = message->GetStackTrace();
- promise_reject_msg_line_number = message->GetLineNumber();
- promise_reject_msg_column_number = message->GetStartColumn() + 1;
+ promise_reject_msg_line_number = message->GetLineNumber(context).FromJust();
+ promise_reject_msg_column_number =
+ message->GetStartColumn(context).FromJust() + 1;
if (!stack_trace.IsEmpty()) {
promise_reject_frame_count = stack_trace->GetFrameCount();
if (promise_reject_frame_count > 0) {
- CHECK(stack_trace->GetFrame(0)->GetScriptName()->Equals(v8_str("pro")));
+ CHECK(stack_trace->GetFrame(0)
+ ->GetScriptName()
+ ->Equals(context, v8_str("pro"))
+ .FromJust());
promise_reject_line_number = stack_trace->GetFrame(0)->GetLineNumber();
promise_reject_column_number = stack_trace->GetFrame(0)->GetColumn();
} else {
@@ -16409,19 +16736,25 @@ void PromiseRejectCallback(v8::PromiseRejectMessage reject_message) {
}
} else {
promise_revoke_counter++;
- CcTest::global()->Set(v8_str("revoked"), reject_message.GetPromise());
+ global->Set(context, v8_str("revoked"), reject_message.GetPromise())
+ .FromJust();
CHECK(reject_message.GetValue().IsEmpty());
}
}
v8::Local<v8::Promise> GetPromise(const char* name) {
- return v8::Local<v8::Promise>::Cast(CcTest::global()->Get(v8_str(name)));
+ return v8::Local<v8::Promise>::Cast(
+ CcTest::global()
+ ->Get(CcTest::isolate()->GetCurrentContext(), v8_str(name))
+ .ToLocalChecked());
}
v8::Local<v8::Value> RejectValue() {
- return CcTest::global()->Get(v8_str("value"));
+ return CcTest::global()
+ ->Get(CcTest::isolate()->GetCurrentContext(), v8_str("value"))
+ .ToLocalChecked();
}
@@ -16433,9 +16766,12 @@ void ResetPromiseStates() {
promise_reject_line_number = -1;
promise_reject_column_number = -1;
promise_reject_frame_count = -1;
- CcTest::global()->Set(v8_str("rejected"), v8_str(""));
- CcTest::global()->Set(v8_str("value"), v8_str(""));
- CcTest::global()->Set(v8_str("revoked"), v8_str(""));
+
+ v8::Local<v8::Object> global = CcTest::global();
+ v8::Local<v8::Context> context = CcTest::isolate()->GetCurrentContext();
+ global->Set(context, v8_str("rejected"), v8_str("")).FromJust();
+ global->Set(context, v8_str("value"), v8_str("")).FromJust();
+ global->Set(context, v8_str("revoked"), v8_str("")).FromJust();
}
@@ -16474,8 +16810,9 @@ TEST(PromiseRejectCallback) {
CHECK_EQ(1, promise_reject_counter);
CHECK_EQ(0, promise_revoke_counter);
CHECK_EQ(v8::kPromiseRejectWithNoHandler, reject_event);
- CHECK(GetPromise("rejected")->Equals(GetPromise("p1")));
- CHECK(RejectValue()->Equals(v8_str("ppp")));
+ CHECK(
+ GetPromise("rejected")->Equals(env.local(), GetPromise("p1")).FromJust());
+ CHECK(RejectValue()->Equals(env.local(), v8_str("ppp")).FromJust());
// Reject p0 again. Callback is not triggered again.
CompileRun("reject();");
@@ -16491,9 +16828,11 @@ TEST(PromiseRejectCallback) {
CHECK(!GetPromise("p2")->HasHandler());
CHECK_EQ(2, promise_reject_counter);
CHECK_EQ(1, promise_revoke_counter);
- CHECK(GetPromise("rejected")->Equals(GetPromise("p2")));
- CHECK(RejectValue()->Equals(v8_str("ppp")));
- CHECK(GetPromise("revoked")->Equals(GetPromise("p1")));
+ CHECK(
+ GetPromise("rejected")->Equals(env.local(), GetPromise("p2")).FromJust());
+ CHECK(RejectValue()->Equals(env.local(), v8_str("ppp")).FromJust());
+ CHECK(
+ GetPromise("revoked")->Equals(env.local(), GetPromise("p1")).FromJust());
ResetPromiseStates();
@@ -16539,9 +16878,11 @@ TEST(PromiseRejectCallback) {
CHECK(GetPromise("q_")->HasHandler());
CHECK_EQ(2, promise_reject_counter);
CHECK_EQ(1, promise_revoke_counter);
- CHECK(GetPromise("rejected")->Equals(GetPromise("q2")));
- CHECK(GetPromise("revoked")->Equals(GetPromise("q_")));
- CHECK(RejectValue()->Equals(v8_str("qqq")));
+ CHECK(
+ GetPromise("rejected")->Equals(env.local(), GetPromise("q2")).FromJust());
+ CHECK(
+ GetPromise("revoked")->Equals(env.local(), GetPromise("q_")).FromJust());
+ CHECK(RejectValue()->Equals(env.local(), v8_str("qqq")).FromJust());
// Add a reject handler to the resolved q1, which rejects by throwing.
CompileRun(
@@ -16556,8 +16897,9 @@ TEST(PromiseRejectCallback) {
CHECK(!GetPromise("q3")->HasHandler());
CHECK_EQ(3, promise_reject_counter);
CHECK_EQ(1, promise_revoke_counter);
- CHECK(GetPromise("rejected")->Equals(GetPromise("q3")));
- CHECK(RejectValue()->Equals(v8_str("qqqq")));
+ CHECK(
+ GetPromise("rejected")->Equals(env.local(), GetPromise("q3")).FromJust());
+ CHECK(RejectValue()->Equals(env.local(), v8_str("qqqq")).FromJust());
ResetPromiseStates();
@@ -16587,8 +16929,9 @@ TEST(PromiseRejectCallback) {
CHECK(!GetPromise("r3")->HasHandler());
CHECK_EQ(1, promise_reject_counter);
CHECK_EQ(0, promise_revoke_counter);
- CHECK(GetPromise("rejected")->Equals(GetPromise("r2")));
- CHECK(RejectValue()->Equals(v8_str("rrr")));
+ CHECK(
+ GetPromise("rejected")->Equals(env.local(), GetPromise("r2")).FromJust());
+ CHECK(RejectValue()->Equals(env.local(), v8_str("rrr")).FromJust());
// Add reject handler to r2.
CompileRun("var r4 = r2.catch(function() {});");
@@ -16599,8 +16942,9 @@ TEST(PromiseRejectCallback) {
CHECK(!GetPromise("r4")->HasHandler());
CHECK_EQ(1, promise_reject_counter);
CHECK_EQ(1, promise_revoke_counter);
- CHECK(GetPromise("revoked")->Equals(GetPromise("r2")));
- CHECK(RejectValue()->Equals(v8_str("rrr")));
+ CHECK(
+ GetPromise("revoked")->Equals(env.local(), GetPromise("r2")).FromJust());
+ CHECK(RejectValue()->Equals(env.local(), v8_str("rrr")).FromJust());
// Add reject handlers to r4.
CompileRun("var r5 = r4.then(function() {}, function() {});");
@@ -16640,10 +16984,10 @@ TEST(PromiseRejectCallback) {
CHECK(!GetPromise("s3")->HasHandler());
CHECK_EQ(3, promise_reject_counter);
CHECK_EQ(0, promise_revoke_counter);
- CHECK(RejectValue()->Equals(v8_str("sss")));
+ CHECK(RejectValue()->Equals(env.local(), v8_str("sss")).FromJust());
// Test stack frames.
- V8::SetCaptureStackTraceForUncaughtExceptions(true);
+ env->GetIsolate()->SetCaptureStackTraceForUncaughtExceptions(true);
ResetPromiseStates();
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698