Index: test/cctest/test-api.cc |
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc |
index 10cb9788c3b0ed8a0e43ddfb4baf6ece177fc88b..b3c6d58cbcbaa1a7585cb868084743b88992b18e 100644 |
--- a/test/cctest/test-api.cc |
+++ b/test/cctest/test-api.cc |
@@ -60,7 +60,6 @@ using ::v8::Context; |
using ::v8::Extension; |
using ::v8::Function; |
using ::v8::FunctionTemplate; |
-using ::v8::Handle; |
using ::v8::HandleScope; |
using ::v8::Local; |
using ::v8::Maybe; |
@@ -94,8 +93,7 @@ using ::v8::Value; |
void RunWithProfiler(void (*test)()) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Local<v8::String> profile_name = |
- v8::String::NewFromUtf8(env->GetIsolate(), "my_profile1"); |
+ v8::Local<v8::String> profile_name = v8_str("my_profile1"); |
v8::CpuProfiler* cpu_profiler = env->GetIsolate()->GetCpuProfiler(); |
cpu_profiler->StartProfiling(profile_name); |
@@ -110,12 +108,21 @@ static void IncrementingSignatureCallback( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
ApiTestFuzzer::Fuzz(); |
signature_callback_count++; |
- CHECK(signature_expected_receiver->Equals(args.Holder())); |
- CHECK(signature_expected_receiver->Equals(args.This())); |
- v8::Handle<v8::Array> result = |
+ CHECK(signature_expected_receiver->Equals( |
+ args.GetIsolate()->GetCurrentContext(), |
+ args.Holder()) |
+ .FromJust()); |
+ CHECK(signature_expected_receiver->Equals( |
+ args.GetIsolate()->GetCurrentContext(), |
+ args.This()) |
+ .FromJust()); |
+ v8::Local<v8::Array> result = |
v8::Array::New(args.GetIsolate(), args.Length()); |
- for (int i = 0; i < args.Length(); i++) |
- result->Set(v8::Integer::New(args.GetIsolate(), i), args[i]); |
+ for (int i = 0; i < args.Length(); i++) { |
+ CHECK(result->Set(args.GetIsolate()->GetCurrentContext(), |
+ v8::Integer::New(args.GetIsolate(), i), args[i]) |
+ .FromJust()); |
+ } |
args.GetReturnValue().Set(result); |
} |
@@ -154,13 +161,13 @@ THREADED_TEST(Handles) { |
CHECK(!local_env.IsEmpty()); |
local_env->Enter(); |
- v8::Handle<v8::Primitive> undef = v8::Undefined(CcTest::isolate()); |
+ v8::Local<v8::Primitive> undef = v8::Undefined(CcTest::isolate()); |
CHECK(!undef.IsEmpty()); |
CHECK(undef->IsUndefined()); |
const char* source = "1 + 2 + 3"; |
Local<Script> script = v8_compile(source); |
- CHECK_EQ(6, script->Run()->Int32Value()); |
+ CHECK_EQ(6, v8_run_int32value(script)); |
local_env->Exit(); |
} |
@@ -168,7 +175,7 @@ THREADED_TEST(Handles) { |
THREADED_TEST(IsolateOfContext) { |
v8::HandleScope scope(CcTest::isolate()); |
- v8::Handle<Context> env = Context::New(CcTest::isolate()); |
+ v8::Local<Context> env = Context::New(CcTest::isolate()); |
CHECK(!env->GetIsolate()->InContext()); |
CHECK(env->GetIsolate() == CcTest::isolate()); |
@@ -199,7 +206,11 @@ static void TestSignature(const char* loop_js, Local<Value> receiver, |
CHECK_EQ(10, signature_callback_count); |
} else { |
CHECK(v8_str("TypeError: Illegal invocation") |
- ->Equals(try_catch.Exception()->ToString(isolate))); |
+ ->Equals(isolate->GetCurrentContext(), |
+ try_catch.Exception() |
+ ->ToString(isolate->GetCurrentContext()) |
+ .ToLocalChecked()) |
+ .FromJust()); |
} |
} |
@@ -209,32 +220,43 @@ THREADED_TEST(ReceiverSignature) { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
// Setup templates. |
- v8::Handle<v8::FunctionTemplate> fun = v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::Signature> sig = v8::Signature::New(isolate, fun); |
- v8::Handle<v8::FunctionTemplate> callback_sig = |
- v8::FunctionTemplate::New( |
- isolate, IncrementingSignatureCallback, Local<Value>(), sig); |
- v8::Handle<v8::FunctionTemplate> callback = |
+ v8::Local<v8::FunctionTemplate> fun = v8::FunctionTemplate::New(isolate); |
+ v8::Local<v8::Signature> sig = v8::Signature::New(isolate, fun); |
+ v8::Local<v8::FunctionTemplate> callback_sig = v8::FunctionTemplate::New( |
+ isolate, IncrementingSignatureCallback, Local<Value>(), sig); |
+ v8::Local<v8::FunctionTemplate> callback = |
v8::FunctionTemplate::New(isolate, IncrementingSignatureCallback); |
- v8::Handle<v8::FunctionTemplate> sub_fun = v8::FunctionTemplate::New(isolate); |
+ v8::Local<v8::FunctionTemplate> sub_fun = v8::FunctionTemplate::New(isolate); |
sub_fun->Inherit(fun); |
- v8::Handle<v8::FunctionTemplate> unrel_fun = |
+ v8::Local<v8::FunctionTemplate> unrel_fun = |
v8::FunctionTemplate::New(isolate); |
// Install properties. |
- v8::Handle<v8::ObjectTemplate> fun_proto = fun->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> fun_proto = fun->PrototypeTemplate(); |
fun_proto->Set(v8_str("prop_sig"), callback_sig); |
fun_proto->Set(v8_str("prop"), callback); |
fun_proto->SetAccessorProperty( |
v8_str("accessor_sig"), callback_sig, callback_sig); |
fun_proto->SetAccessorProperty(v8_str("accessor"), callback, callback); |
// Instantiate templates. |
- Local<Value> fun_instance = fun->InstanceTemplate()->NewInstance(); |
- Local<Value> sub_fun_instance = sub_fun->InstanceTemplate()->NewInstance(); |
+ Local<Value> fun_instance = |
+ fun->InstanceTemplate()->NewInstance(env.local()).ToLocalChecked(); |
+ Local<Value> sub_fun_instance = |
+ sub_fun->InstanceTemplate()->NewInstance(env.local()).ToLocalChecked(); |
// Setup global variables. |
- env->Global()->Set(v8_str("Fun"), fun->GetFunction()); |
- env->Global()->Set(v8_str("UnrelFun"), unrel_fun->GetFunction()); |
- env->Global()->Set(v8_str("fun_instance"), fun_instance); |
- env->Global()->Set(v8_str("sub_fun_instance"), sub_fun_instance); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("Fun"), |
+ fun->GetFunction(env.local()).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("UnrelFun"), |
+ unrel_fun->GetFunction(env.local()).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("fun_instance"), fun_instance) |
+ .FromJust()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("sub_fun_instance"), sub_fun_instance) |
+ .FromJust()); |
CompileRun( |
"var accessor_sig_key = 'accessor_sig';" |
"var accessor_key = 'accessor';" |
@@ -283,8 +305,8 @@ THREADED_TEST(HulIgennem) { |
LocalContext env; |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::Primitive> undef = v8::Undefined(isolate); |
- Local<String> undef_str = undef->ToString(isolate); |
+ v8::Local<v8::Primitive> undef = v8::Undefined(isolate); |
+ Local<String> undef_str = undef->ToString(env.local()).ToLocalChecked(); |
char* value = i::NewArray<char>(undef_str->Utf8Length() + 1); |
undef_str->WriteUtf8(value); |
CHECK_EQ(0, strcmp(value, "undefined")); |
@@ -297,14 +319,16 @@ THREADED_TEST(Access) { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
Local<v8::Object> obj = v8::Object::New(isolate); |
- Local<Value> foo_before = obj->Get(v8_str("foo")); |
+ Local<Value> foo_before = |
+ obj->Get(env.local(), v8_str("foo")).ToLocalChecked(); |
CHECK(foo_before->IsUndefined()); |
Local<String> bar_str = v8_str("bar"); |
- obj->Set(v8_str("foo"), bar_str); |
- Local<Value> foo_after = obj->Get(v8_str("foo")); |
+ CHECK(obj->Set(env.local(), v8_str("foo"), bar_str).FromJust()); |
+ Local<Value> foo_after = |
+ obj->Get(env.local(), v8_str("foo")).ToLocalChecked(); |
CHECK(!foo_after->IsUndefined()); |
CHECK(foo_after->IsString()); |
- CHECK(bar_str->Equals(foo_after)); |
+ CHECK(bar_str->Equals(env.local(), foo_after).FromJust()); |
} |
@@ -312,18 +336,22 @@ THREADED_TEST(AccessElement) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
Local<v8::Object> obj = v8::Object::New(env->GetIsolate()); |
- Local<Value> before = obj->Get(1); |
+ Local<Value> before = obj->Get(env.local(), 1).ToLocalChecked(); |
CHECK(before->IsUndefined()); |
Local<String> bar_str = v8_str("bar"); |
- obj->Set(1, bar_str); |
- Local<Value> after = obj->Get(1); |
+ CHECK(obj->Set(env.local(), 1, bar_str).FromJust()); |
+ Local<Value> after = obj->Get(env.local(), 1).ToLocalChecked(); |
CHECK(!after->IsUndefined()); |
CHECK(after->IsString()); |
- CHECK(bar_str->Equals(after)); |
+ CHECK(bar_str->Equals(env.local(), after).FromJust()); |
Local<v8::Array> value = CompileRun("[\"a\", \"b\"]").As<v8::Array>(); |
- CHECK(v8_str("a")->Equals(value->Get(0))); |
- CHECK(v8_str("b")->Equals(value->Get(1))); |
+ CHECK(v8_str("a") |
+ ->Equals(env.local(), value->Get(env.local(), 0).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("b") |
+ ->Equals(env.local(), value->Get(env.local(), 1).ToLocalChecked()) |
+ .FromJust()); |
} |
@@ -332,7 +360,7 @@ THREADED_TEST(Script) { |
v8::HandleScope scope(env->GetIsolate()); |
const char* source = "1 + 2 + 3"; |
Local<Script> script = v8_compile(source); |
- CHECK_EQ(6, script->Run()->Int32Value()); |
+ CHECK_EQ(6, v8_run_int32value(script)); |
} |
@@ -403,11 +431,13 @@ THREADED_TEST(ScriptUsingStringResource) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
TestResource* resource = new TestResource(two_byte_source, &dispose_count); |
- Local<String> source = String::NewExternal(env->GetIsolate(), resource); |
+ Local<String> source = |
+ String::NewExternalTwoByte(env->GetIsolate(), resource) |
+ .ToLocalChecked(); |
Local<Script> script = v8_compile(source); |
- Local<Value> value = script->Run(); |
+ Local<Value> value = script->Run(env.local()).ToLocalChecked(); |
CHECK(value->IsNumber()); |
- CHECK_EQ(7, value->Int32Value()); |
+ CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); |
CHECK(source->IsExternal()); |
CHECK_EQ(resource, |
static_cast<TestResource*>(source->GetExternalStringResource())); |
@@ -432,7 +462,9 @@ THREADED_TEST(ScriptUsingOneByteStringResource) { |
v8::HandleScope scope(env->GetIsolate()); |
TestOneByteResource* resource = |
new TestOneByteResource(i::StrDup(c_source), &dispose_count); |
- Local<String> source = String::NewExternal(env->GetIsolate(), resource); |
+ Local<String> source = |
+ String::NewExternalOneByte(env->GetIsolate(), resource) |
+ .ToLocalChecked(); |
CHECK(source->IsExternalOneByte()); |
CHECK_EQ(static_cast<const String::ExternalStringResourceBase*>(resource), |
source->GetExternalOneByteStringResource()); |
@@ -441,9 +473,9 @@ THREADED_TEST(ScriptUsingOneByteStringResource) { |
source->GetExternalStringResourceBase(&encoding)); |
CHECK_EQ(String::ONE_BYTE_ENCODING, encoding); |
Local<Script> script = v8_compile(source); |
- Local<Value> value = script->Run(); |
+ Local<Value> value = script->Run(env.local()).ToLocalChecked(); |
CHECK(value->IsNumber()); |
- CHECK_EQ(7, value->Int32Value()); |
+ CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); |
CcTest::heap()->CollectAllGarbage(); |
CHECK_EQ(0, dispose_count); |
} |
@@ -460,7 +492,9 @@ THREADED_TEST(ScriptMakingExternalString) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
Local<String> source = |
- String::NewFromTwoByte(env->GetIsolate(), two_byte_source); |
+ String::NewFromTwoByte(env->GetIsolate(), two_byte_source, |
+ v8::NewStringType::kNormal) |
+ .ToLocalChecked(); |
// Trigger GCs so that the newly allocated string moves to old gen. |
CcTest::heap()->CollectGarbage(i::NEW_SPACE); // in survivor space now |
CcTest::heap()->CollectGarbage(i::NEW_SPACE); // in old gen now |
@@ -473,9 +507,9 @@ THREADED_TEST(ScriptMakingExternalString) { |
&dispose_count)); |
CHECK(success); |
Local<Script> script = v8_compile(source); |
- Local<Value> value = script->Run(); |
+ Local<Value> value = script->Run(env.local()).ToLocalChecked(); |
CHECK(value->IsNumber()); |
- CHECK_EQ(7, value->Int32Value()); |
+ CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); |
CcTest::heap()->CollectAllGarbage(); |
CHECK_EQ(0, dispose_count); |
} |
@@ -499,9 +533,9 @@ THREADED_TEST(ScriptMakingExternalOneByteString) { |
new TestOneByteResource(i::StrDup(c_source), &dispose_count)); |
CHECK(success); |
Local<Script> script = v8_compile(source); |
- Local<Value> value = script->Run(); |
+ Local<Value> value = script->Run(env.local()).ToLocalChecked(); |
CHECK(value->IsNumber()); |
- CHECK_EQ(7, value->Int32Value()); |
+ CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); |
CcTest::heap()->CollectAllGarbage(); |
CHECK_EQ(0, dispose_count); |
} |
@@ -521,7 +555,9 @@ TEST(MakingExternalStringConditions) { |
uint16_t* two_byte_string = AsciiToTwoByteString("s1"); |
Local<String> small_string = |
- String::NewFromTwoByte(env->GetIsolate(), two_byte_string); |
+ String::NewFromTwoByte(env->GetIsolate(), two_byte_string, |
+ v8::NewStringType::kNormal) |
+ .ToLocalChecked(); |
i::DeleteArray(two_byte_string); |
// We should refuse to externalize small strings. |
@@ -533,7 +569,9 @@ TEST(MakingExternalStringConditions) { |
CHECK(small_string->CanMakeExternal()); |
two_byte_string = AsciiToTwoByteString("small string 2"); |
- small_string = String::NewFromTwoByte(env->GetIsolate(), two_byte_string); |
+ small_string = String::NewFromTwoByte(env->GetIsolate(), two_byte_string, |
+ v8::NewStringType::kNormal) |
+ .ToLocalChecked(); |
i::DeleteArray(two_byte_string); |
const int buf_size = 10 * 1024; |
@@ -543,7 +581,9 @@ TEST(MakingExternalStringConditions) { |
two_byte_string = AsciiToTwoByteString(buf); |
Local<String> large_string = |
- String::NewFromTwoByte(env->GetIsolate(), two_byte_string); |
+ String::NewFromTwoByte(env->GetIsolate(), two_byte_string, |
+ v8::NewStringType::kNormal) |
+ .ToLocalChecked(); |
i::DeleteArray(buf); |
i::DeleteArray(two_byte_string); |
// Large strings should be immediately accepted. |
@@ -559,7 +599,7 @@ TEST(MakingExternalOneByteStringConditions) { |
CcTest::heap()->CollectGarbage(i::NEW_SPACE); |
CcTest::heap()->CollectGarbage(i::NEW_SPACE); |
- Local<String> small_string = String::NewFromUtf8(env->GetIsolate(), "s1"); |
+ Local<String> small_string = v8_str("s1"); |
// We should refuse to externalize small strings. |
CHECK(!small_string->CanMakeExternal()); |
// Trigger GCs so that the newly allocated string moves to old gen. |
@@ -572,7 +612,7 @@ TEST(MakingExternalOneByteStringConditions) { |
char* buf = i::NewArray<char>(buf_size); |
memset(buf, 'a', buf_size); |
buf[buf_size - 1] = '\0'; |
- Local<String> large_string = String::NewFromUtf8(env->GetIsolate(), buf); |
+ Local<String> large_string = v8_str(buf); |
i::DeleteArray(buf); |
// Large strings should be immediately accepted. |
CHECK(large_string->CanMakeExternal()); |
@@ -618,8 +658,10 @@ THREADED_TEST(UsingExternalString) { |
{ |
v8::HandleScope scope(CcTest::isolate()); |
uint16_t* two_byte_string = AsciiToTwoByteString("test string"); |
- Local<String> string = String::NewExternal( |
- CcTest::isolate(), new TestResource(two_byte_string)); |
+ Local<String> string = |
+ String::NewExternalTwoByte(CcTest::isolate(), |
+ new TestResource(two_byte_string)) |
+ .ToLocalChecked(); |
i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); |
// Trigger GCs so that the newly allocated string moves to old gen. |
CcTest::heap()->CollectGarbage(i::NEW_SPACE); // in survivor space now |
@@ -638,8 +680,11 @@ THREADED_TEST(UsingExternalOneByteString) { |
{ |
v8::HandleScope scope(CcTest::isolate()); |
const char* one_byte_string = "test string"; |
- Local<String> string = String::NewExternal( |
- CcTest::isolate(), new TestOneByteResource(i::StrDup(one_byte_string))); |
+ Local<String> string = |
+ String::NewExternalOneByte( |
+ CcTest::isolate(), |
+ new TestOneByteResource(i::StrDup(one_byte_string))) |
+ .ToLocalChecked(); |
i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); |
// Trigger GCs so that the newly allocated string moves to old gen. |
CcTest::heap()->CollectGarbage(i::NEW_SPACE); // in survivor space now |
@@ -684,8 +729,9 @@ THREADED_TEST(NewExternalForVeryLongString) { |
v8::HandleScope scope(isolate); |
v8::TryCatch try_catch(isolate); |
RandomLengthOneByteResource r(1 << 30); |
- v8::Local<v8::String> str = v8::String::NewExternal(isolate, &r); |
- CHECK(str.IsEmpty()); |
+ v8::MaybeLocal<v8::String> maybe_str = |
+ v8::String::NewExternalOneByte(isolate, &r); |
+ CHECK(maybe_str.IsEmpty()); |
CHECK(!try_catch.HasCaught()); |
} |
@@ -693,8 +739,9 @@ THREADED_TEST(NewExternalForVeryLongString) { |
v8::HandleScope scope(isolate); |
v8::TryCatch try_catch(isolate); |
RandomLengthResource r(1 << 30); |
- v8::Local<v8::String> str = v8::String::NewExternal(isolate, &r); |
- CHECK(str.IsEmpty()); |
+ v8::MaybeLocal<v8::String> maybe_str = |
+ v8::String::NewExternalTwoByte(isolate, &r); |
+ CHECK(maybe_str.IsEmpty()); |
CHECK(!try_catch.HasCaught()); |
} |
} |
@@ -708,8 +755,11 @@ THREADED_TEST(ScavengeExternalString) { |
{ |
v8::HandleScope scope(CcTest::isolate()); |
uint16_t* two_byte_string = AsciiToTwoByteString("test string"); |
- Local<String> string = String::NewExternal( |
- CcTest::isolate(), new TestResource(two_byte_string, &dispose_count)); |
+ Local<String> string = |
+ String::NewExternalTwoByte( |
+ CcTest::isolate(), |
+ new TestResource(two_byte_string, &dispose_count)) |
+ .ToLocalChecked(); |
i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); |
CcTest::heap()->CollectGarbage(i::NEW_SPACE); |
in_new_space = CcTest::heap()->InNewSpace(*istring); |
@@ -729,9 +779,11 @@ THREADED_TEST(ScavengeExternalOneByteString) { |
{ |
v8::HandleScope scope(CcTest::isolate()); |
const char* one_byte_string = "test string"; |
- Local<String> string = String::NewExternal( |
- CcTest::isolate(), |
- new TestOneByteResource(i::StrDup(one_byte_string), &dispose_count)); |
+ Local<String> string = |
+ String::NewExternalOneByte( |
+ CcTest::isolate(), |
+ new TestOneByteResource(i::StrDup(one_byte_string), &dispose_count)) |
+ .ToLocalChecked(); |
i::Handle<i::String> istring = v8::Utils::OpenHandle(*string); |
CcTest::heap()->CollectGarbage(i::NEW_SPACE); |
in_new_space = CcTest::heap()->InNewSpace(*istring); |
@@ -775,11 +827,13 @@ TEST(ExternalStringWithDisposeHandling) { |
{ |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- Local<String> source = String::NewExternal(env->GetIsolate(), &res_stack); |
+ Local<String> source = |
+ String::NewExternalOneByte(env->GetIsolate(), &res_stack) |
+ .ToLocalChecked(); |
Local<Script> script = v8_compile(source); |
- Local<Value> value = script->Run(); |
+ Local<Value> value = script->Run(env.local()).ToLocalChecked(); |
CHECK(value->IsNumber()); |
- CHECK_EQ(7, value->Int32Value()); |
+ CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); |
CcTest::heap()->CollectAllAvailableGarbage(); |
CHECK_EQ(0, TestOneByteResourceWithDisposeControl::dispose_count); |
} |
@@ -796,11 +850,13 @@ TEST(ExternalStringWithDisposeHandling) { |
{ |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- Local<String> source = String::NewExternal(env->GetIsolate(), res_heap); |
+ Local<String> source = |
+ String::NewExternalOneByte(env->GetIsolate(), res_heap) |
+ .ToLocalChecked(); |
Local<Script> script = v8_compile(source); |
- Local<Value> value = script->Run(); |
+ Local<Value> value = script->Run(env.local()).ToLocalChecked(); |
CHECK(value->IsNumber()); |
- CHECK_EQ(7, value->Int32Value()); |
+ CHECK_EQ(7, value->Int32Value(env.local()).FromJust()); |
CcTest::heap()->CollectAllAvailableGarbage(); |
CHECK_EQ(0, TestOneByteResourceWithDisposeControl::dispose_count); |
} |
@@ -826,34 +882,41 @@ THREADED_TEST(StringConcat) { |
uint16_t* two_byte_source = AsciiToTwoByteString(two_byte_string_1); |
Local<String> right = |
- String::NewFromTwoByte(env->GetIsolate(), two_byte_source); |
+ String::NewFromTwoByte(env->GetIsolate(), two_byte_source, |
+ v8::NewStringType::kNormal) |
+ .ToLocalChecked(); |
i::DeleteArray(two_byte_source); |
Local<String> source = String::Concat(left, right); |
- right = String::NewExternal( |
- env->GetIsolate(), |
- new TestOneByteResource(i::StrDup(one_byte_extern_1))); |
+ right = String::NewExternalOneByte( |
+ env->GetIsolate(), |
+ new TestOneByteResource(i::StrDup(one_byte_extern_1))) |
+ .ToLocalChecked(); |
source = String::Concat(source, right); |
- right = String::NewExternal( |
- env->GetIsolate(), |
- new TestResource(AsciiToTwoByteString(two_byte_extern_1))); |
+ right = String::NewExternalTwoByte( |
+ env->GetIsolate(), |
+ new TestResource(AsciiToTwoByteString(two_byte_extern_1))) |
+ .ToLocalChecked(); |
source = String::Concat(source, right); |
right = v8_str(one_byte_string_2); |
source = String::Concat(source, right); |
two_byte_source = AsciiToTwoByteString(two_byte_string_2); |
- right = String::NewFromTwoByte(env->GetIsolate(), two_byte_source); |
+ right = String::NewFromTwoByte(env->GetIsolate(), two_byte_source, |
+ v8::NewStringType::kNormal) |
+ .ToLocalChecked(); |
i::DeleteArray(two_byte_source); |
source = String::Concat(source, right); |
- right = String::NewExternal( |
- env->GetIsolate(), |
- new TestResource(AsciiToTwoByteString(two_byte_extern_2))); |
+ right = String::NewExternalTwoByte( |
+ env->GetIsolate(), |
+ new TestResource(AsciiToTwoByteString(two_byte_extern_2))) |
+ .ToLocalChecked(); |
source = String::Concat(source, right); |
Local<Script> script = v8_compile(source); |
- Local<Value> value = script->Run(); |
+ Local<Value> value = script->Run(env.local()).ToLocalChecked(); |
CHECK(value->IsNumber()); |
- CHECK_EQ(68, value->Int32Value()); |
+ CHECK_EQ(68, value->Int32Value(env.local()).FromJust()); |
} |
CcTest::i_isolate()->compilation_cache()->Clear(); |
CcTest::heap()->CollectAllGarbage(); |
@@ -864,10 +927,10 @@ THREADED_TEST(StringConcat) { |
THREADED_TEST(GlobalProperties) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Handle<v8::Object> global = env->Global(); |
- global->Set(v8_str("pi"), v8_num(3.1415926)); |
- Local<Value> pi = global->Get(v8_str("pi")); |
- CHECK_EQ(3.1415926, pi->NumberValue()); |
+ v8::Local<v8::Object> global = env->Global(); |
+ CHECK(global->Set(env.local(), v8_str("pi"), v8_num(3.1415926)).FromJust()); |
+ Local<Value> pi = global->Get(env.local(), v8_str("pi")).ToLocalChecked(); |
+ CHECK_EQ(3.1415926, pi->NumberValue(env.local()).FromJust()); |
} |
@@ -893,8 +956,14 @@ static void construct_callback( |
const v8::FunctionCallbackInfo<Value>& info) { |
ApiTestFuzzer::Fuzz(); |
CheckReturnValue(info, FUNCTION_ADDR(construct_callback)); |
- info.This()->Set(v8_str("x"), v8_num(1)); |
- info.This()->Set(v8_str("y"), v8_num(2)); |
+ CHECK( |
+ info.This() |
+ ->Set(info.GetIsolate()->GetCurrentContext(), v8_str("x"), v8_num(1)) |
+ .FromJust()); |
+ CHECK( |
+ info.This() |
+ ->Set(info.GetIsolate()->GetCurrentContext(), v8_str("y"), v8_num(2)) |
+ .FromJust()); |
info.GetReturnValue().Set(v8_str("bad value")); |
info.GetReturnValue().Set(info.This()); |
} |
@@ -920,11 +989,11 @@ static void TestFunctionTemplateInitializer(Handler handler, |
Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate, handler); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("obj"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), fun).FromJust()); |
Local<Script> script = v8_compile("obj()"); |
for (int i = 0; i < 30; i++) { |
- CHECK_EQ(102, script->Run()->Int32Value()); |
+ CHECK_EQ(102, v8_run_int32value(script)); |
} |
} |
// Use SetCallHandler to initialize a function template, should work like |
@@ -936,11 +1005,11 @@ static void TestFunctionTemplateInitializer(Handler handler, |
Local<v8::FunctionTemplate> fun_templ = v8::FunctionTemplate::New(isolate); |
fun_templ->SetCallHandler(handler_2); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("obj"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), fun).FromJust()); |
Local<Script> script = v8_compile("obj()"); |
for (int i = 0; i < 30; i++) { |
- CHECK_EQ(102, script->Run()->Int32Value()); |
+ CHECK_EQ(102, v8_run_int32value(script)); |
} |
} |
} |
@@ -956,19 +1025,20 @@ static void TestFunctionTemplateAccessor(Constructor constructor, |
v8::FunctionTemplate::New(env->GetIsolate(), constructor); |
fun_templ->SetClassName(v8_str("funky")); |
fun_templ->InstanceTemplate()->SetAccessor(v8_str("m"), accessor); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("obj"), fun); |
- Local<Value> result = v8_compile("(new obj()).toString()")->Run(); |
- CHECK(v8_str("[object funky]")->Equals(result)); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), fun).FromJust()); |
+ Local<Value> result = |
+ v8_compile("(new obj()).toString()")->Run(env.local()).ToLocalChecked(); |
+ CHECK(v8_str("[object funky]")->Equals(env.local(), result).FromJust()); |
CompileRun("var obj_instance = new obj();"); |
Local<Script> script; |
script = v8_compile("obj_instance.x"); |
for (int i = 0; i < 30; i++) { |
- CHECK_EQ(1, script->Run()->Int32Value()); |
+ CHECK_EQ(1, v8_run_int32value(script)); |
} |
script = v8_compile("obj_instance.m"); |
for (int i = 0; i < 30; i++) { |
- CHECK_EQ(239, script->Run()->Int32Value()); |
+ CHECK_EQ(239, v8_run_int32value(script)); |
} |
} |
@@ -992,20 +1062,24 @@ static void TestSimpleCallback(Callback callback) { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> object_template = |
+ v8::Local<v8::ObjectTemplate> object_template = |
v8::ObjectTemplate::New(isolate); |
object_template->Set(isolate, "callback", |
v8::FunctionTemplate::New(isolate, callback)); |
- v8::Local<v8::Object> object = object_template->NewInstance(); |
- (*env)->Global()->Set(v8_str("callback_object"), object); |
- v8::Handle<v8::Script> script; |
+ v8::Local<v8::Object> object = |
+ object_template->NewInstance(env.local()).ToLocalChecked(); |
+ CHECK((*env) |
+ ->Global() |
+ ->Set(env.local(), v8_str("callback_object"), object) |
+ .FromJust()); |
+ v8::Local<v8::Script> script; |
script = v8_compile("callback_object.callback(17)"); |
for (int i = 0; i < 30; i++) { |
- CHECK_EQ(51424, script->Run()->Int32Value()); |
+ CHECK_EQ(51424, v8_run_int32value(script)); |
} |
script = v8_compile("callback_object.callback(17, 24)"); |
for (int i = 0; i < 30; i++) { |
- CHECK_EQ(51425, script->Run()->Int32Value()); |
+ CHECK_EQ(51425, v8_run_int32value(script)); |
} |
} |
@@ -1086,25 +1160,29 @@ void FastReturnValueCallback<void>( |
template<> |
void FastReturnValueCallback<Object>( |
const v8::FunctionCallbackInfo<v8::Value>& info) { |
- v8::Handle<v8::Object> object; |
+ v8::Local<v8::Object> object; |
if (!fast_return_value_object_is_empty) { |
object = Object::New(info.GetIsolate()); |
} |
info.GetReturnValue().Set(object); |
} |
-template<typename T> |
-Handle<Value> TestFastReturnValues() { |
+template <typename T> |
+Local<Value> TestFastReturnValues() { |
LocalContext env; |
v8::Isolate* isolate = env->GetIsolate(); |
v8::EscapableHandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> object_template = |
+ v8::Local<v8::ObjectTemplate> object_template = |
v8::ObjectTemplate::New(isolate); |
v8::FunctionCallback callback = &FastReturnValueCallback<T>; |
object_template->Set(isolate, "callback", |
v8::FunctionTemplate::New(isolate, callback)); |
- v8::Local<v8::Object> object = object_template->NewInstance(); |
- (*env)->Global()->Set(v8_str("callback_object"), object); |
+ v8::Local<v8::Object> object = |
+ object_template->NewInstance(env.local()).ToLocalChecked(); |
+ CHECK((*env) |
+ ->Global() |
+ ->Set(env.local(), v8_str("callback_object"), object) |
+ .FromJust()); |
return scope.Escape(CompileRun("callback_object.callback()")); |
} |
@@ -1113,7 +1191,7 @@ THREADED_PROFILED_TEST(FastReturnValues) { |
LocalContext env; |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::Value> value; |
+ v8::Local<v8::Value> value; |
// check int32_t and uint32_t |
int32_t int_values[] = { |
0, 234, -723, |
@@ -1126,24 +1204,28 @@ THREADED_PROFILED_TEST(FastReturnValues) { |
fast_return_value_int32 = int_value; |
value = TestFastReturnValues<int32_t>(); |
CHECK(value->IsInt32()); |
- CHECK(fast_return_value_int32 == value->Int32Value()); |
+ CHECK_EQ(fast_return_value_int32, |
+ value->Int32Value(env.local()).FromJust()); |
// check uint32_t |
fast_return_value_uint32 = static_cast<uint32_t>(int_value); |
value = TestFastReturnValues<uint32_t>(); |
CHECK(value->IsUint32()); |
- CHECK(fast_return_value_uint32 == value->Uint32Value()); |
+ CHECK_EQ(fast_return_value_uint32, |
+ value->Uint32Value(env.local()).FromJust()); |
} |
} |
// check double |
value = TestFastReturnValues<double>(); |
CHECK(value->IsNumber()); |
- CHECK_EQ(kFastReturnValueDouble, value->ToNumber(isolate)->Value()); |
+ CHECK_EQ(kFastReturnValueDouble, |
+ value->ToNumber(env.local()).ToLocalChecked()->Value()); |
// check bool values |
for (int i = 0; i < 2; i++) { |
fast_return_value_bool = i == 0; |
value = TestFastReturnValues<bool>(); |
CHECK(value->IsBoolean()); |
- CHECK_EQ(fast_return_value_bool, value->ToBoolean(isolate)->Value()); |
+ CHECK_EQ(fast_return_value_bool, |
+ value->ToBoolean(env.local()).ToLocalChecked()->Value()); |
} |
// check oddballs |
ReturnValueOddball oddballs[] = { |
@@ -1183,33 +1265,30 @@ THREADED_TEST(FunctionTemplateSetLength) { |
v8::HandleScope scope(isolate); |
{ |
Local<v8::FunctionTemplate> fun_templ = |
- v8::FunctionTemplate::New(isolate, |
- handle_callback, |
- Handle<v8::Value>(), |
- Handle<v8::Signature>(), |
- 23); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("obj"), fun); |
+ v8::FunctionTemplate::New(isolate, handle_callback, Local<v8::Value>(), |
+ Local<v8::Signature>(), 23); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), fun).FromJust()); |
Local<Script> script = v8_compile("obj.length"); |
- CHECK_EQ(23, script->Run()->Int32Value()); |
+ CHECK_EQ(23, v8_run_int32value(script)); |
} |
{ |
Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate, handle_callback); |
fun_templ->SetLength(22); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("obj"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), fun).FromJust()); |
Local<Script> script = v8_compile("obj.length"); |
- CHECK_EQ(22, script->Run()->Int32Value()); |
+ CHECK_EQ(22, v8_run_int32value(script)); |
} |
{ |
// Without setting length it defaults to 0. |
Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate, handle_callback); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("obj"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), fun).FromJust()); |
Local<Script> script = v8_compile("obj.length"); |
- CHECK_EQ(0, script->Run()->Int32Value()); |
+ CHECK_EQ(0, v8_run_int32value(script)); |
} |
} |
@@ -1227,19 +1306,22 @@ static void TestExternalPointerWrapping() { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::Value> data = |
- v8::External::New(isolate, expected_ptr); |
+ v8::Local<v8::Value> data = v8::External::New(isolate, expected_ptr); |
- v8::Handle<v8::Object> obj = v8::Object::New(isolate); |
- obj->Set(v8_str("func"), |
- v8::FunctionTemplate::New(isolate, callback, data)->GetFunction()); |
- env->Global()->Set(v8_str("obj"), obj); |
+ v8::Local<v8::Object> obj = v8::Object::New(isolate); |
+ CHECK(obj->Set(env.local(), v8_str("func"), |
+ v8::FunctionTemplate::New(isolate, callback, data) |
+ ->GetFunction(env.local()) |
+ .ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust()); |
- CHECK(CompileRun( |
- "function foo() {\n" |
- " for (var i = 0; i < 13; i++) obj.func();\n" |
- "}\n" |
- "foo(), true")->BooleanValue()); |
+ CHECK(CompileRun("function foo() {\n" |
+ " for (var i = 0; i < 13; i++) obj.func();\n" |
+ "}\n" |
+ "foo(), true") |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
} |
@@ -1299,28 +1381,43 @@ THREADED_TEST(FindInstanceInPrototypeChain) { |
Local<v8::FunctionTemplate> other = v8::FunctionTemplate::New(isolate); |
derived->Inherit(base); |
- Local<v8::Function> base_function = base->GetFunction(); |
- Local<v8::Function> derived_function = derived->GetFunction(); |
- Local<v8::Function> other_function = other->GetFunction(); |
- |
- Local<v8::Object> base_instance = base_function->NewInstance(); |
- Local<v8::Object> derived_instance = derived_function->NewInstance(); |
- Local<v8::Object> derived_instance2 = derived_function->NewInstance(); |
- Local<v8::Object> other_instance = other_function->NewInstance(); |
- derived_instance2->Set(v8_str("__proto__"), derived_instance); |
- other_instance->Set(v8_str("__proto__"), derived_instance2); |
+ Local<v8::Function> base_function = |
+ base->GetFunction(env.local()).ToLocalChecked(); |
+ Local<v8::Function> derived_function = |
+ derived->GetFunction(env.local()).ToLocalChecked(); |
+ Local<v8::Function> other_function = |
+ other->GetFunction(env.local()).ToLocalChecked(); |
+ |
+ Local<v8::Object> base_instance = |
+ base_function->NewInstance(env.local()).ToLocalChecked(); |
+ Local<v8::Object> derived_instance = |
+ derived_function->NewInstance(env.local()).ToLocalChecked(); |
+ Local<v8::Object> derived_instance2 = |
+ derived_function->NewInstance(env.local()).ToLocalChecked(); |
+ Local<v8::Object> other_instance = |
+ other_function->NewInstance(env.local()).ToLocalChecked(); |
+ CHECK( |
+ derived_instance2->Set(env.local(), v8_str("__proto__"), derived_instance) |
+ .FromJust()); |
+ CHECK(other_instance->Set(env.local(), v8_str("__proto__"), derived_instance2) |
+ .FromJust()); |
// base_instance is only an instance of base. |
- CHECK( |
- base_instance->Equals(base_instance->FindInstanceInPrototypeChain(base))); |
+ CHECK(base_instance->Equals(env.local(), |
+ base_instance->FindInstanceInPrototypeChain(base)) |
+ .FromJust()); |
CHECK(base_instance->FindInstanceInPrototypeChain(derived).IsEmpty()); |
CHECK(base_instance->FindInstanceInPrototypeChain(other).IsEmpty()); |
// derived_instance is an instance of base and derived. |
- CHECK(derived_instance->Equals( |
- derived_instance->FindInstanceInPrototypeChain(base))); |
- CHECK(derived_instance->Equals( |
- derived_instance->FindInstanceInPrototypeChain(derived))); |
+ CHECK(derived_instance->Equals(env.local(), |
+ derived_instance->FindInstanceInPrototypeChain( |
+ base)) |
+ .FromJust()); |
+ CHECK(derived_instance->Equals(env.local(), |
+ derived_instance->FindInstanceInPrototypeChain( |
+ derived)) |
+ .FromJust()); |
CHECK(derived_instance->FindInstanceInPrototypeChain(other).IsEmpty()); |
// other_instance is an instance of other and its immediate |
@@ -1329,11 +1426,17 @@ THREADED_TEST(FindInstanceInPrototypeChain) { |
// but it comes after derived_instance2 in the prototype chain of |
// other_instance. |
CHECK(derived_instance2->Equals( |
- other_instance->FindInstanceInPrototypeChain(base))); |
- CHECK(derived_instance2->Equals( |
- other_instance->FindInstanceInPrototypeChain(derived))); |
+ env.local(), |
+ other_instance->FindInstanceInPrototypeChain(base)) |
+ .FromJust()); |
+ CHECK(derived_instance2->Equals(env.local(), |
+ other_instance->FindInstanceInPrototypeChain( |
+ derived)) |
+ .FromJust()); |
CHECK(other_instance->Equals( |
- other_instance->FindInstanceInPrototypeChain(other))); |
+ env.local(), |
+ other_instance->FindInstanceInPrototypeChain(other)) |
+ .FromJust()); |
} |
@@ -1463,12 +1566,12 @@ THREADED_TEST(OutOfSignedRangeUnsignedInteger) { |
THREADED_TEST(IsNativeError) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Handle<Value> syntax_error = CompileRun( |
+ v8::Local<Value> syntax_error = CompileRun( |
"var out = 0; try { eval(\"#\"); } catch(x) { out = x; } out; "); |
CHECK(syntax_error->IsNativeError()); |
- v8::Handle<Value> not_error = CompileRun("{a:42}"); |
+ v8::Local<Value> not_error = CompileRun("{a:42}"); |
CHECK(!not_error->IsNativeError()); |
- v8::Handle<Value> not_object = CompileRun("42"); |
+ v8::Local<Value> not_object = CompileRun("42"); |
CHECK(!not_object->IsNativeError()); |
} |
@@ -1478,10 +1581,10 @@ THREADED_TEST(IsGeneratorFunctionOrObject) { |
v8::HandleScope scope(env->GetIsolate()); |
CompileRun("function *gen() { yield 1; }\nfunction func() {}"); |
- v8::Handle<Value> gen = CompileRun("gen"); |
- v8::Handle<Value> genObj = CompileRun("gen()"); |
- v8::Handle<Value> object = CompileRun("{a:42}"); |
- v8::Handle<Value> func = CompileRun("func"); |
+ v8::Local<Value> gen = CompileRun("gen"); |
+ v8::Local<Value> genObj = CompileRun("gen()"); |
+ v8::Local<Value> object = CompileRun("{a:42}"); |
+ v8::Local<Value> func = CompileRun("func"); |
CHECK(gen->IsGeneratorFunction()); |
CHECK(gen->IsFunction()); |
@@ -1504,12 +1607,12 @@ THREADED_TEST(IsGeneratorFunctionOrObject) { |
THREADED_TEST(ArgumentsObject) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Handle<Value> arguments_object = |
+ v8::Local<Value> arguments_object = |
CompileRun("var out = 0; (function(){ out = arguments; })(1,2,3); out;"); |
CHECK(arguments_object->IsArgumentsObject()); |
- v8::Handle<Value> array = CompileRun("[1,2,3]"); |
+ v8::Local<Value> array = CompileRun("[1,2,3]"); |
CHECK(!array->IsArgumentsObject()); |
- v8::Handle<Value> object = CompileRun("{a:42}"); |
+ v8::Local<Value> object = CompileRun("{a:42}"); |
CHECK(!object->IsArgumentsObject()); |
} |
@@ -1517,10 +1620,10 @@ THREADED_TEST(ArgumentsObject) { |
THREADED_TEST(IsMapOrSet) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Handle<Value> map = CompileRun("new Map()"); |
- v8::Handle<Value> set = CompileRun("new Set()"); |
- v8::Handle<Value> weak_map = CompileRun("new WeakMap()"); |
- v8::Handle<Value> weak_set = CompileRun("new WeakSet()"); |
+ v8::Local<Value> map = CompileRun("new Map()"); |
+ v8::Local<Value> set = CompileRun("new Set()"); |
+ v8::Local<Value> weak_map = CompileRun("new WeakMap()"); |
+ v8::Local<Value> weak_set = CompileRun("new WeakSet()"); |
CHECK(map->IsMap()); |
CHECK(set->IsSet()); |
CHECK(weak_map->IsWeakMap()); |
@@ -1542,7 +1645,7 @@ THREADED_TEST(IsMapOrSet) { |
CHECK(!weak_set->IsSet()); |
CHECK(!weak_set->IsWeakMap()); |
- v8::Handle<Value> object = CompileRun("{a:42}"); |
+ v8::Local<Value> object = CompileRun("{a:42}"); |
CHECK(!object->IsMap()); |
CHECK(!object->IsSet()); |
CHECK(!object->IsWeakMap()); |
@@ -1553,20 +1656,20 @@ THREADED_TEST(IsMapOrSet) { |
THREADED_TEST(StringObject) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Handle<Value> boxed_string = CompileRun("new String(\"test\")"); |
+ v8::Local<Value> boxed_string = CompileRun("new String(\"test\")"); |
CHECK(boxed_string->IsStringObject()); |
- v8::Handle<Value> unboxed_string = CompileRun("\"test\""); |
+ v8::Local<Value> unboxed_string = CompileRun("\"test\""); |
CHECK(!unboxed_string->IsStringObject()); |
- v8::Handle<Value> boxed_not_string = CompileRun("new Number(42)"); |
+ v8::Local<Value> boxed_not_string = CompileRun("new Number(42)"); |
CHECK(!boxed_not_string->IsStringObject()); |
- v8::Handle<Value> not_object = CompileRun("0"); |
+ v8::Local<Value> not_object = CompileRun("0"); |
CHECK(!not_object->IsStringObject()); |
- v8::Handle<v8::StringObject> as_boxed = boxed_string.As<v8::StringObject>(); |
+ v8::Local<v8::StringObject> as_boxed = boxed_string.As<v8::StringObject>(); |
CHECK(!as_boxed.IsEmpty()); |
Local<v8::String> the_string = as_boxed->ValueOf(); |
CHECK(!the_string.IsEmpty()); |
ExpectObject("\"test\"", the_string); |
- v8::Handle<v8::Value> new_boxed_string = v8::StringObject::New(the_string); |
+ v8::Local<v8::Value> new_boxed_string = v8::StringObject::New(the_string); |
CHECK(new_boxed_string->IsStringObject()); |
as_boxed = new_boxed_string.As<v8::StringObject>(); |
the_string = as_boxed->ValueOf(); |
@@ -1578,28 +1681,28 @@ THREADED_TEST(StringObject) { |
TEST(StringObjectDelete) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::Handle<Value> boxed_string = CompileRun("new String(\"test\")"); |
+ v8::Local<Value> boxed_string = CompileRun("new String(\"test\")"); |
CHECK(boxed_string->IsStringObject()); |
- v8::Handle<v8::Object> str_obj = boxed_string.As<v8::Object>(); |
- CHECK(!str_obj->Delete(2)); |
- CHECK(!str_obj->Delete(v8_num(2))); |
+ v8::Local<v8::Object> str_obj = boxed_string.As<v8::Object>(); |
+ CHECK(!str_obj->Delete(context.local(), 2).FromJust()); |
+ CHECK(!str_obj->Delete(context.local(), v8_num(2)).FromJust()); |
} |
THREADED_TEST(NumberObject) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Handle<Value> boxed_number = CompileRun("new Number(42)"); |
+ v8::Local<Value> boxed_number = CompileRun("new Number(42)"); |
CHECK(boxed_number->IsNumberObject()); |
- v8::Handle<Value> unboxed_number = CompileRun("42"); |
+ v8::Local<Value> unboxed_number = CompileRun("42"); |
CHECK(!unboxed_number->IsNumberObject()); |
- v8::Handle<Value> boxed_not_number = CompileRun("new Boolean(false)"); |
+ v8::Local<Value> boxed_not_number = CompileRun("new Boolean(false)"); |
CHECK(!boxed_not_number->IsNumberObject()); |
- v8::Handle<v8::NumberObject> as_boxed = boxed_number.As<v8::NumberObject>(); |
+ v8::Local<v8::NumberObject> as_boxed = boxed_number.As<v8::NumberObject>(); |
CHECK(!as_boxed.IsEmpty()); |
double the_number = as_boxed->ValueOf(); |
CHECK_EQ(42.0, the_number); |
- v8::Handle<v8::Value> new_boxed_number = |
+ v8::Local<v8::Value> new_boxed_number = |
v8::NumberObject::New(env->GetIsolate(), 43); |
CHECK(new_boxed_number->IsNumberObject()); |
as_boxed = new_boxed_number.As<v8::NumberObject>(); |
@@ -1611,19 +1714,18 @@ THREADED_TEST(NumberObject) { |
THREADED_TEST(BooleanObject) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Handle<Value> boxed_boolean = CompileRun("new Boolean(true)"); |
+ v8::Local<Value> boxed_boolean = CompileRun("new Boolean(true)"); |
CHECK(boxed_boolean->IsBooleanObject()); |
- v8::Handle<Value> unboxed_boolean = CompileRun("true"); |
+ v8::Local<Value> unboxed_boolean = CompileRun("true"); |
CHECK(!unboxed_boolean->IsBooleanObject()); |
- v8::Handle<Value> boxed_not_boolean = CompileRun("new Number(42)"); |
+ v8::Local<Value> boxed_not_boolean = CompileRun("new Number(42)"); |
CHECK(!boxed_not_boolean->IsBooleanObject()); |
- v8::Handle<v8::BooleanObject> as_boxed = |
- boxed_boolean.As<v8::BooleanObject>(); |
+ v8::Local<v8::BooleanObject> as_boxed = boxed_boolean.As<v8::BooleanObject>(); |
CHECK(!as_boxed.IsEmpty()); |
bool the_boolean = as_boxed->ValueOf(); |
CHECK_EQ(true, the_boolean); |
- v8::Handle<v8::Value> boxed_true = v8::BooleanObject::New(true); |
- v8::Handle<v8::Value> boxed_false = v8::BooleanObject::New(false); |
+ v8::Local<v8::Value> boxed_true = v8::BooleanObject::New(true); |
+ v8::Local<v8::Value> boxed_false = v8::BooleanObject::New(false); |
CHECK(boxed_true->IsBooleanObject()); |
CHECK(boxed_false->IsBooleanObject()); |
as_boxed = boxed_true.As<v8::BooleanObject>(); |
@@ -1640,22 +1742,21 @@ THREADED_TEST(PrimitiveAndWrappedBooleans) { |
Local<Value> primitive_false = Boolean::New(env->GetIsolate(), false); |
CHECK(primitive_false->IsBoolean()); |
CHECK(!primitive_false->IsBooleanObject()); |
- CHECK(!primitive_false->BooleanValue()); |
+ CHECK(!primitive_false->BooleanValue(env.local()).FromJust()); |
CHECK(!primitive_false->IsTrue()); |
CHECK(primitive_false->IsFalse()); |
Local<Value> false_value = BooleanObject::New(false); |
CHECK(!false_value->IsBoolean()); |
CHECK(false_value->IsBooleanObject()); |
- CHECK(false_value->BooleanValue()); |
+ CHECK(false_value->BooleanValue(env.local()).FromJust()); |
CHECK(!false_value->IsTrue()); |
CHECK(!false_value->IsFalse()); |
Local<BooleanObject> false_boolean_object = false_value.As<BooleanObject>(); |
CHECK(!false_boolean_object->IsBoolean()); |
CHECK(false_boolean_object->IsBooleanObject()); |
- // TODO(svenpanne) Uncomment when BooleanObject::BooleanValue() is deleted. |
- // CHECK(false_boolean_object->BooleanValue()); |
+ CHECK(false_boolean_object->BooleanValue(env.local()).FromJust()); |
CHECK(!false_boolean_object->ValueOf()); |
CHECK(!false_boolean_object->IsTrue()); |
CHECK(!false_boolean_object->IsFalse()); |
@@ -1663,22 +1764,21 @@ THREADED_TEST(PrimitiveAndWrappedBooleans) { |
Local<Value> primitive_true = Boolean::New(env->GetIsolate(), true); |
CHECK(primitive_true->IsBoolean()); |
CHECK(!primitive_true->IsBooleanObject()); |
- CHECK(primitive_true->BooleanValue()); |
+ CHECK(primitive_true->BooleanValue(env.local()).FromJust()); |
CHECK(primitive_true->IsTrue()); |
CHECK(!primitive_true->IsFalse()); |
Local<Value> true_value = BooleanObject::New(true); |
CHECK(!true_value->IsBoolean()); |
CHECK(true_value->IsBooleanObject()); |
- CHECK(true_value->BooleanValue()); |
+ CHECK(true_value->BooleanValue(env.local()).FromJust()); |
CHECK(!true_value->IsTrue()); |
CHECK(!true_value->IsFalse()); |
Local<BooleanObject> true_boolean_object = true_value.As<BooleanObject>(); |
CHECK(!true_boolean_object->IsBoolean()); |
CHECK(true_boolean_object->IsBooleanObject()); |
- // TODO(svenpanne) Uncomment when BooleanObject::BooleanValue() is deleted. |
- // CHECK(true_boolean_object->BooleanValue()); |
+ CHECK(true_boolean_object->BooleanValue(env.local()).FromJust()); |
CHECK(true_boolean_object->ValueOf()); |
CHECK(!true_boolean_object->IsTrue()); |
CHECK(!true_boolean_object->IsFalse()); |
@@ -1690,7 +1790,7 @@ THREADED_TEST(Number) { |
v8::HandleScope scope(env->GetIsolate()); |
double PI = 3.1415926; |
Local<v8::Number> pi_obj = v8::Number::New(env->GetIsolate(), PI); |
- CHECK_EQ(PI, pi_obj->NumberValue()); |
+ CHECK_EQ(PI, pi_obj->NumberValue(env.local()).FromJust()); |
} |
@@ -1699,11 +1799,11 @@ THREADED_TEST(ToNumber) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
Local<String> str = v8_str("3.1415926"); |
- CHECK_EQ(3.1415926, str->NumberValue()); |
- v8::Handle<v8::Boolean> t = v8::True(isolate); |
- CHECK_EQ(1.0, t->NumberValue()); |
- v8::Handle<v8::Boolean> f = v8::False(isolate); |
- CHECK_EQ(0.0, f->NumberValue()); |
+ CHECK_EQ(3.1415926, str->NumberValue(env.local()).FromJust()); |
+ v8::Local<v8::Boolean> t = v8::True(isolate); |
+ CHECK_EQ(1.0, t->NumberValue(env.local()).FromJust()); |
+ v8::Local<v8::Boolean> f = v8::False(isolate); |
+ CHECK_EQ(0.0, f->NumberValue(env.local()).FromJust()); |
} |
@@ -1711,11 +1811,17 @@ THREADED_TEST(Date) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
double PI = 3.1415926; |
- Local<Value> date = v8::Date::New(env->GetIsolate(), PI); |
- CHECK_EQ(3.0, date->NumberValue()); |
- date.As<v8::Date>()->Set(v8_str("property"), |
- v8::Integer::New(env->GetIsolate(), 42)); |
- CHECK_EQ(42, date.As<v8::Date>()->Get(v8_str("property"))->Int32Value()); |
+ Local<Value> date = v8::Date::New(env.local(), PI).ToLocalChecked(); |
+ CHECK_EQ(3.0, date->NumberValue(env.local()).FromJust()); |
+ CHECK(date.As<v8::Date>() |
+ ->Set(env.local(), v8_str("property"), |
+ v8::Integer::New(env->GetIsolate(), 42)) |
+ .FromJust()); |
+ CHECK_EQ(42, date.As<v8::Date>() |
+ ->Get(env.local(), v8_str("property")) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
} |
@@ -1723,23 +1829,27 @@ THREADED_TEST(Boolean) { |
LocalContext env; |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::Boolean> t = v8::True(isolate); |
+ v8::Local<v8::Boolean> t = v8::True(isolate); |
CHECK(t->Value()); |
- v8::Handle<v8::Boolean> f = v8::False(isolate); |
+ v8::Local<v8::Boolean> f = v8::False(isolate); |
CHECK(!f->Value()); |
- v8::Handle<v8::Primitive> u = v8::Undefined(isolate); |
- CHECK(!u->BooleanValue()); |
- v8::Handle<v8::Primitive> n = v8::Null(isolate); |
- CHECK(!n->BooleanValue()); |
- v8::Handle<String> str1 = v8_str(""); |
- CHECK(!str1->BooleanValue()); |
- v8::Handle<String> str2 = v8_str("x"); |
- CHECK(str2->BooleanValue()); |
- CHECK(!v8::Number::New(isolate, 0)->BooleanValue()); |
- CHECK(v8::Number::New(isolate, -1)->BooleanValue()); |
- CHECK(v8::Number::New(isolate, 1)->BooleanValue()); |
- CHECK(v8::Number::New(isolate, 42)->BooleanValue()); |
- CHECK(!v8_compile("NaN")->Run()->BooleanValue()); |
+ v8::Local<v8::Primitive> u = v8::Undefined(isolate); |
+ CHECK(!u->BooleanValue(env.local()).FromJust()); |
+ v8::Local<v8::Primitive> n = v8::Null(isolate); |
+ CHECK(!n->BooleanValue(env.local()).FromJust()); |
+ v8::Local<String> str1 = v8_str(""); |
+ CHECK(!str1->BooleanValue(env.local()).FromJust()); |
+ v8::Local<String> str2 = v8_str("x"); |
+ CHECK(str2->BooleanValue(env.local()).FromJust()); |
+ CHECK(!v8::Number::New(isolate, 0)->BooleanValue(env.local()).FromJust()); |
+ CHECK(v8::Number::New(isolate, -1)->BooleanValue(env.local()).FromJust()); |
+ CHECK(v8::Number::New(isolate, 1)->BooleanValue(env.local()).FromJust()); |
+ CHECK(v8::Number::New(isolate, 42)->BooleanValue(env.local()).FromJust()); |
+ CHECK(!v8_compile("NaN") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
} |
@@ -1759,19 +1869,19 @@ static void GetM(Local<String> name, |
THREADED_TEST(GlobalPrototype) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> func_templ = |
+ v8::Local<v8::FunctionTemplate> func_templ = |
v8::FunctionTemplate::New(isolate); |
func_templ->PrototypeTemplate()->Set( |
isolate, "dummy", v8::FunctionTemplate::New(isolate, DummyCallHandler)); |
- v8::Handle<ObjectTemplate> templ = func_templ->InstanceTemplate(); |
+ v8::Local<ObjectTemplate> templ = func_templ->InstanceTemplate(); |
templ->Set(isolate, "x", v8_num(200)); |
templ->SetAccessor(v8_str("m"), GetM); |
LocalContext env(0, templ); |
- v8::Handle<Script> script(v8_compile("dummy()")); |
- v8::Handle<Value> result(script->Run()); |
- CHECK_EQ(13.4, result->NumberValue()); |
- CHECK_EQ(200, v8_compile("x")->Run()->Int32Value()); |
- CHECK_EQ(876, v8_compile("m")->Run()->Int32Value()); |
+ v8::Local<Script> script(v8_compile("dummy()")); |
+ v8::Local<Value> result(script->Run(env.local()).ToLocalChecked()); |
+ CHECK_EQ(13.4, result->NumberValue(env.local()).FromJust()); |
+ CHECK_EQ(200, v8_run_int32value(v8_compile("x"))); |
+ CHECK_EQ(876, v8_run_int32value(v8_compile("m"))); |
} |
@@ -1779,29 +1889,54 @@ THREADED_TEST(ObjectTemplate) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
Local<v8::FunctionTemplate> fun = v8::FunctionTemplate::New(isolate); |
- v8::Local<v8::String> class_name = |
- v8::String::NewFromUtf8(isolate, "the_class_name"); |
+ v8::Local<v8::String> class_name = v8_str("the_class_name"); |
fun->SetClassName(class_name); |
Local<ObjectTemplate> templ1 = ObjectTemplate::New(isolate, fun); |
templ1->Set(isolate, "x", v8_num(10)); |
templ1->Set(isolate, "y", v8_num(13)); |
LocalContext env; |
- Local<v8::Object> instance1 = templ1->NewInstance(); |
+ Local<v8::Object> instance1 = |
+ templ1->NewInstance(env.local()).ToLocalChecked(); |
CHECK(class_name->StrictEquals(instance1->GetConstructorName())); |
- env->Global()->Set(v8_str("p"), instance1); |
- CHECK(v8_compile("(p.x == 10)")->Run()->BooleanValue()); |
- CHECK(v8_compile("(p.y == 13)")->Run()->BooleanValue()); |
+ CHECK(env->Global()->Set(env.local(), v8_str("p"), instance1).FromJust()); |
+ CHECK(v8_compile("(p.x == 10)") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK(v8_compile("(p.y == 13)") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
Local<v8::FunctionTemplate> fun2 = v8::FunctionTemplate::New(isolate); |
fun2->PrototypeTemplate()->Set(isolate, "nirk", v8_num(123)); |
Local<ObjectTemplate> templ2 = fun2->InstanceTemplate(); |
templ2->Set(isolate, "a", v8_num(12)); |
templ2->Set(isolate, "b", templ1); |
- Local<v8::Object> instance2 = templ2->NewInstance(); |
- env->Global()->Set(v8_str("q"), instance2); |
- CHECK(v8_compile("(q.nirk == 123)")->Run()->BooleanValue()); |
- CHECK(v8_compile("(q.a == 12)")->Run()->BooleanValue()); |
- CHECK(v8_compile("(q.b.x == 10)")->Run()->BooleanValue()); |
- CHECK(v8_compile("(q.b.y == 13)")->Run()->BooleanValue()); |
+ Local<v8::Object> instance2 = |
+ templ2->NewInstance(env.local()).ToLocalChecked(); |
+ CHECK(env->Global()->Set(env.local(), v8_str("q"), instance2).FromJust()); |
+ CHECK(v8_compile("(q.nirk == 123)") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK(v8_compile("(q.a == 12)") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK(v8_compile("(q.b.x == 10)") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK(v8_compile("(q.b.y == 13)") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
} |
@@ -1821,7 +1956,7 @@ static void GetKnurd(Local<String> property, |
THREADED_TEST(DescriptorInheritance) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> super = v8::FunctionTemplate::New(isolate); |
+ v8::Local<v8::FunctionTemplate> super = v8::FunctionTemplate::New(isolate); |
super->PrototypeTemplate()->Set(isolate, "flabby", |
v8::FunctionTemplate::New(isolate, |
GetFlabby)); |
@@ -1829,50 +1964,121 @@ THREADED_TEST(DescriptorInheritance) { |
super->InstanceTemplate()->SetAccessor(v8_str("knurd"), GetKnurd); |
- v8::Handle<v8::FunctionTemplate> base1 = v8::FunctionTemplate::New(isolate); |
+ v8::Local<v8::FunctionTemplate> base1 = v8::FunctionTemplate::New(isolate); |
base1->Inherit(super); |
base1->PrototypeTemplate()->Set(isolate, "v1", v8_num(20.1)); |
- v8::Handle<v8::FunctionTemplate> base2 = v8::FunctionTemplate::New(isolate); |
+ v8::Local<v8::FunctionTemplate> base2 = v8::FunctionTemplate::New(isolate); |
base2->Inherit(super); |
base2->PrototypeTemplate()->Set(isolate, "v2", v8_num(10.1)); |
LocalContext env; |
- env->Global()->Set(v8_str("s"), super->GetFunction()); |
- env->Global()->Set(v8_str("base1"), base1->GetFunction()); |
- env->Global()->Set(v8_str("base2"), base2->GetFunction()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("s"), |
+ super->GetFunction(env.local()).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("base1"), |
+ base1->GetFunction(env.local()).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("base2"), |
+ base2->GetFunction(env.local()).ToLocalChecked()) |
+ .FromJust()); |
// Checks right __proto__ chain. |
- CHECK(CompileRun("base1.prototype.__proto__ == s.prototype")->BooleanValue()); |
- CHECK(CompileRun("base2.prototype.__proto__ == s.prototype")->BooleanValue()); |
+ CHECK(CompileRun("base1.prototype.__proto__ == s.prototype") |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK(CompileRun("base2.prototype.__proto__ == s.prototype") |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
- CHECK(v8_compile("s.prototype.PI == 3.14")->Run()->BooleanValue()); |
+ CHECK(v8_compile("s.prototype.PI == 3.14") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
// Instance accessor should not be visible on function object or its prototype |
- CHECK(CompileRun("s.knurd == undefined")->BooleanValue()); |
- CHECK(CompileRun("s.prototype.knurd == undefined")->BooleanValue()); |
- CHECK(CompileRun("base1.prototype.knurd == undefined")->BooleanValue()); |
- |
- env->Global()->Set(v8_str("obj"), |
- base1->GetFunction()->NewInstance()); |
- CHECK_EQ(17.2, v8_compile("obj.flabby()")->Run()->NumberValue()); |
- CHECK(v8_compile("'flabby' in obj")->Run()->BooleanValue()); |
- CHECK_EQ(15.2, v8_compile("obj.knurd")->Run()->NumberValue()); |
- CHECK(v8_compile("'knurd' in obj")->Run()->BooleanValue()); |
- CHECK_EQ(20.1, v8_compile("obj.v1")->Run()->NumberValue()); |
- |
- env->Global()->Set(v8_str("obj2"), |
- base2->GetFunction()->NewInstance()); |
- CHECK_EQ(17.2, v8_compile("obj2.flabby()")->Run()->NumberValue()); |
- CHECK(v8_compile("'flabby' in obj2")->Run()->BooleanValue()); |
- CHECK_EQ(15.2, v8_compile("obj2.knurd")->Run()->NumberValue()); |
- CHECK(v8_compile("'knurd' in obj2")->Run()->BooleanValue()); |
- CHECK_EQ(10.1, v8_compile("obj2.v2")->Run()->NumberValue()); |
+ CHECK( |
+ CompileRun("s.knurd == undefined")->BooleanValue(env.local()).FromJust()); |
+ CHECK(CompileRun("s.prototype.knurd == undefined") |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK(CompileRun("base1.prototype.knurd == undefined") |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("obj"), base1->GetFunction(env.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(env.local()) |
+ .ToLocalChecked()) |
+ .FromJust()); |
+ CHECK_EQ(17.2, v8_compile("obj.flabby()") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->NumberValue(env.local()) |
+ .FromJust()); |
+ CHECK(v8_compile("'flabby' in obj") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(15.2, v8_compile("obj.knurd") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->NumberValue(env.local()) |
+ .FromJust()); |
+ CHECK(v8_compile("'knurd' in obj") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(20.1, v8_compile("obj.v1") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->NumberValue(env.local()) |
+ .FromJust()); |
+ |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("obj2"), base2->GetFunction(env.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(env.local()) |
+ .ToLocalChecked()) |
+ .FromJust()); |
+ CHECK_EQ(17.2, v8_compile("obj2.flabby()") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->NumberValue(env.local()) |
+ .FromJust()); |
+ CHECK(v8_compile("'flabby' in obj2") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(15.2, v8_compile("obj2.knurd") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->NumberValue(env.local()) |
+ .FromJust()); |
+ CHECK(v8_compile("'knurd' in obj2") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->BooleanValue(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(10.1, v8_compile("obj2.v2") |
+ ->Run(env.local()) |
+ .ToLocalChecked() |
+ ->NumberValue(env.local()) |
+ .FromJust()); |
// base1 and base2 cannot cross reference to each's prototype |
- CHECK(v8_compile("obj.v2")->Run()->IsUndefined()); |
- CHECK(v8_compile("obj2.v1")->Run()->IsUndefined()); |
+ CHECK(v8_compile("obj.v2")->Run(env.local()).ToLocalChecked()->IsUndefined()); |
+ CHECK( |
+ v8_compile("obj2.v1")->Run(env.local()).ToLocalChecked()->IsUndefined()); |
} |
@@ -1880,15 +2086,18 @@ THREADED_TEST(DescriptorInheritance) { |
void SimpleAccessorGetter(Local<String> name, |
const v8::PropertyCallbackInfo<v8::Value>& info) { |
- Handle<Object> self = Handle<Object>::Cast(info.This()); |
- info.GetReturnValue().Set( |
- self->Get(String::Concat(v8_str("accessor_"), name))); |
+ Local<Object> self = Local<Object>::Cast(info.This()); |
+ info.GetReturnValue().Set(self->Get(info.GetIsolate()->GetCurrentContext(), |
+ String::Concat(v8_str("accessor_"), name)) |
+ .ToLocalChecked()); |
} |
void SimpleAccessorSetter(Local<String> name, Local<Value> value, |
const v8::PropertyCallbackInfo<void>& info) { |
- Handle<Object> self = Handle<Object>::Cast(info.This()); |
- self->Set(String::Concat(v8_str("accessor_"), name), value); |
+ Local<Object> self = Local<Object>::Cast(info.This()); |
+ CHECK(self->Set(info.GetIsolate()->GetCurrentContext(), |
+ String::Concat(v8_str("accessor_"), name), value) |
+ .FromJust()); |
} |
void SymbolAccessorGetter(Local<Name> name, |
@@ -1944,59 +2153,81 @@ THREADED_TEST(ExecutableAccessorIsPreservedOnAttributeChange) { |
THREADED_TEST(UndefinedIsNotEnumerable) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Handle<Value> result = CompileRun("this.propertyIsEnumerable(undefined)"); |
+ v8::Local<Value> result = CompileRun("this.propertyIsEnumerable(undefined)"); |
CHECK(result->IsFalse()); |
} |
-v8::Handle<Script> call_recursively_script; |
+v8::Local<Script> call_recursively_script; |
static const int kTargetRecursionDepth = 150; // near maximum |
static void CallScriptRecursivelyCall( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
ApiTestFuzzer::Fuzz(); |
- int depth = args.This()->Get(v8_str("depth"))->Int32Value(); |
+ v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); |
+ int depth = args.This() |
+ ->Get(context, v8_str("depth")) |
+ .ToLocalChecked() |
+ ->Int32Value(context) |
+ .FromJust(); |
if (depth == kTargetRecursionDepth) return; |
- args.This()->Set(v8_str("depth"), |
- v8::Integer::New(args.GetIsolate(), depth + 1)); |
- args.GetReturnValue().Set(call_recursively_script->Run()); |
+ CHECK(args.This() |
+ ->Set(context, v8_str("depth"), |
+ v8::Integer::New(args.GetIsolate(), depth + 1)) |
+ .FromJust()); |
+ args.GetReturnValue().Set( |
+ call_recursively_script->Run(context).ToLocalChecked()); |
} |
static void CallFunctionRecursivelyCall( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
ApiTestFuzzer::Fuzz(); |
- int depth = args.This()->Get(v8_str("depth"))->Int32Value(); |
+ v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); |
+ int depth = args.This() |
+ ->Get(context, v8_str("depth")) |
+ .ToLocalChecked() |
+ ->Int32Value(context) |
+ .FromJust(); |
if (depth == kTargetRecursionDepth) { |
printf("[depth = %d]\n", depth); |
return; |
} |
- args.This()->Set(v8_str("depth"), |
- v8::Integer::New(args.GetIsolate(), depth + 1)); |
- v8::Handle<Value> function = |
- args.This()->Get(v8_str("callFunctionRecursively")); |
- args.GetReturnValue().Set( |
- function.As<Function>()->Call(args.This(), 0, NULL)); |
+ CHECK(args.This() |
+ ->Set(context, v8_str("depth"), |
+ v8::Integer::New(args.GetIsolate(), depth + 1)) |
+ .FromJust()); |
+ v8::Local<Value> function = |
+ args.This() |
+ ->Get(context, v8_str("callFunctionRecursively")) |
+ .ToLocalChecked(); |
+ args.GetReturnValue().Set(function.As<Function>() |
+ ->Call(context, args.This(), 0, NULL) |
+ .ToLocalChecked()); |
} |
THREADED_TEST(DeepCrossLanguageRecursion) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> global = ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> global = ObjectTemplate::New(isolate); |
global->Set(v8_str("callScriptRecursively"), |
v8::FunctionTemplate::New(isolate, CallScriptRecursivelyCall)); |
global->Set(v8_str("callFunctionRecursively"), |
v8::FunctionTemplate::New(isolate, CallFunctionRecursivelyCall)); |
LocalContext env(NULL, global); |
- env->Global()->Set(v8_str("depth"), v8::Integer::New(isolate, 0)); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("depth"), v8::Integer::New(isolate, 0)) |
+ .FromJust()); |
call_recursively_script = v8_compile("callScriptRecursively()"); |
- call_recursively_script->Run(); |
- call_recursively_script = v8::Handle<Script>(); |
+ call_recursively_script->Run(env.local()).ToLocalChecked(); |
+ call_recursively_script = v8::Local<Script>(); |
- env->Global()->Set(v8_str("depth"), v8::Integer::New(isolate, 0)); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("depth"), v8::Integer::New(isolate, 0)) |
+ .FromJust()); |
CompileRun("callFunctionRecursively()"); |
} |
@@ -2022,17 +2253,20 @@ static void ThrowingPropertyHandlerSet( |
THREADED_TEST(CallbackExceptionRegression) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> obj = ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj = ObjectTemplate::New(isolate); |
obj->SetHandler(v8::NamedPropertyHandlerConfiguration( |
ThrowingPropertyHandlerGet, ThrowingPropertyHandlerSet)); |
LocalContext env; |
- env->Global()->Set(v8_str("obj"), obj->NewInstance()); |
- v8::Handle<Value> otto = |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("obj"), |
+ obj->NewInstance(env.local()).ToLocalChecked()) |
+ .FromJust()); |
+ v8::Local<Value> otto = |
CompileRun("try { with (obj) { otto; } } catch (e) { e; }"); |
- CHECK(v8_str("otto")->Equals(otto)); |
- v8::Handle<Value> netto = |
+ CHECK(v8_str("otto")->Equals(env.local(), otto).FromJust()); |
+ v8::Local<Value> netto = |
CompileRun("try { with (obj) { netto = 4; } } catch (e) { e; }"); |
- CHECK(v8_str("netto")->Equals(netto)); |
+ CHECK(v8_str("netto")->Equals(env.local(), netto).FromJust()); |
} |
@@ -2042,9 +2276,12 @@ THREADED_TEST(FunctionPrototype) { |
Local<v8::FunctionTemplate> Foo = v8::FunctionTemplate::New(isolate); |
Foo->PrototypeTemplate()->Set(v8_str("plak"), v8_num(321)); |
LocalContext env; |
- env->Global()->Set(v8_str("Foo"), Foo->GetFunction()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("Foo"), |
+ Foo->GetFunction(env.local()).ToLocalChecked()) |
+ .FromJust()); |
Local<Script> script = v8_compile("Foo.prototype.plak"); |
- CHECK_EQ(script->Run()->Int32Value(), 321); |
+ CHECK_EQ(v8_run_int32value(script), 321); |
} |
@@ -2056,11 +2293,14 @@ THREADED_TEST(InternalFields) { |
Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(isolate); |
Local<v8::ObjectTemplate> instance_templ = templ->InstanceTemplate(); |
instance_templ->SetInternalFieldCount(1); |
- Local<v8::Object> obj = templ->GetFunction()->NewInstance(); |
+ Local<v8::Object> obj = templ->GetFunction(env.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(env.local()) |
+ .ToLocalChecked(); |
CHECK_EQ(1, obj->InternalFieldCount()); |
CHECK(obj->GetInternalField(0)->IsUndefined()); |
obj->SetInternalField(0, v8_num(17)); |
- CHECK_EQ(17, obj->GetInternalField(0)->Int32Value()); |
+ CHECK_EQ(17, obj->GetInternalField(0)->Int32Value(env.local()).FromJust()); |
} |
@@ -2070,12 +2310,12 @@ THREADED_TEST(GlobalObjectInternalFields) { |
Local<v8::ObjectTemplate> global_template = v8::ObjectTemplate::New(isolate); |
global_template->SetInternalFieldCount(1); |
LocalContext env(NULL, global_template); |
- v8::Handle<v8::Object> global_proxy = env->Global(); |
- v8::Handle<v8::Object> global = global_proxy->GetPrototype().As<v8::Object>(); |
+ v8::Local<v8::Object> global_proxy = env->Global(); |
+ v8::Local<v8::Object> global = global_proxy->GetPrototype().As<v8::Object>(); |
CHECK_EQ(1, global->InternalFieldCount()); |
CHECK(global->GetInternalField(0)->IsUndefined()); |
global->SetInternalField(0, v8_num(17)); |
- CHECK_EQ(17, global->GetInternalField(0)->Int32Value()); |
+ CHECK_EQ(17, global->GetInternalField(0)->Int32Value(env.local()).FromJust()); |
} |
@@ -2084,12 +2324,12 @@ THREADED_TEST(GlobalObjectHasRealIndexedProperty) { |
v8::HandleScope scope(CcTest::isolate()); |
v8::Local<v8::Object> global = env->Global(); |
- global->Set(0, v8::String::NewFromUtf8(CcTest::isolate(), "value")); |
- CHECK(global->HasRealIndexedProperty(0)); |
+ CHECK(global->Set(env.local(), 0, v8_str("value")).FromJust()); |
+ CHECK(global->HasRealIndexedProperty(env.local(), 0).FromJust()); |
} |
-static void CheckAlignedPointerInInternalField(Handle<v8::Object> obj, |
+static void CheckAlignedPointerInInternalField(Local<v8::Object> obj, |
void* value) { |
CHECK_EQ(0, static_cast<int>(reinterpret_cast<uintptr_t>(value) & 0x1)); |
obj->SetAlignedPointerInInternalField(0, value); |
@@ -2106,7 +2346,10 @@ THREADED_TEST(InternalFieldsAlignedPointers) { |
Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(isolate); |
Local<v8::ObjectTemplate> instance_templ = templ->InstanceTemplate(); |
instance_templ->SetInternalFieldCount(1); |
- Local<v8::Object> obj = templ->GetFunction()->NewInstance(); |
+ Local<v8::Object> obj = templ->GetFunction(env.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(env.local()) |
+ .ToLocalChecked(); |
CHECK_EQ(1, obj->InternalFieldCount()); |
CheckAlignedPointerInInternalField(obj, NULL); |
@@ -2169,7 +2412,7 @@ THREADED_TEST(EmbedderDataAlignedPointers) { |
static void CheckEmbedderData(LocalContext* env, int index, |
- v8::Handle<Value> data) { |
+ v8::Local<Value> data) { |
(*env)->SetEmbedderData(index, data); |
CHECK((*env)->GetEmbedderData(index)->StrictEquals(data)); |
} |
@@ -2180,15 +2423,15 @@ THREADED_TEST(EmbedderData) { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- CheckEmbedderData( |
- &env, 3, v8::String::NewFromUtf8(isolate, "The quick brown fox jumps")); |
- CheckEmbedderData(&env, 2, |
- v8::String::NewFromUtf8(isolate, "over the lazy dog.")); |
+ CheckEmbedderData(&env, 3, v8_str("The quick brown fox jumps")); |
+ CheckEmbedderData(&env, 2, v8_str("over the lazy dog.")); |
CheckEmbedderData(&env, 1, v8::Number::New(isolate, 1.2345)); |
CheckEmbedderData(&env, 0, v8::Boolean::New(isolate, true)); |
} |
+// TODO(vogelheim): Does this test even make sense in a post-deprecation world? |
+/* |
THREADED_TEST(GetIsolate) { |
LocalContext env; |
v8::Isolate* isolate = env->GetIsolate(); |
@@ -2197,6 +2440,7 @@ THREADED_TEST(GetIsolate) { |
CHECK_EQ(isolate, obj->GetIsolate()); |
CHECK_EQ(isolate, CcTest::global()->GetIsolate()); |
} |
+*/ |
THREADED_TEST(IdentityHash) { |
@@ -2249,9 +2493,11 @@ void GlobalProxyIdentityHash(bool set_in_js) { |
v8::Isolate* isolate = env->GetIsolate(); |
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
v8::HandleScope scope(isolate); |
- Handle<Object> global_proxy = env->Global(); |
+ Local<Object> global_proxy = env->Global(); |
i::Handle<i::Object> i_global_proxy = v8::Utils::OpenHandle(*global_proxy); |
- env->Global()->Set(v8_str("global"), global_proxy); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("global"), global_proxy) |
+ .FromJust()); |
i::Handle<i::Object> original_hash; |
if (set_in_js) { |
CompileRun("var m = new Set(); m.add(global);"); |
@@ -2268,7 +2514,7 @@ void GlobalProxyIdentityHash(bool set_in_js) { |
CHECK_EQ(hash1, hash2); |
{ |
// Re-attach global proxy to a new context, hash should stay the same. |
- LocalContext env2(NULL, Handle<ObjectTemplate>(), global_proxy); |
+ LocalContext env2(NULL, Local<ObjectTemplate>(), global_proxy); |
int hash3 = global_proxy->GetIdentityHash(); |
CHECK_EQ(hash1, hash3); |
} |
@@ -2297,7 +2543,7 @@ TEST(SymbolIdentityHash) { |
} |
{ |
- v8::Handle<v8::Symbol> js_symbol = |
+ v8::Local<v8::Symbol> js_symbol = |
CompileRun("Symbol('foo')").As<v8::Symbol>(); |
int hash = js_symbol->GetIdentityHash(); |
int hash1 = js_symbol->GetIdentityHash(); |
@@ -2314,7 +2560,7 @@ TEST(StringIdentityHash) { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- Local<v8::String> str = v8::String::NewFromUtf8(isolate, "str1"); |
+ Local<v8::String> str = v8_str("str1"); |
int hash = str->GetIdentityHash(); |
int hash1 = str->GetIdentityHash(); |
CHECK_EQ(hash, hash1); |
@@ -2322,7 +2568,7 @@ TEST(StringIdentityHash) { |
int hash3 = str->GetIdentityHash(); |
CHECK_EQ(hash, hash3); |
- Local<v8::String> str2 = v8::String::NewFromUtf8(isolate, "str1"); |
+ Local<v8::String> str2 = v8_str("str1"); |
int hash4 = str2->GetIdentityHash(); |
CHECK_EQ(hash, hash4); |
} |
@@ -2345,92 +2591,145 @@ THREADED_TEST(SymbolProperties) { |
CHECK(sym2->IsSymbol()); |
CHECK(!obj->IsSymbol()); |
- CHECK(sym1->Equals(sym1)); |
- CHECK(sym2->Equals(sym2)); |
- CHECK(!sym1->Equals(sym2)); |
- CHECK(!sym2->Equals(sym1)); |
+ CHECK(sym1->Equals(env.local(), sym1).FromJust()); |
+ CHECK(sym2->Equals(env.local(), sym2).FromJust()); |
+ CHECK(!sym1->Equals(env.local(), sym2).FromJust()); |
+ CHECK(!sym2->Equals(env.local(), sym1).FromJust()); |
CHECK(sym1->StrictEquals(sym1)); |
CHECK(sym2->StrictEquals(sym2)); |
CHECK(!sym1->StrictEquals(sym2)); |
CHECK(!sym2->StrictEquals(sym1)); |
- CHECK(sym2->Name()->Equals(v8_str("my-symbol"))); |
+ CHECK(sym2->Name()->Equals(env.local(), v8_str("my-symbol")).FromJust()); |
v8::Local<v8::Value> sym_val = sym2; |
CHECK(sym_val->IsSymbol()); |
- CHECK(sym_val->Equals(sym2)); |
+ CHECK(sym_val->Equals(env.local(), sym2).FromJust()); |
CHECK(sym_val->StrictEquals(sym2)); |
- CHECK(v8::Symbol::Cast(*sym_val)->Equals(sym2)); |
+ CHECK(v8::Symbol::Cast(*sym_val)->Equals(env.local(), sym2).FromJust()); |
v8::Local<v8::Value> sym_obj = v8::SymbolObject::New(isolate, sym2); |
CHECK(sym_obj->IsSymbolObject()); |
CHECK(!sym2->IsSymbolObject()); |
CHECK(!obj->IsSymbolObject()); |
- CHECK(sym_obj->Equals(sym2)); |
+ CHECK(sym_obj->Equals(env.local(), sym2).FromJust()); |
CHECK(!sym_obj->StrictEquals(sym2)); |
- CHECK(v8::SymbolObject::Cast(*sym_obj)->Equals(sym_obj)); |
- CHECK(v8::SymbolObject::Cast(*sym_obj)->ValueOf()->Equals(sym2)); |
+ CHECK(v8::SymbolObject::Cast(*sym_obj) |
+ ->Equals(env.local(), sym_obj) |
+ .FromJust()); |
+ CHECK(v8::SymbolObject::Cast(*sym_obj) |
+ ->ValueOf() |
+ ->Equals(env.local(), sym2) |
+ .FromJust()); |
// Make sure delete of a non-existent symbol property works. |
- CHECK(obj->Delete(sym1)); |
- CHECK(!obj->Has(sym1)); |
- |
- CHECK(obj->Set(sym1, v8::Integer::New(isolate, 1503))); |
- CHECK(obj->Has(sym1)); |
- CHECK_EQ(1503, obj->Get(sym1)->Int32Value()); |
- CHECK(obj->Set(sym1, v8::Integer::New(isolate, 2002))); |
- CHECK(obj->Has(sym1)); |
- CHECK_EQ(2002, obj->Get(sym1)->Int32Value()); |
- CHECK_EQ(v8::None, obj->GetPropertyAttributes(sym1)); |
- |
- CHECK_EQ(0u, obj->GetOwnPropertyNames()->Length()); |
- unsigned num_props = obj->GetPropertyNames()->Length(); |
- CHECK(obj->Set(v8::String::NewFromUtf8(isolate, "bla"), |
- v8::Integer::New(isolate, 20))); |
- CHECK_EQ(1u, obj->GetOwnPropertyNames()->Length()); |
- CHECK_EQ(num_props + 1, obj->GetPropertyNames()->Length()); |
+ CHECK(obj->Delete(env.local(), sym1).FromJust()); |
+ CHECK(!obj->Has(env.local(), sym1).FromJust()); |
+ |
+ CHECK( |
+ obj->Set(env.local(), sym1, v8::Integer::New(isolate, 1503)).FromJust()); |
+ CHECK(obj->Has(env.local(), sym1).FromJust()); |
+ CHECK_EQ(1503, obj->Get(env.local(), sym1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK( |
+ obj->Set(env.local(), sym1, v8::Integer::New(isolate, 2002)).FromJust()); |
+ CHECK(obj->Has(env.local(), sym1).FromJust()); |
+ CHECK_EQ(2002, obj->Get(env.local(), sym1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(v8::None, obj->GetPropertyAttributes(env.local(), sym1).FromJust()); |
+ |
+ CHECK_EQ(0u, |
+ obj->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
+ unsigned num_props = |
+ obj->GetPropertyNames(env.local()).ToLocalChecked()->Length(); |
+ CHECK(obj->Set(env.local(), v8_str("bla"), v8::Integer::New(isolate, 20)) |
+ .FromJust()); |
+ CHECK_EQ(1u, |
+ obj->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
+ CHECK_EQ(num_props + 1, |
+ obj->GetPropertyNames(env.local()).ToLocalChecked()->Length()); |
CcTest::heap()->CollectAllGarbage(); |
- CHECK(obj->SetAccessor(sym3, SymbolAccessorGetter, SymbolAccessorSetter)); |
- CHECK(obj->Get(sym3)->IsUndefined()); |
- CHECK(obj->Set(sym3, v8::Integer::New(isolate, 42))); |
- CHECK(obj->Get(sym3)->Equals(v8::Integer::New(isolate, 42))); |
- CHECK(obj->Get(v8::String::NewFromUtf8(isolate, "accessor_sym3")) |
- ->Equals(v8::Integer::New(isolate, 42))); |
+ CHECK(obj->SetAccessor(env.local(), sym3, SymbolAccessorGetter, |
+ SymbolAccessorSetter) |
+ .FromJust()); |
+ CHECK(obj->Get(env.local(), sym3).ToLocalChecked()->IsUndefined()); |
+ CHECK(obj->Set(env.local(), sym3, v8::Integer::New(isolate, 42)).FromJust()); |
+ CHECK(obj->Get(env.local(), sym3) |
+ .ToLocalChecked() |
+ ->Equals(env.local(), v8::Integer::New(isolate, 42)) |
+ .FromJust()); |
+ CHECK(obj->Get(env.local(), v8_str("accessor_sym3")) |
+ .ToLocalChecked() |
+ ->Equals(env.local(), v8::Integer::New(isolate, 42)) |
+ .FromJust()); |
// Add another property and delete it afterwards to force the object in |
// slow case. |
- CHECK(obj->Set(sym2, v8::Integer::New(isolate, 2008))); |
- CHECK_EQ(2002, obj->Get(sym1)->Int32Value()); |
- CHECK_EQ(2008, obj->Get(sym2)->Int32Value()); |
- CHECK_EQ(2002, obj->Get(sym1)->Int32Value()); |
- CHECK_EQ(2u, obj->GetOwnPropertyNames()->Length()); |
- |
- CHECK(obj->Has(sym1)); |
- CHECK(obj->Has(sym2)); |
- CHECK(obj->Has(sym3)); |
- CHECK(obj->Has(v8::String::NewFromUtf8(isolate, "accessor_sym3"))); |
- CHECK(obj->Delete(sym2)); |
- CHECK(obj->Has(sym1)); |
- CHECK(!obj->Has(sym2)); |
- CHECK(obj->Has(sym3)); |
- CHECK(obj->Has(v8::String::NewFromUtf8(isolate, "accessor_sym3"))); |
- CHECK_EQ(2002, obj->Get(sym1)->Int32Value()); |
- CHECK(obj->Get(sym3)->Equals(v8::Integer::New(isolate, 42))); |
- CHECK(obj->Get(v8::String::NewFromUtf8(isolate, "accessor_sym3")) |
- ->Equals(v8::Integer::New(isolate, 42))); |
- CHECK_EQ(2u, obj->GetOwnPropertyNames()->Length()); |
+ CHECK( |
+ obj->Set(env.local(), sym2, v8::Integer::New(isolate, 2008)).FromJust()); |
+ CHECK_EQ(2002, obj->Get(env.local(), sym1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(2008, obj->Get(env.local(), sym2) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(2002, obj->Get(env.local(), sym1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(2u, |
+ obj->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
+ |
+ CHECK(obj->Has(env.local(), sym1).FromJust()); |
+ CHECK(obj->Has(env.local(), sym2).FromJust()); |
+ CHECK(obj->Has(env.local(), sym3).FromJust()); |
+ CHECK(obj->Has(env.local(), v8_str("accessor_sym3")).FromJust()); |
+ CHECK(obj->Delete(env.local(), sym2).FromJust()); |
+ CHECK(obj->Has(env.local(), sym1).FromJust()); |
+ CHECK(!obj->Has(env.local(), sym2).FromJust()); |
+ CHECK(obj->Has(env.local(), sym3).FromJust()); |
+ CHECK(obj->Has(env.local(), v8_str("accessor_sym3")).FromJust()); |
+ CHECK_EQ(2002, obj->Get(env.local(), sym1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK(obj->Get(env.local(), sym3) |
+ .ToLocalChecked() |
+ ->Equals(env.local(), v8::Integer::New(isolate, 42)) |
+ .FromJust()); |
+ CHECK(obj->Get(env.local(), v8_str("accessor_sym3")) |
+ .ToLocalChecked() |
+ ->Equals(env.local(), v8::Integer::New(isolate, 42)) |
+ .FromJust()); |
+ CHECK_EQ(2u, |
+ obj->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
// Symbol properties are inherited. |
v8::Local<v8::Object> child = v8::Object::New(isolate); |
- child->SetPrototype(obj); |
- CHECK(child->Has(sym1)); |
- CHECK_EQ(2002, child->Get(sym1)->Int32Value()); |
- CHECK(obj->Get(sym3)->Equals(v8::Integer::New(isolate, 42))); |
- CHECK(obj->Get(v8::String::NewFromUtf8(isolate, "accessor_sym3")) |
- ->Equals(v8::Integer::New(isolate, 42))); |
- CHECK_EQ(0u, child->GetOwnPropertyNames()->Length()); |
+ CHECK(child->SetPrototype(env.local(), obj).FromJust()); |
+ CHECK(child->Has(env.local(), sym1).FromJust()); |
+ CHECK_EQ(2002, child->Get(env.local(), sym1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK(obj->Get(env.local(), sym3) |
+ .ToLocalChecked() |
+ ->Equals(env.local(), v8::Integer::New(isolate, 42)) |
+ .FromJust()); |
+ CHECK(obj->Get(env.local(), v8_str("accessor_sym3")) |
+ .ToLocalChecked() |
+ ->Equals(env.local(), v8::Integer::New(isolate, 42)) |
+ .FromJust()); |
+ CHECK_EQ(0u, |
+ child->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
} |
@@ -2442,9 +2741,10 @@ THREADED_TEST(SymbolTemplateProperties) { |
v8::Local<v8::Name> name = v8::Symbol::New(isolate); |
CHECK(!name.IsEmpty()); |
foo->PrototypeTemplate()->Set(name, v8::FunctionTemplate::New(isolate)); |
- v8::Local<v8::Object> new_instance = foo->InstanceTemplate()->NewInstance(); |
+ v8::Local<v8::Object> new_instance = |
+ foo->InstanceTemplate()->NewInstance(env.local()).ToLocalChecked(); |
CHECK(!new_instance.IsEmpty()); |
- CHECK(new_instance->Has(name)); |
+ CHECK(new_instance->Has(env.local(), name).FromJust()); |
} |
@@ -2460,7 +2760,12 @@ THREADED_TEST(PrivateProperties) { |
CcTest::heap()->CollectAllGarbage(); |
- CHECK(priv2->Name()->Equals(v8::String::NewFromUtf8(isolate, "my-private"))); |
+ CHECK(priv2->Name() |
+ ->Equals(env.local(), |
+ v8::String::NewFromUtf8(isolate, "my-private", |
+ v8::NewStringType::kNormal) |
+ .ToLocalChecked()) |
+ .FromJust()); |
// Make sure delete of a non-existent private symbol property works. |
obj->DeletePrivate(env.local(), priv1).FromJust(); |
@@ -2469,20 +2774,31 @@ THREADED_TEST(PrivateProperties) { |
CHECK(obj->SetPrivate(env.local(), priv1, v8::Integer::New(isolate, 1503)) |
.FromJust()); |
CHECK(obj->HasPrivate(env.local(), priv1).FromJust()); |
- CHECK_EQ(1503, |
- obj->GetPrivate(env.local(), priv1).ToLocalChecked()->Int32Value()); |
+ CHECK_EQ(1503, obj->GetPrivate(env.local(), priv1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
CHECK(obj->SetPrivate(env.local(), priv1, v8::Integer::New(isolate, 2002)) |
.FromJust()); |
CHECK(obj->HasPrivate(env.local(), priv1).FromJust()); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), priv1).ToLocalChecked()->Int32Value()); |
- |
- CHECK_EQ(0u, obj->GetOwnPropertyNames()->Length()); |
- unsigned num_props = obj->GetPropertyNames()->Length(); |
- CHECK(obj->Set(v8::String::NewFromUtf8(isolate, "bla"), |
- v8::Integer::New(isolate, 20))); |
- CHECK_EQ(1u, obj->GetOwnPropertyNames()->Length()); |
- CHECK_EQ(num_props + 1, obj->GetPropertyNames()->Length()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), priv1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ |
+ CHECK_EQ(0u, |
+ obj->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
+ unsigned num_props = |
+ obj->GetPropertyNames(env.local()).ToLocalChecked()->Length(); |
+ CHECK(obj->Set(env.local(), v8::String::NewFromUtf8( |
+ isolate, "bla", v8::NewStringType::kNormal) |
+ .ToLocalChecked(), |
+ v8::Integer::New(isolate, 20)) |
+ .FromJust()); |
+ CHECK_EQ(1u, |
+ obj->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
+ CHECK_EQ(num_props + 1, |
+ obj->GetPropertyNames(env.local()).ToLocalChecked()->Length()); |
CcTest::heap()->CollectAllGarbage(); |
@@ -2490,28 +2806,39 @@ THREADED_TEST(PrivateProperties) { |
// slow case. |
CHECK(obj->SetPrivate(env.local(), priv2, v8::Integer::New(isolate, 2008)) |
.FromJust()); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), priv1).ToLocalChecked()->Int32Value()); |
- CHECK_EQ(2008, |
- obj->GetPrivate(env.local(), priv2).ToLocalChecked()->Int32Value()); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), priv1).ToLocalChecked()->Int32Value()); |
- CHECK_EQ(1u, obj->GetOwnPropertyNames()->Length()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), priv1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(2008, obj->GetPrivate(env.local(), priv2) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), priv1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(1u, |
+ obj->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
CHECK(obj->HasPrivate(env.local(), priv1).FromJust()); |
CHECK(obj->HasPrivate(env.local(), priv2).FromJust()); |
CHECK(obj->DeletePrivate(env.local(), priv2).FromJust()); |
CHECK(obj->HasPrivate(env.local(), priv1).FromJust()); |
CHECK(!obj->HasPrivate(env.local(), priv2).FromJust()); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), priv1).ToLocalChecked()->Int32Value()); |
- CHECK_EQ(1u, obj->GetOwnPropertyNames()->Length()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), priv1) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(1u, |
+ obj->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
// Private properties are not inherited (for the time being). |
v8::Local<v8::Object> child = v8::Object::New(isolate); |
- child->SetPrototype(obj); |
+ CHECK(child->SetPrototype(env.local(), obj).FromJust()); |
CHECK(!child->HasPrivate(env.local(), priv1).FromJust()); |
- CHECK_EQ(0u, child->GetOwnPropertyNames()->Length()); |
+ CHECK_EQ(0u, |
+ child->GetOwnPropertyNames(env.local()).ToLocalChecked()->Length()); |
} |
@@ -2534,7 +2861,8 @@ THREADED_TEST(GlobalSymbols) { |
CHECK(!sym->SameValue(glob)); |
CompileRun("var sym2 = Symbol.for('my-symbol')"); |
- v8::Local<Value> sym2 = env->Global()->Get(v8_str("sym2")); |
+ v8::Local<Value> sym2 = |
+ env->Global()->Get(env.local(), v8_str("sym2")).ToLocalChecked(); |
CHECK(sym2->SameValue(glob)); |
CHECK(!sym2->SameValue(glob_api)); |
} |
@@ -2549,7 +2877,8 @@ static void CheckWellKnownSymbol(v8::Local<v8::Symbol>(*getter)(v8::Isolate*), |
v8::Local<v8::Symbol> symbol = getter(isolate); |
std::string script = std::string("var sym = ") + name; |
CompileRun(script.c_str()); |
- v8::Local<Value> value = env->Global()->Get(v8_str("sym")); |
+ v8::Local<Value> value = |
+ env->Global()->Get(env.local(), v8_str("sym")).ToLocalChecked(); |
CHECK(!value.IsEmpty()); |
CHECK(!symbol.IsEmpty()); |
@@ -2582,8 +2911,9 @@ THREADED_TEST(GlobalPrivates) { |
CHECK(!obj->HasPrivate(env.local(), priv).FromJust()); |
CompileRun("var intern = %CreatePrivateSymbol('my-private')"); |
- v8::Local<Value> intern = env->Global()->Get(v8_str("intern")); |
- CHECK(!obj->Has(intern)); |
+ v8::Local<Value> intern = |
+ env->Global()->Get(env.local(), v8_str("intern")).ToLocalChecked(); |
+ CHECK(!obj->Has(env.local(), intern).FromJust()); |
} |
@@ -2600,10 +2930,12 @@ class ScopedArrayBufferContents { |
}; |
template <typename T> |
-static void CheckInternalFieldsAreZero(v8::Handle<T> value) { |
+static void CheckInternalFieldsAreZero(v8::Local<T> value) { |
CHECK_EQ(T::kInternalFieldCount, value->InternalFieldCount()); |
for (int i = 0; i < value->InternalFieldCount(); i++) { |
- CHECK_EQ(0, value->GetInternalField(i)->Int32Value()); |
+ CHECK_EQ(0, value->GetInternalField(i) |
+ ->Int32Value(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
} |
} |
@@ -2625,23 +2957,23 @@ THREADED_TEST(ArrayBuffer_ApiInternalToExternal) { |
CHECK_EQ(1024, static_cast<int>(ab_contents.ByteLength())); |
uint8_t* data = static_cast<uint8_t*>(ab_contents.Data()); |
DCHECK(data != NULL); |
- env->Global()->Set(v8_str("ab"), ab); |
+ CHECK(env->Global()->Set(env.local(), v8_str("ab"), ab).FromJust()); |
- v8::Handle<v8::Value> result = CompileRun("ab.byteLength"); |
- CHECK_EQ(1024, result->Int32Value()); |
+ v8::Local<v8::Value> result = CompileRun("ab.byteLength"); |
+ CHECK_EQ(1024, result->Int32Value(env.local()).FromJust()); |
result = CompileRun( |
"var u8 = new Uint8Array(ab);" |
"u8[0] = 0xFF;" |
"u8[1] = 0xAA;" |
"u8.length"); |
- CHECK_EQ(1024, result->Int32Value()); |
+ CHECK_EQ(1024, result->Int32Value(env.local()).FromJust()); |
CHECK_EQ(0xFF, data[0]); |
CHECK_EQ(0xAA, data[1]); |
data[0] = 0xCC; |
data[1] = 0x11; |
result = CompileRun("u8[0] + u8[1]"); |
- CHECK_EQ(0xDD, result->Int32Value()); |
+ CHECK_EQ(0xDD, result->Int32Value(env.local()).FromJust()); |
} |
@@ -2664,18 +2996,18 @@ THREADED_TEST(ArrayBuffer_JSInternalToExternal) { |
CHECK(ab1->IsExternal()); |
result = CompileRun("ab1.byteLength"); |
- CHECK_EQ(2, result->Int32Value()); |
+ CHECK_EQ(2, result->Int32Value(env.local()).FromJust()); |
result = CompileRun("u8_a[0]"); |
- CHECK_EQ(0xAA, result->Int32Value()); |
+ CHECK_EQ(0xAA, result->Int32Value(env.local()).FromJust()); |
result = CompileRun("u8_a[1]"); |
- CHECK_EQ(0xFF, result->Int32Value()); |
+ CHECK_EQ(0xFF, result->Int32Value(env.local()).FromJust()); |
result = CompileRun( |
"var u8_b = new Uint8Array(ab1);" |
"u8_b[0] = 0xBB;" |
"u8_a[0]"); |
- CHECK_EQ(0xBB, result->Int32Value()); |
+ CHECK_EQ(0xBB, result->Int32Value(env.local()).FromJust()); |
result = CompileRun("u8_b[1]"); |
- CHECK_EQ(0xFF, result->Int32Value()); |
+ CHECK_EQ(0xFF, result->Int32Value(env.local()).FromJust()); |
CHECK_EQ(2, static_cast<int>(ab1_contents.ByteLength())); |
uint8_t* ab1_data = static_cast<uint8_t*>(ab1_contents.Data()); |
@@ -2684,7 +3016,7 @@ THREADED_TEST(ArrayBuffer_JSInternalToExternal) { |
ab1_data[0] = 0xCC; |
ab1_data[1] = 0x11; |
result = CompileRun("u8_a[0] + u8_a[1]"); |
- CHECK_EQ(0xDD, result->Int32Value()); |
+ CHECK_EQ(0xDD, result->Int32Value(env.local()).FromJust()); |
} |
@@ -2701,23 +3033,23 @@ THREADED_TEST(ArrayBuffer_External) { |
CHECK_EQ(100, static_cast<int>(ab3->ByteLength())); |
CHECK(ab3->IsExternal()); |
- env->Global()->Set(v8_str("ab3"), ab3); |
+ CHECK(env->Global()->Set(env.local(), v8_str("ab3"), ab3).FromJust()); |
- v8::Handle<v8::Value> result = CompileRun("ab3.byteLength"); |
- CHECK_EQ(100, result->Int32Value()); |
+ v8::Local<v8::Value> result = CompileRun("ab3.byteLength"); |
+ CHECK_EQ(100, result->Int32Value(env.local()).FromJust()); |
result = CompileRun( |
"var u8_b = new Uint8Array(ab3);" |
"u8_b[0] = 0xBB;" |
"u8_b[1] = 0xCC;" |
"u8_b.length"); |
- CHECK_EQ(100, result->Int32Value()); |
+ CHECK_EQ(100, result->Int32Value(env.local()).FromJust()); |
CHECK_EQ(0xBB, my_data[0]); |
CHECK_EQ(0xCC, my_data[1]); |
my_data[0] = 0xCC; |
my_data[1] = 0x11; |
result = CompileRun("u8_b[0] + u8_b[1]"); |
- CHECK_EQ(0xDD, result->Int32Value()); |
+ CHECK_EQ(0xDD, result->Int32Value(env.local()).FromJust()); |
} |
@@ -2739,13 +3071,13 @@ THREADED_TEST(ArrayBuffer_DisableNeuter) { |
} |
-static void CheckDataViewIsNeutered(v8::Handle<v8::DataView> dv) { |
+static void CheckDataViewIsNeutered(v8::Local<v8::DataView> dv) { |
CHECK_EQ(0, static_cast<int>(dv->ByteLength())); |
CHECK_EQ(0, static_cast<int>(dv->ByteOffset())); |
} |
-static void CheckIsNeutered(v8::Handle<v8::TypedArray> ta) { |
+static void CheckIsNeutered(v8::Local<v8::TypedArray> ta) { |
CHECK_EQ(0, static_cast<int>(ta->ByteLength())); |
CHECK_EQ(0, static_cast<int>(ta->Length())); |
CHECK_EQ(0, static_cast<int>(ta->ByteOffset())); |
@@ -2758,16 +3090,16 @@ static void CheckIsTypedArrayVarNeutered(const char* name) { |
"%s.byteLength == 0 && %s.byteOffset == 0 && %s.length == 0", |
name, name, name); |
CHECK(CompileRun(source.start())->IsTrue()); |
- v8::Handle<v8::TypedArray> ta = |
- v8::Handle<v8::TypedArray>::Cast(CompileRun(name)); |
+ v8::Local<v8::TypedArray> ta = |
+ v8::Local<v8::TypedArray>::Cast(CompileRun(name)); |
CheckIsNeutered(ta); |
} |
template <typename TypedArray, int kElementSize> |
-static Handle<TypedArray> CreateAndCheck(Handle<v8::ArrayBuffer> ab, |
- int byteOffset, int length) { |
- v8::Handle<TypedArray> ta = TypedArray::New(ab, byteOffset, length); |
+static Local<TypedArray> CreateAndCheck(Local<v8::ArrayBuffer> ab, |
+ int byteOffset, int length) { |
+ v8::Local<TypedArray> ta = TypedArray::New(ab, byteOffset, length); |
CheckInternalFieldsAreZero<v8::ArrayBufferView>(ta); |
CHECK_EQ(byteOffset, static_cast<int>(ta->ByteOffset())); |
CHECK_EQ(length, static_cast<int>(ta->Length())); |
@@ -2781,31 +3113,31 @@ THREADED_TEST(ArrayBuffer_NeuteringApi) { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ArrayBuffer> buffer = v8::ArrayBuffer::New(isolate, 1024); |
+ v8::Local<v8::ArrayBuffer> buffer = v8::ArrayBuffer::New(isolate, 1024); |
- v8::Handle<v8::Uint8Array> u8a = |
+ v8::Local<v8::Uint8Array> u8a = |
CreateAndCheck<v8::Uint8Array, 1>(buffer, 1, 1023); |
- v8::Handle<v8::Uint8ClampedArray> u8c = |
+ v8::Local<v8::Uint8ClampedArray> u8c = |
CreateAndCheck<v8::Uint8ClampedArray, 1>(buffer, 1, 1023); |
- v8::Handle<v8::Int8Array> i8a = |
+ v8::Local<v8::Int8Array> i8a = |
CreateAndCheck<v8::Int8Array, 1>(buffer, 1, 1023); |
- v8::Handle<v8::Uint16Array> u16a = |
+ v8::Local<v8::Uint16Array> u16a = |
CreateAndCheck<v8::Uint16Array, 2>(buffer, 2, 511); |
- v8::Handle<v8::Int16Array> i16a = |
+ v8::Local<v8::Int16Array> i16a = |
CreateAndCheck<v8::Int16Array, 2>(buffer, 2, 511); |
- v8::Handle<v8::Uint32Array> u32a = |
+ v8::Local<v8::Uint32Array> u32a = |
CreateAndCheck<v8::Uint32Array, 4>(buffer, 4, 255); |
- v8::Handle<v8::Int32Array> i32a = |
+ v8::Local<v8::Int32Array> i32a = |
CreateAndCheck<v8::Int32Array, 4>(buffer, 4, 255); |
- v8::Handle<v8::Float32Array> f32a = |
+ v8::Local<v8::Float32Array> f32a = |
CreateAndCheck<v8::Float32Array, 4>(buffer, 4, 255); |
- v8::Handle<v8::Float64Array> f64a = |
+ v8::Local<v8::Float64Array> f64a = |
CreateAndCheck<v8::Float64Array, 8>(buffer, 8, 127); |
- v8::Handle<v8::DataView> dv = v8::DataView::New(buffer, 1, 1023); |
+ v8::Local<v8::DataView> dv = v8::DataView::New(buffer, 1, 1023); |
CheckInternalFieldsAreZero<v8::ArrayBufferView>(dv); |
CHECK_EQ(1, static_cast<int>(dv->ByteOffset())); |
CHECK_EQ(1023, static_cast<int>(dv->ByteLength())); |
@@ -2844,16 +3176,15 @@ THREADED_TEST(ArrayBuffer_NeuteringScript) { |
"var f64a = new Float64Array(ab, 8, 127);" |
"var dv = new DataView(ab, 1, 1023);"); |
- v8::Handle<v8::ArrayBuffer> ab = |
+ v8::Local<v8::ArrayBuffer> ab = |
Local<v8::ArrayBuffer>::Cast(CompileRun("ab")); |
- v8::Handle<v8::DataView> dv = |
- v8::Handle<v8::DataView>::Cast(CompileRun("dv")); |
+ v8::Local<v8::DataView> dv = v8::Local<v8::DataView>::Cast(CompileRun("dv")); |
ScopedArrayBufferContents contents(ab->Externalize()); |
ab->Neuter(); |
CHECK_EQ(0, static_cast<int>(ab->ByteLength())); |
- CHECK_EQ(0, CompileRun("ab.byteLength")->Int32Value()); |
+ CHECK_EQ(0, v8_run_int32value(v8_compile("ab.byteLength"))); |
CheckIsTypedArrayVarNeutered("u8a"); |
CheckIsTypedArrayVarNeutered("u8c"); |
@@ -2902,23 +3233,23 @@ THREADED_TEST(SharedArrayBuffer_ApiInternalToExternal) { |
CHECK_EQ(1024, static_cast<int>(ab_contents.ByteLength())); |
uint8_t* data = static_cast<uint8_t*>(ab_contents.Data()); |
DCHECK(data != NULL); |
- env->Global()->Set(v8_str("ab"), ab); |
+ CHECK(env->Global()->Set(env.local(), v8_str("ab"), ab).FromJust()); |
- v8::Handle<v8::Value> result = CompileRun("ab.byteLength"); |
- CHECK_EQ(1024, result->Int32Value()); |
+ v8::Local<v8::Value> result = CompileRun("ab.byteLength"); |
+ CHECK_EQ(1024, result->Int32Value(env.local()).FromJust()); |
result = CompileRun( |
"var u8 = new Uint8Array(ab);" |
"u8[0] = 0xFF;" |
"u8[1] = 0xAA;" |
"u8.length"); |
- CHECK_EQ(1024, result->Int32Value()); |
+ CHECK_EQ(1024, result->Int32Value(env.local()).FromJust()); |
CHECK_EQ(0xFF, data[0]); |
CHECK_EQ(0xAA, data[1]); |
data[0] = 0xCC; |
data[1] = 0x11; |
result = CompileRun("u8[0] + u8[1]"); |
- CHECK_EQ(0xDD, result->Int32Value()); |
+ CHECK_EQ(0xDD, result->Int32Value(env.local()).FromJust()); |
} |
@@ -2942,18 +3273,18 @@ THREADED_TEST(SharedArrayBuffer_JSInternalToExternal) { |
CHECK(ab1->IsExternal()); |
result = CompileRun("ab1.byteLength"); |
- CHECK_EQ(2, result->Int32Value()); |
+ CHECK_EQ(2, result->Int32Value(env.local()).FromJust()); |
result = CompileRun("u8_a[0]"); |
- CHECK_EQ(0xAA, result->Int32Value()); |
+ CHECK_EQ(0xAA, result->Int32Value(env.local()).FromJust()); |
result = CompileRun("u8_a[1]"); |
- CHECK_EQ(0xFF, result->Int32Value()); |
+ CHECK_EQ(0xFF, result->Int32Value(env.local()).FromJust()); |
result = CompileRun( |
"var u8_b = new Uint8Array(ab1);" |
"u8_b[0] = 0xBB;" |
"u8_a[0]"); |
- CHECK_EQ(0xBB, result->Int32Value()); |
+ CHECK_EQ(0xBB, result->Int32Value(env.local()).FromJust()); |
result = CompileRun("u8_b[1]"); |
- CHECK_EQ(0xFF, result->Int32Value()); |
+ CHECK_EQ(0xFF, result->Int32Value(env.local()).FromJust()); |
CHECK_EQ(2, static_cast<int>(ab1_contents.ByteLength())); |
uint8_t* ab1_data = static_cast<uint8_t*>(ab1_contents.Data()); |
@@ -2962,7 +3293,7 @@ THREADED_TEST(SharedArrayBuffer_JSInternalToExternal) { |
ab1_data[0] = 0xCC; |
ab1_data[1] = 0x11; |
result = CompileRun("u8_a[0] + u8_a[1]"); |
- CHECK_EQ(0xDD, result->Int32Value()); |
+ CHECK_EQ(0xDD, result->Int32Value(env.local()).FromJust()); |
} |
@@ -2980,23 +3311,23 @@ THREADED_TEST(SharedArrayBuffer_External) { |
CHECK_EQ(100, static_cast<int>(ab3->ByteLength())); |
CHECK(ab3->IsExternal()); |
- env->Global()->Set(v8_str("ab3"), ab3); |
+ CHECK(env->Global()->Set(env.local(), v8_str("ab3"), ab3).FromJust()); |
- v8::Handle<v8::Value> result = CompileRun("ab3.byteLength"); |
- CHECK_EQ(100, result->Int32Value()); |
+ v8::Local<v8::Value> result = CompileRun("ab3.byteLength"); |
+ CHECK_EQ(100, result->Int32Value(env.local()).FromJust()); |
result = CompileRun( |
"var u8_b = new Uint8Array(ab3);" |
"u8_b[0] = 0xBB;" |
"u8_b[1] = 0xCC;" |
"u8_b.length"); |
- CHECK_EQ(100, result->Int32Value()); |
+ CHECK_EQ(100, result->Int32Value(env.local()).FromJust()); |
CHECK_EQ(0xBB, my_data[0]); |
CHECK_EQ(0xCC, my_data[1]); |
my_data[0] = 0xCC; |
my_data[1] = 0x11; |
result = CompileRun("u8_b[0] + u8_b[1]"); |
- CHECK_EQ(0xDD, result->Int32Value()); |
+ CHECK_EQ(0xDD, result->Int32Value(env.local()).FromJust()); |
} |
@@ -3018,40 +3349,64 @@ THREADED_TEST(HiddenProperties) { |
CHECK(obj->SetPrivate(env.local(), key, v8::Integer::New(isolate, 1503)) |
.FromJust()); |
- CHECK_EQ(1503, |
- obj->GetPrivate(env.local(), key).ToLocalChecked()->Int32Value()); |
+ CHECK_EQ(1503, obj->GetPrivate(env.local(), key) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
CHECK(obj->SetPrivate(env.local(), key, v8::Integer::New(isolate, 2002)) |
.FromJust()); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), key).ToLocalChecked()->Int32Value()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), key) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
CcTest::heap()->CollectAllGarbage(); |
// Make sure we do not find the hidden property. |
- CHECK(!obj->Has(empty)); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), key).ToLocalChecked()->Int32Value()); |
- CHECK(obj->Get(empty)->IsUndefined()); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), key).ToLocalChecked()->Int32Value()); |
- CHECK(obj->Set(empty, v8::Integer::New(isolate, 2003))); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), key).ToLocalChecked()->Int32Value()); |
- CHECK_EQ(2003, obj->Get(empty)->Int32Value()); |
+ CHECK(!obj->Has(env.local(), empty).FromJust()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), key) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK(obj->Get(env.local(), empty).ToLocalChecked()->IsUndefined()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), key) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK( |
+ obj->Set(env.local(), empty, v8::Integer::New(isolate, 2003)).FromJust()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), key) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(2003, obj->Get(env.local(), empty) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
CcTest::heap()->CollectAllGarbage(); |
// Add another property and delete it afterwards to force the object in |
// slow case. |
- CHECK(obj->Set(prop_name, v8::Integer::New(isolate, 2008))); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), key).ToLocalChecked()->Int32Value()); |
- CHECK_EQ(2008, obj->Get(prop_name)->Int32Value()); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), key).ToLocalChecked()->Int32Value()); |
- CHECK(obj->Delete(prop_name)); |
- CHECK_EQ(2002, |
- obj->GetPrivate(env.local(), key).ToLocalChecked()->Int32Value()); |
+ CHECK(obj->Set(env.local(), prop_name, v8::Integer::New(isolate, 2008)) |
+ .FromJust()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), key) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(2008, obj->Get(env.local(), prop_name) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), key) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
+ CHECK(obj->Delete(env.local(), prop_name).FromJust()); |
+ CHECK_EQ(2002, obj->GetPrivate(env.local(), key) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
CcTest::heap()->CollectAllGarbage(); |
@@ -3089,8 +3444,10 @@ THREADED_TEST(Regress97784) { |
obj->SetPrivate(env.local(), key, v8::Integer::New(env->GetIsolate(), 42)) |
.FromJust()); |
ExpectFalse("set_called"); |
- CHECK_EQ(42, |
- obj->GetPrivate(env.local(), key).ToLocalChecked()->Int32Value()); |
+ CHECK_EQ(42, obj->GetPrivate(env.local(), key) |
+ .ToLocalChecked() |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
} |
@@ -3099,9 +3456,9 @@ THREADED_TEST(External) { |
int x = 3; |
Local<v8::External> ext = v8::External::New(CcTest::isolate(), &x); |
LocalContext env; |
- env->Global()->Set(v8_str("ext"), ext); |
+ CHECK(env->Global()->Set(env.local(), v8_str("ext"), ext).FromJust()); |
Local<Value> reext_obj = CompileRun("this.ext"); |
- v8::Handle<v8::External> reext = reext_obj.As<v8::External>(); |
+ v8::Local<v8::External> reext = reext_obj.As<v8::External>(); |
int* ptr = static_cast<int*>(reext->Value()); |
CHECK_EQ(x, 3); |
*ptr = 10; |
@@ -3397,7 +3754,7 @@ Local<v8::Object> NewObjectForIntKey( |
v8::Isolate* isolate, const v8::Global<v8::ObjectTemplate>& templ, |
int key) { |
auto local = Local<v8::ObjectTemplate>::New(isolate, templ); |
- auto obj = local->NewInstance(); |
+ auto obj = local->NewInstance(isolate->GetCurrentContext()).ToLocalChecked(); |
obj->SetAlignedPointerInInternalField(0, IntKeyToVoidPointer(key)); |
return obj; |
} |
@@ -3468,7 +3825,7 @@ void TestGlobalValueMap() { |
map.Set(7, expected); |
CHECK_EQ(1, static_cast<int>(map.Size())); |
obj = map.Get(7); |
- CHECK(expected->Equals(obj)); |
+ CHECK(expected->Equals(env.local(), obj).FromJust()); |
{ |
typename Map::PersistentValueReference ref = map.GetReference(7); |
CHECK(expected->Equals(ref.NewLocal(isolate))); |
@@ -3553,10 +3910,10 @@ TEST(PersistentValueVector) { |
CHECK(!vector.IsEmpty()); |
CHECK_EQ(5, static_cast<int>(vector.Size())); |
CHECK(obj3.IsEmpty()); |
- CHECK(obj1->Equals(vector.Get(0))); |
- CHECK(obj1->Equals(vector.Get(2))); |
- CHECK(obj1->Equals(vector.Get(4))); |
- CHECK(obj2->Equals(vector.Get(1))); |
+ CHECK(obj1->Equals(env.local(), vector.Get(0)).FromJust()); |
+ CHECK(obj1->Equals(env.local(), vector.Get(2)).FromJust()); |
+ CHECK(obj1->Equals(env.local(), vector.Get(4)).FromJust()); |
+ CHECK(obj2->Equals(env.local(), vector.Get(1)).FromJust()); |
CHECK_EQ(5 + handle_count, global_handles->global_handles_count()); |
@@ -3707,9 +4064,11 @@ THREADED_TEST(ApiObjectGroups) { |
{ |
HandleScope scope(iso); |
CHECK(Local<Object>::New(iso, g1s2.handle.As<Object>()) |
- ->Set(0, Local<Value>::New(iso, g2s2.handle))); |
+ ->Set(env.local(), 0, Local<Value>::New(iso, g2s2.handle)) |
+ .FromJust()); |
CHECK(Local<Object>::New(iso, g2s1.handle.As<Object>()) |
- ->Set(0, Local<Value>::New(iso, g1s1.handle))); |
+ ->Set(env.local(), 0, Local<Value>::New(iso, g1s1.handle)) |
+ .FromJust()); |
} |
{ |
@@ -3783,8 +4142,8 @@ THREADED_TEST(ApiObjectGroupsForSubtypes) { |
{ |
HandleScope scope(iso); |
g1s1.handle.Reset(iso, Object::New(iso)); |
- g1s2.handle.Reset(iso, String::NewFromUtf8(iso, "foo1")); |
- g1c1.handle.Reset(iso, String::NewFromUtf8(iso, "foo2")); |
+ g1s2.handle.Reset(iso, v8_str("foo1")); |
+ g1c1.handle.Reset(iso, v8_str("foo2")); |
g1s1.handle.SetWeak(&g1s1, &WeakPointerCallback, |
v8::WeakCallbackType::kParameter); |
g1s2.handle.SetWeak(&g1s2, &WeakPointerCallback, |
@@ -3793,8 +4152,8 @@ THREADED_TEST(ApiObjectGroupsForSubtypes) { |
v8::WeakCallbackType::kParameter); |
g2s1.handle.Reset(iso, Object::New(iso)); |
- g2s2.handle.Reset(iso, String::NewFromUtf8(iso, "foo3")); |
- g2c1.handle.Reset(iso, String::NewFromUtf8(iso, "foo4")); |
+ g2s2.handle.Reset(iso, v8_str("foo3")); |
+ g2c1.handle.Reset(iso, v8_str("foo4")); |
g2s1.handle.SetWeak(&g2s1, &WeakPointerCallback, |
v8::WeakCallbackType::kParameter); |
g2s2.handle.SetWeak(&g2s2, &WeakPointerCallback, |
@@ -3810,9 +4169,11 @@ THREADED_TEST(ApiObjectGroupsForSubtypes) { |
{ |
HandleScope scope(iso); |
CHECK(Local<Object>::New(iso, g1s1.handle) |
- ->Set(0, Local<Object>::New(iso, g2s1.handle))); |
+ ->Set(env.local(), 0, Local<Object>::New(iso, g2s1.handle)) |
+ .FromJust()); |
CHECK(Local<Object>::New(iso, g2s1.handle) |
- ->Set(0, Local<Object>::New(iso, g1s1.handle))); |
+ ->Set(env.local(), 0, Local<Object>::New(iso, g1s1.handle)) |
+ .FromJust()); |
} |
{ |
@@ -4048,15 +4409,18 @@ TEST(ApiObjectGroupsCycleForScavenger) { |
iso->SetObjectGroupId(g1s1.handle, UniqueId(1)); |
iso->SetObjectGroupId(g1s2.handle, UniqueId(1)); |
Local<Object>::New(iso, g1s1.handle.As<Object>()) |
- ->Set(v8_str("x"), Local<Value>::New(iso, g2s1.handle)); |
+ ->Set(env.local(), v8_str("x"), Local<Value>::New(iso, g2s1.handle)) |
+ .FromJust(); |
iso->SetObjectGroupId(g2s1.handle, UniqueId(2)); |
iso->SetObjectGroupId(g2s2.handle, UniqueId(2)); |
Local<Object>::New(iso, g2s1.handle.As<Object>()) |
- ->Set(v8_str("x"), Local<Value>::New(iso, g3s1.handle)); |
+ ->Set(env.local(), v8_str("x"), Local<Value>::New(iso, g3s1.handle)) |
+ .FromJust(); |
iso->SetObjectGroupId(g3s1.handle, UniqueId(3)); |
iso->SetObjectGroupId(g3s2.handle, UniqueId(3)); |
Local<Object>::New(iso, g3s1.handle.As<Object>()) |
- ->Set(v8_str("x"), Local<Value>::New(iso, g1s1.handle)); |
+ ->Set(env.local(), v8_str("x"), Local<Value>::New(iso, g1s1.handle)) |
+ .FromJust(); |
} |
v8::internal::Heap* heap = |
@@ -4083,15 +4447,18 @@ TEST(ApiObjectGroupsCycleForScavenger) { |
iso->SetObjectGroupId(g1s1.handle, UniqueId(1)); |
iso->SetObjectGroupId(g1s2.handle, UniqueId(1)); |
Local<Object>::New(iso, g1s1.handle.As<Object>()) |
- ->Set(v8_str("x"), Local<Value>::New(iso, g2s1.handle)); |
+ ->Set(env.local(), v8_str("x"), Local<Value>::New(iso, g2s1.handle)) |
+ .FromJust(); |
iso->SetObjectGroupId(g2s1.handle, UniqueId(2)); |
iso->SetObjectGroupId(g2s2.handle, UniqueId(2)); |
Local<Object>::New(iso, g2s1.handle.As<Object>()) |
- ->Set(v8_str("x"), Local<Value>::New(iso, g3s1.handle)); |
+ ->Set(env.local(), v8_str("x"), Local<Value>::New(iso, g3s1.handle)) |
+ .FromJust(); |
iso->SetObjectGroupId(g3s1.handle, UniqueId(3)); |
iso->SetObjectGroupId(g3s2.handle, UniqueId(3)); |
Local<Object>::New(iso, g3s1.handle.As<Object>()) |
- ->Set(v8_str("x"), Local<Value>::New(iso, g1s1.handle)); |
+ ->Set(env.local(), v8_str("x"), Local<Value>::New(iso, g1s1.handle)) |
+ .FromJust(); |
} |
heap->CollectAllGarbage(); |
@@ -4106,7 +4473,7 @@ THREADED_TEST(ScriptException) { |
v8::HandleScope scope(env->GetIsolate()); |
Local<Script> script = v8_compile("throw 'panama!';"); |
v8::TryCatch try_catch(env->GetIsolate()); |
- Local<Value> result = script->Run(); |
+ v8::MaybeLocal<Value> result = script->Run(env.local()); |
CHECK(result.IsEmpty()); |
CHECK(try_catch.HasCaught()); |
String::Utf8Value exception_value(try_catch.Exception()); |
@@ -4124,19 +4491,26 @@ TEST(TryCatchCustomException) { |
"(function f() { throw new CustomError(); })();"); |
CHECK(try_catch.HasCaught()); |
CHECK(try_catch.Exception() |
- ->ToObject(isolate) |
- ->Get(v8_str("a")) |
- ->Equals(v8_str("b"))); |
+ ->ToObject(env.local()) |
+ .ToLocalChecked() |
+ ->Get(env.local(), v8_str("a")) |
+ .ToLocalChecked() |
+ ->Equals(env.local(), v8_str("b")) |
+ .FromJust()); |
} |
bool message_received; |
-static void check_message_0(v8::Handle<v8::Message> message, |
- v8::Handle<Value> data) { |
- CHECK_EQ(5.76, data->NumberValue()); |
- CHECK_EQ(6.75, message->GetScriptOrigin().ResourceName()->NumberValue()); |
+static void check_message_0(v8::Local<v8::Message> message, |
+ v8::Local<Value> data) { |
+ CHECK_EQ(5.76, data->NumberValue(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
+ CHECK_EQ(6.75, message->GetScriptOrigin() |
+ .ResourceName() |
+ ->NumberValue(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
CHECK(!message->IsSharedCrossOrigin()); |
message_received = true; |
} |
@@ -4147,19 +4521,20 @@ THREADED_TEST(MessageHandler0) { |
v8::HandleScope scope(CcTest::isolate()); |
CHECK(!message_received); |
LocalContext context; |
- v8::V8::AddMessageListener(check_message_0, v8_num(5.76)); |
- v8::Handle<v8::Script> script = CompileWithOrigin("throw 'error'", "6.75"); |
- script->Run(); |
+ CcTest::isolate()->AddMessageListener(check_message_0, v8_num(5.76)); |
+ v8::Local<v8::Script> script = CompileWithOrigin("throw 'error'", "6.75"); |
+ CHECK(script->Run(context.local()).IsEmpty()); |
CHECK(message_received); |
// clear out the message listener |
- v8::V8::RemoveMessageListeners(check_message_0); |
+ CcTest::isolate()->RemoveMessageListeners(check_message_0); |
} |
-static void check_message_1(v8::Handle<v8::Message> message, |
- v8::Handle<Value> data) { |
+static void check_message_1(v8::Local<v8::Message> message, |
+ v8::Local<Value> data) { |
CHECK(data->IsNumber()); |
- CHECK_EQ(1337, data->Int32Value()); |
+ CHECK_EQ(1337, |
+ data->Int32Value(CcTest::isolate()->GetCurrentContext()).FromJust()); |
CHECK(!message->IsSharedCrossOrigin()); |
message_received = true; |
} |
@@ -4169,17 +4544,17 @@ TEST(MessageHandler1) { |
message_received = false; |
v8::HandleScope scope(CcTest::isolate()); |
CHECK(!message_received); |
- v8::V8::AddMessageListener(check_message_1); |
+ CcTest::isolate()->AddMessageListener(check_message_1); |
LocalContext context; |
CompileRun("throw 1337;"); |
CHECK(message_received); |
// clear out the message listener |
- v8::V8::RemoveMessageListeners(check_message_1); |
+ CcTest::isolate()->RemoveMessageListeners(check_message_1); |
} |
-static void check_message_2(v8::Handle<v8::Message> message, |
- v8::Handle<Value> data) { |
+static void check_message_2(v8::Local<v8::Message> message, |
+ v8::Local<Value> data) { |
LocalContext context; |
CHECK(data->IsObject()); |
v8::Local<v8::Value> hidden_property = |
@@ -4188,7 +4563,9 @@ static void check_message_2(v8::Handle<v8::Message> message, |
context.local(), |
v8::Private::ForApi(CcTest::isolate(), v8_str("hidden key"))) |
.ToLocalChecked(); |
- CHECK(v8_str("hidden value")->Equals(hidden_property)); |
+ CHECK(v8_str("hidden value") |
+ ->Equals(context.local(), hidden_property) |
+ .FromJust()); |
CHECK(!message->IsSharedCrossOrigin()); |
message_received = true; |
} |
@@ -4198,7 +4575,7 @@ TEST(MessageHandler2) { |
message_received = false; |
v8::HandleScope scope(CcTest::isolate()); |
CHECK(!message_received); |
- v8::V8::AddMessageListener(check_message_2); |
+ CcTest::isolate()->AddMessageListener(check_message_2); |
LocalContext context; |
v8::Local<v8::Value> error = v8::Exception::Error(v8_str("custom error")); |
v8::Object::Cast(*error) |
@@ -4206,22 +4583,30 @@ TEST(MessageHandler2) { |
v8::Private::ForApi(CcTest::isolate(), v8_str("hidden key")), |
v8_str("hidden value")) |
.FromJust(); |
- context->Global()->Set(v8_str("error"), error); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("error"), error) |
+ .FromJust()); |
CompileRun("throw error;"); |
CHECK(message_received); |
// clear out the message listener |
- v8::V8::RemoveMessageListeners(check_message_2); |
+ CcTest::isolate()->RemoveMessageListeners(check_message_2); |
} |
-static void check_message_3(v8::Handle<v8::Message> message, |
- v8::Handle<Value> data) { |
+static void check_message_3(v8::Local<v8::Message> message, |
+ v8::Local<Value> data) { |
CHECK(message->IsSharedCrossOrigin()); |
CHECK(message->GetScriptOrigin().Options().IsSharedCrossOrigin()); |
CHECK(message->GetScriptOrigin().Options().IsEmbedderDebugScript()); |
CHECK(message->GetScriptOrigin().Options().IsOpaque()); |
- CHECK_EQ(6.75, message->GetScriptOrigin().ResourceName()->NumberValue()); |
- CHECK_EQ(7.40, message->GetScriptOrigin().SourceMapUrl()->NumberValue()); |
+ CHECK_EQ(6.75, message->GetScriptOrigin() |
+ .ResourceName() |
+ ->NumberValue(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
+ CHECK_EQ(7.40, message->GetScriptOrigin() |
+ .SourceMapUrl() |
+ ->NumberValue(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
message_received = true; |
} |
@@ -4231,25 +4616,29 @@ TEST(MessageHandler3) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
CHECK(!message_received); |
- v8::V8::AddMessageListener(check_message_3); |
+ isolate->AddMessageListener(check_message_3); |
LocalContext context; |
v8::ScriptOrigin origin = v8::ScriptOrigin( |
v8_str("6.75"), v8::Integer::New(isolate, 1), |
- v8::Integer::New(isolate, 2), v8::True(isolate), Handle<v8::Integer>(), |
+ v8::Integer::New(isolate, 2), v8::True(isolate), Local<v8::Integer>(), |
v8::True(isolate), v8_str("7.40"), v8::True(isolate)); |
- v8::Handle<v8::Script> script = |
- Script::Compile(v8_str("throw 'error'"), &origin); |
- script->Run(); |
+ v8::Local<v8::Script> script = |
+ Script::Compile(context.local(), v8_str("throw 'error'"), &origin) |
+ .ToLocalChecked(); |
+ CHECK(script->Run(context.local()).IsEmpty()); |
CHECK(message_received); |
// clear out the message listener |
- v8::V8::RemoveMessageListeners(check_message_3); |
+ isolate->RemoveMessageListeners(check_message_3); |
} |
-static void check_message_4(v8::Handle<v8::Message> message, |
- v8::Handle<Value> data) { |
+static void check_message_4(v8::Local<v8::Message> message, |
+ v8::Local<Value> data) { |
CHECK(!message->IsSharedCrossOrigin()); |
- CHECK_EQ(6.75, message->GetScriptOrigin().ResourceName()->NumberValue()); |
+ CHECK_EQ(6.75, message->GetScriptOrigin() |
+ .ResourceName() |
+ ->NumberValue(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
message_received = true; |
} |
@@ -4259,32 +4648,39 @@ TEST(MessageHandler4) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
CHECK(!message_received); |
- v8::V8::AddMessageListener(check_message_4); |
+ isolate->AddMessageListener(check_message_4); |
LocalContext context; |
v8::ScriptOrigin origin = |
v8::ScriptOrigin(v8_str("6.75"), v8::Integer::New(isolate, 1), |
v8::Integer::New(isolate, 2), v8::False(isolate)); |
- v8::Handle<v8::Script> script = |
- Script::Compile(v8_str("throw 'error'"), &origin); |
- script->Run(); |
+ v8::Local<v8::Script> script = |
+ Script::Compile(context.local(), v8_str("throw 'error'"), &origin) |
+ .ToLocalChecked(); |
+ CHECK(script->Run(context.local()).IsEmpty()); |
CHECK(message_received); |
// clear out the message listener |
- v8::V8::RemoveMessageListeners(check_message_4); |
+ isolate->RemoveMessageListeners(check_message_4); |
} |
-static void check_message_5a(v8::Handle<v8::Message> message, |
- v8::Handle<Value> data) { |
+static void check_message_5a(v8::Local<v8::Message> message, |
+ v8::Local<Value> data) { |
CHECK(message->IsSharedCrossOrigin()); |
- CHECK_EQ(6.75, message->GetScriptOrigin().ResourceName()->NumberValue()); |
+ CHECK_EQ(6.75, message->GetScriptOrigin() |
+ .ResourceName() |
+ ->NumberValue(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
message_received = true; |
} |
-static void check_message_5b(v8::Handle<v8::Message> message, |
- v8::Handle<Value> data) { |
+static void check_message_5b(v8::Local<v8::Message> message, |
+ v8::Local<Value> data) { |
CHECK(!message->IsSharedCrossOrigin()); |
- CHECK_EQ(6.75, message->GetScriptOrigin().ResourceName()->NumberValue()); |
+ CHECK_EQ(6.75, message->GetScriptOrigin() |
+ .ResourceName() |
+ ->NumberValue(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
message_received = true; |
} |
@@ -4294,28 +4690,30 @@ TEST(MessageHandler5) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
CHECK(!message_received); |
- v8::V8::AddMessageListener(check_message_5a); |
+ isolate->AddMessageListener(check_message_5a); |
LocalContext context; |
v8::ScriptOrigin origin1 = |
v8::ScriptOrigin(v8_str("6.75"), v8::Integer::New(isolate, 1), |
v8::Integer::New(isolate, 2), v8::True(isolate)); |
- v8::Handle<v8::Script> script = |
- Script::Compile(v8_str("throw 'error'"), &origin1); |
- script->Run(); |
+ v8::Local<v8::Script> script = |
+ Script::Compile(context.local(), v8_str("throw 'error'"), &origin1) |
+ .ToLocalChecked(); |
+ CHECK(script->Run(context.local()).IsEmpty()); |
CHECK(message_received); |
// clear out the message listener |
- v8::V8::RemoveMessageListeners(check_message_5a); |
+ isolate->RemoveMessageListeners(check_message_5a); |
message_received = false; |
- v8::V8::AddMessageListener(check_message_5b); |
+ isolate->AddMessageListener(check_message_5b); |
v8::ScriptOrigin origin2 = |
v8::ScriptOrigin(v8_str("6.75"), v8::Integer::New(isolate, 1), |
v8::Integer::New(isolate, 2), v8::False(isolate)); |
- script = Script::Compile(v8_str("throw 'error'"), &origin2); |
- script->Run(); |
+ script = Script::Compile(context.local(), v8_str("throw 'error'"), &origin2) |
+ .ToLocalChecked(); |
+ CHECK(script->Run(context.local()).IsEmpty()); |
CHECK(message_received); |
// clear out the message listener |
- v8::V8::RemoveMessageListeners(check_message_5b); |
+ isolate->RemoveMessageListeners(check_message_5b); |
} |
@@ -4333,7 +4731,7 @@ TEST(NativeWeakMap) { |
CHECK(weak_map->Get(local1)->IsUndefined()); |
weak_map->Set(local1, value); |
CHECK(weak_map->Has(local1)); |
- CHECK(value->Equals(weak_map->Get(local1))); |
+ CHECK(value->Equals(env.local(), weak_map->Get(local1)).FromJust()); |
WeakCallCounter counter(1234); |
WeakCallCounterAndPersistent<Value> o1(&counter); |
@@ -4358,18 +4756,24 @@ TEST(NativeWeakMap) { |
CHECK(weak_map->Has(obj2)); |
CHECK(weak_map->Has(sym1)); |
- CHECK(value->Equals(weak_map->Get(local1))); |
- CHECK(value->Equals(weak_map->Get(obj1))); |
- CHECK(value->Equals(weak_map->Get(obj2))); |
- CHECK(value->Equals(weak_map->Get(sym1))); |
+ CHECK(value->Equals(env.local(), weak_map->Get(local1)).FromJust()); |
+ CHECK(value->Equals(env.local(), weak_map->Get(obj1)).FromJust()); |
+ CHECK(value->Equals(env.local(), weak_map->Get(obj2)).FromJust()); |
+ CHECK(value->Equals(env.local(), weak_map->Get(sym1)).FromJust()); |
} |
CcTest::heap()->CollectAllGarbage(); |
{ |
HandleScope scope(isolate); |
- CHECK(value->Equals(weak_map->Get(local1))); |
- CHECK(value->Equals(weak_map->Get(Local<Value>::New(isolate, o1.handle)))); |
- CHECK(value->Equals(weak_map->Get(Local<Value>::New(isolate, o2.handle)))); |
- CHECK(value->Equals(weak_map->Get(Local<Value>::New(isolate, s1.handle)))); |
+ CHECK(value->Equals(env.local(), weak_map->Get(local1)).FromJust()); |
+ CHECK(value->Equals(env.local(), |
+ weak_map->Get(Local<Value>::New(isolate, o1.handle))) |
+ .FromJust()); |
+ CHECK(value->Equals(env.local(), |
+ weak_map->Get(Local<Value>::New(isolate, o2.handle))) |
+ .FromJust()); |
+ CHECK(value->Equals(env.local(), |
+ weak_map->Get(Local<Value>::New(isolate, s1.handle))) |
+ .FromJust()); |
} |
o1.handle.SetWeak(&o1, &WeakPointerCallback, |
@@ -4386,7 +4790,7 @@ TEST(NativeWeakMap) { |
CHECK(o2.handle.IsEmpty()); |
CHECK(s1.handle.IsEmpty()); |
- CHECK(value->Equals(weak_map->Get(local1))); |
+ CHECK(value->Equals(env.local(), weak_map->Get(local1)).FromJust()); |
CHECK(weak_map->Delete(local1)); |
CHECK(!weak_map->Has(local1)); |
CHECK(weak_map->Get(local1)->IsUndefined()); |
@@ -4397,30 +4801,71 @@ THREADED_TEST(GetSetProperty) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- context->Global()->Set(v8_str("foo"), v8_num(14)); |
- context->Global()->Set(v8_str("12"), v8_num(92)); |
- context->Global()->Set(v8::Integer::New(isolate, 16), v8_num(32)); |
- context->Global()->Set(v8_num(13), v8_num(56)); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("foo"), v8_num(14)) |
+ .FromJust()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("12"), v8_num(92)) |
+ .FromJust()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8::Integer::New(isolate, 16), v8_num(32)) |
+ .FromJust()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_num(13), v8_num(56)) |
+ .FromJust()); |
Local<Value> foo = CompileRun("this.foo"); |
- CHECK_EQ(14, foo->Int32Value()); |
+ CHECK_EQ(14, foo->Int32Value(context.local()).FromJust()); |
Local<Value> twelve = CompileRun("this[12]"); |
- CHECK_EQ(92, twelve->Int32Value()); |
+ CHECK_EQ(92, twelve->Int32Value(context.local()).FromJust()); |
Local<Value> sixteen = CompileRun("this[16]"); |
- CHECK_EQ(32, sixteen->Int32Value()); |
+ CHECK_EQ(32, sixteen->Int32Value(context.local()).FromJust()); |
Local<Value> thirteen = CompileRun("this[13]"); |
- CHECK_EQ(56, thirteen->Int32Value()); |
- CHECK_EQ(92, |
- context->Global()->Get(v8::Integer::New(isolate, 12))->Int32Value()); |
- CHECK_EQ(92, context->Global()->Get(v8_str("12"))->Int32Value()); |
- CHECK_EQ(92, context->Global()->Get(v8_num(12))->Int32Value()); |
- CHECK_EQ(32, |
- context->Global()->Get(v8::Integer::New(isolate, 16))->Int32Value()); |
- CHECK_EQ(32, context->Global()->Get(v8_str("16"))->Int32Value()); |
- CHECK_EQ(32, context->Global()->Get(v8_num(16))->Int32Value()); |
- CHECK_EQ(56, |
- context->Global()->Get(v8::Integer::New(isolate, 13))->Int32Value()); |
- CHECK_EQ(56, context->Global()->Get(v8_str("13"))->Int32Value()); |
- CHECK_EQ(56, context->Global()->Get(v8_num(13))->Int32Value()); |
+ CHECK_EQ(56, thirteen->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(92, context->Global() |
+ ->Get(context.local(), v8::Integer::New(isolate, 12)) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(92, context->Global() |
+ ->Get(context.local(), v8_str("12")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(92, context->Global() |
+ ->Get(context.local(), v8_num(12)) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(32, context->Global() |
+ ->Get(context.local(), v8::Integer::New(isolate, 16)) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(32, context->Global() |
+ ->Get(context.local(), v8_str("16")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(32, context->Global() |
+ ->Get(context.local(), v8_num(16)) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(56, context->Global() |
+ ->Get(context.local(), v8::Integer::New(isolate, 13)) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(56, context->Global() |
+ ->Get(context.local(), v8_str("13")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(56, context->Global() |
+ ->Get(context.local(), v8_num(13)) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
@@ -4429,38 +4874,78 @@ THREADED_TEST(PropertyAttributes) { |
v8::HandleScope scope(context->GetIsolate()); |
// none |
Local<String> prop = v8_str("none"); |
- context->Global()->Set(prop, v8_num(7)); |
- CHECK_EQ(v8::None, context->Global()->GetPropertyAttributes(prop)); |
+ CHECK(context->Global()->Set(context.local(), prop, v8_num(7)).FromJust()); |
+ CHECK_EQ(v8::None, context->Global() |
+ ->GetPropertyAttributes(context.local(), prop) |
+ .FromJust()); |
// read-only |
prop = v8_str("read_only"); |
- context->Global()->ForceSet(prop, v8_num(7), v8::ReadOnly); |
- CHECK_EQ(7, context->Global()->Get(prop)->Int32Value()); |
- CHECK_EQ(v8::ReadOnly, context->Global()->GetPropertyAttributes(prop)); |
+ context->Global() |
+ ->DefineOwnProperty(context.local(), prop, v8_num(7), v8::ReadOnly) |
+ .FromJust(); |
+ CHECK_EQ(7, context->Global() |
+ ->Get(context.local(), prop) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(v8::ReadOnly, context->Global() |
+ ->GetPropertyAttributes(context.local(), prop) |
+ .FromJust()); |
CompileRun("read_only = 9"); |
- CHECK_EQ(7, context->Global()->Get(prop)->Int32Value()); |
- context->Global()->Set(prop, v8_num(10)); |
- CHECK_EQ(7, context->Global()->Get(prop)->Int32Value()); |
+ CHECK_EQ(7, context->Global() |
+ ->Get(context.local(), prop) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(context->Global()->Set(context.local(), prop, v8_num(10)).FromJust()); |
+ CHECK_EQ(7, context->Global() |
+ ->Get(context.local(), prop) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
// dont-delete |
prop = v8_str("dont_delete"); |
- context->Global()->ForceSet(prop, v8_num(13), v8::DontDelete); |
- CHECK_EQ(13, context->Global()->Get(prop)->Int32Value()); |
+ context->Global() |
+ ->DefineOwnProperty(context.local(), prop, v8_num(13), v8::DontDelete) |
+ .FromJust(); |
+ CHECK_EQ(13, context->Global() |
+ ->Get(context.local(), prop) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
CompileRun("delete dont_delete"); |
- CHECK_EQ(13, context->Global()->Get(prop)->Int32Value()); |
- CHECK_EQ(v8::DontDelete, context->Global()->GetPropertyAttributes(prop)); |
+ CHECK_EQ(13, context->Global() |
+ ->Get(context.local(), prop) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(v8::DontDelete, context->Global() |
+ ->GetPropertyAttributes(context.local(), prop) |
+ .FromJust()); |
// dont-enum |
prop = v8_str("dont_enum"); |
- context->Global()->ForceSet(prop, v8_num(28), v8::DontEnum); |
- CHECK_EQ(v8::DontEnum, context->Global()->GetPropertyAttributes(prop)); |
+ context->Global() |
+ ->DefineOwnProperty(context.local(), prop, v8_num(28), v8::DontEnum) |
+ .FromJust(); |
+ CHECK_EQ(v8::DontEnum, context->Global() |
+ ->GetPropertyAttributes(context.local(), prop) |
+ .FromJust()); |
// absent |
prop = v8_str("absent"); |
- CHECK_EQ(v8::None, context->Global()->GetPropertyAttributes(prop)); |
+ CHECK_EQ(v8::None, context->Global() |
+ ->GetPropertyAttributes(context.local(), prop) |
+ .FromJust()); |
Local<Value> fake_prop = v8_num(1); |
- CHECK_EQ(v8::None, context->Global()->GetPropertyAttributes(fake_prop)); |
+ CHECK_EQ(v8::None, context->Global() |
+ ->GetPropertyAttributes(context.local(), fake_prop) |
+ .FromJust()); |
// exception |
TryCatch try_catch(context->GetIsolate()); |
Local<Value> exception = |
CompileRun("({ toString: function() { throw 'exception';} })"); |
- CHECK_EQ(v8::None, context->Global()->GetPropertyAttributes(exception)); |
+ CHECK(context->Global() |
+ ->GetPropertyAttributes(context.local(), exception) |
+ .IsNothing()); |
CHECK(try_catch.HasCaught()); |
String::Utf8Value exception_value(try_catch.Exception()); |
CHECK_EQ(0, strcmp("exception", *exception_value)); |
@@ -4473,22 +4958,34 @@ THREADED_TEST(Array) { |
v8::HandleScope scope(context->GetIsolate()); |
Local<v8::Array> array = v8::Array::New(context->GetIsolate()); |
CHECK_EQ(0u, array->Length()); |
- CHECK(array->Get(0)->IsUndefined()); |
- CHECK(!array->Has(0)); |
- CHECK(array->Get(100)->IsUndefined()); |
- CHECK(!array->Has(100)); |
- array->Set(2, v8_num(7)); |
+ CHECK(array->Get(context.local(), 0).ToLocalChecked()->IsUndefined()); |
+ CHECK(!array->Has(context.local(), 0).FromJust()); |
+ CHECK(array->Get(context.local(), 100).ToLocalChecked()->IsUndefined()); |
+ CHECK(!array->Has(context.local(), 100).FromJust()); |
+ CHECK(array->Set(context.local(), 2, v8_num(7)).FromJust()); |
CHECK_EQ(3u, array->Length()); |
- CHECK(!array->Has(0)); |
- CHECK(!array->Has(1)); |
- CHECK(array->Has(2)); |
- CHECK_EQ(7, array->Get(2)->Int32Value()); |
+ CHECK(!array->Has(context.local(), 0).FromJust()); |
+ CHECK(!array->Has(context.local(), 1).FromJust()); |
+ CHECK(array->Has(context.local(), 2).FromJust()); |
+ CHECK_EQ(7, array->Get(context.local(), 2) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
Local<Value> obj = CompileRun("[1, 2, 3]"); |
Local<v8::Array> arr = obj.As<v8::Array>(); |
CHECK_EQ(3u, arr->Length()); |
- CHECK_EQ(1, arr->Get(0)->Int32Value()); |
- CHECK_EQ(2, arr->Get(1)->Int32Value()); |
- CHECK_EQ(3, arr->Get(2)->Int32Value()); |
+ CHECK_EQ(1, arr->Get(context.local(), 0) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(2, arr->Get(context.local(), 1) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(3, arr->Get(context.local(), 2) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
array = v8::Array::New(context->GetIsolate(), 27); |
CHECK_EQ(27u, array->Length()); |
array = v8::Array::New(context->GetIsolate(), -27); |
@@ -4500,7 +4997,10 @@ void HandleF(const v8::FunctionCallbackInfo<v8::Value>& args) { |
v8::EscapableHandleScope scope(args.GetIsolate()); |
ApiTestFuzzer::Fuzz(); |
Local<v8::Array> result = v8::Array::New(args.GetIsolate(), args.Length()); |
- for (int i = 0; i < args.Length(); i++) result->Set(i, args[i]); |
+ for (int i = 0; i < args.Length(); i++) { |
+ CHECK(result->Set(CcTest::isolate()->GetCurrentContext(), i, args[i]) |
+ .FromJust()); |
+ } |
args.GetReturnValue().Set(scope.Escape(result)); |
} |
@@ -4519,28 +5019,58 @@ THREADED_TEST(Vector) { |
const char* fun2 = "f(11)"; |
Local<v8::Array> a1 = CompileRun(fun2).As<v8::Array>(); |
CHECK_EQ(1u, a1->Length()); |
- CHECK_EQ(11, a1->Get(0)->Int32Value()); |
+ CHECK_EQ(11, a1->Get(context.local(), 0) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
const char* fun3 = "f(12, 13)"; |
Local<v8::Array> a2 = CompileRun(fun3).As<v8::Array>(); |
CHECK_EQ(2u, a2->Length()); |
- CHECK_EQ(12, a2->Get(0)->Int32Value()); |
- CHECK_EQ(13, a2->Get(1)->Int32Value()); |
+ CHECK_EQ(12, a2->Get(context.local(), 0) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(13, a2->Get(context.local(), 1) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
const char* fun4 = "f(14, 15, 16)"; |
Local<v8::Array> a3 = CompileRun(fun4).As<v8::Array>(); |
CHECK_EQ(3u, a3->Length()); |
- CHECK_EQ(14, a3->Get(0)->Int32Value()); |
- CHECK_EQ(15, a3->Get(1)->Int32Value()); |
- CHECK_EQ(16, a3->Get(2)->Int32Value()); |
+ CHECK_EQ(14, a3->Get(context.local(), 0) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(15, a3->Get(context.local(), 1) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(16, a3->Get(context.local(), 2) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
const char* fun5 = "f(17, 18, 19, 20)"; |
Local<v8::Array> a4 = CompileRun(fun5).As<v8::Array>(); |
CHECK_EQ(4u, a4->Length()); |
- CHECK_EQ(17, a4->Get(0)->Int32Value()); |
- CHECK_EQ(18, a4->Get(1)->Int32Value()); |
- CHECK_EQ(19, a4->Get(2)->Int32Value()); |
- CHECK_EQ(20, a4->Get(3)->Int32Value()); |
+ CHECK_EQ(17, a4->Get(context.local(), 0) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(18, a4->Get(context.local(), 1) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(19, a4->Get(context.local(), 2) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(20, a4->Get(context.local(), 3) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
@@ -4563,67 +5093,126 @@ THREADED_TEST(FunctionCall) { |
" 'use strict';" |
" return this;" |
"}"); |
- Local<Function> Foo = |
- Local<Function>::Cast(context->Global()->Get(v8_str("Foo"))); |
- Local<Function> ReturnThisSloppy = |
- Local<Function>::Cast(context->Global()->Get(v8_str("ReturnThisSloppy"))); |
- Local<Function> ReturnThisStrict = |
- Local<Function>::Cast(context->Global()->Get(v8_str("ReturnThisStrict"))); |
- |
- v8::Handle<Value>* args0 = NULL; |
- Local<v8::Array> a0 = Local<v8::Array>::Cast(Foo->Call(Foo, 0, args0)); |
+ Local<Function> Foo = Local<Function>::Cast( |
+ context->Global()->Get(context.local(), v8_str("Foo")).ToLocalChecked()); |
+ Local<Function> ReturnThisSloppy = Local<Function>::Cast( |
+ context->Global() |
+ ->Get(context.local(), v8_str("ReturnThisSloppy")) |
+ .ToLocalChecked()); |
+ Local<Function> ReturnThisStrict = Local<Function>::Cast( |
+ context->Global() |
+ ->Get(context.local(), v8_str("ReturnThisStrict")) |
+ .ToLocalChecked()); |
+ |
+ v8::Local<Value>* args0 = NULL; |
+ Local<v8::Array> a0 = Local<v8::Array>::Cast( |
+ Foo->Call(context.local(), Foo, 0, args0).ToLocalChecked()); |
CHECK_EQ(0u, a0->Length()); |
- v8::Handle<Value> args1[] = {v8_num(1.1)}; |
- Local<v8::Array> a1 = Local<v8::Array>::Cast(Foo->Call(Foo, 1, args1)); |
+ v8::Local<Value> args1[] = {v8_num(1.1)}; |
+ Local<v8::Array> a1 = Local<v8::Array>::Cast( |
+ Foo->Call(context.local(), Foo, 1, args1).ToLocalChecked()); |
CHECK_EQ(1u, a1->Length()); |
- CHECK_EQ(1.1, a1->Get(v8::Integer::New(isolate, 0))->NumberValue()); |
- |
- v8::Handle<Value> args2[] = {v8_num(2.2), v8_num(3.3)}; |
- Local<v8::Array> a2 = Local<v8::Array>::Cast(Foo->Call(Foo, 2, args2)); |
+ CHECK_EQ(1.1, a1->Get(context.local(), v8::Integer::New(isolate, 0)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ |
+ v8::Local<Value> args2[] = {v8_num(2.2), v8_num(3.3)}; |
+ Local<v8::Array> a2 = Local<v8::Array>::Cast( |
+ Foo->Call(context.local(), Foo, 2, args2).ToLocalChecked()); |
CHECK_EQ(2u, a2->Length()); |
- CHECK_EQ(2.2, a2->Get(v8::Integer::New(isolate, 0))->NumberValue()); |
- CHECK_EQ(3.3, a2->Get(v8::Integer::New(isolate, 1))->NumberValue()); |
- |
- v8::Handle<Value> args3[] = {v8_num(4.4), v8_num(5.5), v8_num(6.6)}; |
- Local<v8::Array> a3 = Local<v8::Array>::Cast(Foo->Call(Foo, 3, args3)); |
+ CHECK_EQ(2.2, a2->Get(context.local(), v8::Integer::New(isolate, 0)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(3.3, a2->Get(context.local(), v8::Integer::New(isolate, 1)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ |
+ v8::Local<Value> args3[] = {v8_num(4.4), v8_num(5.5), v8_num(6.6)}; |
+ Local<v8::Array> a3 = Local<v8::Array>::Cast( |
+ Foo->Call(context.local(), Foo, 3, args3).ToLocalChecked()); |
CHECK_EQ(3u, a3->Length()); |
- CHECK_EQ(4.4, a3->Get(v8::Integer::New(isolate, 0))->NumberValue()); |
- CHECK_EQ(5.5, a3->Get(v8::Integer::New(isolate, 1))->NumberValue()); |
- CHECK_EQ(6.6, a3->Get(v8::Integer::New(isolate, 2))->NumberValue()); |
- |
- v8::Handle<Value> args4[] = {v8_num(7.7), v8_num(8.8), v8_num(9.9), |
- v8_num(10.11)}; |
- Local<v8::Array> a4 = Local<v8::Array>::Cast(Foo->Call(Foo, 4, args4)); |
+ CHECK_EQ(4.4, a3->Get(context.local(), v8::Integer::New(isolate, 0)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(5.5, a3->Get(context.local(), v8::Integer::New(isolate, 1)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(6.6, a3->Get(context.local(), v8::Integer::New(isolate, 2)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ |
+ v8::Local<Value> args4[] = {v8_num(7.7), v8_num(8.8), v8_num(9.9), |
+ v8_num(10.11)}; |
+ Local<v8::Array> a4 = Local<v8::Array>::Cast( |
+ Foo->Call(context.local(), Foo, 4, args4).ToLocalChecked()); |
CHECK_EQ(4u, a4->Length()); |
- CHECK_EQ(7.7, a4->Get(v8::Integer::New(isolate, 0))->NumberValue()); |
- CHECK_EQ(8.8, a4->Get(v8::Integer::New(isolate, 1))->NumberValue()); |
- CHECK_EQ(9.9, a4->Get(v8::Integer::New(isolate, 2))->NumberValue()); |
- CHECK_EQ(10.11, a4->Get(v8::Integer::New(isolate, 3))->NumberValue()); |
- |
- Local<v8::Value> r1 = ReturnThisSloppy->Call(v8::Undefined(isolate), 0, NULL); |
+ CHECK_EQ(7.7, a4->Get(context.local(), v8::Integer::New(isolate, 0)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(8.8, a4->Get(context.local(), v8::Integer::New(isolate, 1)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(9.9, a4->Get(context.local(), v8::Integer::New(isolate, 2)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(10.11, a4->Get(context.local(), v8::Integer::New(isolate, 3)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ |
+ Local<v8::Value> r1 = |
+ ReturnThisSloppy->Call(context.local(), v8::Undefined(isolate), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r1->StrictEquals(context->Global())); |
- Local<v8::Value> r2 = ReturnThisSloppy->Call(v8::Null(isolate), 0, NULL); |
+ Local<v8::Value> r2 = |
+ ReturnThisSloppy->Call(context.local(), v8::Null(isolate), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r2->StrictEquals(context->Global())); |
- Local<v8::Value> r3 = ReturnThisSloppy->Call(v8_num(42), 0, NULL); |
+ Local<v8::Value> r3 = |
+ ReturnThisSloppy->Call(context.local(), v8_num(42), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r3->IsNumberObject()); |
CHECK_EQ(42.0, r3.As<v8::NumberObject>()->ValueOf()); |
- Local<v8::Value> r4 = ReturnThisSloppy->Call(v8_str("hello"), 0, NULL); |
+ Local<v8::Value> r4 = |
+ ReturnThisSloppy->Call(context.local(), v8_str("hello"), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r4->IsStringObject()); |
CHECK(r4.As<v8::StringObject>()->ValueOf()->StrictEquals(v8_str("hello"))); |
- Local<v8::Value> r5 = ReturnThisSloppy->Call(v8::True(isolate), 0, NULL); |
+ Local<v8::Value> r5 = |
+ ReturnThisSloppy->Call(context.local(), v8::True(isolate), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r5->IsBooleanObject()); |
CHECK(r5.As<v8::BooleanObject>()->ValueOf()); |
- Local<v8::Value> r6 = ReturnThisStrict->Call(v8::Undefined(isolate), 0, NULL); |
+ Local<v8::Value> r6 = |
+ ReturnThisStrict->Call(context.local(), v8::Undefined(isolate), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r6->IsUndefined()); |
- Local<v8::Value> r7 = ReturnThisStrict->Call(v8::Null(isolate), 0, NULL); |
+ Local<v8::Value> r7 = |
+ ReturnThisStrict->Call(context.local(), v8::Null(isolate), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r7->IsNull()); |
- Local<v8::Value> r8 = ReturnThisStrict->Call(v8_num(42), 0, NULL); |
+ Local<v8::Value> r8 = |
+ ReturnThisStrict->Call(context.local(), v8_num(42), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r8->StrictEquals(v8_num(42))); |
- Local<v8::Value> r9 = ReturnThisStrict->Call(v8_str("hello"), 0, NULL); |
+ Local<v8::Value> r9 = |
+ ReturnThisStrict->Call(context.local(), v8_str("hello"), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r9->StrictEquals(v8_str("hello"))); |
- Local<v8::Value> r10 = ReturnThisStrict->Call(v8::True(isolate), 0, NULL); |
+ Local<v8::Value> r10 = |
+ ReturnThisStrict->Call(context.local(), v8::True(isolate), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(r10->StrictEquals(v8::True(isolate))); |
} |
@@ -4640,47 +5229,74 @@ THREADED_TEST(ConstructCall) { |
" }" |
" return result;" |
"}"); |
- Local<Function> Foo = |
- Local<Function>::Cast(context->Global()->Get(v8_str("Foo"))); |
+ Local<Function> Foo = Local<Function>::Cast( |
+ context->Global()->Get(context.local(), v8_str("Foo")).ToLocalChecked()); |
- v8::Handle<Value>* args0 = NULL; |
- Local<v8::Array> a0 = Local<v8::Array>::Cast(Foo->NewInstance(0, args0)); |
+ v8::Local<Value>* args0 = NULL; |
+ Local<v8::Array> a0 = Local<v8::Array>::Cast( |
+ Foo->NewInstance(context.local(), 0, args0).ToLocalChecked()); |
CHECK_EQ(0u, a0->Length()); |
- v8::Handle<Value> args1[] = {v8_num(1.1)}; |
- Local<v8::Array> a1 = Local<v8::Array>::Cast(Foo->NewInstance(1, args1)); |
+ v8::Local<Value> args1[] = {v8_num(1.1)}; |
+ Local<v8::Array> a1 = Local<v8::Array>::Cast( |
+ Foo->NewInstance(context.local(), 1, args1).ToLocalChecked()); |
CHECK_EQ(1u, a1->Length()); |
- CHECK_EQ(1.1, a1->Get(v8::Integer::New(isolate, 0))->NumberValue()); |
- |
- v8::Handle<Value> args2[] = {v8_num(2.2), v8_num(3.3)}; |
- Local<v8::Array> a2 = Local<v8::Array>::Cast(Foo->NewInstance(2, args2)); |
+ CHECK_EQ(1.1, a1->Get(context.local(), v8::Integer::New(isolate, 0)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ |
+ v8::Local<Value> args2[] = {v8_num(2.2), v8_num(3.3)}; |
+ Local<v8::Array> a2 = Local<v8::Array>::Cast( |
+ Foo->NewInstance(context.local(), 2, args2).ToLocalChecked()); |
CHECK_EQ(2u, a2->Length()); |
- CHECK_EQ(2.2, a2->Get(v8::Integer::New(isolate, 0))->NumberValue()); |
- CHECK_EQ(3.3, a2->Get(v8::Integer::New(isolate, 1))->NumberValue()); |
- |
- v8::Handle<Value> args3[] = {v8_num(4.4), v8_num(5.5), v8_num(6.6)}; |
- Local<v8::Array> a3 = Local<v8::Array>::Cast(Foo->NewInstance(3, args3)); |
+ CHECK_EQ(2.2, a2->Get(context.local(), v8::Integer::New(isolate, 0)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(3.3, a2->Get(context.local(), v8::Integer::New(isolate, 1)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ |
+ v8::Local<Value> args3[] = {v8_num(4.4), v8_num(5.5), v8_num(6.6)}; |
+ Local<v8::Array> a3 = Local<v8::Array>::Cast( |
+ Foo->NewInstance(context.local(), 3, args3).ToLocalChecked()); |
CHECK_EQ(3u, a3->Length()); |
- CHECK_EQ(4.4, a3->Get(v8::Integer::New(isolate, 0))->NumberValue()); |
- CHECK_EQ(5.5, a3->Get(v8::Integer::New(isolate, 1))->NumberValue()); |
- CHECK_EQ(6.6, a3->Get(v8::Integer::New(isolate, 2))->NumberValue()); |
- |
- v8::Handle<Value> args4[] = {v8_num(7.7), v8_num(8.8), v8_num(9.9), |
- v8_num(10.11)}; |
- Local<v8::Array> a4 = Local<v8::Array>::Cast(Foo->NewInstance(4, args4)); |
+ CHECK_EQ(4.4, a3->Get(context.local(), v8::Integer::New(isolate, 0)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(5.5, a3->Get(context.local(), v8::Integer::New(isolate, 1)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(6.6, a3->Get(context.local(), v8::Integer::New(isolate, 2)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ |
+ v8::Local<Value> args4[] = {v8_num(7.7), v8_num(8.8), v8_num(9.9), |
+ v8_num(10.11)}; |
+ Local<v8::Array> a4 = Local<v8::Array>::Cast( |
+ Foo->NewInstance(context.local(), 4, args4).ToLocalChecked()); |
CHECK_EQ(4u, a4->Length()); |
- CHECK_EQ(7.7, a4->Get(v8::Integer::New(isolate, 0))->NumberValue()); |
- CHECK_EQ(8.8, a4->Get(v8::Integer::New(isolate, 1))->NumberValue()); |
- CHECK_EQ(9.9, a4->Get(v8::Integer::New(isolate, 2))->NumberValue()); |
- CHECK_EQ(10.11, a4->Get(v8::Integer::New(isolate, 3))->NumberValue()); |
-} |
- |
- |
-static void CheckUncle(v8::TryCatch* try_catch) { |
- CHECK(try_catch->HasCaught()); |
- String::Utf8Value str_value(try_catch->Exception()); |
- CHECK_EQ(0, strcmp(*str_value, "uncle?")); |
- try_catch->Reset(); |
+ CHECK_EQ(7.7, a4->Get(context.local(), v8::Integer::New(isolate, 0)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(8.8, a4->Get(context.local(), v8::Integer::New(isolate, 1)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(9.9, a4->Get(context.local(), v8::Integer::New(isolate, 2)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(10.11, a4->Get(context.local(), v8::Integer::New(isolate, 3)) |
+ .ToLocalChecked() |
+ ->NumberValue(context.local()) |
+ .FromJust()); |
} |
@@ -4690,47 +5306,57 @@ THREADED_TEST(ConversionNumber) { |
v8::HandleScope scope(isolate); |
// Very large number. |
CompileRun("var obj = Math.pow(2,32) * 1237;"); |
- Local<Value> obj = env->Global()->Get(v8_str("obj")); |
- CHECK_EQ(5312874545152.0, obj->ToNumber(isolate)->Value()); |
- CHECK_EQ(0, obj->ToInt32(isolate)->Value()); |
+ Local<Value> obj = |
+ env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
+ CHECK_EQ(5312874545152.0, |
+ obj->ToNumber(env.local()).ToLocalChecked()->Value()); |
+ CHECK_EQ(0, obj->ToInt32(env.local()).ToLocalChecked()->Value()); |
CHECK(0u == |
- obj->ToUint32(isolate)->Value()); // NOLINT - no CHECK_EQ for unsigned. |
+ obj->ToUint32(env.local()) |
+ .ToLocalChecked() |
+ ->Value()); // NOLINT - no CHECK_EQ for unsigned. |
// Large number. |
CompileRun("var obj = -1234567890123;"); |
- obj = env->Global()->Get(v8_str("obj")); |
- CHECK_EQ(-1234567890123.0, obj->ToNumber(isolate)->Value()); |
- CHECK_EQ(-1912276171, obj->ToInt32(isolate)->Value()); |
- CHECK(2382691125u == obj->ToUint32(isolate)->Value()); // NOLINT |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
+ CHECK_EQ(-1234567890123.0, |
+ obj->ToNumber(env.local()).ToLocalChecked()->Value()); |
+ CHECK_EQ(-1912276171, obj->ToInt32(env.local()).ToLocalChecked()->Value()); |
+ CHECK(2382691125u == |
+ obj->ToUint32(env.local()).ToLocalChecked()->Value()); // NOLINT |
// Small positive integer. |
CompileRun("var obj = 42;"); |
- obj = env->Global()->Get(v8_str("obj")); |
- CHECK_EQ(42.0, obj->ToNumber(isolate)->Value()); |
- CHECK_EQ(42, obj->ToInt32(isolate)->Value()); |
- CHECK(42u == obj->ToUint32(isolate)->Value()); // NOLINT |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
+ CHECK_EQ(42.0, obj->ToNumber(env.local()).ToLocalChecked()->Value()); |
+ CHECK_EQ(42, obj->ToInt32(env.local()).ToLocalChecked()->Value()); |
+ CHECK(42u == obj->ToUint32(env.local()).ToLocalChecked()->Value()); // NOLINT |
// Negative integer. |
CompileRun("var obj = -37;"); |
- obj = env->Global()->Get(v8_str("obj")); |
- CHECK_EQ(-37.0, obj->ToNumber(isolate)->Value()); |
- CHECK_EQ(-37, obj->ToInt32(isolate)->Value()); |
- CHECK(4294967259u == obj->ToUint32(isolate)->Value()); // NOLINT |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
+ CHECK_EQ(-37.0, obj->ToNumber(env.local()).ToLocalChecked()->Value()); |
+ CHECK_EQ(-37, obj->ToInt32(env.local()).ToLocalChecked()->Value()); |
+ CHECK(4294967259u == |
+ obj->ToUint32(env.local()).ToLocalChecked()->Value()); // NOLINT |
// Positive non-int32 integer. |
CompileRun("var obj = 0x81234567;"); |
- obj = env->Global()->Get(v8_str("obj")); |
- CHECK_EQ(2166572391.0, obj->ToNumber(isolate)->Value()); |
- CHECK_EQ(-2128394905, obj->ToInt32(isolate)->Value()); |
- CHECK(2166572391u == obj->ToUint32(isolate)->Value()); // NOLINT |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
+ CHECK_EQ(2166572391.0, obj->ToNumber(env.local()).ToLocalChecked()->Value()); |
+ CHECK_EQ(-2128394905, obj->ToInt32(env.local()).ToLocalChecked()->Value()); |
+ CHECK(2166572391u == |
+ obj->ToUint32(env.local()).ToLocalChecked()->Value()); // NOLINT |
// Fraction. |
CompileRun("var obj = 42.3;"); |
- obj = env->Global()->Get(v8_str("obj")); |
- CHECK_EQ(42.3, obj->ToNumber(isolate)->Value()); |
- CHECK_EQ(42, obj->ToInt32(isolate)->Value()); |
- CHECK(42u == obj->ToUint32(isolate)->Value()); // NOLINT |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
+ CHECK_EQ(42.3, obj->ToNumber(env.local()).ToLocalChecked()->Value()); |
+ CHECK_EQ(42, obj->ToInt32(env.local()).ToLocalChecked()->Value()); |
+ CHECK(42u == obj->ToUint32(env.local()).ToLocalChecked()->Value()); // NOLINT |
// Large negative fraction. |
CompileRun("var obj = -5726623061.75;"); |
- obj = env->Global()->Get(v8_str("obj")); |
- CHECK_EQ(-5726623061.75, obj->ToNumber(isolate)->Value()); |
- CHECK_EQ(-1431655765, obj->ToInt32(isolate)->Value()); |
- CHECK(2863311531u == obj->ToUint32(isolate)->Value()); // NOLINT |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
+ CHECK_EQ(-5726623061.75, |
+ obj->ToNumber(env.local()).ToLocalChecked()->Value()); |
+ CHECK_EQ(-1431655765, obj->ToInt32(env.local()).ToLocalChecked()->Value()); |
+ CHECK(2863311531u == |
+ obj->ToUint32(env.local()).ToLocalChecked()->Value()); // NOLINT |
} |
@@ -4739,52 +5365,61 @@ THREADED_TEST(isNumberType) { |
v8::HandleScope scope(env->GetIsolate()); |
// Very large number. |
CompileRun("var obj = Math.pow(2,32) * 1237;"); |
- Local<Value> obj = env->Global()->Get(v8_str("obj")); |
+ Local<Value> obj = |
+ env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
CHECK(!obj->IsInt32()); |
CHECK(!obj->IsUint32()); |
// Large negative number. |
CompileRun("var obj = -1234567890123;"); |
- obj = env->Global()->Get(v8_str("obj")); |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
CHECK(!obj->IsInt32()); |
CHECK(!obj->IsUint32()); |
// Small positive integer. |
CompileRun("var obj = 42;"); |
- obj = env->Global()->Get(v8_str("obj")); |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
CHECK(obj->IsInt32()); |
CHECK(obj->IsUint32()); |
// Negative integer. |
CompileRun("var obj = -37;"); |
- obj = env->Global()->Get(v8_str("obj")); |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
CHECK(obj->IsInt32()); |
CHECK(!obj->IsUint32()); |
// Positive non-int32 integer. |
CompileRun("var obj = 0x81234567;"); |
- obj = env->Global()->Get(v8_str("obj")); |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
CHECK(!obj->IsInt32()); |
CHECK(obj->IsUint32()); |
// Fraction. |
CompileRun("var obj = 42.3;"); |
- obj = env->Global()->Get(v8_str("obj")); |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
CHECK(!obj->IsInt32()); |
CHECK(!obj->IsUint32()); |
// Large negative fraction. |
CompileRun("var obj = -5726623061.75;"); |
- obj = env->Global()->Get(v8_str("obj")); |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
CHECK(!obj->IsInt32()); |
CHECK(!obj->IsUint32()); |
// Positive zero |
CompileRun("var obj = 0.0;"); |
- obj = env->Global()->Get(v8_str("obj")); |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
CHECK(obj->IsInt32()); |
CHECK(obj->IsUint32()); |
// Positive zero |
CompileRun("var obj = -0.0;"); |
- obj = env->Global()->Get(v8_str("obj")); |
+ obj = env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
CHECK(!obj->IsInt32()); |
CHECK(!obj->IsUint32()); |
} |
+static void CheckUncle(v8::TryCatch* try_catch) { |
+ CHECK(try_catch->HasCaught()); |
+ String::Utf8Value str_value(try_catch->Exception()); |
+ CHECK_EQ(0, strcmp(*str_value, "uncle?")); |
+ try_catch->Reset(); |
+} |
+ |
+ |
THREADED_TEST(ConversionException) { |
LocalContext env; |
v8::Isolate* isolate = env->GetIsolate(); |
@@ -4793,49 +5428,40 @@ THREADED_TEST(ConversionException) { |
"function TestClass() { };" |
"TestClass.prototype.toString = function () { throw 'uncle?'; };" |
"var obj = new TestClass();"); |
- Local<Value> obj = env->Global()->Get(v8_str("obj")); |
+ Local<Value> obj = |
+ env->Global()->Get(env.local(), v8_str("obj")).ToLocalChecked(); |
v8::TryCatch try_catch(isolate); |
- Local<Value> to_string_result = obj->ToString(isolate); |
- CHECK(to_string_result.IsEmpty()); |
+ CHECK(obj->ToString(env.local()).IsEmpty()); |
CheckUncle(&try_catch); |
- Local<Value> to_number_result = obj->ToNumber(isolate); |
- CHECK(to_number_result.IsEmpty()); |
+ CHECK(obj->ToNumber(env.local()).IsEmpty()); |
CheckUncle(&try_catch); |
- Local<Value> to_integer_result = obj->ToInteger(isolate); |
- CHECK(to_integer_result.IsEmpty()); |
+ CHECK(obj->ToInteger(env.local()).IsEmpty()); |
CheckUncle(&try_catch); |
- Local<Value> to_uint32_result = obj->ToUint32(isolate); |
- CHECK(to_uint32_result.IsEmpty()); |
+ CHECK(obj->ToUint32(env.local()).IsEmpty()); |
CheckUncle(&try_catch); |
- Local<Value> to_int32_result = obj->ToInt32(isolate); |
- CHECK(to_int32_result.IsEmpty()); |
+ CHECK(obj->ToInt32(env.local()).IsEmpty()); |
CheckUncle(&try_catch); |
- Local<Value> to_object_result = v8::Undefined(isolate)->ToObject(isolate); |
- CHECK(to_object_result.IsEmpty()); |
+ CHECK(v8::Undefined(isolate)->ToObject(env.local()).IsEmpty()); |
CHECK(try_catch.HasCaught()); |
try_catch.Reset(); |
- int32_t int32_value = obj->Int32Value(); |
- CHECK_EQ(0, int32_value); |
+ CHECK(obj->Int32Value(env.local()).IsNothing()); |
CheckUncle(&try_catch); |
- uint32_t uint32_value = obj->Uint32Value(); |
- CHECK_EQ(0u, uint32_value); |
+ CHECK(obj->Uint32Value(env.local()).IsNothing()); |
CheckUncle(&try_catch); |
- double number_value = obj->NumberValue(); |
- CHECK(std::isnan(number_value)); |
+ CHECK(obj->NumberValue(env.local()).IsNothing()); |
CheckUncle(&try_catch); |
- int64_t integer_value = obj->IntegerValue(); |
- CHECK_EQ(0, integer_value); |
+ CHECK(obj->IntegerValue(env.local()).IsNothing()); |
CheckUncle(&try_catch); |
} |
@@ -4853,7 +5479,10 @@ void CCatcher(const v8::FunctionCallbackInfo<v8::Value>& args) { |
} |
v8::HandleScope scope(args.GetIsolate()); |
v8::TryCatch try_catch(args.GetIsolate()); |
- Local<Value> result = CompileRun(args[0]->ToString(args.GetIsolate())); |
+ Local<Value> result = |
+ CompileRun(args[0] |
+ ->ToString(args.GetIsolate()->GetCurrentContext()) |
+ .ToLocalChecked()); |
CHECK(!try_catch.HasCaught() || result.IsEmpty()); |
args.GetReturnValue().Set(try_catch.HasCaught()); |
} |
@@ -4873,8 +5502,10 @@ THREADED_TEST(APICatch) { |
"} catch (e) {" |
" thrown = true;" |
"}"); |
- Local<Value> thrown = context->Global()->Get(v8_str("thrown")); |
- CHECK(thrown->BooleanValue()); |
+ Local<Value> thrown = context->Global() |
+ ->Get(context.local(), v8_str("thrown")) |
+ .ToLocalChecked(); |
+ CHECK(thrown->BooleanValue(context.local()).FromJust()); |
} |
@@ -4916,10 +5547,13 @@ TEST(TryCatchInTryFinally) { |
} |
-static void check_reference_error_message(v8::Handle<v8::Message> message, |
- v8::Handle<v8::Value> data) { |
+static void check_reference_error_message(v8::Local<v8::Message> message, |
+ v8::Local<v8::Value> data) { |
const char* reference_error = "Uncaught ReferenceError: asdf is not defined"; |
- CHECK(message->Get()->Equals(v8_str(reference_error))); |
+ CHECK(message->Get() |
+ ->Equals(CcTest::isolate()->GetCurrentContext(), |
+ v8_str(reference_error)) |
+ .FromJust()); |
} |
@@ -4935,7 +5569,7 @@ static void Fail(const v8::FunctionCallbackInfo<v8::Value>& args) { |
TEST(APIThrowMessageOverwrittenToString) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::V8::AddMessageListener(check_reference_error_message); |
+ isolate->AddMessageListener(check_reference_error_message); |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->Set(v8_str("fail"), v8::FunctionTemplate::New(isolate, Fail)); |
LocalContext context(NULL, templ); |
@@ -4962,29 +5596,32 @@ TEST(APIThrowMessageOverwrittenToString) { |
CompileRun("asdf;"); |
CompileRun("ReferenceError.prototype = new Object();"); |
CompileRun("asdf;"); |
- v8::Handle<Value> string = CompileRun("try { asdf; } catch(e) { e + ''; }"); |
- CHECK(string->Equals(v8_str("Whoops"))); |
+ v8::Local<Value> string = CompileRun("try { asdf; } catch(e) { e + ''; }"); |
+ CHECK(string->Equals(context.local(), v8_str("Whoops")).FromJust()); |
CompileRun( |
"ReferenceError.prototype.constructor = new Object();" |
"ReferenceError.prototype.constructor.name = 1;" |
"Number.prototype.toString = function() { return 'Whoops'; };" |
"ReferenceError.prototype.toString = Object.prototype.toString;"); |
CompileRun("asdf;"); |
- v8::V8::RemoveMessageListeners(check_reference_error_message); |
+ isolate->RemoveMessageListeners(check_reference_error_message); |
} |
-static void check_custom_error_tostring(v8::Handle<v8::Message> message, |
- v8::Handle<v8::Value> data) { |
+static void check_custom_error_tostring(v8::Local<v8::Message> message, |
+ v8::Local<v8::Value> data) { |
const char* uncaught_error = "Uncaught MyError toString"; |
- CHECK(message->Get()->Equals(v8_str(uncaught_error))); |
+ CHECK(message->Get() |
+ ->Equals(CcTest::isolate()->GetCurrentContext(), |
+ v8_str(uncaught_error)) |
+ .FromJust()); |
} |
TEST(CustomErrorToString) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::V8::AddMessageListener(check_custom_error_tostring); |
+ context->GetIsolate()->AddMessageListener(check_custom_error_tostring); |
CompileRun( |
"function MyError(name, message) { " |
" this.name = name; " |
@@ -4995,22 +5632,25 @@ TEST(CustomErrorToString) { |
" return 'MyError toString'; " |
"}; " |
"throw new MyError('my name', 'my message'); "); |
- v8::V8::RemoveMessageListeners(check_custom_error_tostring); |
+ context->GetIsolate()->RemoveMessageListeners(check_custom_error_tostring); |
} |
-static void check_custom_error_message(v8::Handle<v8::Message> message, |
- v8::Handle<v8::Value> data) { |
+static void check_custom_error_message(v8::Local<v8::Message> message, |
+ v8::Local<v8::Value> data) { |
const char* uncaught_error = "Uncaught MyError: my message"; |
printf("%s\n", *v8::String::Utf8Value(message->Get())); |
- CHECK(message->Get()->Equals(v8_str(uncaught_error))); |
+ CHECK(message->Get() |
+ ->Equals(CcTest::isolate()->GetCurrentContext(), |
+ v8_str(uncaught_error)) |
+ .FromJust()); |
} |
TEST(CustomErrorMessage) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::V8::AddMessageListener(check_custom_error_message); |
+ context->GetIsolate()->AddMessageListener(check_custom_error_message); |
// Handlebars. |
CompileRun( |
@@ -5046,32 +5686,36 @@ TEST(CustomErrorMessage) { |
"MyError.prototype = Object.create(Error.prototype); " |
"throw new MyError('my message'); "); |
- v8::V8::RemoveMessageListeners(check_custom_error_message); |
+ context->GetIsolate()->RemoveMessageListeners(check_custom_error_message); |
} |
-static void check_custom_rethrowing_message(v8::Handle<v8::Message> message, |
- v8::Handle<v8::Value> data) { |
+static void check_custom_rethrowing_message(v8::Local<v8::Message> message, |
+ v8::Local<v8::Value> data) { |
const char* uncaught_error = "Uncaught exception"; |
- CHECK(message->Get()->Equals(v8_str(uncaught_error))); |
+ CHECK(message->Get() |
+ ->Equals(CcTest::isolate()->GetCurrentContext(), |
+ v8_str(uncaught_error)) |
+ .FromJust()); |
} |
TEST(CustomErrorRethrowsOnToString) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::V8::AddMessageListener(check_custom_rethrowing_message); |
+ context->GetIsolate()->AddMessageListener(check_custom_rethrowing_message); |
CompileRun( |
"var e = { toString: function() { throw e; } };" |
"try { throw e; } finally {}"); |
- v8::V8::RemoveMessageListeners(check_custom_rethrowing_message); |
+ context->GetIsolate()->RemoveMessageListeners( |
+ check_custom_rethrowing_message); |
} |
-static void receive_message(v8::Handle<v8::Message> message, |
- v8::Handle<v8::Value> data) { |
+static void receive_message(v8::Local<v8::Message> message, |
+ v8::Local<v8::Value> data) { |
message->Get(); |
message_received = true; |
} |
@@ -5081,14 +5725,14 @@ TEST(APIThrowMessage) { |
message_received = false; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::V8::AddMessageListener(receive_message); |
+ isolate->AddMessageListener(receive_message); |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->Set(v8_str("ThrowFromC"), |
v8::FunctionTemplate::New(isolate, ThrowFromC)); |
LocalContext context(0, templ); |
CompileRun("ThrowFromC();"); |
CHECK(message_received); |
- v8::V8::RemoveMessageListeners(receive_message); |
+ isolate->RemoveMessageListeners(receive_message); |
} |
@@ -5096,7 +5740,7 @@ TEST(APIThrowMessageAndVerboseTryCatch) { |
message_received = false; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::V8::AddMessageListener(receive_message); |
+ isolate->AddMessageListener(receive_message); |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->Set(v8_str("ThrowFromC"), |
v8::FunctionTemplate::New(isolate, ThrowFromC)); |
@@ -5107,7 +5751,7 @@ TEST(APIThrowMessageAndVerboseTryCatch) { |
CHECK(try_catch.HasCaught()); |
CHECK(result.IsEmpty()); |
CHECK(message_received); |
- v8::V8::RemoveMessageListeners(receive_message); |
+ isolate->RemoveMessageListeners(receive_message); |
} |
@@ -5115,14 +5759,14 @@ TEST(APIStackOverflowAndVerboseTryCatch) { |
message_received = false; |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::V8::AddMessageListener(receive_message); |
+ context->GetIsolate()->AddMessageListener(receive_message); |
v8::TryCatch try_catch(context->GetIsolate()); |
try_catch.SetVerbose(true); |
Local<Value> result = CompileRun("function foo() { foo(); } foo();"); |
CHECK(try_catch.HasCaught()); |
CHECK(result.IsEmpty()); |
CHECK(message_received); |
- v8::V8::RemoveMessageListeners(receive_message); |
+ context->GetIsolate()->RemoveMessageListeners(receive_message); |
} |
@@ -5146,19 +5790,23 @@ THREADED_TEST(ExternalScriptException) { |
void CThrowCountDown(const v8::FunctionCallbackInfo<v8::Value>& args) { |
ApiTestFuzzer::Fuzz(); |
CHECK_EQ(4, args.Length()); |
- int count = args[0]->Int32Value(); |
- int cInterval = args[2]->Int32Value(); |
+ v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); |
+ int count = args[0]->Int32Value(context).FromJust(); |
+ int cInterval = args[2]->Int32Value(context).FromJust(); |
if (count == 0) { |
args.GetIsolate()->ThrowException(v8_str("FromC")); |
return; |
} else { |
- Local<v8::Object> global = args.GetIsolate()->GetCurrentContext()->Global(); |
- Local<Value> fun = global->Get(v8_str("JSThrowCountDown")); |
- v8::Handle<Value> argv[] = {v8_num(count - 1), args[1], args[2], args[3]}; |
+ Local<v8::Object> global = context->Global(); |
+ Local<Value> fun = |
+ global->Get(context, v8_str("JSThrowCountDown")).ToLocalChecked(); |
+ v8::Local<Value> argv[] = {v8_num(count - 1), args[1], args[2], args[3]}; |
if (count % cInterval == 0) { |
v8::TryCatch try_catch(args.GetIsolate()); |
- Local<Value> result = fun.As<Function>()->Call(global, 4, argv); |
- int expected = args[3]->Int32Value(); |
+ Local<Value> result = fun.As<Function>() |
+ ->Call(context, global, 4, argv) |
+ .FromMaybe(Local<Value>()); |
+ int expected = args[3]->Int32Value(context).FromJust(); |
if (try_catch.HasCaught()) { |
CHECK_EQ(expected, count); |
CHECK(result.IsEmpty()); |
@@ -5169,7 +5817,9 @@ void CThrowCountDown(const v8::FunctionCallbackInfo<v8::Value>& args) { |
args.GetReturnValue().Set(result); |
return; |
} else { |
- args.GetReturnValue().Set(fun.As<Function>()->Call(global, 4, argv)); |
+ args.GetReturnValue().Set(fun.As<Function>() |
+ ->Call(context, global, 4, argv) |
+ .FromMaybe(v8::Local<v8::Value>())); |
return; |
} |
} |
@@ -5179,9 +5829,10 @@ void CThrowCountDown(const v8::FunctionCallbackInfo<v8::Value>& args) { |
void JSCheck(const v8::FunctionCallbackInfo<v8::Value>& args) { |
ApiTestFuzzer::Fuzz(); |
CHECK_EQ(3, args.Length()); |
- bool equality = args[0]->BooleanValue(); |
- int count = args[1]->Int32Value(); |
- int expected = args[2]->Int32Value(); |
+ v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); |
+ bool equality = args[0]->BooleanValue(context).FromJust(); |
+ int count = args[1]->Int32Value(context).FromJust(); |
+ int expected = args[2]->Int32Value(context).FromJust(); |
if (equality) { |
CHECK_EQ(count, expected); |
} else { |
@@ -5252,35 +5903,37 @@ TEST(ExceptionOrder) { |
" return CThrowCountDown(count - 1, jsInterval, cInterval, expected);" |
" }" |
"}"); |
- Local<Function> fun = |
- Local<Function>::Cast(context->Global()->Get(v8_str("JSThrowCountDown"))); |
+ Local<Function> fun = Local<Function>::Cast( |
+ context->Global() |
+ ->Get(context.local(), v8_str("JSThrowCountDown")) |
+ .ToLocalChecked()); |
const int argc = 4; |
// count jsInterval cInterval expected |
// *JS[4] *C[3] @JS[2] C[1] JS[0] |
- v8::Handle<Value> a0[argc] = {v8_num(4), v8_num(2), v8_num(3), v8_num(2)}; |
- fun->Call(fun, argc, a0); |
+ v8::Local<Value> a0[argc] = {v8_num(4), v8_num(2), v8_num(3), v8_num(2)}; |
+ fun->Call(context.local(), fun, argc, a0).ToLocalChecked(); |
// JS[5] *C[4] JS[3] @C[2] JS[1] C[0] |
- v8::Handle<Value> a1[argc] = {v8_num(5), v8_num(6), v8_num(1), v8_num(2)}; |
- fun->Call(fun, argc, a1); |
+ v8::Local<Value> a1[argc] = {v8_num(5), v8_num(6), v8_num(1), v8_num(2)}; |
+ fun->Call(context.local(), fun, argc, a1).ToLocalChecked(); |
// JS[6] @C[5] JS[4] C[3] JS[2] C[1] JS[0] |
- v8::Handle<Value> a2[argc] = {v8_num(6), v8_num(7), v8_num(5), v8_num(5)}; |
- fun->Call(fun, argc, a2); |
+ v8::Local<Value> a2[argc] = {v8_num(6), v8_num(7), v8_num(5), v8_num(5)}; |
+ fun->Call(context.local(), fun, argc, a2).ToLocalChecked(); |
// @JS[6] C[5] JS[4] C[3] JS[2] C[1] JS[0] |
- v8::Handle<Value> a3[argc] = {v8_num(6), v8_num(6), v8_num(7), v8_num(6)}; |
- fun->Call(fun, argc, a3); |
+ v8::Local<Value> a3[argc] = {v8_num(6), v8_num(6), v8_num(7), v8_num(6)}; |
+ fun->Call(context.local(), fun, argc, a3).ToLocalChecked(); |
// JS[6] *C[5] @JS[4] C[3] JS[2] C[1] JS[0] |
- v8::Handle<Value> a4[argc] = {v8_num(6), v8_num(4), v8_num(5), v8_num(4)}; |
- fun->Call(fun, argc, a4); |
+ v8::Local<Value> a4[argc] = {v8_num(6), v8_num(4), v8_num(5), v8_num(4)}; |
+ fun->Call(context.local(), fun, argc, a4).ToLocalChecked(); |
// JS[6] C[5] *JS[4] @C[3] JS[2] C[1] JS[0] |
- v8::Handle<Value> a5[argc] = {v8_num(6), v8_num(4), v8_num(3), v8_num(3)}; |
- fun->Call(fun, argc, a5); |
+ v8::Local<Value> a5[argc] = {v8_num(6), v8_num(4), v8_num(3), v8_num(3)}; |
+ fun->Call(context.local(), fun, argc, a5).ToLocalChecked(); |
} |
@@ -5297,24 +5950,40 @@ THREADED_TEST(ThrowValues) { |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->Set(v8_str("Throw"), v8::FunctionTemplate::New(isolate, ThrowValue)); |
LocalContext context(0, templ); |
- v8::Handle<v8::Array> result = v8::Handle<v8::Array>::Cast(CompileRun( |
- "function Run(obj) {" |
- " try {" |
- " Throw(obj);" |
- " } catch (e) {" |
- " return e;" |
- " }" |
- " return 'no exception';" |
- "}" |
- "[Run('str'), Run(1), Run(0), Run(null), Run(void 0)];")); |
+ v8::Local<v8::Array> result = v8::Local<v8::Array>::Cast( |
+ CompileRun("function Run(obj) {" |
+ " try {" |
+ " Throw(obj);" |
+ " } catch (e) {" |
+ " return e;" |
+ " }" |
+ " return 'no exception';" |
+ "}" |
+ "[Run('str'), Run(1), Run(0), Run(null), Run(void 0)];")); |
CHECK_EQ(5u, result->Length()); |
- CHECK(result->Get(v8::Integer::New(isolate, 0))->IsString()); |
- CHECK(result->Get(v8::Integer::New(isolate, 1))->IsNumber()); |
- CHECK_EQ(1, result->Get(v8::Integer::New(isolate, 1))->Int32Value()); |
- CHECK(result->Get(v8::Integer::New(isolate, 2))->IsNumber()); |
- CHECK_EQ(0, result->Get(v8::Integer::New(isolate, 2))->Int32Value()); |
- CHECK(result->Get(v8::Integer::New(isolate, 3))->IsNull()); |
- CHECK(result->Get(v8::Integer::New(isolate, 4))->IsUndefined()); |
+ CHECK(result->Get(context.local(), v8::Integer::New(isolate, 0)) |
+ .ToLocalChecked() |
+ ->IsString()); |
+ CHECK(result->Get(context.local(), v8::Integer::New(isolate, 1)) |
+ .ToLocalChecked() |
+ ->IsNumber()); |
+ CHECK_EQ(1, result->Get(context.local(), v8::Integer::New(isolate, 1)) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(result->Get(context.local(), v8::Integer::New(isolate, 2)) |
+ .ToLocalChecked() |
+ ->IsNumber()); |
+ CHECK_EQ(0, result->Get(context.local(), v8::Integer::New(isolate, 2)) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(result->Get(context.local(), v8::Integer::New(isolate, 3)) |
+ .ToLocalChecked() |
+ ->IsNull()); |
+ CHECK(result->Get(context.local(), v8::Integer::New(isolate, 4)) |
+ .ToLocalChecked() |
+ ->IsUndefined()); |
} |
@@ -5325,12 +5994,12 @@ THREADED_TEST(CatchZero) { |
CHECK(!try_catch.HasCaught()); |
CompileRun("throw 10"); |
CHECK(try_catch.HasCaught()); |
- CHECK_EQ(10, try_catch.Exception()->Int32Value()); |
+ CHECK_EQ(10, try_catch.Exception()->Int32Value(context.local()).FromJust()); |
try_catch.Reset(); |
CHECK(!try_catch.HasCaught()); |
CompileRun("throw 0"); |
CHECK(try_catch.HasCaught()); |
- CHECK_EQ(0, try_catch.Exception()->Int32Value()); |
+ CHECK_EQ(0, try_catch.Exception()->Int32Value(context.local()).FromJust()); |
} |
@@ -5364,9 +6033,12 @@ THREADED_TEST(TryCatchAndFinally) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- context->Global()->Set( |
- v8_str("native_with_try_catch"), |
- v8::FunctionTemplate::New(isolate, WithTryCatch)->GetFunction()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("native_with_try_catch"), |
+ v8::FunctionTemplate::New(isolate, WithTryCatch) |
+ ->GetFunction(context.local()) |
+ .ToLocalChecked()) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
CHECK(!try_catch.HasCaught()); |
CompileRun( |
@@ -5430,13 +6102,15 @@ TEST(TryCatchNested) { |
void TryCatchMixedNestingCheck(v8::TryCatch* try_catch) { |
CHECK(try_catch->HasCaught()); |
- Handle<Message> message = try_catch->Message(); |
- Handle<Value> resource = message->GetScriptOrigin().ResourceName(); |
+ Local<Message> message = try_catch->Message(); |
+ Local<Value> resource = message->GetScriptOrigin().ResourceName(); |
CHECK_EQ(0, strcmp(*v8::String::Utf8Value(resource), "inner")); |
CHECK_EQ(0, |
strcmp(*v8::String::Utf8Value(message->Get()), "Uncaught Error: a")); |
- CHECK_EQ(1, message->GetLineNumber()); |
- CHECK_EQ(0, message->GetStartColumn()); |
+ CHECK_EQ(1, message->GetLineNumber(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
+ CHECK_EQ(0, message->GetStartColumn(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
} |
@@ -5522,14 +6196,14 @@ THREADED_TEST(Equality) { |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(context->GetIsolate()); |
// Check that equality works at all before relying on CHECK_EQ |
- CHECK(v8_str("a")->Equals(v8_str("a"))); |
- CHECK(!v8_str("a")->Equals(v8_str("b"))); |
+ CHECK(v8_str("a")->Equals(context.local(), v8_str("a")).FromJust()); |
+ CHECK(!v8_str("a")->Equals(context.local(), v8_str("b")).FromJust()); |
- CHECK(v8_str("a")->Equals(v8_str("a"))); |
- CHECK(!v8_str("a")->Equals(v8_str("b"))); |
- CHECK(v8_num(1)->Equals(v8_num(1))); |
- CHECK(v8_num(1.00)->Equals(v8_num(1))); |
- CHECK(!v8_num(1)->Equals(v8_num(2))); |
+ CHECK(v8_str("a")->Equals(context.local(), v8_str("a")).FromJust()); |
+ CHECK(!v8_str("a")->Equals(context.local(), v8_str("b")).FromJust()); |
+ CHECK(v8_num(1)->Equals(context.local(), v8_num(1)).FromJust()); |
+ CHECK(v8_num(1.00)->Equals(context.local(), v8_num(1)).FromJust()); |
+ CHECK(!v8_num(1)->Equals(context.local(), v8_num(2)).FromJust()); |
// Assume String is not internalized. |
CHECK(v8_str("a")->StrictEquals(v8_str("a"))); |
@@ -5543,7 +6217,7 @@ THREADED_TEST(Equality) { |
CHECK(v8::False(isolate)->StrictEquals(v8::False(isolate))); |
CHECK(!v8::False(isolate)->StrictEquals(v8::Undefined(isolate))); |
- v8::Handle<v8::Object> obj = v8::Object::New(isolate); |
+ v8::Local<v8::Object> obj = v8::Object::New(isolate); |
v8::Persistent<v8::Object> alias(isolate, obj); |
CHECK(v8::Local<v8::Object>::New(isolate, alias)->StrictEquals(obj)); |
alias.Reset(); |
@@ -5564,15 +6238,20 @@ THREADED_TEST(MultiRun) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
Local<Script> script = v8_compile("x"); |
- for (int i = 0; i < 10; i++) script->Run(); |
+ for (int i = 0; i < 10; i++) { |
+ script->Run(context.local()).IsEmpty(); |
+ } |
} |
-static void GetXValue(Local<String> name, |
+static void GetXValue(Local<Name> name, |
const v8::PropertyCallbackInfo<v8::Value>& info) { |
ApiTestFuzzer::Fuzz(); |
- CHECK(info.Data()->Equals(v8_str("donut"))); |
- CHECK(name->Equals(v8_str("x"))); |
+ CHECK(info.Data() |
+ ->Equals(CcTest::isolate()->GetCurrentContext(), v8_str("donut")) |
+ .FromJust()); |
+ CHECK(name->Equals(CcTest::isolate()->GetCurrentContext(), v8_str("x")) |
+ .FromJust()); |
info.GetReturnValue().Set(name); |
} |
@@ -5583,11 +6262,14 @@ THREADED_TEST(SimplePropertyRead) { |
v8::HandleScope scope(isolate); |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut")); |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
Local<Script> script = v8_compile("obj.x"); |
for (int i = 0; i < 10; i++) { |
- Local<Value> result = script->Run(); |
- CHECK(result->Equals(v8_str("x"))); |
+ Local<Value> result = script->Run(context.local()).ToLocalChecked(); |
+ CHECK(result->Equals(context.local(), v8_str("x")).FromJust()); |
} |
} |
@@ -5598,15 +6280,18 @@ THREADED_TEST(DefinePropertyOnAPIAccessor) { |
v8::HandleScope scope(isolate); |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut")); |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
// Uses getOwnPropertyDescriptor to check the configurable status |
Local<Script> script_desc = v8_compile( |
"var prop = Object.getOwnPropertyDescriptor( " |
"obj, 'x');" |
"prop.configurable;"); |
- Local<Value> result = script_desc->Run(); |
- CHECK_EQ(result->BooleanValue(), true); |
+ Local<Value> result = script_desc->Run(context.local()).ToLocalChecked(); |
+ CHECK_EQ(result->BooleanValue(context.local()).FromJust(), true); |
// Redefine get - but still configurable |
Local<Script> script_define = v8_compile( |
@@ -5614,12 +6299,12 @@ THREADED_TEST(DefinePropertyOnAPIAccessor) { |
" configurable: true };" |
"Object.defineProperty(obj, 'x', desc);" |
"obj.x"); |
- result = script_define->Run(); |
- CHECK(result->Equals(v8_num(42))); |
+ result = script_define->Run(context.local()).ToLocalChecked(); |
+ CHECK(result->Equals(context.local(), v8_num(42)).FromJust()); |
// Check that the accessor is still configurable |
- result = script_desc->Run(); |
- CHECK_EQ(result->BooleanValue(), true); |
+ result = script_desc->Run(context.local()).ToLocalChecked(); |
+ CHECK_EQ(result->BooleanValue(context.local()).FromJust(), true); |
// Redefine to a non-configurable |
script_define = v8_compile( |
@@ -5627,14 +6312,14 @@ THREADED_TEST(DefinePropertyOnAPIAccessor) { |
" configurable: false };" |
"Object.defineProperty(obj, 'x', desc);" |
"obj.x"); |
- result = script_define->Run(); |
- CHECK(result->Equals(v8_num(43))); |
- result = script_desc->Run(); |
- CHECK_EQ(result->BooleanValue(), false); |
+ result = script_define->Run(context.local()).ToLocalChecked(); |
+ CHECK(result->Equals(context.local(), v8_num(43)).FromJust()); |
+ result = script_desc->Run(context.local()).ToLocalChecked(); |
+ CHECK_EQ(result->BooleanValue(context.local()).FromJust(), false); |
// Make sure that it is not possible to redefine again |
v8::TryCatch try_catch(isolate); |
- result = script_define->Run(); |
+ CHECK(script_define->Run(context.local()).IsEmpty()); |
CHECK(try_catch.HasCaught()); |
String::Utf8Value exception_value(try_catch.Exception()); |
CHECK_EQ(0, |
@@ -5648,42 +6333,43 @@ THREADED_TEST(DefinePropertyOnDefineGetterSetter) { |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut")); |
LocalContext context; |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
Local<Script> script_desc = v8_compile( |
"var prop =" |
"Object.getOwnPropertyDescriptor( " |
"obj, 'x');" |
"prop.configurable;"); |
- Local<Value> result = script_desc->Run(); |
- CHECK_EQ(result->BooleanValue(), true); |
+ Local<Value> result = script_desc->Run(context.local()).ToLocalChecked(); |
+ CHECK_EQ(result->BooleanValue(context.local()).FromJust(), true); |
Local<Script> script_define = v8_compile( |
"var desc = {get: function(){return 42; }," |
" configurable: true };" |
"Object.defineProperty(obj, 'x', desc);" |
"obj.x"); |
- result = script_define->Run(); |
- CHECK(result->Equals(v8_num(42))); |
- |
- |
- result = script_desc->Run(); |
- CHECK_EQ(result->BooleanValue(), true); |
+ result = script_define->Run(context.local()).ToLocalChecked(); |
+ CHECK(result->Equals(context.local(), v8_num(42)).FromJust()); |
+ result = script_desc->Run(context.local()).ToLocalChecked(); |
+ CHECK_EQ(result->BooleanValue(context.local()).FromJust(), true); |
script_define = v8_compile( |
"var desc = {get: function(){return 43; }," |
" configurable: false };" |
"Object.defineProperty(obj, 'x', desc);" |
"obj.x"); |
- result = script_define->Run(); |
- CHECK(result->Equals(v8_num(43))); |
- result = script_desc->Run(); |
+ result = script_define->Run(context.local()).ToLocalChecked(); |
+ CHECK(result->Equals(context.local(), v8_num(43)).FromJust()); |
- CHECK_EQ(result->BooleanValue(), false); |
+ result = script_desc->Run(context.local()).ToLocalChecked(); |
+ CHECK_EQ(result->BooleanValue(context.local()).FromJust(), false); |
v8::TryCatch try_catch(isolate); |
- result = script_define->Run(); |
+ CHECK(script_define->Run(context.local()).IsEmpty()); |
CHECK(try_catch.HasCaught()); |
String::Utf8Value exception_value(try_catch.Exception()); |
CHECK_EQ(0, |
@@ -5691,9 +6377,13 @@ THREADED_TEST(DefinePropertyOnDefineGetterSetter) { |
} |
-static v8::Handle<v8::Object> GetGlobalProperty(LocalContext* context, |
- char const* name) { |
- return v8::Handle<v8::Object>::Cast((*context)->Global()->Get(v8_str(name))); |
+static v8::Local<v8::Object> GetGlobalProperty(LocalContext* context, |
+ char const* name) { |
+ return v8::Local<v8::Object>::Cast( |
+ (*context) |
+ ->Global() |
+ ->Get(CcTest::isolate()->GetCurrentContext(), v8_str(name)) |
+ .ToLocalChecked()); |
} |
@@ -5703,20 +6393,27 @@ THREADED_TEST(DefineAPIAccessorOnObject) { |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
LocalContext context; |
- context->Global()->Set(v8_str("obj1"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj1"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("var obj2 = {};"); |
CHECK(CompileRun("obj1.x")->IsUndefined()); |
CHECK(CompileRun("obj2.x")->IsUndefined()); |
CHECK(GetGlobalProperty(&context, "obj1") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"))); |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut")) |
+ .FromJust()); |
ExpectString("obj1.x", "x"); |
CHECK(CompileRun("obj2.x")->IsUndefined()); |
CHECK(GetGlobalProperty(&context, "obj2") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"))); |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut")) |
+ .FromJust()); |
ExpectString("obj1.x", "x"); |
ExpectString("obj2.x", "x"); |
@@ -5742,9 +6439,13 @@ THREADED_TEST(DefineAPIAccessorOnObject) { |
ExpectTrue("Object.getOwnPropertyDescriptor(obj2, 'x').configurable"); |
CHECK(GetGlobalProperty(&context, "obj1") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"))); |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut")) |
+ .FromJust()); |
CHECK(GetGlobalProperty(&context, "obj2") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"))); |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut")) |
+ .FromJust()); |
ExpectString("obj1.x", "x"); |
ExpectString("obj2.x", "x"); |
@@ -5759,17 +6460,20 @@ THREADED_TEST(DefineAPIAccessorOnObject) { |
CompileRun( |
"Object.defineProperty(obj2, 'x'," |
"{ get: function() { return 'z'; }, configurable: false })"); |
- |
ExpectTrue("!Object.getOwnPropertyDescriptor(obj1, 'x').configurable"); |
ExpectTrue("!Object.getOwnPropertyDescriptor(obj2, 'x').configurable"); |
ExpectString("obj1.x", "z"); |
ExpectString("obj2.x", "z"); |
- CHECK(!GetGlobalProperty(&context, "obj1") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"))); |
- CHECK(!GetGlobalProperty(&context, "obj2") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"))); |
+ CHECK(GetGlobalProperty(&context, "obj1") |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut")) |
+ .IsNothing()); |
+ CHECK(GetGlobalProperty(&context, "obj2") |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut")) |
+ .IsNothing()); |
ExpectString("obj1.x", "z"); |
ExpectString("obj2.x", "z"); |
@@ -5782,15 +6486,20 @@ THREADED_TEST(DontDeleteAPIAccessorsCannotBeOverriden) { |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
LocalContext context; |
- context->Global()->Set(v8_str("obj1"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj1"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("var obj2 = {};"); |
CHECK(GetGlobalProperty(&context, "obj1") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"), |
- v8::DEFAULT, v8::DontDelete)); |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut"), v8::DEFAULT, v8::DontDelete) |
+ .FromJust()); |
CHECK(GetGlobalProperty(&context, "obj2") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"), |
- v8::DEFAULT, v8::DontDelete)); |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut"), v8::DEFAULT, v8::DontDelete) |
+ .FromJust()); |
ExpectString("obj1.x", "x"); |
ExpectString("obj2.x", "x"); |
@@ -5798,10 +6507,14 @@ THREADED_TEST(DontDeleteAPIAccessorsCannotBeOverriden) { |
ExpectTrue("!Object.getOwnPropertyDescriptor(obj1, 'x').configurable"); |
ExpectTrue("!Object.getOwnPropertyDescriptor(obj2, 'x').configurable"); |
- CHECK(!GetGlobalProperty(&context, "obj1") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"))); |
- CHECK(!GetGlobalProperty(&context, "obj2") |
- ->SetAccessor(v8_str("x"), GetXValue, NULL, v8_str("donut"))); |
+ CHECK(GetGlobalProperty(&context, "obj1") |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut")) |
+ .IsNothing()); |
+ CHECK(GetGlobalProperty(&context, "obj2") |
+ ->SetAccessor(context.local(), v8_str("x"), GetXValue, NULL, |
+ v8_str("donut")) |
+ .IsNothing()); |
{ |
v8::TryCatch try_catch(isolate); |
@@ -5826,11 +6539,14 @@ THREADED_TEST(DontDeleteAPIAccessorsCannotBeOverriden) { |
} |
-static void Get239Value(Local<String> name, |
+static void Get239Value(Local<Name> name, |
const v8::PropertyCallbackInfo<v8::Value>& info) { |
ApiTestFuzzer::Fuzz(); |
- CHECK(info.Data()->Equals(v8_str("donut"))); |
- CHECK(name->Equals(v8_str("239"))); |
+ CHECK(info.Data() |
+ ->Equals(info.GetIsolate()->GetCurrentContext(), v8_str("donut")) |
+ .FromJust()); |
+ CHECK(name->Equals(info.GetIsolate()->GetCurrentContext(), v8_str("239")) |
+ .FromJust()); |
info.GetReturnValue().Set(name); |
} |
@@ -5841,13 +6557,20 @@ THREADED_TEST(ElementAPIAccessor) { |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
LocalContext context; |
- context->Global()->Set(v8_str("obj1"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj1"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("var obj2 = {};"); |
CHECK(GetGlobalProperty(&context, "obj1") |
- ->SetAccessor(v8_str("239"), Get239Value, NULL, v8_str("donut"))); |
+ ->SetAccessor(context.local(), v8_str("239"), Get239Value, NULL, |
+ v8_str("donut")) |
+ .FromJust()); |
CHECK(GetGlobalProperty(&context, "obj2") |
- ->SetAccessor(v8_str("239"), Get239Value, NULL, v8_str("donut"))); |
+ ->SetAccessor(context.local(), v8_str("239"), Get239Value, NULL, |
+ v8_str("donut")) |
+ .FromJust()); |
ExpectString("obj1[239]", "239"); |
ExpectString("obj2[239]", "239"); |
@@ -5859,11 +6582,12 @@ THREADED_TEST(ElementAPIAccessor) { |
v8::Persistent<Value> xValue; |
-static void SetXValue(Local<String> name, Local<Value> value, |
+static void SetXValue(Local<Name> name, Local<Value> value, |
const v8::PropertyCallbackInfo<void>& info) { |
- CHECK(value->Equals(v8_num(4))); |
- CHECK(info.Data()->Equals(v8_str("donut"))); |
- CHECK(name->Equals(v8_str("x"))); |
+ Local<Context> context = info.GetIsolate()->GetCurrentContext(); |
+ CHECK(value->Equals(context, v8_num(4)).FromJust()); |
+ CHECK(info.Data()->Equals(context, v8_str("donut")).FromJust()); |
+ CHECK(name->Equals(context, v8_str("x")).FromJust()); |
CHECK(xValue.IsEmpty()); |
xValue.Reset(info.GetIsolate(), value); |
} |
@@ -5875,12 +6599,18 @@ THREADED_TEST(SimplePropertyWrite) { |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetAccessor(v8_str("x"), GetXValue, SetXValue, v8_str("donut")); |
LocalContext context; |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
Local<Script> script = v8_compile("obj.x = 4"); |
for (int i = 0; i < 10; i++) { |
CHECK(xValue.IsEmpty()); |
- script->Run(); |
- CHECK(v8_num(4)->Equals(Local<Value>::New(CcTest::isolate(), xValue))); |
+ script->Run(context.local()).ToLocalChecked(); |
+ CHECK(v8_num(4) |
+ ->Equals(context.local(), |
+ Local<Value>::New(CcTest::isolate(), xValue)) |
+ .FromJust()); |
xValue.Reset(); |
} |
} |
@@ -5892,12 +6622,18 @@ THREADED_TEST(SetterOnly) { |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetAccessor(v8_str("x"), NULL, SetXValue, v8_str("donut")); |
LocalContext context; |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
Local<Script> script = v8_compile("obj.x = 4; obj.x"); |
for (int i = 0; i < 10; i++) { |
CHECK(xValue.IsEmpty()); |
- script->Run(); |
- CHECK(v8_num(4)->Equals(Local<Value>::New(CcTest::isolate(), xValue))); |
+ script->Run(context.local()).ToLocalChecked(); |
+ CHECK(v8_num(4) |
+ ->Equals(context.local(), |
+ Local<Value>::New(CcTest::isolate(), xValue)) |
+ .FromJust()); |
xValue.Reset(); |
} |
} |
@@ -5910,10 +6646,13 @@ THREADED_TEST(NoAccessors) { |
templ->SetAccessor(v8_str("x"), static_cast<v8::AccessorGetterCallback>(NULL), |
NULL, v8_str("donut")); |
LocalContext context; |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
Local<Script> script = v8_compile("obj.x = 4; obj.x"); |
for (int i = 0; i < 10; i++) { |
- script->Run(); |
+ script->Run(context.local()).ToLocalChecked(); |
} |
} |
@@ -5921,7 +6660,7 @@ THREADED_TEST(NoAccessors) { |
THREADED_TEST(MultiContexts) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ v8::Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->Set(v8_str("dummy"), |
v8::FunctionTemplate::New(isolate, DummyCallHandler)); |
@@ -5930,26 +6669,43 @@ THREADED_TEST(MultiContexts) { |
// Create an environment |
LocalContext context0(0, templ); |
context0->SetSecurityToken(password); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
- global0->Set(v8_str("custom"), v8_num(1234)); |
- CHECK_EQ(1234, global0->Get(v8_str("custom"))->Int32Value()); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
+ CHECK(global0->Set(context0.local(), v8_str("custom"), v8_num(1234)) |
+ .FromJust()); |
+ CHECK_EQ(1234, global0->Get(context0.local(), v8_str("custom")) |
+ .ToLocalChecked() |
+ ->Int32Value(context0.local()) |
+ .FromJust()); |
// Create an independent environment |
LocalContext context1(0, templ); |
context1->SetSecurityToken(password); |
- v8::Handle<v8::Object> global1 = context1->Global(); |
- global1->Set(v8_str("custom"), v8_num(1234)); |
- CHECK(!global0->Equals(global1)); |
- CHECK_EQ(1234, global0->Get(v8_str("custom"))->Int32Value()); |
- CHECK_EQ(1234, global1->Get(v8_str("custom"))->Int32Value()); |
+ v8::Local<v8::Object> global1 = context1->Global(); |
+ CHECK(global1->Set(context1.local(), v8_str("custom"), v8_num(1234)) |
+ .FromJust()); |
+ CHECK(!global0->Equals(context1.local(), global1).FromJust()); |
+ CHECK_EQ(1234, global0->Get(context1.local(), v8_str("custom")) |
+ .ToLocalChecked() |
+ ->Int32Value(context0.local()) |
+ .FromJust()); |
+ CHECK_EQ(1234, global1->Get(context1.local(), v8_str("custom")) |
+ .ToLocalChecked() |
+ ->Int32Value(context1.local()) |
+ .FromJust()); |
// Now create a new context with the old global |
LocalContext context2(0, templ, global1); |
context2->SetSecurityToken(password); |
- v8::Handle<v8::Object> global2 = context2->Global(); |
- CHECK(global1->Equals(global2)); |
- CHECK_EQ(0, global1->Get(v8_str("custom"))->Int32Value()); |
- CHECK_EQ(0, global2->Get(v8_str("custom"))->Int32Value()); |
+ v8::Local<v8::Object> global2 = context2->Global(); |
+ CHECK(global1->Equals(context2.local(), global2).FromJust()); |
+ CHECK_EQ(0, global1->Get(context2.local(), v8_str("custom")) |
+ .ToLocalChecked() |
+ ->Int32Value(context1.local()) |
+ .FromJust()); |
+ CHECK_EQ(0, global2->Get(context2.local(), v8_str("custom")) |
+ .ToLocalChecked() |
+ ->Int32Value(context2.local()) |
+ .FromJust()); |
} |
@@ -5960,24 +6716,34 @@ THREADED_TEST(FunctionPrototypeAcrossContexts) { |
v8::HandleScope scope(CcTest::isolate()); |
LocalContext env0; |
- v8::Handle<v8::Object> global0 = env0->Global(); |
- v8::Handle<v8::Object> object0 = |
- global0->Get(v8_str("Object")).As<v8::Object>(); |
- v8::Handle<v8::Object> tostring0 = |
- object0->Get(v8_str("toString")).As<v8::Object>(); |
- v8::Handle<v8::Object> proto0 = |
- tostring0->Get(v8_str("__proto__")).As<v8::Object>(); |
- proto0->Set(v8_str("custom"), v8_num(1234)); |
+ v8::Local<v8::Object> global0 = env0->Global(); |
+ v8::Local<v8::Object> object0 = global0->Get(env0.local(), v8_str("Object")) |
+ .ToLocalChecked() |
+ .As<v8::Object>(); |
+ v8::Local<v8::Object> tostring0 = |
+ object0->Get(env0.local(), v8_str("toString")) |
+ .ToLocalChecked() |
+ .As<v8::Object>(); |
+ v8::Local<v8::Object> proto0 = |
+ tostring0->Get(env0.local(), v8_str("__proto__")) |
+ .ToLocalChecked() |
+ .As<v8::Object>(); |
+ CHECK(proto0->Set(env0.local(), v8_str("custom"), v8_num(1234)).FromJust()); |
LocalContext env1; |
- v8::Handle<v8::Object> global1 = env1->Global(); |
- v8::Handle<v8::Object> object1 = |
- global1->Get(v8_str("Object")).As<v8::Object>(); |
- v8::Handle<v8::Object> tostring1 = |
- object1->Get(v8_str("toString")).As<v8::Object>(); |
- v8::Handle<v8::Object> proto1 = |
- tostring1->Get(v8_str("__proto__")).As<v8::Object>(); |
- CHECK(!proto1->Has(v8_str("custom"))); |
+ v8::Local<v8::Object> global1 = env1->Global(); |
+ v8::Local<v8::Object> object1 = global1->Get(env1.local(), v8_str("Object")) |
+ .ToLocalChecked() |
+ .As<v8::Object>(); |
+ v8::Local<v8::Object> tostring1 = |
+ object1->Get(env1.local(), v8_str("toString")) |
+ .ToLocalChecked() |
+ .As<v8::Object>(); |
+ v8::Local<v8::Object> proto1 = |
+ tostring1->Get(env1.local(), v8_str("__proto__")) |
+ .ToLocalChecked() |
+ .As<v8::Object>(); |
+ CHECK(!proto1->Has(env1.local(), v8_str("custom")).FromJust()); |
} |
@@ -5997,11 +6763,17 @@ THREADED_TEST(Regress892105) { |
LocalContext env0; |
Local<Script> script0 = v8_compile(source); |
- CHECK_EQ(8901.0, script0->Run()->NumberValue()); |
+ CHECK_EQ(8901.0, script0->Run(env0.local()) |
+ .ToLocalChecked() |
+ ->NumberValue(env0.local()) |
+ .FromJust()); |
LocalContext env1; |
Local<Script> script1 = v8_compile(source); |
- CHECK_EQ(8901.0, script1->Run()->NumberValue()); |
+ CHECK_EQ(8901.0, script1->Run(env1.local()) |
+ .ToLocalChecked() |
+ ->NumberValue(env1.local()) |
+ .FromJust()); |
} |
@@ -6013,8 +6785,12 @@ THREADED_TEST(UndetectableObject) { |
v8::FunctionTemplate::New(env->GetIsolate()); |
desc->InstanceTemplate()->MarkAsUndetectable(); // undetectable |
- Local<v8::Object> obj = desc->GetFunction()->NewInstance(); |
- env->Global()->Set(v8_str("undetectable"), obj); |
+ Local<v8::Object> obj = desc->GetFunction(env.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(env.local()) |
+ .ToLocalChecked(); |
+ CHECK( |
+ env->Global()->Set(env.local(), v8_str("undetectable"), obj).FromJust()); |
ExpectString("undetectable.toString()", "[object Object]"); |
ExpectString("typeof undetectable", "undefined"); |
@@ -6057,8 +6833,12 @@ THREADED_TEST(VoidLiteral) { |
Local<v8::FunctionTemplate> desc = v8::FunctionTemplate::New(isolate); |
desc->InstanceTemplate()->MarkAsUndetectable(); // undetectable |
- Local<v8::Object> obj = desc->GetFunction()->NewInstance(); |
- env->Global()->Set(v8_str("undetectable"), obj); |
+ Local<v8::Object> obj = desc->GetFunction(env.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(env.local()) |
+ .ToLocalChecked(); |
+ CHECK( |
+ env->Global()->Set(env.local(), v8_str("undetectable"), obj).FromJust()); |
ExpectBoolean("undefined == void 0", true); |
ExpectBoolean("undetectable == void 0", true); |
@@ -6103,8 +6883,12 @@ THREADED_TEST(ExtensibleOnUndetectable) { |
Local<v8::FunctionTemplate> desc = v8::FunctionTemplate::New(isolate); |
desc->InstanceTemplate()->MarkAsUndetectable(); // undetectable |
- Local<v8::Object> obj = desc->GetFunction()->NewInstance(); |
- env->Global()->Set(v8_str("undetectable"), obj); |
+ Local<v8::Object> obj = desc->GetFunction(env.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(env.local()) |
+ .ToLocalChecked(); |
+ CHECK( |
+ env->Global()->Set(env.local(), v8_str("undetectable"), obj).FromJust()); |
Local<String> source = v8_str( |
"undetectable.x = 42;" |
@@ -6112,18 +6896,20 @@ THREADED_TEST(ExtensibleOnUndetectable) { |
Local<Script> script = v8_compile(source); |
- CHECK(v8::Integer::New(isolate, 42)->Equals(script->Run())); |
+ CHECK(v8::Integer::New(isolate, 42) |
+ ->Equals(env.local(), script->Run(env.local()).ToLocalChecked()) |
+ .FromJust()); |
ExpectBoolean("Object.isExtensible(undetectable)", true); |
source = v8_str("Object.preventExtensions(undetectable);"); |
script = v8_compile(source); |
- script->Run(); |
+ script->Run(env.local()).ToLocalChecked(); |
ExpectBoolean("Object.isExtensible(undetectable)", false); |
source = v8_str("undetectable.y = 2000;"); |
script = v8_compile(source); |
- script->Run(); |
+ script->Run(env.local()).ToLocalChecked(); |
ExpectBoolean("undetectable.y == undefined", true); |
} |
@@ -6175,10 +6961,11 @@ TEST(SimpleExtensions) { |
v8::RegisterExtension(new Extension("simpletest", kSimpleExtensionSource)); |
const char* extension_names[] = {"simpletest"}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
Context::Scope lock(context); |
- v8::Handle<Value> result = CompileRun("Foo()"); |
- CHECK(result->Equals(v8::Integer::New(CcTest::isolate(), 4))); |
+ v8::Local<Value> result = CompileRun("Foo()"); |
+ CHECK(result->Equals(context, v8::Integer::New(CcTest::isolate(), 4)) |
+ .FromJust()); |
} |
@@ -6197,15 +6984,15 @@ TEST(StackTraceInExtension) { |
new Extension("stacktracetest", kStackTraceFromExtensionSource)); |
const char* extension_names[] = {"stacktracetest"}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
Context::Scope lock(context); |
CompileRun( |
"function user() { bar(); }" |
"var error;" |
"try{ user(); } catch (e) { error = e; }"); |
- CHECK_EQ(-1, CompileRun("error.stack.indexOf('foo')")->Int32Value()); |
- CHECK_EQ(-1, CompileRun("error.stack.indexOf('bar')")->Int32Value()); |
- CHECK_NE(-1, CompileRun("error.stack.indexOf('user')")->Int32Value()); |
+ CHECK_EQ(-1, v8_run_int32value(v8_compile("error.stack.indexOf('foo')"))); |
+ CHECK_EQ(-1, v8_run_int32value(v8_compile("error.stack.indexOf('bar')"))); |
+ CHECK_NE(-1, v8_run_int32value(v8_compile("error.stack.indexOf('user')"))); |
} |
@@ -6214,10 +7001,11 @@ TEST(NullExtensions) { |
v8::RegisterExtension(new Extension("nulltest", NULL)); |
const char* extension_names[] = {"nulltest"}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
Context::Scope lock(context); |
- v8::Handle<Value> result = CompileRun("1+3"); |
- CHECK(result->Equals(v8::Integer::New(CcTest::isolate(), 4))); |
+ v8::Local<Value> result = CompileRun("1+3"); |
+ CHECK(result->Equals(context, v8::Integer::New(CcTest::isolate(), 4)) |
+ .FromJust()); |
} |
@@ -6233,7 +7021,7 @@ TEST(ExtensionMissingSourceLength) { |
new Extension("srclentest_fail", kEmbeddedExtensionSource)); |
const char* extension_names[] = {"srclentest_fail"}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
CHECK(0 == *context); |
} |
@@ -6248,11 +7036,13 @@ TEST(ExtensionWithSourceLength) { |
extension_name.start(), kEmbeddedExtensionSource, 0, 0, source_len)); |
const char* extension_names[1] = {extension_name.start()}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
if (source_len == kEmbeddedExtensionSourceValidLen) { |
Context::Scope lock(context); |
- v8::Handle<Value> result = CompileRun("Ret54321()"); |
- CHECK(v8::Integer::New(CcTest::isolate(), 54321)->Equals(result)); |
+ v8::Local<Value> result = CompileRun("Ret54321()"); |
+ CHECK(v8::Integer::New(CcTest::isolate(), 54321) |
+ ->Equals(context, result) |
+ .FromJust()); |
} else { |
// Anything but exactly the right length should fail to compile. |
CHECK(0 == *context); |
@@ -6284,12 +7074,14 @@ TEST(UseEvalFromExtension) { |
v8::RegisterExtension(new Extension("evaltest2", kEvalExtensionSource2)); |
const char* extension_names[] = {"evaltest1", "evaltest2"}; |
v8::ExtensionConfiguration extensions(2, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
Context::Scope lock(context); |
- v8::Handle<Value> result = CompileRun("UseEval1()"); |
- CHECK(result->Equals(v8::Integer::New(CcTest::isolate(), 42))); |
+ v8::Local<Value> result = CompileRun("UseEval1()"); |
+ CHECK(result->Equals(context, v8::Integer::New(CcTest::isolate(), 42)) |
+ .FromJust()); |
result = CompileRun("UseEval2()"); |
- CHECK(result->Equals(v8::Integer::New(CcTest::isolate(), 42))); |
+ CHECK(result->Equals(context, v8::Integer::New(CcTest::isolate(), 42)) |
+ .FromJust()); |
} |
@@ -6316,12 +7108,14 @@ TEST(UseWithFromExtension) { |
v8::RegisterExtension(new Extension("withtest2", kWithExtensionSource2)); |
const char* extension_names[] = {"withtest1", "withtest2"}; |
v8::ExtensionConfiguration extensions(2, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
Context::Scope lock(context); |
- v8::Handle<Value> result = CompileRun("UseWith1()"); |
- CHECK(result->Equals(v8::Integer::New(CcTest::isolate(), 87))); |
+ v8::Local<Value> result = CompileRun("UseWith1()"); |
+ CHECK(result->Equals(context, v8::Integer::New(CcTest::isolate(), 87)) |
+ .FromJust()); |
result = CompileRun("UseWith2()"); |
- CHECK(result->Equals(v8::Integer::New(CcTest::isolate(), 87))); |
+ CHECK(result->Equals(context, v8::Integer::New(CcTest::isolate(), 87)) |
+ .FromJust()); |
} |
@@ -6330,10 +7124,11 @@ TEST(AutoExtensions) { |
Extension* extension = new Extension("autotest", kSimpleExtensionSource); |
extension->set_auto_enable(true); |
v8::RegisterExtension(extension); |
- v8::Handle<Context> context = Context::New(CcTest::isolate()); |
+ v8::Local<Context> context = Context::New(CcTest::isolate()); |
Context::Scope lock(context); |
- v8::Handle<Value> result = CompileRun("Foo()"); |
- CHECK(result->Equals(v8::Integer::New(CcTest::isolate(), 4))); |
+ v8::Local<Value> result = CompileRun("Foo()"); |
+ CHECK(result->Equals(context, v8::Integer::New(CcTest::isolate(), 4)) |
+ .FromJust()); |
} |
@@ -6348,7 +7143,7 @@ TEST(SyntaxErrorExtensions) { |
new Extension("syntaxerror", kSyntaxErrorInExtensionSource)); |
const char* extension_names[] = {"syntaxerror"}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
CHECK(context.IsEmpty()); |
} |
@@ -6364,7 +7159,7 @@ TEST(ExceptionExtensions) { |
new Extension("exception", kExceptionInExtensionSource)); |
const char* extension_names[] = {"exception"}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
CHECK(context.IsEmpty()); |
} |
@@ -6385,10 +7180,11 @@ TEST(NativeCallInExtensions) { |
new Extension("nativecall", kNativeCallInExtensionSource)); |
const char* extension_names[] = {"nativecall"}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
Context::Scope lock(context); |
- v8::Handle<Value> result = CompileRun(kNativeCallTest); |
- CHECK(result->Equals(v8::Integer::New(CcTest::isolate(), 3))); |
+ v8::Local<Value> result = CompileRun(kNativeCallTest); |
+ CHECK(result->Equals(context, v8::Integer::New(CcTest::isolate(), 3)) |
+ .FromJust()); |
} |
@@ -6398,8 +7194,8 @@ class NativeFunctionExtension : public Extension { |
v8::FunctionCallback fun = &Echo) |
: Extension(name, source), function_(fun) {} |
- virtual v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( |
- v8::Isolate* isolate, v8::Handle<v8::String> name) { |
+ virtual v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( |
+ v8::Isolate* isolate, v8::Local<v8::String> name) { |
return v8::FunctionTemplate::New(isolate, function_); |
} |
@@ -6419,10 +7215,11 @@ TEST(NativeFunctionDeclaration) { |
new NativeFunctionExtension(name, "native function foo();")); |
const char* extension_names[] = {name}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
Context::Scope lock(context); |
- v8::Handle<Value> result = CompileRun("foo(42);"); |
- CHECK(result->Equals(v8::Integer::New(CcTest::isolate(), 42))); |
+ v8::Local<Value> result = CompileRun("foo(42);"); |
+ CHECK(result->Equals(context, v8::Integer::New(CcTest::isolate(), 42)) |
+ .FromJust()); |
} |
@@ -6434,7 +7231,7 @@ TEST(NativeFunctionDeclarationError) { |
new NativeFunctionExtension(name, "native\nfunction foo();")); |
const char* extension_names[] = {name}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
CHECK(context.IsEmpty()); |
} |
@@ -6448,7 +7245,7 @@ TEST(NativeFunctionDeclarationErrorEscape) { |
new NativeFunctionExtension(name, "nativ\\u0065 function foo();")); |
const char* extension_names[] = {name}; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &extensions); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &extensions); |
CHECK(context.IsEmpty()); |
} |
@@ -6457,8 +7254,12 @@ static void CheckDependencies(const char* name, const char* expected) { |
v8::HandleScope handle_scope(CcTest::isolate()); |
v8::ExtensionConfiguration config(1, &name); |
LocalContext context(&config); |
- CHECK(String::NewFromUtf8(CcTest::isolate(), expected) |
- ->Equals(context->Global()->Get(v8_str("loaded")))); |
+ CHECK( |
+ v8_str(expected) |
+ ->Equals(context.local(), context->Global() |
+ ->Get(context.local(), v8_str("loaded")) |
+ .ToLocalChecked()) |
+ .FromJust()); |
} |
@@ -6487,8 +7288,12 @@ THREADED_TEST(ExtensionDependency) { |
static const char* exts[2] = {"C", "E"}; |
v8::ExtensionConfiguration config(2, exts); |
LocalContext context(&config); |
- CHECK(v8_str("undefinedACBDE") |
- ->Equals(context->Global()->Get(v8_str("loaded")))); |
+ CHECK( |
+ v8_str("undefinedACBDE") |
+ ->Equals(context.local(), context->Global() |
+ ->Get(context.local(), v8_str("loaded")) |
+ .ToLocalChecked()) |
+ .FromJust()); |
} |
@@ -6506,7 +7311,10 @@ static const char* kExtensionTestScript = |
static void CallFun(const v8::FunctionCallbackInfo<v8::Value>& args) { |
ApiTestFuzzer::Fuzz(); |
if (args.IsConstructCall()) { |
- args.This()->Set(v8_str("data"), args.Data()); |
+ CHECK(args.This() |
+ ->Set(args.GetIsolate()->GetCurrentContext(), v8_str("data"), |
+ args.Data()) |
+ .FromJust()); |
args.GetReturnValue().SetNull(); |
return; |
} |
@@ -6517,26 +7325,28 @@ static void CallFun(const v8::FunctionCallbackInfo<v8::Value>& args) { |
class FunctionExtension : public Extension { |
public: |
FunctionExtension() : Extension("functiontest", kExtensionTestScript) {} |
- virtual v8::Handle<v8::FunctionTemplate> GetNativeFunctionTemplate( |
- v8::Isolate* isolate, v8::Handle<String> name); |
+ virtual v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( |
+ v8::Isolate* isolate, v8::Local<String> name); |
}; |
static int lookup_count = 0; |
-v8::Handle<v8::FunctionTemplate> FunctionExtension::GetNativeFunctionTemplate( |
- v8::Isolate* isolate, v8::Handle<String> name) { |
+v8::Local<v8::FunctionTemplate> FunctionExtension::GetNativeFunctionTemplate( |
+ v8::Isolate* isolate, v8::Local<String> name) { |
lookup_count++; |
- if (name->Equals(v8_str("A"))) { |
+ if (name->Equals(isolate->GetCurrentContext(), v8_str("A")).FromJust()) { |
return v8::FunctionTemplate::New(isolate, CallFun, |
v8::Integer::New(isolate, 8)); |
- } else if (name->Equals(v8_str("B"))) { |
+ } else if (name->Equals(isolate->GetCurrentContext(), v8_str("B")) |
+ .FromJust()) { |
return v8::FunctionTemplate::New(isolate, CallFun, |
v8::Integer::New(isolate, 7)); |
- } else if (name->Equals(v8_str("C"))) { |
+ } else if (name->Equals(isolate->GetCurrentContext(), v8_str("C")) |
+ .FromJust()) { |
return v8::FunctionTemplate::New(isolate, CallFun, |
v8::Integer::New(isolate, 6)); |
} else { |
- return v8::Handle<v8::FunctionTemplate>(); |
+ return v8::Local<v8::FunctionTemplate>(); |
} |
} |
@@ -6548,9 +7358,15 @@ THREADED_TEST(FunctionLookup) { |
v8::ExtensionConfiguration config(1, exts); |
LocalContext context(&config); |
CHECK_EQ(3, lookup_count); |
- CHECK(v8::Integer::New(CcTest::isolate(), 8)->Equals(CompileRun("Foo(0)"))); |
- CHECK(v8::Integer::New(CcTest::isolate(), 7)->Equals(CompileRun("Foo(1)"))); |
- CHECK(v8::Integer::New(CcTest::isolate(), 6)->Equals(CompileRun("Foo(2)"))); |
+ CHECK(v8::Integer::New(CcTest::isolate(), 8) |
+ ->Equals(context.local(), CompileRun("Foo(0)")) |
+ .FromJust()); |
+ CHECK(v8::Integer::New(CcTest::isolate(), 7) |
+ ->Equals(context.local(), CompileRun("Foo(1)")) |
+ .FromJust()); |
+ CHECK(v8::Integer::New(CcTest::isolate(), 6) |
+ ->Equals(context.local(), CompileRun("Foo(2)")) |
+ .FromJust()); |
} |
@@ -6564,11 +7380,14 @@ THREADED_TEST(NativeFunctionConstructCall) { |
// Run a few times to ensure that allocation of objects doesn't |
// change behavior of a constructor function. |
CHECK(v8::Integer::New(CcTest::isolate(), 8) |
- ->Equals(CompileRun("(new A()).data"))); |
+ ->Equals(context.local(), CompileRun("(new A()).data")) |
+ .FromJust()); |
CHECK(v8::Integer::New(CcTest::isolate(), 7) |
- ->Equals(CompileRun("(new B()).data"))); |
+ ->Equals(context.local(), CompileRun("(new B()).data")) |
+ .FromJust()); |
CHECK(v8::Integer::New(CcTest::isolate(), 6) |
- ->Equals(CompileRun("(new C()).data"))); |
+ ->Equals(context.local(), CompileRun("(new C()).data")) |
+ .FromJust()); |
} |
} |
@@ -6587,35 +7406,39 @@ void StoringErrorCallback(const char* location, const char* message) { |
// tests that the fatal error handler gets called. This renders V8 |
// unusable and therefore this test cannot be run in parallel. |
TEST(ErrorReporting) { |
- v8::V8::SetFatalErrorHandler(StoringErrorCallback); |
+ CcTest::isolate()->SetFatalErrorHandler(StoringErrorCallback); |
static const char* aDeps[] = {"B"}; |
v8::RegisterExtension(new Extension("A", "", 1, aDeps)); |
static const char* bDeps[] = {"A"}; |
v8::RegisterExtension(new Extension("B", "", 1, bDeps)); |
last_location = NULL; |
v8::ExtensionConfiguration config(1, bDeps); |
- v8::Handle<Context> context = Context::New(CcTest::isolate(), &config); |
+ v8::Local<Context> context = Context::New(CcTest::isolate(), &config); |
CHECK(context.IsEmpty()); |
CHECK(last_location); |
} |
-static void MissingScriptInfoMessageListener(v8::Handle<v8::Message> message, |
- v8::Handle<Value> data) { |
+static void MissingScriptInfoMessageListener(v8::Local<v8::Message> message, |
+ v8::Local<Value> data) { |
+ v8::Isolate* isolate = CcTest::isolate(); |
+ Local<Context> context = isolate->GetCurrentContext(); |
CHECK(message->GetScriptOrigin().ResourceName()->IsUndefined()); |
- CHECK(v8::Undefined(CcTest::isolate()) |
- ->Equals(message->GetScriptOrigin().ResourceName())); |
- message->GetLineNumber(); |
- message->GetSourceLine(); |
+ CHECK(v8::Undefined(isolate) |
+ ->Equals(context, message->GetScriptOrigin().ResourceName()) |
+ .FromJust()); |
+ message->GetLineNumber(context).FromJust(); |
+ message->GetSourceLine(context).ToLocalChecked(); |
} |
THREADED_TEST(ErrorWithMissingScriptInfo) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::V8::AddMessageListener(MissingScriptInfoMessageListener); |
+ context->GetIsolate()->AddMessageListener(MissingScriptInfoMessageListener); |
CompileRun("throw Error()"); |
- v8::V8::RemoveMessageListeners(MissingScriptInfoMessageListener); |
+ context->GetIsolate()->RemoveMessageListeners( |
+ MissingScriptInfoMessageListener); |
} |
@@ -6634,7 +7457,7 @@ static void SetFlag(const v8::WeakCallbackInfo<FlagAndPersistent>& data) { |
static void IndependentWeakHandle(bool global_gc, bool interlinked) { |
v8::Isolate* iso = CcTest::isolate(); |
v8::HandleScope scope(iso); |
- v8::Handle<Context> context = Context::New(iso); |
+ v8::Local<Context> context = Context::New(iso); |
Context::Scope context_scope(context); |
FlagAndPersistent object_a, object_b; |
@@ -6648,8 +7471,8 @@ static void IndependentWeakHandle(bool global_gc, bool interlinked) { |
object_a.handle.Reset(iso, a); |
object_b.handle.Reset(iso, b); |
if (interlinked) { |
- a->Set(v8_str("x"), b); |
- b->Set(v8_str("x"), a); |
+ a->Set(context, v8_str("x"), b).FromJust(); |
+ b->Set(context, v8_str("x"), a).FromJust(); |
} |
if (global_gc) { |
CcTest::heap()->CollectAllGarbage(); |
@@ -6658,8 +7481,8 @@ static void IndependentWeakHandle(bool global_gc, bool interlinked) { |
} |
// We are relying on this creating a big flag array and reserving the space |
// up front. |
- v8::Handle<Value> big_array = CompileRun("new Array(5000)"); |
- a->Set(v8_str("y"), big_array); |
+ v8::Local<Value> big_array = CompileRun("new Array(5000)"); |
+ a->Set(context, v8_str("y"), big_array).FromJust(); |
big_heap_size = CcTest::heap()->SizeOfObjects(); |
} |
@@ -6726,8 +7549,8 @@ void CheckInternalFields( |
const v8::WeakCallbackInfo<v8::Persistent<v8::Object>>& data) { |
v8::Persistent<v8::Object>* handle = data.GetParameter(); |
handle->Reset(); |
- Trivial* t1 = reinterpret_cast<Trivial*>(data.GetInternalField1()); |
- Trivial2* t2 = reinterpret_cast<Trivial2*>(data.GetInternalField2()); |
+ Trivial* t1 = reinterpret_cast<Trivial*>(data.GetInternalField(0)); |
+ Trivial2* t2 = reinterpret_cast<Trivial2*>(data.GetInternalField(1)); |
CHECK_EQ(42, t1->x()); |
CHECK_EQ(103, t2->x()); |
t1->set_x(1729); |
@@ -6747,7 +7570,10 @@ void InternalFieldCallback(bool global_gc) { |
instance_templ->SetInternalFieldCount(2); |
{ |
v8::HandleScope scope(isolate); |
- Local<v8::Object> obj = templ->GetFunction()->NewInstance(); |
+ Local<v8::Object> obj = templ->GetFunction(env.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(env.local()) |
+ .ToLocalChecked(); |
v8::Persistent<v8::Object> handle(isolate, obj); |
CHECK_EQ(2, obj->InternalFieldCount()); |
CHECK(obj->GetInternalField(0)->IsUndefined()); |
@@ -6805,7 +7631,7 @@ void v8::internal::HeapTester::ResetWeakHandle(bool global_gc) { |
v8::Isolate* iso = CcTest::isolate(); |
v8::HandleScope scope(iso); |
- v8::Handle<Context> context = Context::New(iso); |
+ v8::Local<Context> context = Context::New(iso); |
Context::Scope context_scope(context); |
FlagAndPersistent object_a, object_b; |
@@ -6886,7 +7712,7 @@ THREADED_TEST(GCFromWeakCallbacks) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::Locker locker(CcTest::isolate()); |
v8::HandleScope scope(isolate); |
- v8::Handle<Context> context = Context::New(isolate); |
+ v8::Local<Context> context = Context::New(isolate); |
Context::Scope context_scope(context); |
static const int kNumberOfGCTypes = 2; |
@@ -6916,19 +7742,20 @@ THREADED_TEST(GCFromWeakCallbacks) { |
} |
-v8::Handle<Function> args_fun; |
+v8::Local<Function> args_fun; |
static void ArgumentsTestCallback( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
ApiTestFuzzer::Fuzz(); |
v8::Isolate* isolate = args.GetIsolate(); |
- CHECK(args_fun->Equals(args.Callee())); |
+ Local<Context> context = isolate->GetCurrentContext(); |
+ CHECK(args_fun->Equals(context, args.Callee()).FromJust()); |
CHECK_EQ(3, args.Length()); |
- CHECK(v8::Integer::New(isolate, 1)->Equals(args[0])); |
- CHECK(v8::Integer::New(isolate, 2)->Equals(args[1])); |
- CHECK(v8::Integer::New(isolate, 3)->Equals(args[2])); |
- CHECK(v8::Undefined(isolate)->Equals(args[3])); |
+ CHECK(v8::Integer::New(isolate, 1)->Equals(context, args[0]).FromJust()); |
+ CHECK(v8::Integer::New(isolate, 2)->Equals(context, args[1]).FromJust()); |
+ CHECK(v8::Integer::New(isolate, 3)->Equals(context, args[2]).FromJust()); |
+ CHECK(v8::Undefined(isolate)->Equals(context, args[3]).FromJust()); |
v8::HandleScope scope(args.GetIsolate()); |
CcTest::heap()->CollectAllGarbage(); |
} |
@@ -6937,12 +7764,15 @@ static void ArgumentsTestCallback( |
THREADED_TEST(Arguments) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> global = ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> global = ObjectTemplate::New(isolate); |
global->Set(v8_str("f"), |
v8::FunctionTemplate::New(isolate, ArgumentsTestCallback)); |
LocalContext context(NULL, global); |
- args_fun = context->Global()->Get(v8_str("f")).As<Function>(); |
- v8_compile("f(1, 2, 3)")->Run(); |
+ args_fun = context->Global() |
+ ->Get(context.local(), v8_str("f")) |
+ .ToLocalChecked() |
+ .As<Function>(); |
+ v8_compile("f(1, 2, 3)")->Run(context.local()).ToLocalChecked(); |
} |
@@ -6950,29 +7780,47 @@ static int p_getter_count; |
static int p_getter_count2; |
-static void PGetter(Local<String> name, |
+static void PGetter(Local<Name> name, |
const v8::PropertyCallbackInfo<v8::Value>& info) { |
ApiTestFuzzer::Fuzz(); |
p_getter_count++; |
- v8::Handle<v8::Object> global = |
- info.GetIsolate()->GetCurrentContext()->Global(); |
- CHECK(info.Holder()->Equals(global->Get(v8_str("o1")))); |
- if (name->Equals(v8_str("p1"))) { |
- CHECK(info.This()->Equals(global->Get(v8_str("o1")))); |
- } else if (name->Equals(v8_str("p2"))) { |
- CHECK(info.This()->Equals(global->Get(v8_str("o2")))); |
- } else if (name->Equals(v8_str("p3"))) { |
- CHECK(info.This()->Equals(global->Get(v8_str("o3")))); |
- } else if (name->Equals(v8_str("p4"))) { |
- CHECK(info.This()->Equals(global->Get(v8_str("o4")))); |
+ v8::Local<v8::Context> context = info.GetIsolate()->GetCurrentContext(); |
+ v8::Local<v8::Object> global = context->Global(); |
+ CHECK( |
+ info.Holder() |
+ ->Equals(context, global->Get(context, v8_str("o1")).ToLocalChecked()) |
+ .FromJust()); |
+ if (name->Equals(context, v8_str("p1")).FromJust()) { |
+ CHECK(info.This() |
+ ->Equals(context, |
+ global->Get(context, v8_str("o1")).ToLocalChecked()) |
+ .FromJust()); |
+ } else if (name->Equals(context, v8_str("p2")).FromJust()) { |
+ CHECK(info.This() |
+ ->Equals(context, |
+ global->Get(context, v8_str("o2")).ToLocalChecked()) |
+ .FromJust()); |
+ } else if (name->Equals(context, v8_str("p3")).FromJust()) { |
+ CHECK(info.This() |
+ ->Equals(context, |
+ global->Get(context, v8_str("o3")).ToLocalChecked()) |
+ .FromJust()); |
+ } else if (name->Equals(context, v8_str("p4")).FromJust()) { |
+ CHECK(info.This() |
+ ->Equals(context, |
+ global->Get(context, v8_str("o4")).ToLocalChecked()) |
+ .FromJust()); |
} |
} |
-static void RunHolderTest(v8::Handle<v8::ObjectTemplate> obj) { |
+static void RunHolderTest(v8::Local<v8::ObjectTemplate> obj) { |
ApiTestFuzzer::Fuzz(); |
LocalContext context; |
- context->Global()->Set(v8_str("o1"), obj->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o1"), |
+ obj->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"o1.__proto__ = { };" |
"var o2 = { __proto__: o1 };" |
@@ -6989,17 +7837,32 @@ static void PGetter2(Local<Name> name, |
const v8::PropertyCallbackInfo<v8::Value>& info) { |
ApiTestFuzzer::Fuzz(); |
p_getter_count2++; |
- v8::Handle<v8::Object> global = |
- info.GetIsolate()->GetCurrentContext()->Global(); |
- CHECK(info.Holder()->Equals(global->Get(v8_str("o1")))); |
- if (name->Equals(v8_str("p1"))) { |
- CHECK(info.This()->Equals(global->Get(v8_str("o1")))); |
- } else if (name->Equals(v8_str("p2"))) { |
- CHECK(info.This()->Equals(global->Get(v8_str("o2")))); |
- } else if (name->Equals(v8_str("p3"))) { |
- CHECK(info.This()->Equals(global->Get(v8_str("o3")))); |
- } else if (name->Equals(v8_str("p4"))) { |
- CHECK(info.This()->Equals(global->Get(v8_str("o4")))); |
+ v8::Local<v8::Context> context = info.GetIsolate()->GetCurrentContext(); |
+ v8::Local<v8::Object> global = context->Global(); |
+ CHECK( |
+ info.Holder() |
+ ->Equals(context, global->Get(context, v8_str("o1")).ToLocalChecked()) |
+ .FromJust()); |
+ if (name->Equals(context, v8_str("p1")).FromJust()) { |
+ CHECK(info.This() |
+ ->Equals(context, |
+ global->Get(context, v8_str("o1")).ToLocalChecked()) |
+ .FromJust()); |
+ } else if (name->Equals(context, v8_str("p2")).FromJust()) { |
+ CHECK(info.This() |
+ ->Equals(context, |
+ global->Get(context, v8_str("o2")).ToLocalChecked()) |
+ .FromJust()); |
+ } else if (name->Equals(context, v8_str("p3")).FromJust()) { |
+ CHECK(info.This() |
+ ->Equals(context, |
+ global->Get(context, v8_str("o3")).ToLocalChecked()) |
+ .FromJust()); |
+ } else if (name->Equals(context, v8_str("p4")).FromJust()) { |
+ CHECK(info.This() |
+ ->Equals(context, |
+ global->Get(context, v8_str("o4")).ToLocalChecked()) |
+ .FromJust()); |
} |
} |
@@ -7007,7 +7870,7 @@ static void PGetter2(Local<Name> name, |
THREADED_TEST(GetterHolders) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> obj = ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj = ObjectTemplate::New(isolate); |
obj->SetAccessor(v8_str("p1"), PGetter); |
obj->SetAccessor(v8_str("p2"), PGetter); |
obj->SetAccessor(v8_str("p3"), PGetter); |
@@ -7021,7 +7884,7 @@ THREADED_TEST(GetterHolders) { |
THREADED_TEST(PreInterceptorHolders) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> obj = ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj = ObjectTemplate::New(isolate); |
obj->SetHandler(v8::NamedPropertyHandlerConfiguration(PGetter2)); |
p_getter_count2 = 0; |
RunHolderTest(obj); |
@@ -7032,19 +7895,26 @@ THREADED_TEST(PreInterceptorHolders) { |
THREADED_TEST(ObjectInstantiation) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetAccessor(v8_str("t"), PGetter2); |
LocalContext context; |
- context->Global()->Set(v8_str("o"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
for (int i = 0; i < 100; i++) { |
v8::HandleScope inner_scope(CcTest::isolate()); |
- v8::Handle<v8::Object> obj = templ->NewInstance(); |
- CHECK(!obj->Equals(context->Global()->Get(v8_str("o")))); |
- context->Global()->Set(v8_str("o2"), obj); |
- v8::Handle<Value> value = |
- CompileRun("o.__proto__ === o2.__proto__"); |
- CHECK(v8::True(isolate)->Equals(value)); |
- context->Global()->Set(v8_str("o"), obj); |
+ v8::Local<v8::Object> obj = |
+ templ->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(!obj->Equals(context.local(), context->Global() |
+ ->Get(context.local(), v8_str("o")) |
+ .ToLocalChecked()) |
+ .FromJust()); |
+ CHECK( |
+ context->Global()->Set(context.local(), v8_str("o2"), obj).FromJust()); |
+ v8::Local<Value> value = CompileRun("o.__proto__ === o2.__proto__"); |
+ CHECK(v8::True(isolate)->Equals(context.local(), value).FromJust()); |
+ CHECK(context->Global()->Set(context.local(), v8_str("o"), obj).FromJust()); |
} |
} |
@@ -7070,7 +7940,7 @@ static int StrNCmp16(uint16_t* a, uint16_t* b, int n) { |
} |
-int GetUtf8Length(Handle<String> str) { |
+int GetUtf8Length(Local<String> str) { |
int len = str->Utf8Length(); |
if (len < 0) { |
i::Handle<i::String> istr(v8::Utils::OpenHandle(*str)); |
@@ -7084,27 +7954,37 @@ int GetUtf8Length(Handle<String> str) { |
THREADED_TEST(StringWrite) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::Handle<String> str = v8_str("abcde"); |
+ v8::Local<String> str = v8_str("abcde"); |
// abc<Icelandic eth><Unicode snowman>. |
- v8::Handle<String> str2 = v8_str("abc\303\260\342\230\203"); |
- v8::Handle<String> str3 = v8::String::NewFromUtf8( |
- context->GetIsolate(), "abc\0def", v8::String::kNormalString, 7); |
+ v8::Local<String> str2 = v8_str("abc\303\260\342\230\203"); |
+ v8::Local<String> str3 = |
+ v8::String::NewFromUtf8(context->GetIsolate(), "abc\0def", |
+ v8::NewStringType::kNormal, 7) |
+ .ToLocalChecked(); |
// "ab" + lead surrogate + "cd" + trail surrogate + "ef" |
uint16_t orphans[8] = { 0x61, 0x62, 0xd800, 0x63, 0x64, 0xdc00, 0x65, 0x66 }; |
- v8::Handle<String> orphans_str = v8::String::NewFromTwoByte( |
- context->GetIsolate(), orphans, v8::String::kNormalString, 8); |
+ v8::Local<String> orphans_str = |
+ v8::String::NewFromTwoByte(context->GetIsolate(), orphans, |
+ v8::NewStringType::kNormal, 8) |
+ .ToLocalChecked(); |
// single lead surrogate |
uint16_t lead[1] = { 0xd800 }; |
- v8::Handle<String> lead_str = v8::String::NewFromTwoByte( |
- context->GetIsolate(), lead, v8::String::kNormalString, 1); |
+ v8::Local<String> lead_str = |
+ v8::String::NewFromTwoByte(context->GetIsolate(), lead, |
+ v8::NewStringType::kNormal, 1) |
+ .ToLocalChecked(); |
// single trail surrogate |
uint16_t trail[1] = { 0xdc00 }; |
- v8::Handle<String> trail_str = v8::String::NewFromTwoByte( |
- context->GetIsolate(), trail, v8::String::kNormalString, 1); |
+ v8::Local<String> trail_str = |
+ v8::String::NewFromTwoByte(context->GetIsolate(), trail, |
+ v8::NewStringType::kNormal, 1) |
+ .ToLocalChecked(); |
// surrogate pair |
uint16_t pair[2] = { 0xd800, 0xdc00 }; |
- v8::Handle<String> pair_str = v8::String::NewFromTwoByte( |
- context->GetIsolate(), pair, v8::String::kNormalString, 2); |
+ v8::Local<String> pair_str = |
+ v8::String::NewFromTwoByte(context->GetIsolate(), pair, |
+ v8::NewStringType::kNormal, 2) |
+ .ToLocalChecked(); |
const int kStride = 4; // Must match stride in for loops in JS below. |
CompileRun( |
"var left = '';" |
@@ -7116,9 +7996,13 @@ THREADED_TEST(StringWrite) { |
"for (var i = 0; i < 0xd800; i += 4) {" |
" right = String.fromCharCode(i) + right;" |
"}"); |
- v8::Handle<v8::Object> global = context->Global(); |
- Handle<String> left_tree = global->Get(v8_str("left")).As<String>(); |
- Handle<String> right_tree = global->Get(v8_str("right")).As<String>(); |
+ v8::Local<v8::Object> global = context->Global(); |
+ Local<String> left_tree = global->Get(context.local(), v8_str("left")) |
+ .ToLocalChecked() |
+ .As<String>(); |
+ Local<String> right_tree = global->Get(context.local(), v8_str("right")) |
+ .ToLocalChecked() |
+ .As<String>(); |
CHECK_EQ(5, str2->Length()); |
CHECK_EQ(0xd800 / kStride, left_tree->Length()); |
@@ -7394,15 +8278,17 @@ static void Utf16Helper( |
const char* name, |
const char* lengths_name, |
int len) { |
- Local<v8::Array> a = |
- Local<v8::Array>::Cast(context->Global()->Get(v8_str(name))); |
+ Local<v8::Array> a = Local<v8::Array>::Cast( |
+ context->Global()->Get(context.local(), v8_str(name)).ToLocalChecked()); |
Local<v8::Array> alens = |
- Local<v8::Array>::Cast(context->Global()->Get(v8_str(lengths_name))); |
+ Local<v8::Array>::Cast(context->Global() |
+ ->Get(context.local(), v8_str(lengths_name)) |
+ .ToLocalChecked()); |
for (int i = 0; i < len; i++) { |
Local<v8::String> string = |
- Local<v8::String>::Cast(a->Get(i)); |
- Local<v8::Number> expected_len = |
- Local<v8::Number>::Cast(alens->Get(i)); |
+ Local<v8::String>::Cast(a->Get(context.local(), i).ToLocalChecked()); |
+ Local<v8::Number> expected_len = Local<v8::Number>::Cast( |
+ alens->Get(context.local(), i).ToLocalChecked()); |
int length = GetUtf8Length(string); |
CHECK_EQ(static_cast<int>(expected_len->Value()), length); |
} |
@@ -7458,7 +8344,7 @@ THREADED_TEST(Utf16) { |
} |
-static bool SameSymbol(Handle<String> s1, Handle<String> s2) { |
+static bool SameSymbol(Local<String> s1, Local<String> s2) { |
i::Handle<i::String> is1(v8::Utils::OpenHandle(*s1)); |
i::Handle<i::String> is2(v8::Utils::OpenHandle(*s2)); |
return *is1 == *is2; |
@@ -7469,10 +8355,14 @@ THREADED_TEST(Utf16Symbol) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- Handle<String> symbol1 = v8::String::NewFromUtf8( |
- context->GetIsolate(), "abc", v8::String::kInternalizedString); |
- Handle<String> symbol2 = v8::String::NewFromUtf8( |
- context->GetIsolate(), "abc", v8::String::kInternalizedString); |
+ Local<String> symbol1 = |
+ v8::String::NewFromUtf8(context->GetIsolate(), "abc", |
+ v8::NewStringType::kInternalized) |
+ .ToLocalChecked(); |
+ Local<String> symbol2 = |
+ v8::String::NewFromUtf8(context->GetIsolate(), "abc", |
+ v8::NewStringType::kInternalized) |
+ .ToLocalChecked(); |
CHECK(SameSymbol(symbol1, symbol2)); |
CompileRun( |
@@ -7490,35 +8380,49 @@ THREADED_TEST(Utf16Symbol) { |
"if (sym3.charCodeAt(2) != 0xdc07) throw sym1.charCodeAt(2);" |
"if (sym4.length != 3) throw sym4;" |
"if (sym4.charCodeAt(2) != 0xdc08) throw sym2.charCodeAt(2);"); |
- Handle<String> sym0 = v8::String::NewFromUtf8( |
- context->GetIsolate(), "benedictus", v8::String::kInternalizedString); |
- Handle<String> sym0b = v8::String::NewFromUtf8( |
- context->GetIsolate(), "S\303\270ren", v8::String::kInternalizedString); |
- Handle<String> sym1 = |
+ Local<String> sym0 = |
+ v8::String::NewFromUtf8(context->GetIsolate(), "benedictus", |
+ v8::NewStringType::kInternalized) |
+ .ToLocalChecked(); |
+ Local<String> sym0b = |
+ v8::String::NewFromUtf8(context->GetIsolate(), "S\303\270ren", |
+ v8::NewStringType::kInternalized) |
+ .ToLocalChecked(); |
+ Local<String> sym1 = |
v8::String::NewFromUtf8(context->GetIsolate(), "\355\240\201\355\260\207", |
- v8::String::kInternalizedString); |
- Handle<String> sym2 = |
+ v8::NewStringType::kInternalized) |
+ .ToLocalChecked(); |
+ Local<String> sym2 = |
v8::String::NewFromUtf8(context->GetIsolate(), "\360\220\220\210", |
- v8::String::kInternalizedString); |
- Handle<String> sym3 = v8::String::NewFromUtf8( |
- context->GetIsolate(), "x\355\240\201\355\260\207", |
- v8::String::kInternalizedString); |
- Handle<String> sym4 = |
+ v8::NewStringType::kInternalized) |
+ .ToLocalChecked(); |
+ Local<String> sym3 = v8::String::NewFromUtf8(context->GetIsolate(), |
+ "x\355\240\201\355\260\207", |
+ v8::NewStringType::kInternalized) |
+ .ToLocalChecked(); |
+ Local<String> sym4 = |
v8::String::NewFromUtf8(context->GetIsolate(), "x\360\220\220\210", |
- v8::String::kInternalizedString); |
+ v8::NewStringType::kInternalized) |
+ .ToLocalChecked(); |
v8::Local<v8::Object> global = context->Global(); |
- Local<Value> s0 = global->Get(v8_str("sym0")); |
- Local<Value> s0b = global->Get(v8_str("sym0b")); |
- Local<Value> s1 = global->Get(v8_str("sym1")); |
- Local<Value> s2 = global->Get(v8_str("sym2")); |
- Local<Value> s3 = global->Get(v8_str("sym3")); |
- Local<Value> s4 = global->Get(v8_str("sym4")); |
- CHECK(SameSymbol(sym0, Handle<String>::Cast(s0))); |
- CHECK(SameSymbol(sym0b, Handle<String>::Cast(s0b))); |
- CHECK(SameSymbol(sym1, Handle<String>::Cast(s1))); |
- CHECK(SameSymbol(sym2, Handle<String>::Cast(s2))); |
- CHECK(SameSymbol(sym3, Handle<String>::Cast(s3))); |
- CHECK(SameSymbol(sym4, Handle<String>::Cast(s4))); |
+ Local<Value> s0 = |
+ global->Get(context.local(), v8_str("sym0")).ToLocalChecked(); |
+ Local<Value> s0b = |
+ global->Get(context.local(), v8_str("sym0b")).ToLocalChecked(); |
+ Local<Value> s1 = |
+ global->Get(context.local(), v8_str("sym1")).ToLocalChecked(); |
+ Local<Value> s2 = |
+ global->Get(context.local(), v8_str("sym2")).ToLocalChecked(); |
+ Local<Value> s3 = |
+ global->Get(context.local(), v8_str("sym3")).ToLocalChecked(); |
+ Local<Value> s4 = |
+ global->Get(context.local(), v8_str("sym4")).ToLocalChecked(); |
+ CHECK(SameSymbol(sym0, Local<String>::Cast(s0))); |
+ CHECK(SameSymbol(sym0b, Local<String>::Cast(s0b))); |
+ CHECK(SameSymbol(sym1, Local<String>::Cast(s1))); |
+ CHECK(SameSymbol(sym2, Local<String>::Cast(s2))); |
+ CHECK(SameSymbol(sym3, Local<String>::Cast(s3))); |
+ CHECK(SameSymbol(sym4, Local<String>::Cast(s4))); |
} |
@@ -7578,29 +8482,32 @@ THREADED_TEST(ToArrayIndex) { |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<String> str = v8_str("42"); |
- v8::Handle<v8::Uint32> index = str->ToArrayIndex(); |
+ v8::Local<String> str = v8_str("42"); |
+ v8::MaybeLocal<v8::Uint32> index = str->ToArrayIndex(context.local()); |
CHECK(!index.IsEmpty()); |
- CHECK_EQ(42.0, index->Uint32Value()); |
+ CHECK_EQ(42.0, |
+ index.ToLocalChecked()->Uint32Value(context.local()).FromJust()); |
str = v8_str("42asdf"); |
- index = str->ToArrayIndex(); |
+ index = str->ToArrayIndex(context.local()); |
CHECK(index.IsEmpty()); |
str = v8_str("-42"); |
- index = str->ToArrayIndex(); |
+ index = str->ToArrayIndex(context.local()); |
CHECK(index.IsEmpty()); |
str = v8_str("4294967294"); |
- index = str->ToArrayIndex(); |
+ index = str->ToArrayIndex(context.local()); |
CHECK(!index.IsEmpty()); |
- CHECK_EQ(4294967294.0, index->Uint32Value()); |
- v8::Handle<v8::Number> num = v8::Number::New(isolate, 1); |
- index = num->ToArrayIndex(); |
+ CHECK_EQ(4294967294.0, |
+ index.ToLocalChecked()->Uint32Value(context.local()).FromJust()); |
+ v8::Local<v8::Number> num = v8::Number::New(isolate, 1); |
+ index = num->ToArrayIndex(context.local()); |
CHECK(!index.IsEmpty()); |
- CHECK_EQ(1.0, index->Uint32Value()); |
+ CHECK_EQ(1.0, |
+ index.ToLocalChecked()->Uint32Value(context.local()).FromJust()); |
num = v8::Number::New(isolate, -1); |
- index = num->ToArrayIndex(); |
+ index = num->ToArrayIndex(context.local()); |
CHECK(index.IsEmpty()); |
- v8::Handle<v8::Object> obj = v8::Object::New(isolate); |
- index = obj->ToArrayIndex(); |
+ v8::Local<v8::Object> obj = v8::Object::New(isolate); |
+ index = obj->ToArrayIndex(context.local()); |
CHECK(index.IsEmpty()); |
} |
@@ -7609,33 +8516,58 @@ THREADED_TEST(ErrorConstruction) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::Handle<String> foo = v8_str("foo"); |
- v8::Handle<String> message = v8_str("message"); |
- v8::Handle<Value> range_error = v8::Exception::RangeError(foo); |
+ v8::Local<String> foo = v8_str("foo"); |
+ v8::Local<String> message = v8_str("message"); |
+ v8::Local<Value> range_error = v8::Exception::RangeError(foo); |
CHECK(range_error->IsObject()); |
- CHECK(range_error.As<v8::Object>()->Get(message)->Equals(foo)); |
- v8::Handle<Value> reference_error = v8::Exception::ReferenceError(foo); |
+ CHECK(range_error.As<v8::Object>() |
+ ->Get(context.local(), message) |
+ .ToLocalChecked() |
+ ->Equals(context.local(), foo) |
+ .FromJust()); |
+ v8::Local<Value> reference_error = v8::Exception::ReferenceError(foo); |
CHECK(reference_error->IsObject()); |
- CHECK(reference_error.As<v8::Object>()->Get(message)->Equals(foo)); |
- v8::Handle<Value> syntax_error = v8::Exception::SyntaxError(foo); |
+ CHECK(reference_error.As<v8::Object>() |
+ ->Get(context.local(), message) |
+ .ToLocalChecked() |
+ ->Equals(context.local(), foo) |
+ .FromJust()); |
+ v8::Local<Value> syntax_error = v8::Exception::SyntaxError(foo); |
CHECK(syntax_error->IsObject()); |
- CHECK(syntax_error.As<v8::Object>()->Get(message)->Equals(foo)); |
- v8::Handle<Value> type_error = v8::Exception::TypeError(foo); |
+ CHECK(syntax_error.As<v8::Object>() |
+ ->Get(context.local(), message) |
+ .ToLocalChecked() |
+ ->Equals(context.local(), foo) |
+ .FromJust()); |
+ v8::Local<Value> type_error = v8::Exception::TypeError(foo); |
CHECK(type_error->IsObject()); |
- CHECK(type_error.As<v8::Object>()->Get(message)->Equals(foo)); |
- v8::Handle<Value> error = v8::Exception::Error(foo); |
+ CHECK(type_error.As<v8::Object>() |
+ ->Get(context.local(), message) |
+ .ToLocalChecked() |
+ ->Equals(context.local(), foo) |
+ .FromJust()); |
+ v8::Local<Value> error = v8::Exception::Error(foo); |
CHECK(error->IsObject()); |
- CHECK(error.As<v8::Object>()->Get(message)->Equals(foo)); |
+ CHECK(error.As<v8::Object>() |
+ ->Get(context.local(), message) |
+ .ToLocalChecked() |
+ ->Equals(context.local(), foo) |
+ .FromJust()); |
} |
static void ThrowV8Exception(const v8::FunctionCallbackInfo<v8::Value>& info) { |
ApiTestFuzzer::Fuzz(); |
- v8::Handle<String> foo = v8_str("foo"); |
- v8::Handle<String> message = v8_str("message"); |
- v8::Handle<Value> error = v8::Exception::Error(foo); |
+ v8::Local<String> foo = v8_str("foo"); |
+ v8::Local<String> message = v8_str("message"); |
+ v8::Local<Value> error = v8::Exception::Error(foo); |
CHECK(error->IsObject()); |
- CHECK(error.As<v8::Object>()->Get(message)->Equals(foo)); |
+ v8::Local<v8::Context> context = info.GetIsolate()->GetCurrentContext(); |
+ CHECK(error.As<v8::Object>() |
+ ->Get(context, message) |
+ .ToLocalChecked() |
+ ->Equals(context, foo) |
+ .FromJust()); |
info.GetIsolate()->ThrowException(error); |
info.GetReturnValue().SetUndefined(); |
} |
@@ -7644,15 +8576,17 @@ static void ThrowV8Exception(const v8::FunctionCallbackInfo<v8::Value>& info) { |
THREADED_TEST(ExceptionCreateMessage) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::Handle<String> foo_str = v8_str("foo"); |
- v8::Handle<String> message_str = v8_str("message"); |
+ v8::Local<String> foo_str = v8_str("foo"); |
+ v8::Local<String> message_str = v8_str("message"); |
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(true); |
+ context->GetIsolate()->SetCaptureStackTraceForUncaughtExceptions(true); |
Local<v8::FunctionTemplate> fun = |
v8::FunctionTemplate::New(context->GetIsolate(), ThrowV8Exception); |
v8::Local<v8::Object> global = context->Global(); |
- global->Set(v8_str("throwV8Exception"), fun->GetFunction()); |
+ CHECK(global->Set(context.local(), v8_str("throwV8Exception"), |
+ fun->GetFunction(context.local()).ToLocalChecked()) |
+ .FromJust()); |
TryCatch try_catch(context->GetIsolate()); |
CompileRun( |
@@ -7662,17 +8596,21 @@ THREADED_TEST(ExceptionCreateMessage) { |
"f1();"); |
CHECK(try_catch.HasCaught()); |
- v8::Handle<v8::Value> error = try_catch.Exception(); |
+ v8::Local<v8::Value> error = try_catch.Exception(); |
CHECK(error->IsObject()); |
- CHECK(error.As<v8::Object>()->Get(message_str)->Equals(foo_str)); |
+ CHECK(error.As<v8::Object>() |
+ ->Get(context.local(), message_str) |
+ .ToLocalChecked() |
+ ->Equals(context.local(), foo_str) |
+ .FromJust()); |
- v8::Handle<v8::Message> message = |
+ v8::Local<v8::Message> message = |
v8::Exception::CreateMessage(context->GetIsolate(), error); |
CHECK(!message.IsEmpty()); |
- CHECK_EQ(2, message->GetLineNumber()); |
- CHECK_EQ(2, message->GetStartColumn()); |
+ CHECK_EQ(2, message->GetLineNumber(context.local()).FromJust()); |
+ CHECK_EQ(2, message->GetStartColumn(context.local()).FromJust()); |
- v8::Handle<v8::StackTrace> stackTrace = message->GetStackTrace(); |
+ v8::Local<v8::StackTrace> stackTrace = message->GetStackTrace(); |
CHECK(!stackTrace.IsEmpty()); |
CHECK_EQ(2, stackTrace->GetFrameCount()); |
@@ -7680,7 +8618,7 @@ THREADED_TEST(ExceptionCreateMessage) { |
CHECK(!stackTrace.IsEmpty()); |
CHECK_EQ(2, stackTrace->GetFrameCount()); |
- v8::V8::SetCaptureStackTraceForUncaughtExceptions(false); |
+ context->GetIsolate()->SetCaptureStackTraceForUncaughtExceptions(false); |
// Now check message location when SetCaptureStackTraceForUncaughtExceptions |
// is false. |
@@ -7695,12 +8633,16 @@ THREADED_TEST(ExceptionCreateMessage) { |
error = try_catch.Exception(); |
CHECK(error->IsObject()); |
- CHECK(error.As<v8::Object>()->Get(message_str)->Equals(foo_str)); |
+ CHECK(error.As<v8::Object>() |
+ ->Get(context.local(), message_str) |
+ .ToLocalChecked() |
+ ->Equals(context.local(), foo_str) |
+ .FromJust()); |
message = v8::Exception::CreateMessage(context->GetIsolate(), error); |
CHECK(!message.IsEmpty()); |
- CHECK_EQ(2, message->GetLineNumber()); |
- CHECK_EQ(9, message->GetStartColumn()); |
+ CHECK_EQ(2, message->GetLineNumber(context.local()).FromJust()); |
+ CHECK_EQ(9, message->GetStartColumn(context.local()).FromJust()); |
// Should be empty stack trace. |
stackTrace = message->GetStackTrace(); |
@@ -7736,38 +8678,52 @@ static void YSetter(Local<String> name, |
Local<Value> value, |
const v8::PropertyCallbackInfo<void>& info) { |
Local<Object> this_obj = Local<Object>::Cast(info.This()); |
- if (this_obj->Has(name)) this_obj->Delete(name); |
- this_obj->Set(name, value); |
+ v8::Local<v8::Context> context = info.GetIsolate()->GetCurrentContext(); |
+ if (this_obj->Has(context, name).FromJust()) |
+ this_obj->Delete(context, name).FromJust(); |
+ CHECK(this_obj->Set(context, name, value).FromJust()); |
} |
THREADED_TEST(DeleteAccessor) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> obj = ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj = ObjectTemplate::New(isolate); |
obj->SetAccessor(v8_str("y"), YGetter, YSetter); |
LocalContext context; |
- v8::Handle<v8::Object> holder = obj->NewInstance(); |
- context->Global()->Set(v8_str("holder"), holder); |
- v8::Handle<Value> result = CompileRun( |
- "holder.y = 11; holder.y = 12; holder.y"); |
- CHECK_EQ(12u, result->Uint32Value()); |
+ v8::Local<v8::Object> holder = |
+ obj->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("holder"), holder) |
+ .FromJust()); |
+ v8::Local<Value> result = |
+ CompileRun("holder.y = 11; holder.y = 12; holder.y"); |
+ CHECK_EQ(12u, result->Uint32Value(context.local()).FromJust()); |
} |
THREADED_TEST(TypeSwitch) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> templ1 = v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> templ2 = v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> templ3 = v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> templs[3] = { templ1, templ2, templ3 }; |
- v8::Handle<v8::TypeSwitch> type_switch = v8::TypeSwitch::New(3, templs); |
+ v8::Local<v8::FunctionTemplate> templ1 = v8::FunctionTemplate::New(isolate); |
+ v8::Local<v8::FunctionTemplate> templ2 = v8::FunctionTemplate::New(isolate); |
+ v8::Local<v8::FunctionTemplate> templ3 = v8::FunctionTemplate::New(isolate); |
+ v8::Local<v8::FunctionTemplate> templs[3] = {templ1, templ2, templ3}; |
+ v8::Local<v8::TypeSwitch> type_switch = v8::TypeSwitch::New(3, templs); |
LocalContext context; |
- v8::Handle<v8::Object> obj0 = v8::Object::New(isolate); |
- v8::Handle<v8::Object> obj1 = templ1->GetFunction()->NewInstance(); |
- v8::Handle<v8::Object> obj2 = templ2->GetFunction()->NewInstance(); |
- v8::Handle<v8::Object> obj3 = templ3->GetFunction()->NewInstance(); |
+ v8::Local<v8::Object> obj0 = v8::Object::New(isolate); |
+ v8::Local<v8::Object> obj1 = templ1->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ v8::Local<v8::Object> obj2 = templ2->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ v8::Local<v8::Object> obj3 = templ3->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
for (int i = 0; i < 10; i++) { |
CHECK_EQ(0, type_switch->match(obj0)); |
CHECK_EQ(1, type_switch->match(obj1)); |
@@ -7787,20 +8743,22 @@ static void TroubleCallback(const v8::FunctionCallbackInfo<v8::Value>& args) { |
trouble_nesting++; |
// Call a JS function that throws an uncaught exception. |
- Local<v8::Object> arg_this = |
- args.GetIsolate()->GetCurrentContext()->Global(); |
- Local<Value> trouble_callee = (trouble_nesting == 3) ? |
- arg_this->Get(v8_str("trouble_callee")) : |
- arg_this->Get(v8_str("trouble_caller")); |
+ Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); |
+ Local<v8::Object> arg_this = context->Global(); |
+ Local<Value> trouble_callee = |
+ (trouble_nesting == 3) |
+ ? arg_this->Get(context, v8_str("trouble_callee")).ToLocalChecked() |
+ : arg_this->Get(context, v8_str("trouble_caller")).ToLocalChecked(); |
CHECK(trouble_callee->IsFunction()); |
- args.GetReturnValue().Set( |
- Function::Cast(*trouble_callee)->Call(arg_this, 0, NULL)); |
+ args.GetReturnValue().Set(Function::Cast(*trouble_callee) |
+ ->Call(context, arg_this, 0, NULL) |
+ .FromMaybe(v8::Local<v8::Value>())); |
} |
static int report_count = 0; |
-static void ApiUncaughtExceptionTestListener(v8::Handle<v8::Message>, |
- v8::Handle<Value>) { |
+static void ApiUncaughtExceptionTestListener(v8::Local<v8::Message>, |
+ v8::Local<Value>) { |
report_count++; |
} |
@@ -7812,12 +8770,14 @@ TEST(ApiUncaughtException) { |
LocalContext env; |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::V8::AddMessageListener(ApiUncaughtExceptionTestListener); |
+ isolate->AddMessageListener(ApiUncaughtExceptionTestListener); |
Local<v8::FunctionTemplate> fun = |
v8::FunctionTemplate::New(isolate, TroubleCallback); |
v8::Local<v8::Object> global = env->Global(); |
- global->Set(v8_str("trouble"), fun->GetFunction()); |
+ CHECK(global->Set(env.local(), v8_str("trouble"), |
+ fun->GetFunction(env.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"function trouble_callee() {" |
@@ -7827,15 +8787,20 @@ TEST(ApiUncaughtException) { |
"function trouble_caller() {" |
" trouble();" |
"};"); |
- Local<Value> trouble = global->Get(v8_str("trouble")); |
+ Local<Value> trouble = |
+ global->Get(env.local(), v8_str("trouble")).ToLocalChecked(); |
CHECK(trouble->IsFunction()); |
- Local<Value> trouble_callee = global->Get(v8_str("trouble_callee")); |
+ Local<Value> trouble_callee = |
+ global->Get(env.local(), v8_str("trouble_callee")).ToLocalChecked(); |
CHECK(trouble_callee->IsFunction()); |
- Local<Value> trouble_caller = global->Get(v8_str("trouble_caller")); |
+ Local<Value> trouble_caller = |
+ global->Get(env.local(), v8_str("trouble_caller")).ToLocalChecked(); |
CHECK(trouble_caller->IsFunction()); |
- Function::Cast(*trouble_caller)->Call(global, 0, NULL); |
+ Function::Cast(*trouble_caller) |
+ ->Call(env.local(), global, 0, NULL) |
+ .FromMaybe(v8::Local<v8::Value>()); |
CHECK_EQ(1, report_count); |
- v8::V8::RemoveMessageListeners(ApiUncaughtExceptionTestListener); |
+ isolate->RemoveMessageListeners(ApiUncaughtExceptionTestListener); |
} |
@@ -7845,7 +8810,7 @@ TEST(ApiUncaughtExceptionInObjectObserve) { |
LocalContext env; |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::V8::AddMessageListener(ApiUncaughtExceptionTestListener); |
+ isolate->AddMessageListener(ApiUncaughtExceptionTestListener); |
CompileRun( |
"var obj = {};" |
"var observe_count = 0;" |
@@ -7861,19 +8826,22 @@ TEST(ApiUncaughtExceptionInObjectObserve) { |
"obj.foo = 'bar';"); |
CHECK_EQ(3, report_count); |
ExpectInt32("observe_count", 2); |
- v8::V8::RemoveMessageListeners(ApiUncaughtExceptionTestListener); |
+ isolate->RemoveMessageListeners(ApiUncaughtExceptionTestListener); |
} |
static const char* script_resource_name = "ExceptionInNativeScript.js"; |
-static void ExceptionInNativeScriptTestListener(v8::Handle<v8::Message> message, |
- v8::Handle<Value>) { |
- v8::Handle<v8::Value> name_val = message->GetScriptOrigin().ResourceName(); |
+static void ExceptionInNativeScriptTestListener(v8::Local<v8::Message> message, |
+ v8::Local<Value>) { |
+ v8::Local<v8::Value> name_val = message->GetScriptOrigin().ResourceName(); |
CHECK(!name_val.IsEmpty() && name_val->IsString()); |
v8::String::Utf8Value name(message->GetScriptOrigin().ResourceName()); |
CHECK_EQ(0, strcmp(script_resource_name, *name)); |
- CHECK_EQ(3, message->GetLineNumber()); |
- v8::String::Utf8Value source_line(message->GetSourceLine()); |
+ v8::Local<v8::Context> context = |
+ v8::Isolate::GetCurrent()->GetCurrentContext(); |
+ CHECK_EQ(3, message->GetLineNumber(context).FromJust()); |
+ v8::String::Utf8Value source_line( |
+ message->GetSourceLine(context).ToLocalChecked()); |
CHECK_EQ(0, strcmp(" new o.foo();", *source_line)); |
} |
@@ -7882,12 +8850,14 @@ TEST(ExceptionInNativeScript) { |
LocalContext env; |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::V8::AddMessageListener(ExceptionInNativeScriptTestListener); |
+ isolate->AddMessageListener(ExceptionInNativeScriptTestListener); |
Local<v8::FunctionTemplate> fun = |
v8::FunctionTemplate::New(isolate, TroubleCallback); |
v8::Local<v8::Object> global = env->Global(); |
- global->Set(v8_str("trouble"), fun->GetFunction()); |
+ CHECK(global->Set(env.local(), v8_str("trouble"), |
+ fun->GetFunction(env.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRunWithOrigin( |
"function trouble() {\n" |
@@ -7895,10 +8865,11 @@ TEST(ExceptionInNativeScript) { |
" new o.foo();\n" |
"};", |
script_resource_name); |
- Local<Value> trouble = global->Get(v8_str("trouble")); |
+ Local<Value> trouble = |
+ global->Get(env.local(), v8_str("trouble")).ToLocalChecked(); |
CHECK(trouble->IsFunction()); |
- Function::Cast(*trouble)->Call(global, 0, NULL); |
- v8::V8::RemoveMessageListeners(ExceptionInNativeScriptTestListener); |
+ CHECK(Function::Cast(*trouble)->Call(env.local(), global, 0, NULL).IsEmpty()); |
+ isolate->RemoveMessageListeners(ExceptionInNativeScriptTestListener); |
} |
@@ -7936,7 +8907,9 @@ TEST(TryCatchFinallyUsingTryCatchHandler) { |
void CEvaluate(const v8::FunctionCallbackInfo<v8::Value>& args) { |
v8::HandleScope scope(args.GetIsolate()); |
- CompileRun(args[0]->ToString(args.GetIsolate())); |
+ CompileRun(args[0] |
+ ->ToString(args.GetIsolate()->GetCurrentContext()) |
+ .ToLocalChecked()); |
} |
@@ -7982,56 +8955,60 @@ static bool SecurityTestCallback(Local<v8::Context> accessing_context, |
TEST(SecurityHandler) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope0(isolate); |
- v8::Handle<v8::ObjectTemplate> global_template = |
+ v8::Local<v8::ObjectTemplate> global_template = |
v8::ObjectTemplate::New(isolate); |
global_template->SetAccessCheckCallback(SecurityTestCallback); |
// Create an environment |
- v8::Handle<Context> context0 = Context::New(isolate, NULL, global_template); |
+ v8::Local<Context> context0 = Context::New(isolate, NULL, global_template); |
context0->Enter(); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
- v8::Handle<Script> script0 = v8_compile("foo = 111"); |
- script0->Run(); |
- global0->Set(v8_str("0"), v8_num(999)); |
- v8::Handle<Value> foo0 = global0->Get(v8_str("foo")); |
- CHECK_EQ(111, foo0->Int32Value()); |
- v8::Handle<Value> z0 = global0->Get(v8_str("0")); |
- CHECK_EQ(999, z0->Int32Value()); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
+ v8::Local<Script> script0 = v8_compile("foo = 111"); |
+ script0->Run(context0).ToLocalChecked(); |
+ CHECK(global0->Set(context0, v8_str("0"), v8_num(999)).FromJust()); |
+ v8::Local<Value> foo0 = |
+ global0->Get(context0, v8_str("foo")).ToLocalChecked(); |
+ CHECK_EQ(111, foo0->Int32Value(context0).FromJust()); |
+ v8::Local<Value> z0 = global0->Get(context0, v8_str("0")).ToLocalChecked(); |
+ CHECK_EQ(999, z0->Int32Value(context0).FromJust()); |
// Create another environment, should fail security checks. |
v8::HandleScope scope1(isolate); |
- v8::Handle<Context> context1 = |
- Context::New(isolate, NULL, global_template); |
+ v8::Local<Context> context1 = Context::New(isolate, NULL, global_template); |
context1->Enter(); |
- v8::Handle<v8::Object> global1 = context1->Global(); |
- global1->Set(v8_str("othercontext"), global0); |
+ v8::Local<v8::Object> global1 = context1->Global(); |
+ global1->Set(context1, v8_str("othercontext"), global0).FromJust(); |
// This set will fail the security check. |
- v8::Handle<Script> script1 = |
- v8_compile("othercontext.foo = 222; othercontext[0] = 888;"); |
- script1->Run(); |
+ v8::Local<Script> script1 = |
+ v8_compile("othercontext.foo = 222; othercontext[0] = 888;"); |
+ CHECK(script1->Run(context1).IsEmpty()); |
g_security_callback_result = true; |
// This read will pass the security check. |
- v8::Handle<Value> foo1 = global0->Get(v8_str("foo")); |
- CHECK_EQ(111, foo1->Int32Value()); |
+ v8::Local<Value> foo1 = |
+ global0->Get(context1, v8_str("foo")).ToLocalChecked(); |
+ CHECK_EQ(111, foo1->Int32Value(context0).FromJust()); |
// This read will pass the security check. |
- v8::Handle<Value> z1 = global0->Get(v8_str("0")); |
- CHECK_EQ(999, z1->Int32Value()); |
+ v8::Local<Value> z1 = global0->Get(context1, v8_str("0")).ToLocalChecked(); |
+ CHECK_EQ(999, z1->Int32Value(context1).FromJust()); |
// Create another environment, should pass security checks. |
{ |
v8::HandleScope scope2(isolate); |
LocalContext context2; |
- v8::Handle<v8::Object> global2 = context2->Global(); |
- global2->Set(v8_str("othercontext"), global0); |
- v8::Handle<Script> script2 = |
+ v8::Local<v8::Object> global2 = context2->Global(); |
+ CHECK(global2->Set(context2.local(), v8_str("othercontext"), global0) |
+ .FromJust()); |
+ v8::Local<Script> script2 = |
v8_compile("othercontext.foo = 333; othercontext[0] = 888;"); |
- script2->Run(); |
- v8::Handle<Value> foo2 = global0->Get(v8_str("foo")); |
- CHECK_EQ(333, foo2->Int32Value()); |
- v8::Handle<Value> z2 = global0->Get(v8_str("0")); |
- CHECK_EQ(888, z2->Int32Value()); |
+ script2->Run(context2.local()).ToLocalChecked(); |
+ v8::Local<Value> foo2 = |
+ global0->Get(context2.local(), v8_str("foo")).ToLocalChecked(); |
+ CHECK_EQ(333, foo2->Int32Value(context2.local()).FromJust()); |
+ v8::Local<Value> z2 = |
+ global0->Get(context2.local(), v8_str("0")).ToLocalChecked(); |
+ CHECK_EQ(888, z2->Int32Value(context2.local()).FromJust()); |
} |
context1->Exit(); |
@@ -8042,7 +9019,7 @@ TEST(SecurityHandler) { |
THREADED_TEST(SecurityChecks) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
+ v8::Local<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
Local<Value> bar = v8_str("bar"); |
@@ -8052,12 +9029,14 @@ THREADED_TEST(SecurityChecks) { |
// Create a function in env1. |
CompileRun("spy=function(){return spy;}"); |
- Local<Value> spy = env1->Global()->Get(v8_str("spy")); |
+ Local<Value> spy = |
+ env1->Global()->Get(env1.local(), v8_str("spy")).ToLocalChecked(); |
CHECK(spy->IsFunction()); |
// Create another function accessing global objects. |
CompileRun("spy2=function(){return new this.Array();}"); |
- Local<Value> spy2 = env1->Global()->Get(v8_str("spy2")); |
+ Local<Value> spy2 = |
+ env1->Global()->Get(env1.local(), v8_str("spy2")).ToLocalChecked(); |
CHECK(spy2->IsFunction()); |
// Switch to env2 in the same domain and invoke spy on env2. |
@@ -8065,7 +9044,9 @@ THREADED_TEST(SecurityChecks) { |
env2->SetSecurityToken(foo); |
// Enter env2 |
Context::Scope scope_env2(env2); |
- Local<Value> result = Function::Cast(*spy)->Call(env2->Global(), 0, NULL); |
+ Local<Value> result = Function::Cast(*spy) |
+ ->Call(env2, env2->Global(), 0, NULL) |
+ .ToLocalChecked(); |
CHECK(result->IsFunction()); |
} |
@@ -8075,7 +9056,7 @@ THREADED_TEST(SecurityChecks) { |
// Call cross_domain_call, it should throw an exception |
v8::TryCatch try_catch(env1->GetIsolate()); |
- Function::Cast(*spy2)->Call(env2->Global(), 0, NULL); |
+ CHECK(Function::Cast(*spy2)->Call(env2, env2->Global(), 0, NULL).IsEmpty()); |
CHECK(try_catch.HasCaught()); |
} |
} |
@@ -8085,18 +9066,25 @@ THREADED_TEST(SecurityChecks) { |
THREADED_TEST(SecurityChecksForPrototypeChain) { |
LocalContext current; |
v8::HandleScope scope(current->GetIsolate()); |
- v8::Handle<Context> other = Context::New(current->GetIsolate()); |
+ v8::Local<Context> other = Context::New(current->GetIsolate()); |
// Change context to be able to get to the Object function in the |
// other context without hitting the security checks. |
v8::Local<Value> other_object; |
{ Context::Scope scope(other); |
- other_object = other->Global()->Get(v8_str("Object")); |
- other->Global()->Set(v8_num(42), v8_num(87)); |
+ other_object = |
+ other->Global()->Get(other, v8_str("Object")).ToLocalChecked(); |
+ CHECK(other->Global()->Set(other, v8_num(42), v8_num(87)).FromJust()); |
} |
- current->Global()->Set(v8_str("other"), other->Global()); |
- CHECK(v8_compile("other")->Run()->Equals(other->Global())); |
+ CHECK(current->Global() |
+ ->Set(current.local(), v8_str("other"), other->Global()) |
+ .FromJust()); |
+ CHECK(v8_compile("other") |
+ ->Run(current.local()) |
+ .ToLocalChecked() |
+ ->Equals(current.local(), other->Global()) |
+ .FromJust()); |
// Make sure the security check fails here and we get an undefined |
// result instead of getting the Object function. Repeat in a loop |
@@ -8104,41 +9092,50 @@ THREADED_TEST(SecurityChecksForPrototypeChain) { |
v8::Local<Script> access_other0 = v8_compile("other.Object"); |
v8::Local<Script> access_other1 = v8_compile("other[42]"); |
for (int i = 0; i < 5; i++) { |
- CHECK(access_other0->Run().IsEmpty()); |
- CHECK(access_other1->Run().IsEmpty()); |
+ CHECK(access_other0->Run(current.local()).IsEmpty()); |
+ CHECK(access_other1->Run(current.local()).IsEmpty()); |
} |
// Create an object that has 'other' in its prototype chain and make |
// sure we cannot access the Object function indirectly through |
// that. Repeat in a loop to make sure to exercise the IC code. |
- v8_compile("function F() { };" |
- "F.prototype = other;" |
- "var f = new F();")->Run(); |
+ v8_compile( |
+ "function F() { };" |
+ "F.prototype = other;" |
+ "var f = new F();") |
+ ->Run(current.local()) |
+ .ToLocalChecked(); |
v8::Local<Script> access_f0 = v8_compile("f.Object"); |
v8::Local<Script> access_f1 = v8_compile("f[42]"); |
for (int j = 0; j < 5; j++) { |
- CHECK(access_f0->Run().IsEmpty()); |
- CHECK(access_f1->Run().IsEmpty()); |
+ CHECK(access_f0->Run(current.local()).IsEmpty()); |
+ CHECK(access_f1->Run(current.local()).IsEmpty()); |
} |
// Now it gets hairy: Set the prototype for the other global object |
// to be the current global object. The prototype chain for 'f' now |
// goes through 'other' but ends up in the current global object. |
{ Context::Scope scope(other); |
- other->Global()->Set(v8_str("__proto__"), current->Global()); |
+ CHECK(other->Global() |
+ ->Set(other, v8_str("__proto__"), current->Global()) |
+ .FromJust()); |
} |
// Set a named and an index property on the current global |
// object. To force the lookup to go through the other global object, |
// the properties must not exist in the other global object. |
- current->Global()->Set(v8_str("foo"), v8_num(100)); |
- current->Global()->Set(v8_num(99), v8_num(101)); |
+ CHECK(current->Global() |
+ ->Set(current.local(), v8_str("foo"), v8_num(100)) |
+ .FromJust()); |
+ CHECK(current->Global() |
+ ->Set(current.local(), v8_num(99), v8_num(101)) |
+ .FromJust()); |
// Try to read the properties from f and make sure that the access |
// gets stopped by the security checks on the other global object. |
Local<Script> access_f2 = v8_compile("f.foo"); |
Local<Script> access_f3 = v8_compile("f[99]"); |
for (int k = 0; k < 5; k++) { |
- CHECK(access_f2->Run().IsEmpty()); |
- CHECK(access_f3->Run().IsEmpty()); |
+ CHECK(access_f2->Run(current.local()).IsEmpty()); |
+ CHECK(access_f3->Run(current.local()).IsEmpty()); |
} |
} |
@@ -8156,21 +9153,28 @@ static bool SecurityTestCallbackWithGC(Local<v8::Context> accessing_context, |
TEST(SecurityTestGCAllowed) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ObjectTemplate> object_template = |
+ v8::Local<v8::ObjectTemplate> object_template = |
v8::ObjectTemplate::New(isolate); |
object_template->SetAccessCheckCallback(SecurityTestCallbackWithGC); |
- v8::Handle<Context> context = Context::New(isolate); |
+ v8::Local<Context> context = Context::New(isolate); |
v8::Context::Scope context_scope(context); |
- context->Global()->Set(v8_str("obj"), object_template->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context, v8_str("obj"), |
+ object_template->NewInstance(context).ToLocalChecked()) |
+ .FromJust()); |
security_check_with_gc_called = false; |
CompileRun("obj[0] = new String(1002);"); |
CHECK(security_check_with_gc_called); |
security_check_with_gc_called = false; |
- CHECK(CompileRun("obj[0]")->ToString(isolate)->Equals(v8_str("1002"))); |
+ CHECK(CompileRun("obj[0]") |
+ ->ToString(context) |
+ .ToLocalChecked() |
+ ->Equals(context, v8_str("1002")) |
+ .FromJust()); |
CHECK(security_check_with_gc_called); |
} |
@@ -8178,7 +9182,7 @@ TEST(SecurityTestGCAllowed) { |
THREADED_TEST(CrossDomainDelete) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
+ v8::Local<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
Local<Value> bar = v8_str("bar"); |
@@ -8187,8 +9191,9 @@ THREADED_TEST(CrossDomainDelete) { |
env1->SetSecurityToken(foo); |
env2->SetSecurityToken(foo); |
- env1->Global()->Set(v8_str("prop"), v8_num(3)); |
- env2->Global()->Set(v8_str("env1"), env1->Global()); |
+ CHECK( |
+ env1->Global()->Set(env1.local(), v8_str("prop"), v8_num(3)).FromJust()); |
+ CHECK(env2->Global()->Set(env2, v8_str("env1"), env1->Global()).FromJust()); |
// Change env2 to a different domain and delete env1.prop. |
env2->SetSecurityToken(bar); |
@@ -8200,16 +9205,17 @@ THREADED_TEST(CrossDomainDelete) { |
} |
// Check that env1.prop still exists. |
- Local<Value> v = env1->Global()->Get(v8_str("prop")); |
+ Local<Value> v = |
+ env1->Global()->Get(env1.local(), v8_str("prop")).ToLocalChecked(); |
CHECK(v->IsNumber()); |
- CHECK_EQ(3, v->Int32Value()); |
+ CHECK_EQ(3, v->Int32Value(env1.local()).FromJust()); |
} |
THREADED_TEST(CrossDomainIsPropertyEnumerable) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
+ v8::Local<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
Local<Value> bar = v8_str("bar"); |
@@ -8218,8 +9224,9 @@ THREADED_TEST(CrossDomainIsPropertyEnumerable) { |
env1->SetSecurityToken(foo); |
env2->SetSecurityToken(foo); |
- env1->Global()->Set(v8_str("prop"), v8_num(3)); |
- env2->Global()->Set(v8_str("env1"), env1->Global()); |
+ CHECK( |
+ env1->Global()->Set(env1.local(), v8_str("prop"), v8_num(3)).FromJust()); |
+ CHECK(env2->Global()->Set(env2, v8_str("env1"), env1->Global()).FromJust()); |
// env1.prop is enumerable in env2. |
Local<String> test = v8_str("propertyIsEnumerable.call(env1, 'prop')"); |
@@ -8242,7 +9249,7 @@ THREADED_TEST(CrossDomainIsPropertyEnumerable) { |
THREADED_TEST(CrossDomainFor) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
+ v8::Local<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
Local<Value> bar = v8_str("bar"); |
@@ -8251,8 +9258,9 @@ THREADED_TEST(CrossDomainFor) { |
env1->SetSecurityToken(foo); |
env2->SetSecurityToken(foo); |
- env1->Global()->Set(v8_str("prop"), v8_num(3)); |
- env2->Global()->Set(v8_str("env1"), env1->Global()); |
+ CHECK( |
+ env1->Global()->Set(env1.local(), v8_str("prop"), v8_num(3)).FromJust()); |
+ CHECK(env2->Global()->Set(env2, v8_str("env1"), env1->Global()).FromJust()); |
// Change env2 to a different domain and set env1's global object |
// as the __proto__ of an object in env2 and enumerate properties |
@@ -8280,7 +9288,7 @@ THREADED_TEST(CrossDomainFor) { |
THREADED_TEST(CrossDomainForInOnPrototype) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
+ v8::Local<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
Local<Value> bar = v8_str("bar"); |
@@ -8289,8 +9297,9 @@ THREADED_TEST(CrossDomainForInOnPrototype) { |
env1->SetSecurityToken(foo); |
env2->SetSecurityToken(foo); |
- env1->Global()->Set(v8_str("prop"), v8_num(3)); |
- env2->Global()->Set(v8_str("env1"), env1->Global()); |
+ CHECK( |
+ env1->Global()->Set(env1.local(), v8_str("prop"), v8_num(3)).FromJust()); |
+ CHECK(env2->Global()->Set(env2, v8_str("env1"), env1->Global()).FromJust()); |
// Change env2 to a different domain and set env1's global object |
// as the __proto__ of an object in env2 and enumerate properties |
@@ -8319,9 +9328,8 @@ THREADED_TEST(CrossDomainForInOnPrototype) { |
TEST(ContextDetachGlobal) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
+ v8::Local<Context> env2 = Context::New(env1->GetIsolate()); |
- Local<v8::Object> global1 = env1->Global(); |
Local<Value> foo = v8_str("foo"); |
@@ -8334,44 +9342,54 @@ TEST(ContextDetachGlobal) { |
// Create a function in env2 and add a reference to it in env1. |
Local<v8::Object> global2 = env2->Global(); |
- global2->Set(v8_str("prop"), v8::Integer::New(env2->GetIsolate(), 1)); |
+ CHECK(global2->Set(env2, v8_str("prop"), |
+ v8::Integer::New(env2->GetIsolate(), 1)) |
+ .FromJust()); |
CompileRun("function getProp() {return prop;}"); |
- env1->Global()->Set(v8_str("getProp"), |
- global2->Get(v8_str("getProp"))); |
+ CHECK(env1->Global() |
+ ->Set(env1.local(), v8_str("getProp"), |
+ global2->Get(env2, v8_str("getProp")).ToLocalChecked()) |
+ .FromJust()); |
// Detach env2's global, and reuse the global object of env2 |
env2->Exit(); |
env2->DetachGlobal(); |
- v8::Handle<Context> env3 = Context::New(env1->GetIsolate(), |
- 0, |
- v8::Handle<v8::ObjectTemplate>(), |
- global2); |
+ v8::Local<Context> env3 = Context::New( |
+ env1->GetIsolate(), 0, v8::Local<v8::ObjectTemplate>(), global2); |
env3->SetSecurityToken(v8_str("bar")); |
- env3->Enter(); |
+ env3->Enter(); |
Local<v8::Object> global3 = env3->Global(); |
- CHECK(global2->Equals(global3)); |
- CHECK(global3->Get(v8_str("prop"))->IsUndefined()); |
- CHECK(global3->Get(v8_str("getProp"))->IsUndefined()); |
- global3->Set(v8_str("prop"), v8::Integer::New(env3->GetIsolate(), -1)); |
- global3->Set(v8_str("prop2"), v8::Integer::New(env3->GetIsolate(), 2)); |
+ CHECK(global2->Equals(env3, global3).FromJust()); |
+ CHECK(global3->Get(env3, v8_str("prop")).ToLocalChecked()->IsUndefined()); |
+ CHECK(global3->Get(env3, v8_str("getProp")).ToLocalChecked()->IsUndefined()); |
+ CHECK(global3->Set(env3, v8_str("prop"), |
+ v8::Integer::New(env3->GetIsolate(), -1)) |
+ .FromJust()); |
+ CHECK(global3->Set(env3, v8_str("prop2"), |
+ v8::Integer::New(env3->GetIsolate(), 2)) |
+ .FromJust()); |
env3->Exit(); |
// Call getProp in env1, and it should return the value 1 |
{ |
- Local<Value> get_prop = global1->Get(v8_str("getProp")); |
+ Local<v8::Object> global1 = env1->Global(); |
+ Local<Value> get_prop = |
+ global1->Get(env1.local(), v8_str("getProp")).ToLocalChecked(); |
CHECK(get_prop->IsFunction()); |
v8::TryCatch try_catch(env1->GetIsolate()); |
- Local<Value> r = Function::Cast(*get_prop)->Call(global1, 0, NULL); |
+ Local<Value> r = Function::Cast(*get_prop) |
+ ->Call(env1.local(), global1, 0, NULL) |
+ .ToLocalChecked(); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(1, r->Int32Value()); |
+ CHECK_EQ(1, r->Int32Value(env1.local()).FromJust()); |
} |
// Check that env3 is not accessible from env1 |
{ |
- Local<Value> r = global3->Get(v8_str("prop2")); |
+ v8::MaybeLocal<Value> r = global3->Get(env1.local(), v8_str("prop2")); |
CHECK(r.IsEmpty()); |
} |
} |
@@ -8382,7 +9400,7 @@ TEST(DetachGlobal) { |
v8::HandleScope scope(env1->GetIsolate()); |
// Create second environment. |
- v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
+ v8::Local<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
@@ -8393,16 +9411,20 @@ TEST(DetachGlobal) { |
// Create a property on the global object in env2. |
{ |
v8::Context::Scope scope(env2); |
- env2->Global()->Set(v8_str("p"), v8::Integer::New(env2->GetIsolate(), 42)); |
+ CHECK(env2->Global() |
+ ->Set(env2, v8_str("p"), v8::Integer::New(env2->GetIsolate(), 42)) |
+ .FromJust()); |
} |
// Create a reference to env2 global from env1 global. |
- env1->Global()->Set(v8_str("other"), env2->Global()); |
+ CHECK(env1->Global() |
+ ->Set(env1.local(), v8_str("other"), env2->Global()) |
+ .FromJust()); |
// Check that we have access to other.p in env2 from env1. |
Local<Value> result = CompileRun("other.p"); |
CHECK(result->IsInt32()); |
- CHECK_EQ(42, result->Int32Value()); |
+ CHECK_EQ(42, result->Int32Value(env1.local()).FromJust()); |
// Hold on to global from env2 and detach global from env2. |
Local<v8::Object> global2 = env2->Global(); |
@@ -8414,11 +9436,9 @@ TEST(DetachGlobal) { |
CHECK(result.IsEmpty()); |
// Reuse global2 for env3. |
- v8::Handle<Context> env3 = Context::New(env1->GetIsolate(), |
- 0, |
- v8::Handle<v8::ObjectTemplate>(), |
- global2); |
- CHECK(global2->Equals(env3->Global())); |
+ v8::Local<Context> env3 = Context::New( |
+ env1->GetIsolate(), 0, v8::Local<v8::ObjectTemplate>(), global2); |
+ CHECK(global2->Equals(env1.local(), env3->Global()).FromJust()); |
// Start by using the same security token for env3 as for env1 and env2. |
env3->SetSecurityToken(foo); |
@@ -8426,13 +9446,15 @@ TEST(DetachGlobal) { |
// Create a property on the global object in env3. |
{ |
v8::Context::Scope scope(env3); |
- env3->Global()->Set(v8_str("p"), v8::Integer::New(env3->GetIsolate(), 24)); |
+ CHECK(env3->Global() |
+ ->Set(env3, v8_str("p"), v8::Integer::New(env3->GetIsolate(), 24)) |
+ .FromJust()); |
} |
// Check that other.p is now the property in env3 and that we have access. |
result = CompileRun("other.p"); |
CHECK(result->IsInt32()); |
- CHECK_EQ(24, result->Int32Value()); |
+ CHECK_EQ(24, result->Int32Value(env3).FromJust()); |
// Change security token for env3 to something different from env1 and env2. |
env3->SetSecurityToken(v8_str("bar")); |
@@ -8446,8 +9468,9 @@ TEST(DetachGlobal) { |
void GetThisX(const v8::FunctionCallbackInfo<v8::Value>& info) { |
+ v8::Local<v8::Context> context = info.GetIsolate()->GetCurrentContext(); |
info.GetReturnValue().Set( |
- info.GetIsolate()->GetCurrentContext()->Global()->Get(v8_str("x"))); |
+ context->Global()->Get(context, v8_str("x")).ToLocalChecked()); |
} |
@@ -8469,21 +9492,30 @@ TEST(DetachedAccesses) { |
env1->SetSecurityToken(foo); |
env2->SetSecurityToken(foo); |
- env1->Global()->Set(v8_str("x"), v8_str("env1_x")); |
+ CHECK(env1->Global() |
+ ->Set(env1.local(), v8_str("x"), v8_str("env1_x")) |
+ .FromJust()); |
{ |
v8::Context::Scope scope(env2); |
- env2->Global()->Set(v8_str("x"), v8_str("env2_x")); |
+ CHECK(env2->Global()->Set(env2, v8_str("x"), v8_str("env2_x")).FromJust()); |
CompileRun( |
"function bound_x() { return x; }" |
"function get_x() { return this.x; }" |
"function get_x_w() { return (function() {return this.x;})(); }"); |
- env1->Global()->Set(v8_str("bound_x"), CompileRun("bound_x")); |
- env1->Global()->Set(v8_str("get_x"), CompileRun("get_x")); |
- env1->Global()->Set(v8_str("get_x_w"), CompileRun("get_x_w")); |
- env1->Global()->Set( |
- v8_str("this_x"), |
- CompileRun("Object.getOwnPropertyDescriptor(this, 'this_x').get")); |
+ CHECK(env1->Global() |
+ ->Set(env1.local(), v8_str("bound_x"), CompileRun("bound_x")) |
+ .FromJust()); |
+ CHECK(env1->Global() |
+ ->Set(env1.local(), v8_str("get_x"), CompileRun("get_x")) |
+ .FromJust()); |
+ CHECK(env1->Global() |
+ ->Set(env1.local(), v8_str("get_x_w"), CompileRun("get_x_w")) |
+ .FromJust()); |
+ env1->Global() |
+ ->Set(env1.local(), v8_str("this_x"), |
+ CompileRun("Object.getOwnPropertyDescriptor(this, 'this_x').get")) |
+ .FromJust(); |
} |
Local<Object> env2_global = env2->Global(); |
@@ -8491,24 +9523,22 @@ TEST(DetachedAccesses) { |
Local<Value> result; |
result = CompileRun("bound_x()"); |
- CHECK(v8_str("env2_x")->Equals(result)); |
+ CHECK(v8_str("env2_x")->Equals(env1.local(), result).FromJust()); |
result = CompileRun("get_x()"); |
CHECK(result.IsEmpty()); |
result = CompileRun("get_x_w()"); |
CHECK(result.IsEmpty()); |
result = CompileRun("this_x()"); |
- CHECK(v8_str("env2_x")->Equals(result)); |
+ CHECK(v8_str("env2_x")->Equals(env1.local(), result).FromJust()); |
// Reattach env2's proxy |
- env2 = Context::New(env1->GetIsolate(), |
- 0, |
- v8::Handle<v8::ObjectTemplate>(), |
+ env2 = Context::New(env1->GetIsolate(), 0, v8::Local<v8::ObjectTemplate>(), |
env2_global); |
env2->SetSecurityToken(foo); |
{ |
v8::Context::Scope scope(env2); |
- env2->Global()->Set(v8_str("x"), v8_str("env3_x")); |
- env2->Global()->Set(v8_str("env1"), env1->Global()); |
+ CHECK(env2->Global()->Set(env2, v8_str("x"), v8_str("env3_x")).FromJust()); |
+ CHECK(env2->Global()->Set(env2, v8_str("env1"), env1->Global()).FromJust()); |
result = CompileRun( |
"results = [];" |
"for (var i = 0; i < 4; i++ ) {" |
@@ -8521,10 +9551,18 @@ TEST(DetachedAccesses) { |
Local<v8::Array> results = Local<v8::Array>::Cast(result); |
CHECK_EQ(16u, results->Length()); |
for (int i = 0; i < 16; i += 4) { |
- CHECK(v8_str("env2_x")->Equals(results->Get(i + 0))); |
- CHECK(v8_str("env1_x")->Equals(results->Get(i + 1))); |
- CHECK(v8_str("env3_x")->Equals(results->Get(i + 2))); |
- CHECK(v8_str("env2_x")->Equals(results->Get(i + 3))); |
+ CHECK(v8_str("env2_x") |
+ ->Equals(env2, results->Get(env2, i + 0).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("env1_x") |
+ ->Equals(env2, results->Get(env2, i + 1).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("env3_x") |
+ ->Equals(env2, results->Get(env2, i + 2).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("env2_x") |
+ ->Equals(env2, results->Get(env2, i + 3).ToLocalChecked()) |
+ .FromJust()); |
} |
} |
@@ -8540,10 +9578,22 @@ TEST(DetachedAccesses) { |
Local<v8::Array> results = Local<v8::Array>::Cast(result); |
CHECK_EQ(16u, results->Length()); |
for (int i = 0; i < 16; i += 4) { |
- CHECK(v8_str("env2_x")->Equals(results->Get(i + 0))); |
- CHECK(v8_str("env3_x")->Equals(results->Get(i + 1))); |
- CHECK(v8_str("env3_x")->Equals(results->Get(i + 2))); |
- CHECK(v8_str("env2_x")->Equals(results->Get(i + 3))); |
+ CHECK(v8_str("env2_x") |
+ ->Equals(env1.local(), |
+ results->Get(env1.local(), i + 0).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("env3_x") |
+ ->Equals(env1.local(), |
+ results->Get(env1.local(), i + 1).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("env3_x") |
+ ->Equals(env1.local(), |
+ results->Get(env1.local(), i + 2).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("env2_x") |
+ ->Equals(env1.local(), |
+ results->Get(env1.local(), i + 3).ToLocalChecked()) |
+ .FromJust()); |
} |
result = CompileRun( |
@@ -8558,10 +9608,22 @@ TEST(DetachedAccesses) { |
results = Local<v8::Array>::Cast(result); |
CHECK_EQ(16u, results->Length()); |
for (int i = 0; i < 16; i += 4) { |
- CHECK(v8_str("env2_x")->Equals(results->Get(i + 0))); |
- CHECK(v8_str("env1_x")->Equals(results->Get(i + 1))); |
- CHECK(v8_str("env3_x")->Equals(results->Get(i + 2))); |
- CHECK(v8_str("env2_x")->Equals(results->Get(i + 3))); |
+ CHECK(v8_str("env2_x") |
+ ->Equals(env1.local(), |
+ results->Get(env1.local(), i + 0).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("env1_x") |
+ ->Equals(env1.local(), |
+ results->Get(env1.local(), i + 1).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("env3_x") |
+ ->Equals(env1.local(), |
+ results->Get(env1.local(), i + 2).ToLocalChecked()) |
+ .FromJust()); |
+ CHECK(v8_str("env2_x") |
+ ->Equals(env1.local(), |
+ results->Get(env1.local(), i + 3).ToLocalChecked()) |
+ .FromJust()); |
} |
} |
@@ -8569,8 +9631,8 @@ TEST(DetachedAccesses) { |
static bool allowed_access = false; |
static bool AccessBlocker(Local<v8::Context> accessing_context, |
Local<v8::Object> accessed_object) { |
- return CcTest::isolate()->GetCurrentContext()->Global()->Equals( |
- accessed_object) || |
+ v8::Local<v8::Context> context = CcTest::isolate()->GetCurrentContext(); |
+ return context->Global()->Equals(context, accessed_object).FromJust() || |
allowed_access; |
} |
@@ -8585,11 +9647,11 @@ static void EchoGetter( |
} |
-static void EchoSetter(Local<String> name, |
- Local<Value> value, |
- const v8::PropertyCallbackInfo<void>&) { |
+static void EchoSetter(Local<String> name, Local<Value> value, |
+ const v8::PropertyCallbackInfo<void>& args) { |
if (value->IsNumber()) |
- g_echo_value = value->Int32Value(); |
+ g_echo_value = |
+ value->Int32Value(args.GetIsolate()->GetCurrentContext()).FromJust(); |
} |
@@ -8616,23 +9678,20 @@ static void UnreachableFunction( |
TEST(AccessControl) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ObjectTemplate> global_template = |
+ v8::Local<v8::ObjectTemplate> global_template = |
v8::ObjectTemplate::New(isolate); |
global_template->SetAccessCheckCallback(AccessBlocker); |
// Add an accessor accessible by cross-domain JS code. |
global_template->SetAccessor( |
- v8_str("accessible_prop"), |
- EchoGetter, EchoSetter, |
- v8::Handle<Value>(), |
+ v8_str("accessible_prop"), EchoGetter, EchoSetter, v8::Local<Value>(), |
v8::AccessControl(v8::ALL_CAN_READ | v8::ALL_CAN_WRITE)); |
// Add an accessor that is not accessible by cross-domain JS code. |
- global_template->SetAccessor(v8_str("blocked_prop"), |
- UnreachableGetter, UnreachableSetter, |
- v8::Handle<Value>(), |
+ global_template->SetAccessor(v8_str("blocked_prop"), UnreachableGetter, |
+ UnreachableSetter, v8::Local<Value>(), |
v8::DEFAULT); |
global_template->SetAccessorProperty( |
@@ -8646,7 +9705,7 @@ TEST(AccessControl) { |
v8::Local<Context> context0 = Context::New(isolate, NULL, global_template); |
context0->Enter(); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
// Define a property with JS getter and setter. |
CompileRun( |
@@ -8654,11 +9713,13 @@ TEST(AccessControl) { |
"function setter() { return 'setter'; }\n" |
"Object.defineProperty(this, 'js_accessor_p', {get:getter, set:setter})"); |
- Local<Value> getter = global0->Get(v8_str("getter")); |
- Local<Value> setter = global0->Get(v8_str("setter")); |
+ Local<Value> getter = |
+ global0->Get(context0, v8_str("getter")).ToLocalChecked(); |
+ Local<Value> setter = |
+ global0->Get(context0, v8_str("setter")).ToLocalChecked(); |
// And define normal element. |
- global0->Set(239, v8_str("239")); |
+ CHECK(global0->Set(context0, 239, v8_str("239")).FromJust()); |
// Define an element with JS getter and setter. |
CompileRun( |
@@ -8666,16 +9727,18 @@ TEST(AccessControl) { |
"function el_setter() { return 'el_setter'; };\n" |
"Object.defineProperty(this, '42', {get: el_getter, set: el_setter});"); |
- Local<Value> el_getter = global0->Get(v8_str("el_getter")); |
- Local<Value> el_setter = global0->Get(v8_str("el_setter")); |
+ Local<Value> el_getter = |
+ global0->Get(context0, v8_str("el_getter")).ToLocalChecked(); |
+ Local<Value> el_setter = |
+ global0->Get(context0, v8_str("el_setter")).ToLocalChecked(); |
v8::HandleScope scope1(isolate); |
v8::Local<Context> context1 = Context::New(isolate); |
context1->Enter(); |
- v8::Handle<v8::Object> global1 = context1->Global(); |
- global1->Set(v8_str("other"), global0); |
+ v8::Local<v8::Object> global1 = context1->Global(); |
+ CHECK(global1->Set(context1, v8_str("other"), global0).FromJust()); |
// Access blocked property. |
CompileRun("other.blocked_prop = 1"); |
@@ -8732,22 +9795,22 @@ TEST(AccessControl) { |
allowed_access = false; |
- v8::Handle<Value> value; |
+ v8::Local<Value> value; |
// Access accessible property |
value = CompileRun("other.accessible_prop = 3"); |
CHECK(value->IsNumber()); |
- CHECK_EQ(3, value->Int32Value()); |
+ CHECK_EQ(3, value->Int32Value(context1).FromJust()); |
CHECK_EQ(3, g_echo_value); |
value = CompileRun("other.accessible_prop"); |
CHECK(value->IsNumber()); |
- CHECK_EQ(3, value->Int32Value()); |
+ CHECK_EQ(3, value->Int32Value(context1).FromJust()); |
value = CompileRun( |
"Object.getOwnPropertyDescriptor(other, 'accessible_prop').value"); |
CHECK(value->IsNumber()); |
- CHECK_EQ(3, value->Int32Value()); |
+ CHECK_EQ(3, value->Int32Value(context1).FromJust()); |
value = CompileRun("propertyIsEnumerable.call(other, 'accessible_prop')"); |
CHECK(value->IsTrue()); |
@@ -8774,7 +9837,9 @@ TEST(AccessControl) { |
// Test that preventExtensions fails on a non-accessible object even if that |
// object is already non-extensible. |
- global1->Set(v8_str("checked_object"), global_template->NewInstance()); |
+ CHECK(global1->Set(context1, v8_str("checked_object"), |
+ global_template->NewInstance(context1).ToLocalChecked()) |
+ .FromJust()); |
allowed_access = true; |
CompileRun("Object.preventExtensions(checked_object)"); |
ExpectFalse("Object.isExtensible(checked_object)"); |
@@ -8789,38 +9854,37 @@ TEST(AccessControl) { |
TEST(AccessControlES5) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ObjectTemplate> global_template = |
+ v8::Local<v8::ObjectTemplate> global_template = |
v8::ObjectTemplate::New(isolate); |
global_template->SetAccessCheckCallback(AccessBlocker); |
// Add accessible accessor. |
global_template->SetAccessor( |
- v8_str("accessible_prop"), |
- EchoGetter, EchoSetter, |
- v8::Handle<Value>(), |
+ v8_str("accessible_prop"), EchoGetter, EchoSetter, v8::Local<Value>(), |
v8::AccessControl(v8::ALL_CAN_READ | v8::ALL_CAN_WRITE)); |
// Add an accessor that is not accessible by cross-domain JS code. |
- global_template->SetAccessor(v8_str("blocked_prop"), |
- UnreachableGetter, UnreachableSetter, |
- v8::Handle<Value>(), |
+ global_template->SetAccessor(v8_str("blocked_prop"), UnreachableGetter, |
+ UnreachableSetter, v8::Local<Value>(), |
v8::DEFAULT); |
// Create an environment |
v8::Local<Context> context0 = Context::New(isolate, NULL, global_template); |
context0->Enter(); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
v8::Local<Context> context1 = Context::New(isolate); |
context1->Enter(); |
- v8::Handle<v8::Object> global1 = context1->Global(); |
- global1->Set(v8_str("other"), global0); |
+ v8::Local<v8::Object> global1 = context1->Global(); |
+ CHECK(global1->Set(context1, v8_str("other"), global0).FromJust()); |
// Regression test for issue 1154. |
- CHECK(CompileRun("Object.keys(other).length == 0")->BooleanValue()); |
+ CHECK(CompileRun("Object.keys(other).length == 0") |
+ ->BooleanValue(context1) |
+ .FromJust()); |
CHECK(CompileRun("other.blocked_prop").IsEmpty()); |
// Regression test for issue 1027. |
@@ -8867,33 +9931,34 @@ static bool AccessAlwaysBlocked(Local<v8::Context> accessing_context, |
THREADED_TEST(AccessControlGetOwnPropertyNames) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ObjectTemplate> obj_template = |
- v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj_template = v8::ObjectTemplate::New(isolate); |
obj_template->Set(v8_str("x"), v8::Integer::New(isolate, 42)); |
obj_template->SetAccessCheckCallback(AccessAlwaysBlocked); |
// Add an accessor accessible by cross-domain JS code. |
obj_template->SetAccessor( |
- v8_str("accessible_prop"), EchoGetter, EchoSetter, v8::Handle<Value>(), |
+ v8_str("accessible_prop"), EchoGetter, EchoSetter, v8::Local<Value>(), |
v8::AccessControl(v8::ALL_CAN_READ | v8::ALL_CAN_WRITE)); |
// Create an environment |
v8::Local<Context> context0 = Context::New(isolate, NULL, obj_template); |
context0->Enter(); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
v8::HandleScope scope1(CcTest::isolate()); |
v8::Local<Context> context1 = Context::New(isolate); |
context1->Enter(); |
- v8::Handle<v8::Object> global1 = context1->Global(); |
- global1->Set(v8_str("other"), global0); |
- global1->Set(v8_str("object"), obj_template->NewInstance()); |
+ v8::Local<v8::Object> global1 = context1->Global(); |
+ CHECK(global1->Set(context1, v8_str("other"), global0).FromJust()); |
+ CHECK(global1->Set(context1, v8_str("object"), |
+ obj_template->NewInstance(context1).ToLocalChecked()) |
+ .FromJust()); |
- v8::Handle<Value> value; |
+ v8::Local<Value> value; |
// Attempt to get the property names of the other global object and |
// of an object that requires access checks. Accessing the other |
@@ -8903,12 +9968,12 @@ THREADED_TEST(AccessControlGetOwnPropertyNames) { |
value = CompileRun( |
"var names = Object.getOwnPropertyNames(other);" |
"names.length == 1 && names[0] == 'accessible_prop';"); |
- CHECK(value->BooleanValue()); |
+ CHECK(value->BooleanValue(context1).FromJust()); |
value = CompileRun( |
"var names = Object.getOwnPropertyNames(object);" |
"names.length == 1 && names[0] == 'accessible_prop';"); |
- CHECK(value->BooleanValue()); |
+ CHECK(value->BooleanValue(context1).FromJust()); |
context1->Exit(); |
context0->Exit(); |
@@ -8918,11 +9983,13 @@ THREADED_TEST(AccessControlGetOwnPropertyNames) { |
TEST(Regress470113) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ObjectTemplate> obj_template = |
- v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj_template = v8::ObjectTemplate::New(isolate); |
obj_template->SetAccessCheckCallback(AccessAlwaysBlocked); |
LocalContext env; |
- env->Global()->Set(v8_str("prohibited"), obj_template->NewInstance()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("prohibited"), |
+ obj_template->NewInstance(env.local()).ToLocalChecked()) |
+ .FromJust()); |
{ |
v8::TryCatch try_catch(isolate); |
@@ -8949,49 +10016,47 @@ THREADED_TEST(CrossDomainAccessors) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::FunctionTemplate> func_template = |
+ v8::Local<v8::FunctionTemplate> func_template = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::ObjectTemplate> global_template = |
+ v8::Local<v8::ObjectTemplate> global_template = |
func_template->InstanceTemplate(); |
- v8::Handle<v8::ObjectTemplate> proto_template = |
+ v8::Local<v8::ObjectTemplate> proto_template = |
func_template->PrototypeTemplate(); |
// Add an accessor to proto that's accessible by cross-domain JS code. |
- proto_template->SetAccessor(v8_str("accessible"), |
- ConstTenGetter, 0, |
- v8::Handle<Value>(), |
- v8::ALL_CAN_READ); |
+ proto_template->SetAccessor(v8_str("accessible"), ConstTenGetter, 0, |
+ v8::Local<Value>(), v8::ALL_CAN_READ); |
// Add an accessor that is not accessible by cross-domain JS code. |
- global_template->SetAccessor(v8_str("unreachable"), |
- UnreachableGetter, 0, |
- v8::Handle<Value>(), |
- v8::DEFAULT); |
+ global_template->SetAccessor(v8_str("unreachable"), UnreachableGetter, 0, |
+ v8::Local<Value>(), v8::DEFAULT); |
v8::Local<Context> context0 = Context::New(isolate, NULL, global_template); |
context0->Enter(); |
Local<v8::Object> global = context0->Global(); |
// Add a normal property that shadows 'accessible' |
- global->Set(v8_str("accessible"), v8_num(11)); |
+ CHECK(global->Set(context0, v8_str("accessible"), v8_num(11)).FromJust()); |
// Enter a new context. |
v8::HandleScope scope1(CcTest::isolate()); |
v8::Local<Context> context1 = Context::New(isolate); |
context1->Enter(); |
- v8::Handle<v8::Object> global1 = context1->Global(); |
- global1->Set(v8_str("other"), global); |
+ v8::Local<v8::Object> global1 = context1->Global(); |
+ CHECK(global1->Set(context1, v8_str("other"), global).FromJust()); |
// Should return 10, instead of 11 |
- v8::Handle<Value> value = v8_compile("other.accessible")->Run(); |
+ v8::Local<Value> value = |
+ v8_compile("other.accessible")->Run(context1).ToLocalChecked(); |
CHECK(value->IsNumber()); |
- CHECK_EQ(10, value->Int32Value()); |
+ CHECK_EQ(10, value->Int32Value(context1).FromJust()); |
- value = v8_compile("other.unreachable")->Run(); |
- CHECK(value.IsEmpty()); |
+ v8::MaybeLocal<v8::Value> maybe_value = |
+ v8_compile("other.unreachable")->Run(context1); |
+ CHECK(maybe_value.IsEmpty()); |
context1->Exit(); |
context0->Exit(); |
@@ -9020,10 +10085,11 @@ TEST(AccessControlIC) { |
// Create an object that requires access-check functions to be |
// called for cross-domain access. |
- v8::Handle<v8::ObjectTemplate> object_template = |
+ v8::Local<v8::ObjectTemplate> object_template = |
v8::ObjectTemplate::New(isolate); |
object_template->SetAccessCheckCallback(AccessCounter); |
- Local<v8::Object> object = object_template->NewInstance(); |
+ Local<v8::Object> object = |
+ object_template->NewInstance(context0).ToLocalChecked(); |
v8::HandleScope scope1(isolate); |
@@ -9032,10 +10098,10 @@ TEST(AccessControlIC) { |
context1->Enter(); |
// Make easy access to the object from the other environment. |
- v8::Handle<v8::Object> global1 = context1->Global(); |
- global1->Set(v8_str("obj"), object); |
+ v8::Local<v8::Object> global1 = context1->Global(); |
+ CHECK(global1->Set(context1, v8_str("obj"), object).FromJust()); |
- v8::Handle<Value> value; |
+ v8::Local<Value> value; |
// Check that the named access-control function is called every time. |
CompileRun("function testProp(obj) {" |
@@ -9045,7 +10111,7 @@ TEST(AccessControlIC) { |
"}"); |
value = CompileRun("testProp(obj)"); |
CHECK(value->IsNumber()); |
- CHECK_EQ(1, value->Int32Value()); |
+ CHECK_EQ(1, value->Int32Value(context1).FromJust()); |
CHECK_EQ(21, access_count); |
// Check that the named access-control function is called every time. |
@@ -9059,14 +10125,14 @@ TEST(AccessControlIC) { |
// in that case. |
value = CompileRun("testKeyed(obj)"); |
CHECK(value->IsNumber()); |
- CHECK_EQ(1, value->Int32Value()); |
+ CHECK_EQ(1, value->Int32Value(context1).FromJust()); |
CHECK_EQ(42, access_count); |
// Force the inline caches into generic state and try again. |
CompileRun("testKeyed({ a: 0 })"); |
CompileRun("testKeyed({ b: 0 })"); |
value = CompileRun("testKeyed(obj)"); |
CHECK(value->IsNumber()); |
- CHECK_EQ(1, value->Int32Value()); |
+ CHECK_EQ(1, value->Int32Value(context1).FromJust()); |
CHECK_EQ(63, access_count); |
// Check that the indexed access-control function is called every time. |
@@ -9079,14 +10145,14 @@ TEST(AccessControlIC) { |
"}"); |
value = CompileRun("testIndexed(obj)"); |
CHECK(value->IsNumber()); |
- CHECK_EQ(1, value->Int32Value()); |
+ CHECK_EQ(1, value->Int32Value(context1).FromJust()); |
CHECK_EQ(21, access_count); |
// Force the inline caches into generic state. |
CompileRun("testIndexed(new Array(1))"); |
// Test that the indexed access check is called. |
value = CompileRun("testIndexed(obj)"); |
CHECK(value->IsNumber()); |
- CHECK_EQ(1, value->Int32Value()); |
+ CHECK_EQ(1, value->Int32Value(context1).FromJust()); |
CHECK_EQ(42, access_count); |
access_count = 0; |
@@ -9102,13 +10168,13 @@ TEST(AccessControlIC) { |
// Force obj into slow case. |
value = CompileRun("delete obj.prop"); |
- CHECK(value->BooleanValue()); |
+ CHECK(value->BooleanValue(context1).FromJust()); |
// Force inline caches into dictionary probing mode. |
CompileRun("var o = { x: 0 }; delete o.x; testProp(o);"); |
// Test that the named access check is called. |
value = CompileRun("testProp(obj);"); |
CHECK(value->IsNumber()); |
- CHECK_EQ(1, value->Int32Value()); |
+ CHECK_EQ(1, value->Int32Value(context1).FromJust()); |
CHECK_EQ(33, access_count); |
// Force the call inline cache into dictionary probing mode. |
@@ -9145,14 +10211,17 @@ THREADED_TEST(InstanceProperties) { |
instance->Set(v8_str("f"), |
v8::FunctionTemplate::New(isolate, InstanceFunctionCallback)); |
- Local<Value> o = t->GetFunction()->NewInstance(); |
+ Local<Value> o = t->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
- context->Global()->Set(v8_str("i"), o); |
+ CHECK(context->Global()->Set(context.local(), v8_str("i"), o).FromJust()); |
Local<Value> value = CompileRun("i.x"); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context.local()).FromJust()); |
value = CompileRun("i.f()"); |
- CHECK_EQ(12, value->Int32Value()); |
+ CHECK_EQ(12, value->Int32Value(context.local()).FromJust()); |
} |
@@ -9200,22 +10269,22 @@ THREADED_TEST(GlobalObjectInstanceProperties) { |
global_object = env->Global(); |
Local<Value> value = CompileRun("x"); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(env.local()).FromJust()); |
value = CompileRun("f()"); |
- CHECK_EQ(12, value->Int32Value()); |
+ CHECK_EQ(12, value->Int32Value(env.local()).FromJust()); |
value = CompileRun(script); |
- CHECK_EQ(1, value->Int32Value()); |
+ CHECK_EQ(1, value->Int32Value(env.local()).FromJust()); |
} |
{ |
// Create new environment reusing the global object. |
LocalContext env(NULL, instance_template, global_object); |
Local<Value> value = CompileRun("x"); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(env.local()).FromJust()); |
value = CompileRun("f()"); |
- CHECK_EQ(12, value->Int32Value()); |
+ CHECK_EQ(12, value->Int32Value(env.local()).FromJust()); |
value = CompileRun(script); |
- CHECK_EQ(1, value->Int32Value()); |
+ CHECK_EQ(1, value->Int32Value(env.local()).FromJust()); |
} |
} |
@@ -9255,7 +10324,7 @@ THREADED_TEST(CallKnownGlobalReceiver) { |
{ |
// Create new environment reusing the global object. |
LocalContext env(NULL, instance_template, global_object); |
- env->Global()->Set(v8_str("foo"), foo); |
+ CHECK(env->Global()->Set(env.local(), v8_str("foo"), foo).FromJust()); |
CompileRun("foo()"); |
} |
} |
@@ -9322,25 +10391,30 @@ THREADED_TEST(ShadowObject) { |
instance->SetAccessor(v8_str("y"), ShadowYGetter, ShadowYSetter); |
- Local<Value> o = t->GetFunction()->NewInstance(); |
- context->Global()->Set(v8_str("__proto__"), o); |
+ Local<Value> o = t->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("__proto__"), o) |
+ .FromJust()); |
Local<Value> value = |
CompileRun("this.propertyIsEnumerable(0)"); |
CHECK(value->IsBoolean()); |
- CHECK(!value->BooleanValue()); |
+ CHECK(!value->BooleanValue(context.local()).FromJust()); |
value = CompileRun("x"); |
- CHECK_EQ(12, value->Int32Value()); |
+ CHECK_EQ(12, value->Int32Value(context.local()).FromJust()); |
value = CompileRun("f()"); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context.local()).FromJust()); |
CompileRun("y = 43"); |
CHECK_EQ(1, shadow_y_setter_call_count); |
value = CompileRun("y"); |
CHECK_EQ(1, shadow_y_getter_call_count); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context.local()).FromJust()); |
} |
@@ -9360,32 +10434,78 @@ THREADED_TEST(HiddenPrototype) { |
Local<v8::FunctionTemplate> t3 = v8::FunctionTemplate::New(isolate); |
t3->InstanceTemplate()->Set(v8_str("u"), v8_num(3)); |
- Local<v8::Object> o0 = t0->GetFunction()->NewInstance(); |
- Local<v8::Object> o1 = t1->GetFunction()->NewInstance(); |
- Local<v8::Object> o2 = t2->GetFunction()->NewInstance(); |
- Local<v8::Object> o3 = t3->GetFunction()->NewInstance(); |
+ Local<v8::Object> o0 = t0->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o1 = t1->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o2 = t2->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o3 = t3->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
// Setting the prototype on an object skips hidden prototypes. |
- CHECK_EQ(0, o0->Get(v8_str("x"))->Int32Value()); |
- o0->Set(v8_str("__proto__"), o1); |
- CHECK_EQ(0, o0->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(1, o0->Get(v8_str("y"))->Int32Value()); |
- o0->Set(v8_str("__proto__"), o2); |
- CHECK_EQ(0, o0->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(1, o0->Get(v8_str("y"))->Int32Value()); |
- CHECK_EQ(2, o0->Get(v8_str("z"))->Int32Value()); |
- o0->Set(v8_str("__proto__"), o3); |
- CHECK_EQ(0, o0->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(1, o0->Get(v8_str("y"))->Int32Value()); |
- CHECK_EQ(2, o0->Get(v8_str("z"))->Int32Value()); |
- CHECK_EQ(3, o0->Get(v8_str("u"))->Int32Value()); |
+ CHECK_EQ(0, o0->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(o0->Set(context.local(), v8_str("__proto__"), o1).FromJust()); |
+ CHECK_EQ(0, o0->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(1, o0->Get(context.local(), v8_str("y")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(o0->Set(context.local(), v8_str("__proto__"), o2).FromJust()); |
+ CHECK_EQ(0, o0->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(1, o0->Get(context.local(), v8_str("y")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(2, o0->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(o0->Set(context.local(), v8_str("__proto__"), o3).FromJust()); |
+ CHECK_EQ(0, o0->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(1, o0->Get(context.local(), v8_str("y")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(2, o0->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(3, o0->Get(context.local(), v8_str("u")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
// Getting the prototype of o0 should get the first visible one |
// which is o3. Therefore, z should not be defined on the prototype |
// object. |
- Local<Value> proto = o0->Get(v8_str("__proto__")); |
+ Local<Value> proto = |
+ o0->Get(context.local(), v8_str("__proto__")).ToLocalChecked(); |
CHECK(proto->IsObject()); |
- CHECK(proto.As<v8::Object>()->Get(v8_str("z"))->IsUndefined()); |
+ CHECK(proto.As<v8::Object>() |
+ ->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->IsUndefined()); |
} |
@@ -9400,34 +10520,70 @@ THREADED_TEST(HiddenPrototypeSet) { |
Local<v8::FunctionTemplate> pt = v8::FunctionTemplate::New(isolate); |
ht->InstanceTemplate()->Set(v8_str("x"), v8_num(0)); |
- Local<v8::Object> o = ot->GetFunction()->NewInstance(); |
- Local<v8::Object> h = ht->GetFunction()->NewInstance(); |
- Local<v8::Object> p = pt->GetFunction()->NewInstance(); |
- o->Set(v8_str("__proto__"), h); |
- h->Set(v8_str("__proto__"), p); |
+ Local<v8::Object> o = ot->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> h = ht->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> p = pt->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ CHECK(o->Set(context.local(), v8_str("__proto__"), h).FromJust()); |
+ CHECK(h->Set(context.local(), v8_str("__proto__"), p).FromJust()); |
// Setting a property that exists on the hidden prototype goes there. |
- o->Set(v8_str("x"), v8_num(7)); |
- CHECK_EQ(7, o->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(7, h->Get(v8_str("x"))->Int32Value()); |
- CHECK(p->Get(v8_str("x"))->IsUndefined()); |
+ CHECK(o->Set(context.local(), v8_str("x"), v8_num(7)).FromJust()); |
+ CHECK_EQ(7, o->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(7, h->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(p->Get(context.local(), v8_str("x")).ToLocalChecked()->IsUndefined()); |
// Setting a new property should not be forwarded to the hidden prototype. |
- o->Set(v8_str("y"), v8_num(6)); |
- CHECK_EQ(6, o->Get(v8_str("y"))->Int32Value()); |
- CHECK(h->Get(v8_str("y"))->IsUndefined()); |
- CHECK(p->Get(v8_str("y"))->IsUndefined()); |
+ CHECK(o->Set(context.local(), v8_str("y"), v8_num(6)).FromJust()); |
+ CHECK_EQ(6, o->Get(context.local(), v8_str("y")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(h->Get(context.local(), v8_str("y")).ToLocalChecked()->IsUndefined()); |
+ CHECK(p->Get(context.local(), v8_str("y")).ToLocalChecked()->IsUndefined()); |
// Setting a property that only exists on a prototype of the hidden prototype |
// is treated normally again. |
- p->Set(v8_str("z"), v8_num(8)); |
- CHECK_EQ(8, o->Get(v8_str("z"))->Int32Value()); |
- CHECK_EQ(8, h->Get(v8_str("z"))->Int32Value()); |
- CHECK_EQ(8, p->Get(v8_str("z"))->Int32Value()); |
- o->Set(v8_str("z"), v8_num(9)); |
- CHECK_EQ(9, o->Get(v8_str("z"))->Int32Value()); |
- CHECK_EQ(8, h->Get(v8_str("z"))->Int32Value()); |
- CHECK_EQ(8, p->Get(v8_str("z"))->Int32Value()); |
+ CHECK(p->Set(context.local(), v8_str("z"), v8_num(8)).FromJust()); |
+ CHECK_EQ(8, o->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(8, h->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(8, p->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(o->Set(context.local(), v8_str("z"), v8_num(9)).FromJust()); |
+ CHECK_EQ(9, o->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(8, h->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(8, p->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
@@ -9436,16 +10592,19 @@ THREADED_TEST(HiddenPrototypeIdentityHash) { |
LocalContext context; |
v8::HandleScope handle_scope(context->GetIsolate()); |
- Handle<FunctionTemplate> t = FunctionTemplate::New(context->GetIsolate()); |
+ Local<FunctionTemplate> t = FunctionTemplate::New(context->GetIsolate()); |
t->SetHiddenPrototype(true); |
t->InstanceTemplate()->Set(v8_str("foo"), v8_num(75)); |
- Handle<Object> p = t->GetFunction()->NewInstance(); |
- Handle<Object> o = Object::New(context->GetIsolate()); |
- o->SetPrototype(p); |
+ Local<Object> p = t->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<Object> o = Object::New(context->GetIsolate()); |
+ CHECK(o->SetPrototype(context.local(), p).FromJust()); |
int hash = o->GetIdentityHash(); |
USE(hash); |
- o->Set(v8_str("foo"), v8_num(42)); |
+ CHECK(o->Set(context.local(), v8_str("foo"), v8_num(42)).FromJust()); |
DCHECK_EQ(hash, o->GetIdentityHash()); |
} |
@@ -9466,45 +10625,88 @@ THREADED_TEST(SetPrototype) { |
Local<v8::FunctionTemplate> t3 = v8::FunctionTemplate::New(isolate); |
t3->InstanceTemplate()->Set(v8_str("u"), v8_num(3)); |
- Local<v8::Object> o0 = t0->GetFunction()->NewInstance(); |
- Local<v8::Object> o1 = t1->GetFunction()->NewInstance(); |
- Local<v8::Object> o2 = t2->GetFunction()->NewInstance(); |
- Local<v8::Object> o3 = t3->GetFunction()->NewInstance(); |
+ Local<v8::Object> o0 = t0->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o1 = t1->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o2 = t2->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o3 = t3->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
// Setting the prototype on an object does not skip hidden prototypes. |
- CHECK_EQ(0, o0->Get(v8_str("x"))->Int32Value()); |
- CHECK(o0->SetPrototype(o1)); |
- CHECK_EQ(0, o0->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(1, o0->Get(v8_str("y"))->Int32Value()); |
- CHECK(o1->SetPrototype(o2)); |
- CHECK_EQ(0, o0->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(1, o0->Get(v8_str("y"))->Int32Value()); |
- CHECK_EQ(2, o0->Get(v8_str("z"))->Int32Value()); |
- CHECK(o2->SetPrototype(o3)); |
- CHECK_EQ(0, o0->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(1, o0->Get(v8_str("y"))->Int32Value()); |
- CHECK_EQ(2, o0->Get(v8_str("z"))->Int32Value()); |
- CHECK_EQ(3, o0->Get(v8_str("u"))->Int32Value()); |
+ CHECK_EQ(0, o0->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(o0->SetPrototype(context.local(), o1).FromJust()); |
+ CHECK_EQ(0, o0->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(1, o0->Get(context.local(), v8_str("y")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(o1->SetPrototype(context.local(), o2).FromJust()); |
+ CHECK_EQ(0, o0->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(1, o0->Get(context.local(), v8_str("y")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(2, o0->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK(o2->SetPrototype(context.local(), o3).FromJust()); |
+ CHECK_EQ(0, o0->Get(context.local(), v8_str("x")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(1, o0->Get(context.local(), v8_str("y")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(2, o0->Get(context.local(), v8_str("z")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(3, o0->Get(context.local(), v8_str("u")) |
+ .ToLocalChecked() |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
// Getting the prototype of o0 should get the first visible one |
// which is o3. Therefore, z should not be defined on the prototype |
// object. |
- Local<Value> proto = o0->Get(v8_str("__proto__")); |
+ Local<Value> proto = |
+ o0->Get(context.local(), v8_str("__proto__")).ToLocalChecked(); |
CHECK(proto->IsObject()); |
- CHECK(proto.As<v8::Object>()->Equals(o3)); |
+ CHECK(proto.As<v8::Object>()->Equals(context.local(), o3).FromJust()); |
// However, Object::GetPrototype ignores hidden prototype. |
Local<Value> proto0 = o0->GetPrototype(); |
CHECK(proto0->IsObject()); |
- CHECK(proto0.As<v8::Object>()->Equals(o1)); |
+ CHECK(proto0.As<v8::Object>()->Equals(context.local(), o1).FromJust()); |
Local<Value> proto1 = o1->GetPrototype(); |
CHECK(proto1->IsObject()); |
- CHECK(proto1.As<v8::Object>()->Equals(o2)); |
+ CHECK(proto1.As<v8::Object>()->Equals(context.local(), o2).FromJust()); |
Local<Value> proto2 = o2->GetPrototype(); |
CHECK(proto2->IsObject()); |
- CHECK(proto2.As<v8::Object>()->Equals(o3)); |
+ CHECK(proto2.As<v8::Object>()->Equals(context.local(), o3).FromJust()); |
} |
@@ -9538,19 +10740,31 @@ THREADED_TEST(Regress91517) { |
t2->InstanceTemplate()->Set(v8_str(name_buf.start()), v8_num(2)); |
} |
- Local<v8::Object> o1 = t1->GetFunction()->NewInstance(); |
- Local<v8::Object> o2 = t2->GetFunction()->NewInstance(); |
- Local<v8::Object> o3 = t3->GetFunction()->NewInstance(); |
- Local<v8::Object> o4 = t4->GetFunction()->NewInstance(); |
+ Local<v8::Object> o1 = t1->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o2 = t2->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o3 = t3->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o4 = t4->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
// Create prototype chain of hidden prototypes. |
- CHECK(o4->SetPrototype(o3)); |
- CHECK(o3->SetPrototype(o2)); |
- CHECK(o2->SetPrototype(o1)); |
+ CHECK(o4->SetPrototype(context.local(), o3).FromJust()); |
+ CHECK(o3->SetPrototype(context.local(), o2).FromJust()); |
+ CHECK(o2->SetPrototype(context.local(), o1).FromJust()); |
// Call the runtime version of GetOwnPropertyNames() on the natively |
// created object through JavaScript. |
- context->Global()->Set(v8_str("obj"), o4); |
+ CHECK(context->Global()->Set(context.local(), v8_str("obj"), o4).FromJust()); |
// PROPERTY_ATTRIBUTES_NONE = 0 |
CompileRun("var names = %GetOwnPropertyNames(obj, 0);"); |
@@ -9585,7 +10799,10 @@ THREADED_TEST(Regress269562) { |
i1->Set(v8_str("n1"), v8_num(1)); |
i1->Set(v8_str("n2"), v8_num(2)); |
- Local<v8::Object> o1 = t1->GetFunction()->NewInstance(); |
+ Local<v8::Object> o1 = t1->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
Local<v8::FunctionTemplate> t2 = |
v8::FunctionTemplate::New(context->GetIsolate()); |
t2->SetHiddenPrototype(true); |
@@ -9594,12 +10811,15 @@ THREADED_TEST(Regress269562) { |
t2->Inherit(t1); |
t2->InstanceTemplate()->Set(v8_str("mine"), v8_num(4)); |
- Local<v8::Object> o2 = t2->GetFunction()->NewInstance(); |
- CHECK(o2->SetPrototype(o1)); |
+ Local<v8::Object> o2 = t2->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ CHECK(o2->SetPrototype(context.local(), o1).FromJust()); |
v8::Local<v8::Symbol> sym = |
v8::Symbol::New(context->GetIsolate(), v8_str("s1")); |
- o1->Set(sym, v8_num(3)); |
+ CHECK(o1->Set(context.local(), sym, v8_num(3)).FromJust()); |
o1->SetPrivate(context.local(), |
v8::Private::New(context->GetIsolate(), v8_str("h1")), |
v8::Integer::New(context->GetIsolate(), 2013)) |
@@ -9607,8 +10827,8 @@ THREADED_TEST(Regress269562) { |
// Call the runtime version of GetOwnPropertyNames() on |
// the natively created object through JavaScript. |
- context->Global()->Set(v8_str("obj"), o2); |
- context->Global()->Set(v8_str("sym"), sym); |
+ CHECK(context->Global()->Set(context.local(), v8_str("obj"), o2).FromJust()); |
+ CHECK(context->Global()->Set(context.local(), v8_str("sym"), sym).FromJust()); |
// PROPERTY_ATTRIBUTES_NONE = 0 |
CompileRun("var names = %GetOwnPropertyNames(obj, 0);"); |
@@ -9631,27 +10851,44 @@ THREADED_TEST(FunctionReadOnlyPrototype) { |
Local<v8::FunctionTemplate> t1 = v8::FunctionTemplate::New(isolate); |
t1->PrototypeTemplate()->Set(v8_str("x"), v8::Integer::New(isolate, 42)); |
t1->ReadOnlyPrototype(); |
- context->Global()->Set(v8_str("func1"), t1->GetFunction()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("func1"), |
+ t1->GetFunction(context.local()).ToLocalChecked()) |
+ .FromJust()); |
// Configured value of ReadOnly flag. |
- CHECK(CompileRun( |
- "(function() {" |
- " descriptor = Object.getOwnPropertyDescriptor(func1, 'prototype');" |
- " return (descriptor['writable'] == false);" |
- "})()")->BooleanValue()); |
- CHECK_EQ(42, CompileRun("func1.prototype.x")->Int32Value()); |
- CHECK_EQ(42, |
- CompileRun("func1.prototype = {}; func1.prototype.x")->Int32Value()); |
+ CHECK( |
+ CompileRun( |
+ "(function() {" |
+ " descriptor = Object.getOwnPropertyDescriptor(func1, 'prototype');" |
+ " return (descriptor['writable'] == false);" |
+ "})()") |
+ ->BooleanValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ( |
+ 42, |
+ CompileRun("func1.prototype.x")->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(42, CompileRun("func1.prototype = {}; func1.prototype.x") |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
Local<v8::FunctionTemplate> t2 = v8::FunctionTemplate::New(isolate); |
t2->PrototypeTemplate()->Set(v8_str("x"), v8::Integer::New(isolate, 42)); |
- context->Global()->Set(v8_str("func2"), t2->GetFunction()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("func2"), |
+ t2->GetFunction(context.local()).ToLocalChecked()) |
+ .FromJust()); |
// Default value of ReadOnly flag. |
- CHECK(CompileRun( |
- "(function() {" |
- " descriptor = Object.getOwnPropertyDescriptor(func2, 'prototype');" |
- " return (descriptor['writable'] == true);" |
- "})()")->BooleanValue()); |
- CHECK_EQ(42, CompileRun("func2.prototype.x")->Int32Value()); |
+ CHECK( |
+ CompileRun( |
+ "(function() {" |
+ " descriptor = Object.getOwnPropertyDescriptor(func2, 'prototype');" |
+ " return (descriptor['writable'] == true);" |
+ "})()") |
+ ->BooleanValue(context.local()) |
+ .FromJust()); |
+ CHECK_EQ( |
+ 42, |
+ CompileRun("func2.prototype.x")->Int32Value(context.local()).FromJust()); |
} |
@@ -9662,18 +10899,26 @@ THREADED_TEST(SetPrototypeThrows) { |
Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate); |
- Local<v8::Object> o0 = t->GetFunction()->NewInstance(); |
- Local<v8::Object> o1 = t->GetFunction()->NewInstance(); |
+ Local<v8::Object> o0 = t->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ Local<v8::Object> o1 = t->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
- CHECK(o0->SetPrototype(o1)); |
+ CHECK(o0->SetPrototype(context.local(), o1).FromJust()); |
// If setting the prototype leads to the cycle, SetPrototype should |
// return false and keep VM in sane state. |
v8::TryCatch try_catch(isolate); |
- CHECK(!o1->SetPrototype(o0)); |
+ CHECK(o1->SetPrototype(context.local(), o0).IsNothing()); |
CHECK(!try_catch.HasCaught()); |
DCHECK(!CcTest::i_isolate()->has_pending_exception()); |
- CHECK_EQ(42, CompileRun("function f() { return 42; }; f()")->Int32Value()); |
+ CHECK_EQ(42, CompileRun("function f() { return 42; }; f()") |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
@@ -9684,16 +10929,18 @@ THREADED_TEST(FunctionRemovePrototype) { |
Local<v8::FunctionTemplate> t1 = v8::FunctionTemplate::New(isolate); |
t1->RemovePrototype(); |
- Local<v8::Function> fun = t1->GetFunction(); |
- context->Global()->Set(v8_str("fun"), fun); |
- CHECK(!CompileRun("'prototype' in fun")->BooleanValue()); |
+ Local<v8::Function> fun = t1->GetFunction(context.local()).ToLocalChecked(); |
+ CHECK(context->Global()->Set(context.local(), v8_str("fun"), fun).FromJust()); |
+ CHECK(!CompileRun("'prototype' in fun") |
+ ->BooleanValue(context.local()) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
CompileRun("new fun()"); |
CHECK(try_catch.HasCaught()); |
try_catch.Reset(); |
- fun->NewInstance(); |
+ CHECK(fun->NewInstance(context.local()).IsEmpty()); |
CHECK(try_catch.HasCaught()); |
} |
@@ -9708,17 +10955,21 @@ THREADED_TEST(GetterSetterExceptions) { |
"var x = { };" |
"x.__defineSetter__('set', Throw);" |
"x.__defineGetter__('get', Throw);"); |
- Local<v8::Object> x = |
- Local<v8::Object>::Cast(context->Global()->Get(v8_str("x"))); |
+ Local<v8::Object> x = Local<v8::Object>::Cast( |
+ context->Global()->Get(context.local(), v8_str("x")).ToLocalChecked()); |
v8::TryCatch try_catch(isolate); |
- x->Set(v8_str("set"), v8::Integer::New(isolate, 8)); |
- x->Get(v8_str("get")); |
- x->Set(v8_str("set"), v8::Integer::New(isolate, 8)); |
- x->Get(v8_str("get")); |
- x->Set(v8_str("set"), v8::Integer::New(isolate, 8)); |
- x->Get(v8_str("get")); |
- x->Set(v8_str("set"), v8::Integer::New(isolate, 8)); |
- x->Get(v8_str("get")); |
+ CHECK(x->Set(context.local(), v8_str("set"), v8::Integer::New(isolate, 8)) |
+ .IsNothing()); |
+ CHECK(x->Get(context.local(), v8_str("get")).IsEmpty()); |
+ CHECK(x->Set(context.local(), v8_str("set"), v8::Integer::New(isolate, 8)) |
+ .IsNothing()); |
+ CHECK(x->Get(context.local(), v8_str("get")).IsEmpty()); |
+ CHECK(x->Set(context.local(), v8_str("set"), v8::Integer::New(isolate, 8)) |
+ .IsNothing()); |
+ CHECK(x->Get(context.local(), v8_str("get")).IsEmpty()); |
+ CHECK(x->Set(context.local(), v8_str("set"), v8::Integer::New(isolate, 8)) |
+ .IsNothing()); |
+ CHECK(x->Get(context.local(), v8_str("get")).IsEmpty()); |
} |
@@ -9728,13 +10979,14 @@ THREADED_TEST(Constructor) { |
v8::HandleScope handle_scope(isolate); |
Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(isolate); |
templ->SetClassName(v8_str("Fun")); |
- Local<Function> cons = templ->GetFunction(); |
- context->Global()->Set(v8_str("Fun"), cons); |
- Local<v8::Object> inst = cons->NewInstance(); |
+ Local<Function> cons = templ->GetFunction(context.local()).ToLocalChecked(); |
+ CHECK( |
+ context->Global()->Set(context.local(), v8_str("Fun"), cons).FromJust()); |
+ Local<v8::Object> inst = cons->NewInstance(context.local()).ToLocalChecked(); |
i::Handle<i::JSReceiver> obj(v8::Utils::OpenHandle(*inst)); |
CHECK(obj->IsJSObject()); |
Local<Value> value = CompileRun("(new Fun()).constructor === Fun"); |
- CHECK(value->BooleanValue()); |
+ CHECK(value->BooleanValue(context.local()).FromJust()); |
} |
@@ -9743,18 +10995,19 @@ static void ConstructorCallback( |
ApiTestFuzzer::Fuzz(); |
Local<Object> This; |
+ v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); |
if (args.IsConstructCall()) { |
Local<Object> Holder = args.Holder(); |
This = Object::New(args.GetIsolate()); |
Local<Value> proto = Holder->GetPrototype(); |
if (proto->IsObject()) { |
- This->SetPrototype(proto); |
+ This->SetPrototype(context, proto).FromJust(); |
} |
} else { |
This = args.This(); |
} |
- This->Set(v8_str("a"), args[0]); |
+ This->Set(context, v8_str("a"), args[0]).FromJust(); |
args.GetReturnValue().Set(This); |
} |
@@ -9774,8 +11027,11 @@ THREADED_TEST(ConstructorForObject) { |
{ |
Local<ObjectTemplate> instance_template = ObjectTemplate::New(isolate); |
instance_template->SetCallAsFunctionHandler(ConstructorCallback); |
- Local<Object> instance = instance_template->NewInstance(); |
- context->Global()->Set(v8_str("obj"), instance); |
+ Local<Object> instance = |
+ instance_template->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), instance) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
Local<Value> value; |
CHECK(!try_catch.HasCaught()); |
@@ -9784,65 +11040,72 @@ THREADED_TEST(ConstructorForObject) { |
value = CompileRun("(function() { var o = new obj(28); return o.a; })()"); |
CHECK(!try_catch.HasCaught()); |
CHECK(value->IsInt32()); |
- CHECK_EQ(28, value->Int32Value()); |
+ CHECK_EQ(28, value->Int32Value(context.local()).FromJust()); |
Local<Value> args1[] = {v8_num(28)}; |
- Local<Value> value_obj1 = instance->CallAsConstructor(1, args1); |
+ Local<Value> value_obj1 = |
+ instance->CallAsConstructor(context.local(), 1, args1).ToLocalChecked(); |
CHECK(value_obj1->IsObject()); |
Local<Object> object1 = Local<Object>::Cast(value_obj1); |
- value = object1->Get(v8_str("a")); |
+ value = object1->Get(context.local(), v8_str("a")).ToLocalChecked(); |
CHECK(value->IsInt32()); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(28, value->Int32Value()); |
+ CHECK_EQ(28, value->Int32Value(context.local()).FromJust()); |
// Call the Object's constructor with a String. |
value = |
CompileRun("(function() { var o = new obj('tipli'); return o.a; })()"); |
CHECK(!try_catch.HasCaught()); |
CHECK(value->IsString()); |
- String::Utf8Value string_value1(value->ToString(isolate)); |
+ String::Utf8Value string_value1( |
+ value->ToString(context.local()).ToLocalChecked()); |
CHECK_EQ(0, strcmp("tipli", *string_value1)); |
Local<Value> args2[] = {v8_str("tipli")}; |
- Local<Value> value_obj2 = instance->CallAsConstructor(1, args2); |
+ Local<Value> value_obj2 = |
+ instance->CallAsConstructor(context.local(), 1, args2).ToLocalChecked(); |
CHECK(value_obj2->IsObject()); |
Local<Object> object2 = Local<Object>::Cast(value_obj2); |
- value = object2->Get(v8_str("a")); |
+ value = object2->Get(context.local(), v8_str("a")).ToLocalChecked(); |
CHECK(!try_catch.HasCaught()); |
CHECK(value->IsString()); |
- String::Utf8Value string_value2(value->ToString(isolate)); |
+ String::Utf8Value string_value2( |
+ value->ToString(context.local()).ToLocalChecked()); |
CHECK_EQ(0, strcmp("tipli", *string_value2)); |
// Call the Object's constructor with a Boolean. |
value = CompileRun("(function() { var o = new obj(true); return o.a; })()"); |
CHECK(!try_catch.HasCaught()); |
CHECK(value->IsBoolean()); |
- CHECK_EQ(true, value->BooleanValue()); |
+ CHECK_EQ(true, value->BooleanValue(context.local()).FromJust()); |
- Handle<Value> args3[] = {v8::True(isolate)}; |
- Local<Value> value_obj3 = instance->CallAsConstructor(1, args3); |
+ Local<Value> args3[] = {v8::True(isolate)}; |
+ Local<Value> value_obj3 = |
+ instance->CallAsConstructor(context.local(), 1, args3).ToLocalChecked(); |
CHECK(value_obj3->IsObject()); |
Local<Object> object3 = Local<Object>::Cast(value_obj3); |
- value = object3->Get(v8_str("a")); |
+ value = object3->Get(context.local(), v8_str("a")).ToLocalChecked(); |
CHECK(!try_catch.HasCaught()); |
CHECK(value->IsBoolean()); |
- CHECK_EQ(true, value->BooleanValue()); |
+ CHECK_EQ(true, value->BooleanValue(context.local()).FromJust()); |
// Call the Object's constructor with undefined. |
- Handle<Value> args4[] = {v8::Undefined(isolate)}; |
- Local<Value> value_obj4 = instance->CallAsConstructor(1, args4); |
+ Local<Value> args4[] = {v8::Undefined(isolate)}; |
+ Local<Value> value_obj4 = |
+ instance->CallAsConstructor(context.local(), 1, args4).ToLocalChecked(); |
CHECK(value_obj4->IsObject()); |
Local<Object> object4 = Local<Object>::Cast(value_obj4); |
- value = object4->Get(v8_str("a")); |
+ value = object4->Get(context.local(), v8_str("a")).ToLocalChecked(); |
CHECK(!try_catch.HasCaught()); |
CHECK(value->IsUndefined()); |
// Call the Object's constructor with null. |
- Handle<Value> args5[] = {v8::Null(isolate)}; |
- Local<Value> value_obj5 = instance->CallAsConstructor(1, args5); |
+ Local<Value> args5[] = {v8::Null(isolate)}; |
+ Local<Value> value_obj5 = |
+ instance->CallAsConstructor(context.local(), 1, args5).ToLocalChecked(); |
CHECK(value_obj5->IsObject()); |
Local<Object> object5 = Local<Object>::Cast(value_obj5); |
- value = object5->Get(v8_str("a")); |
+ value = object5->Get(context.local(), v8_str("a")).ToLocalChecked(); |
CHECK(!try_catch.HasCaught()); |
CHECK(value->IsNull()); |
} |
@@ -9850,8 +11113,11 @@ THREADED_TEST(ConstructorForObject) { |
// Check exception handling when there is no constructor set for the Object. |
{ |
Local<ObjectTemplate> instance_template = ObjectTemplate::New(isolate); |
- Local<Object> instance = instance_template->NewInstance(); |
- context->Global()->Set(v8_str("obj2"), instance); |
+ Local<Object> instance = |
+ instance_template->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj2"), instance) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
Local<Value> value; |
CHECK(!try_catch.HasCaught()); |
@@ -9864,7 +11130,7 @@ THREADED_TEST(ConstructorForObject) { |
try_catch.Reset(); |
Local<Value> args[] = {v8_num(29)}; |
- value = instance->CallAsConstructor(1, args); |
+ CHECK(instance->CallAsConstructor(context.local(), 1, args).IsEmpty()); |
CHECK(try_catch.HasCaught()); |
String::Utf8Value exception_value2(try_catch.Exception()); |
CHECK_EQ( |
@@ -9876,8 +11142,11 @@ THREADED_TEST(ConstructorForObject) { |
{ |
Local<ObjectTemplate> instance_template = ObjectTemplate::New(isolate); |
instance_template->SetCallAsFunctionHandler(ThrowValue); |
- Local<Object> instance = instance_template->NewInstance(); |
- context->Global()->Set(v8_str("obj3"), instance); |
+ Local<Object> instance = |
+ instance_template->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj3"), instance) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
Local<Value> value; |
CHECK(!try_catch.HasCaught()); |
@@ -9889,7 +11158,7 @@ THREADED_TEST(ConstructorForObject) { |
try_catch.Reset(); |
Local<Value> args[] = {v8_num(23)}; |
- value = instance->CallAsConstructor(1, args); |
+ CHECK(instance->CallAsConstructor(context.local(), 1, args).IsEmpty()); |
CHECK(try_catch.HasCaught()); |
String::Utf8Value exception_value2(try_catch.Exception()); |
CHECK_EQ(0, strcmp("23", *exception_value2)); |
@@ -9900,9 +11169,12 @@ THREADED_TEST(ConstructorForObject) { |
{ |
Local<FunctionTemplate> function_template = |
FunctionTemplate::New(isolate, FakeConstructorCallback); |
- Local<Function> function = function_template->GetFunction(); |
+ Local<Function> function = |
+ function_template->GetFunction(context.local()).ToLocalChecked(); |
Local<Object> instance1 = function; |
- context->Global()->Set(v8_str("obj4"), instance1); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj4"), instance1) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
Local<Value> value; |
CHECK(!try_catch.HasCaught()); |
@@ -9915,14 +11187,18 @@ THREADED_TEST(ConstructorForObject) { |
CHECK(value->IsObject()); |
Local<Value> args1[] = {v8_num(28)}; |
- value = instance1->CallAsConstructor(1, args1); |
+ value = instance1->CallAsConstructor(context.local(), 1, args1) |
+ .ToLocalChecked(); |
CHECK(!try_catch.HasCaught()); |
CHECK(value->IsObject()); |
Local<ObjectTemplate> instance_template = ObjectTemplate::New(isolate); |
instance_template->SetCallAsFunctionHandler(FakeConstructorCallback); |
- Local<Object> instance2 = instance_template->NewInstance(); |
- context->Global()->Set(v8_str("obj5"), instance2); |
+ Local<Object> instance2 = |
+ instance_template->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj5"), instance2) |
+ .FromJust()); |
CHECK(!try_catch.HasCaught()); |
CHECK(instance2->IsObject()); |
@@ -9933,7 +11209,8 @@ THREADED_TEST(ConstructorForObject) { |
CHECK(!value->IsObject()); |
Local<Value> args2[] = {v8_num(28)}; |
- value = instance2->CallAsConstructor(1, args2); |
+ value = instance2->CallAsConstructor(context.local(), 1, args2) |
+ .ToLocalChecked(); |
CHECK(!try_catch.HasCaught()); |
CHECK(!value->IsObject()); |
} |
@@ -9946,8 +11223,9 @@ THREADED_TEST(FunctionDescriptorException) { |
v8::HandleScope handle_scope(isolate); |
Local<v8::FunctionTemplate> templ = v8::FunctionTemplate::New(isolate); |
templ->SetClassName(v8_str("Fun")); |
- Local<Function> cons = templ->GetFunction(); |
- context->Global()->Set(v8_str("Fun"), cons); |
+ Local<Function> cons = templ->GetFunction(context.local()).ToLocalChecked(); |
+ CHECK( |
+ context->Global()->Set(context.local(), v8_str("Fun"), cons).FromJust()); |
Local<Value> value = CompileRun( |
"function test() {" |
" try {" |
@@ -9962,7 +11240,7 @@ THREADED_TEST(FunctionDescriptorException) { |
" return 4;" |
"}" |
"test();"); |
- CHECK_EQ(0, value->Int32Value()); |
+ CHECK_EQ(0, value->Int32Value(context.local()).FromJust()); |
} |
@@ -9982,10 +11260,22 @@ THREADED_TEST(EvalAliasedDynamic) { |
"var x = new Object();" |
"x.eval = function(x) { return 1; };" |
"result3 = f(x);"); |
- script->Run(); |
- CHECK_EQ(2, current->Global()->Get(v8_str("result1"))->Int32Value()); |
- CHECK_EQ(0, current->Global()->Get(v8_str("result2"))->Int32Value()); |
- CHECK_EQ(1, current->Global()->Get(v8_str("result3"))->Int32Value()); |
+ script->Run(current.local()).ToLocalChecked(); |
+ CHECK_EQ(2, current->Global() |
+ ->Get(current.local(), v8_str("result1")) |
+ .ToLocalChecked() |
+ ->Int32Value(current.local()) |
+ .FromJust()); |
+ CHECK_EQ(0, current->Global() |
+ ->Get(current.local(), v8_str("result2")) |
+ .ToLocalChecked() |
+ ->Int32Value(current.local()) |
+ .FromJust()); |
+ CHECK_EQ(1, current->Global() |
+ ->Get(current.local(), v8_str("result3")) |
+ .ToLocalChecked() |
+ ->Int32Value(current.local()) |
+ .FromJust()); |
v8::TryCatch try_catch(current->GetIsolate()); |
script = v8_compile( |
@@ -9994,9 +11284,13 @@ THREADED_TEST(EvalAliasedDynamic) { |
" with (x) { return eval('bar'); }" |
"}" |
"result4 = f(this)"); |
- script->Run(); |
+ script->Run(current.local()).ToLocalChecked(); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(2, current->Global()->Get(v8_str("result4"))->Int32Value()); |
+ CHECK_EQ(2, current->Global() |
+ ->Get(current.local(), v8_str("result4")) |
+ .ToLocalChecked() |
+ ->Int32Value(current.local()) |
+ .FromJust()); |
try_catch.Reset(); |
} |
@@ -10012,20 +11306,24 @@ THREADED_TEST(CrossEval) { |
current->SetSecurityToken(token); |
// Set up reference from current to other. |
- current->Global()->Set(v8_str("other"), other->Global()); |
+ CHECK(current->Global() |
+ ->Set(current.local(), v8_str("other"), other->Global()) |
+ .FromJust()); |
// Check that new variables are introduced in other context. |
Local<Script> script = v8_compile("other.eval('var foo = 1234')"); |
- script->Run(); |
+ script->Run(current.local()).ToLocalChecked(); |
Local<Value> foo = other->Global()->Get(v8_str("foo")); |
- CHECK_EQ(1234, foo->Int32Value()); |
+ CHECK_EQ(1234, foo->Int32Value(other.local()).FromJust()); |
CHECK(!current->Global()->Has(v8_str("foo"))); |
// 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()); |
+ CHECK_EQ( |
+ 1234, |
+ other->Global()->Get(v8_str("na"))->Int32Value(other.local()).FromJust()); |
CHECK(!current->Global()->Has(v8_str("na"))); |
// Check that global variables in current context are not visible in other |
@@ -10049,14 +11347,18 @@ THREADED_TEST(CrossEval) { |
// Check that global variables in the other environment are visible |
// when evaluting code. |
- other->Global()->Set(v8_str("bis"), v8_num(1234)); |
+ CHECK(other->Global() |
+ ->Set(other.local(), v8_str("bis"), v8_num(1234)) |
+ .FromJust()); |
script = v8_compile("other.eval('bis')"); |
- CHECK_EQ(1234, script->Run()->Int32Value()); |
+ CHECK_EQ(1234, script->Run()->Int32Value(other.local()).FromJust()); |
CHECK(!try_catch.HasCaught()); |
// Check that the 'this' pointer points to the global object evaluating |
// code. |
- other->Global()->Set(v8_str("t"), other->Global()); |
+ CHECK(other->Global() |
+ ->Set(other.local(), v8_str("t"), other->Global()) |
+ .FromJust()); |
script = v8_compile("other.eval('this == t')"); |
result = script->Run(); |
CHECK(result->IsTrue()); |
@@ -10088,7 +11390,7 @@ THREADED_TEST(EvalInDetachedGlobal) { |
// Set up function in context0 that uses eval from context0. |
context0->Enter(); |
- v8::Handle<v8::Value> fun = CompileRun( |
+ v8::Local<v8::Value> fun = CompileRun( |
"var x = 42;" |
"(function() {" |
" var e = eval;" |
@@ -10100,13 +11402,13 @@ THREADED_TEST(EvalInDetachedGlobal) { |
// detaching the global. Before detaching, the call succeeds and |
// after detaching and exception is thrown. |
context1->Enter(); |
- context1->Global()->Set(v8_str("fun"), fun); |
- v8::Handle<v8::Value> x_value = CompileRun("fun('x')"); |
- CHECK_EQ(42, x_value->Int32Value()); |
+ CHECK(context1->Global()->Set(context1, v8_str("fun"), fun).FromJust()); |
+ v8::Local<v8::Value> x_value = CompileRun("fun('x')"); |
+ CHECK_EQ(42, x_value->Int32Value(context1).FromJust()); |
context0->DetachGlobal(); |
v8::TryCatch catcher(isolate); |
x_value = CompileRun("fun('x')"); |
- CHECK_EQ(42, x_value->Int32Value()); |
+ CHECK_EQ(42, x_value->Int32Value(context1).FromJust()); |
context1->Exit(); |
} |
@@ -10121,7 +11423,9 @@ THREADED_TEST(CrossLazyLoad) { |
current->SetSecurityToken(token); |
// Set up reference from current to other. |
- current->Global()->Set(v8_str("other"), other->Global()); |
+ CHECK(current->Global() |
+ ->Set(current.local(), v8_str("other"), other->Global()) |
+ .FromJust()); |
// Trigger lazy loading in other context. |
Local<Script> script = v8_compile("other.eval('new Date(42)')"); |
@@ -10134,7 +11438,10 @@ static void call_as_function(const v8::FunctionCallbackInfo<v8::Value>& args) { |
ApiTestFuzzer::Fuzz(); |
if (args.IsConstructCall()) { |
if (args[0]->IsInt32()) { |
- args.GetReturnValue().Set(v8_num(-args[0]->Int32Value())); |
+ args.GetReturnValue().Set( |
+ v8_num(-args[0] |
+ ->Int32Value(args.GetIsolate()->GetCurrentContext()) |
+ .FromJust())); |
return; |
} |
} |
@@ -10160,63 +11467,73 @@ THREADED_TEST(CallAsFunction) { |
Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate); |
Local<ObjectTemplate> instance_template = t->InstanceTemplate(); |
instance_template->SetCallAsFunctionHandler(call_as_function); |
- Local<v8::Object> instance = t->GetFunction()->NewInstance(); |
- context->Global()->Set(v8_str("obj"), instance); |
+ Local<v8::Object> instance = t->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), instance) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
Local<Value> value; |
CHECK(!try_catch.HasCaught()); |
value = CompileRun("obj(42)"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context.local()).FromJust()); |
value = CompileRun("(function(o){return o(49)})(obj)"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(49, value->Int32Value()); |
+ CHECK_EQ(49, value->Int32Value(context.local()).FromJust()); |
// test special case of call as function |
value = CompileRun("[obj]['0'](45)"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(45, value->Int32Value()); |
+ CHECK_EQ(45, value->Int32Value(context.local()).FromJust()); |
value = CompileRun( |
"obj.call = Function.prototype.call;" |
"obj.call(null, 87)"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(87, value->Int32Value()); |
+ CHECK_EQ(87, value->Int32Value(context.local()).FromJust()); |
// Regression tests for bug #1116356: Calling call through call/apply |
// must work for non-function receivers. |
const char* apply_99 = "Function.prototype.call.apply(obj, [this, 99])"; |
value = CompileRun(apply_99); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(99, value->Int32Value()); |
+ CHECK_EQ(99, value->Int32Value(context.local()).FromJust()); |
const char* call_17 = "Function.prototype.call.call(obj, this, 17)"; |
value = CompileRun(call_17); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(17, value->Int32Value()); |
+ CHECK_EQ(17, value->Int32Value(context.local()).FromJust()); |
// Check that the call-as-function handler can be called through |
// new. |
value = CompileRun("new obj(43)"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(-43, value->Int32Value()); |
+ CHECK_EQ(-43, value->Int32Value(context.local()).FromJust()); |
// Check that the call-as-function handler can be called through |
// the API. |
- v8::Handle<Value> args[] = {v8_num(28)}; |
+ v8::Local<Value> args[] = {v8_num(28)}; |
value = instance->CallAsFunction(instance, 1, args); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(28, value->Int32Value()); |
+ CHECK_EQ(28, value->Int32Value(context.local()).FromJust()); |
} |
{ |
Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate); |
Local<ObjectTemplate> instance_template(t->InstanceTemplate()); |
USE(instance_template); |
- Local<v8::Object> instance = t->GetFunction()->NewInstance(); |
- context->Global()->Set(v8_str("obj2"), instance); |
+ Local<v8::Object> instance = t->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj2"), instance) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
Local<Value> value; |
CHECK(!try_catch.HasCaught()); |
@@ -10232,7 +11549,7 @@ THREADED_TEST(CallAsFunction) { |
// Call an object without call-as-function handler through the API |
value = CompileRun("obj2(28)"); |
- v8::Handle<Value> args[] = {v8_num(28)}; |
+ v8::Local<Value> args[] = {v8_num(28)}; |
value = instance->CallAsFunction(instance, 1, args); |
CHECK(value.IsEmpty()); |
CHECK(try_catch.HasCaught()); |
@@ -10246,8 +11563,13 @@ THREADED_TEST(CallAsFunction) { |
Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate); |
Local<ObjectTemplate> instance_template = t->InstanceTemplate(); |
instance_template->SetCallAsFunctionHandler(ThrowValue); |
- Local<v8::Object> instance = t->GetFunction()->NewInstance(); |
- context->Global()->Set(v8_str("obj3"), instance); |
+ Local<v8::Object> instance = t->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj3"), instance) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
Local<Value> value; |
CHECK(!try_catch.HasCaught()); |
@@ -10259,7 +11581,7 @@ THREADED_TEST(CallAsFunction) { |
CHECK_EQ(0, strcmp("22", *exception_value1)); |
try_catch.Reset(); |
- v8::Handle<Value> args[] = {v8_num(23)}; |
+ v8::Local<Value> args[] = {v8_num(23)}; |
value = instance->CallAsFunction(instance, 1, args); |
CHECK(try_catch.HasCaught()); |
String::Utf8Value exception_value2(try_catch.Exception()); |
@@ -10271,7 +11593,10 @@ THREADED_TEST(CallAsFunction) { |
Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate); |
Local<ObjectTemplate> instance_template = t->InstanceTemplate(); |
instance_template->SetCallAsFunctionHandler(ReturnThis); |
- Local<v8::Object> instance = t->GetFunction()->NewInstance(); |
+ Local<v8::Object> instance = t->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
Local<v8::Value> a1 = |
instance->CallAsFunction(v8::Undefined(isolate), 0, NULL); |
@@ -10345,7 +11670,8 @@ THREADED_TEST(CallableObject) { |
{ |
Local<ObjectTemplate> instance_template = ObjectTemplate::New(isolate); |
instance_template->SetCallAsFunctionHandler(call_as_function); |
- Local<Object> instance = instance_template->NewInstance(); |
+ Local<Object> instance = |
+ instance_template->NewInstance(context.local()).ToLocalChecked(); |
v8::TryCatch try_catch(isolate); |
CHECK(instance->IsCallable()); |
@@ -10354,7 +11680,8 @@ THREADED_TEST(CallableObject) { |
{ |
Local<ObjectTemplate> instance_template = ObjectTemplate::New(isolate); |
- Local<Object> instance = instance_template->NewInstance(); |
+ Local<Object> instance = |
+ instance_template->NewInstance(context.local()).ToLocalChecked(); |
v8::TryCatch try_catch(isolate); |
CHECK(!instance->IsCallable()); |
@@ -10364,7 +11691,8 @@ THREADED_TEST(CallableObject) { |
{ |
Local<FunctionTemplate> function_template = |
FunctionTemplate::New(isolate, call_as_function); |
- Local<Function> function = function_template->GetFunction(); |
+ Local<Function> function = |
+ function_template->GetFunction(context.local()).ToLocalChecked(); |
Local<Object> instance = function; |
v8::TryCatch try_catch(isolate); |
@@ -10374,7 +11702,8 @@ THREADED_TEST(CallableObject) { |
{ |
Local<FunctionTemplate> function_template = FunctionTemplate::New(isolate); |
- Local<Function> function = function_template->GetFunction(); |
+ Local<Function> function = |
+ function_template->GetFunction(context.local()).ToLocalChecked(); |
Local<Object> instance = function; |
v8::TryCatch try_catch(isolate); |
@@ -10445,7 +11774,8 @@ static void FastApiCallback_TrivialSignature( |
CHECK_EQ(isolate, args.GetIsolate()); |
CHECK(args.This()->Equals(args.Holder())); |
CHECK(args.Data()->Equals(v8_str("method_data"))); |
- args.GetReturnValue().Set(args[0]->Int32Value() + 1); |
+ args.GetReturnValue().Set( |
+ args[0]->Int32Value(isolate->GetCurrentContext()).FromJust() + 1); |
} |
static void FastApiCallback_SimpleSignature( |
@@ -10459,7 +11789,8 @@ static void FastApiCallback_SimpleSignature( |
// Note, we're using HasRealNamedProperty instead of Has to avoid |
// invoking the interceptor again. |
CHECK(args.Holder()->HasRealNamedProperty(v8_str("foo"))); |
- args.GetReturnValue().Set(args[0]->Int32Value() + 1); |
+ args.GetReturnValue().Set( |
+ args[0]->Int32Value(isolate->GetCurrentContext()).FromJust() + 1); |
} |
@@ -10488,13 +11819,16 @@ THREADED_TEST(CallICFastApi_DirectCall_GCMoveStub) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> nativeobject_templ = |
+ v8::Local<v8::ObjectTemplate> nativeobject_templ = |
v8::ObjectTemplate::New(isolate); |
nativeobject_templ->Set(isolate, "callback", |
v8::FunctionTemplate::New(isolate, |
DirectApiCallback)); |
- v8::Local<v8::Object> nativeobject_obj = nativeobject_templ->NewInstance(); |
- context->Global()->Set(v8_str("nativeobject"), nativeobject_obj); |
+ v8::Local<v8::Object> nativeobject_obj = |
+ nativeobject_templ->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("nativeobject"), nativeobject_obj) |
+ .FromJust()); |
// call the api function multiple times to ensure direct call stub creation. |
CompileRun( |
"function f() {" |
@@ -10516,15 +11850,18 @@ THREADED_TEST(CallICFastApi_DirectCall_Throw) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> nativeobject_templ = |
+ v8::Local<v8::ObjectTemplate> nativeobject_templ = |
v8::ObjectTemplate::New(isolate); |
nativeobject_templ->Set(isolate, "callback", |
v8::FunctionTemplate::New(isolate, |
ThrowingDirectApiCallback)); |
- v8::Local<v8::Object> nativeobject_obj = nativeobject_templ->NewInstance(); |
- context->Global()->Set(v8_str("nativeobject"), nativeobject_obj); |
+ v8::Local<v8::Object> nativeobject_obj = |
+ nativeobject_templ->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("nativeobject"), nativeobject_obj) |
+ .FromJust()); |
// call the api function multiple times to ensure direct call stub creation. |
- v8::Handle<Value> result = CompileRun( |
+ v8::Local<Value> result = CompileRun( |
"var result = '';" |
"function f() {" |
" for (var i = 1; i <= 5; i++) {" |
@@ -10539,7 +11876,7 @@ THREADED_TEST(CallICFastApi_DirectCall_Throw) { |
static int p_getter_count_3; |
-static Handle<Value> DoDirectGetter() { |
+static Local<Value> DoDirectGetter() { |
if (++p_getter_count_3 % 3 == 0) { |
CcTest::heap()->CollectAllGarbage(); |
GenerateSomeGarbage(); |
@@ -10561,11 +11898,14 @@ static void LoadICFastApi_DirectCall_GCMoveStub(Accessor accessor) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> obj = v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj = v8::ObjectTemplate::New(isolate); |
obj->SetAccessor(v8_str("p1"), accessor); |
- context->Global()->Set(v8_str("o1"), obj->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o1"), |
+ obj->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
p_getter_count_3 = 0; |
- v8::Handle<v8::Value> result = CompileRun( |
+ v8::Local<v8::Value> result = CompileRun( |
"function f() {" |
" for (var i = 0; i < 30; i++) o1.p1;" |
" return o1.p1" |
@@ -10592,10 +11932,13 @@ THREADED_TEST(LoadICFastApi_DirectCall_Throw) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> obj = v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj = v8::ObjectTemplate::New(isolate); |
obj->SetAccessor(v8_str("p1"), ThrowingDirectGetterCallback); |
- context->Global()->Set(v8_str("o1"), obj->NewInstance()); |
- v8::Handle<Value> result = CompileRun( |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o1"), |
+ obj->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
+ v8::Local<Value> result = CompileRun( |
"var result = '';" |
"for (var i = 0; i < 5; i++) {" |
" try { o1.p1; } catch (e) { result += e; }" |
@@ -10609,29 +11952,34 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_TrivialSignature) { |
int interceptor_call_count = 0; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = |
- v8::FunctionTemplate::New(isolate, |
- FastApiCallback_TrivialSignature, |
- v8_str("method_data"), |
- v8::Handle<v8::Signature>()); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ isolate, FastApiCallback_TrivialSignature, v8_str("method_data"), |
+ v8::Local<v8::Signature>()); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
- v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
+ v8::Local<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
InterceptorCallICFastApi, NULL, NULL, NULL, NULL, |
v8::External::New(isolate, &interceptor_call_count))); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"var result = 0;" |
"for (var i = 0; i < 100; i++) {" |
" result = o.method(41);" |
"}"); |
- CHECK_EQ(42, context->Global()->Get(v8_str("result"))->Int32Value()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
CHECK_EQ(100, interceptor_call_count); |
} |
@@ -10640,22 +11988,26 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature) { |
int interceptor_call_count = 0; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
isolate, FastApiCallback_SimpleSignature, v8_str("method_data"), |
v8::Signature::New(isolate, fun_templ)); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
fun_templ->SetHiddenPrototype(true); |
- v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
+ v8::Local<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
InterceptorCallICFastApi, NULL, NULL, NULL, NULL, |
v8::External::New(isolate, &interceptor_call_count))); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"o.foo = 17;" |
"var receiver = {};" |
@@ -10664,7 +12016,10 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature) { |
"for (var i = 0; i < 100; i++) {" |
" result = receiver.method(41);" |
"}"); |
- CHECK_EQ(42, context->Global()->Get(v8_str("result"))->Int32Value()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
CHECK_EQ(100, interceptor_call_count); |
} |
@@ -10673,22 +12028,26 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss1) { |
int interceptor_call_count = 0; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
isolate, FastApiCallback_SimpleSignature, v8_str("method_data"), |
v8::Signature::New(isolate, fun_templ)); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
fun_templ->SetHiddenPrototype(true); |
- v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
+ v8::Local<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
InterceptorCallICFastApi, NULL, NULL, NULL, NULL, |
v8::External::New(isolate, &interceptor_call_count))); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"o.foo = 17;" |
"var receiver = {};" |
@@ -10702,8 +12061,14 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss1) { |
" receiver = {method: function(x) { return x - 1 }};" |
" }" |
"}"); |
- CHECK_EQ(40, context->Global()->Get(v8_str("result"))->Int32Value()); |
- CHECK_EQ(42, context->Global()->Get(v8_str("saved_result"))->Int32Value()); |
+ CHECK_EQ(40, context->Global() |
+ ->Get(v8_str("result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("saved_result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
CHECK_GE(interceptor_call_count, 50); |
} |
@@ -10712,22 +12077,26 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss2) { |
int interceptor_call_count = 0; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
isolate, FastApiCallback_SimpleSignature, v8_str("method_data"), |
v8::Signature::New(isolate, fun_templ)); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
fun_templ->SetHiddenPrototype(true); |
- v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
+ v8::Local<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
InterceptorCallICFastApi, NULL, NULL, NULL, NULL, |
v8::External::New(isolate, &interceptor_call_count))); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"o.foo = 17;" |
"var receiver = {};" |
@@ -10741,8 +12110,14 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss2) { |
" o.method = function(x) { return x - 1 };" |
" }" |
"}"); |
- CHECK_EQ(40, context->Global()->Get(v8_str("result"))->Int32Value()); |
- CHECK_EQ(42, context->Global()->Get(v8_str("saved_result"))->Int32Value()); |
+ CHECK_EQ(40, context->Global() |
+ ->Get(v8_str("result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("saved_result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
CHECK_GE(interceptor_call_count, 50); |
} |
@@ -10751,22 +12126,26 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss3) { |
int interceptor_call_count = 0; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
isolate, FastApiCallback_SimpleSignature, v8_str("method_data"), |
v8::Signature::New(isolate, fun_templ)); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
fun_templ->SetHiddenPrototype(true); |
- v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
+ v8::Local<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
InterceptorCallICFastApi, NULL, NULL, NULL, NULL, |
v8::External::New(isolate, &interceptor_call_count))); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
CompileRun( |
"o.foo = 17;" |
@@ -10785,7 +12164,10 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_Miss3) { |
// TODO(verwaest): Adjust message. |
CHECK(v8_str("TypeError: receiver.method is not a function") |
->Equals(try_catch.Exception()->ToString(isolate))); |
- CHECK_EQ(42, context->Global()->Get(v8_str("saved_result"))->Int32Value()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("saved_result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
CHECK_GE(interceptor_call_count, 50); |
} |
@@ -10794,22 +12176,26 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_TypeError) { |
int interceptor_call_count = 0; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
isolate, FastApiCallback_SimpleSignature, v8_str("method_data"), |
v8::Signature::New(isolate, fun_templ)); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
fun_templ->SetHiddenPrototype(true); |
- v8::Handle<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
+ v8::Local<v8::ObjectTemplate> templ = fun_templ->InstanceTemplate(); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
InterceptorCallICFastApi, NULL, NULL, NULL, NULL, |
v8::External::New(isolate, &interceptor_call_count))); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
CompileRun( |
"o.foo = 17;" |
@@ -10827,7 +12213,10 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_TypeError) { |
CHECK(try_catch.HasCaught()); |
CHECK(v8_str("TypeError: Illegal invocation") |
->Equals(try_catch.Exception()->ToString(isolate))); |
- CHECK_EQ(42, context->Global()->Get(v8_str("saved_result"))->Int32Value()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("saved_result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
CHECK_GE(interceptor_call_count, 50); |
} |
@@ -10835,48 +12224,57 @@ THREADED_PROFILED_TEST(InterceptorCallICFastApi_SimpleSignature_TypeError) { |
THREADED_PROFILED_TEST(CallICFastApi_TrivialSignature) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = |
- v8::FunctionTemplate::New(isolate, |
- FastApiCallback_TrivialSignature, |
- v8_str("method_data"), |
- v8::Handle<v8::Signature>()); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ isolate, FastApiCallback_TrivialSignature, v8_str("method_data"), |
+ v8::Local<v8::Signature>()); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
- v8::Handle<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
+ v8::Local<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
USE(templ); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"var result = 0;" |
"for (var i = 0; i < 100; i++) {" |
" result = o.method(41);" |
"}"); |
- CHECK_EQ(42, context->Global()->Get(v8_str("result"))->Int32Value()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
isolate, FastApiCallback_SimpleSignature, v8_str("method_data"), |
v8::Signature::New(isolate, fun_templ)); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
fun_templ->SetHiddenPrototype(true); |
- v8::Handle<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
+ v8::Local<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
CHECK(!templ.IsEmpty()); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"o.foo = 17;" |
"var receiver = {};" |
@@ -10886,27 +12284,34 @@ THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature) { |
" result = receiver.method(41);" |
"}"); |
- CHECK_EQ(42, context->Global()->Get(v8_str("result"))->Int32Value()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature_Miss1) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
isolate, FastApiCallback_SimpleSignature, v8_str("method_data"), |
v8::Signature::New(isolate, fun_templ)); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
fun_templ->SetHiddenPrototype(true); |
- v8::Handle<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
+ v8::Local<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
CHECK(!templ.IsEmpty()); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"o.foo = 17;" |
"var receiver = {};" |
@@ -10920,28 +12325,38 @@ THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature_Miss1) { |
" receiver = {method: function(x) { return x - 1 }};" |
" }" |
"}"); |
- CHECK_EQ(40, context->Global()->Get(v8_str("result"))->Int32Value()); |
- CHECK_EQ(42, context->Global()->Get(v8_str("saved_result"))->Int32Value()); |
+ CHECK_EQ(40, context->Global() |
+ ->Get(v8_str("result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("saved_result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature_Miss2) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
isolate, FastApiCallback_SimpleSignature, v8_str("method_data"), |
v8::Signature::New(isolate, fun_templ)); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
fun_templ->SetHiddenPrototype(true); |
- v8::Handle<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
+ v8::Local<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
CHECK(!templ.IsEmpty()); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
CompileRun( |
"o.foo = 17;" |
@@ -10960,27 +12375,34 @@ THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature_Miss2) { |
// TODO(verwaest): Adjust message. |
CHECK(v8_str("TypeError: receiver.method is not a function") |
->Equals(try_catch.Exception()->ToString(isolate))); |
- CHECK_EQ(42, context->Global()->Get(v8_str("saved_result"))->Int32Value()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("saved_result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature_TypeError) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::FunctionTemplate> fun_templ = |
+ v8::Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
+ v8::Local<v8::FunctionTemplate> method_templ = v8::FunctionTemplate::New( |
isolate, FastApiCallback_SimpleSignature, v8_str("method_data"), |
v8::Signature::New(isolate, fun_templ)); |
- v8::Handle<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
+ v8::Local<v8::ObjectTemplate> proto_templ = fun_templ->PrototypeTemplate(); |
proto_templ->Set(v8_str("method"), method_templ); |
fun_templ->SetHiddenPrototype(true); |
- v8::Handle<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
+ v8::Local<v8::ObjectTemplate> templ(fun_templ->InstanceTemplate()); |
CHECK(!templ.IsEmpty()); |
LocalContext context; |
- v8::Handle<v8::Function> fun = fun_templ->GetFunction(); |
+ v8::Local<v8::Function> fun = |
+ fun_templ->GetFunction(context.local()).ToLocalChecked(); |
GenerateSomeGarbage(); |
- context->Global()->Set(v8_str("o"), fun->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ fun->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
CompileRun( |
"o.foo = 17;" |
@@ -10998,14 +12420,17 @@ THREADED_PROFILED_TEST(CallICFastApi_SimpleSignature_TypeError) { |
CHECK(try_catch.HasCaught()); |
CHECK(v8_str("TypeError: Illegal invocation") |
->Equals(try_catch.Exception()->ToString(isolate))); |
- CHECK_EQ(42, context->Global()->Get(v8_str("saved_result"))->Int32Value()); |
+ CHECK_EQ(42, context->Global() |
+ ->Get(v8_str("saved_result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
static void ThrowingGetter(Local<String> name, |
const v8::PropertyCallbackInfo<v8::Value>& info) { |
ApiTestFuzzer::Fuzz(); |
- info.GetIsolate()->ThrowException(Handle<Value>()); |
+ info.GetIsolate()->ThrowException(Local<Value>()); |
info.GetReturnValue().SetUndefined(); |
} |
@@ -11018,7 +12443,10 @@ THREADED_TEST(VariousGetPropertiesAndThrowingCallbacks) { |
Local<ObjectTemplate> instance_templ = templ->InstanceTemplate(); |
instance_templ->SetAccessor(v8_str("f"), ThrowingGetter); |
- Local<Object> instance = templ->GetFunction()->NewInstance(); |
+ Local<Object> instance = templ->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
Local<Object> another = Object::New(context->GetIsolate()); |
another->SetPrototype(instance); |
@@ -11096,23 +12524,23 @@ static void ThrowingCallbackWithTryCatch( |
static int call_depth; |
-static void WithTryCatch(Handle<Message> message, Handle<Value> data) { |
+static void WithTryCatch(Local<Message> message, Local<Value> data) { |
TryCatch try_catch(CcTest::isolate()); |
} |
-static void ThrowFromJS(Handle<Message> message, Handle<Value> data) { |
+static void ThrowFromJS(Local<Message> message, Local<Value> data) { |
if (--call_depth) CompileRun("throw 'ThrowInJS';"); |
} |
-static void ThrowViaApi(Handle<Message> message, Handle<Value> data) { |
+static void ThrowViaApi(Local<Message> message, Local<Value> data) { |
if (--call_depth) CcTest::isolate()->ThrowException(v8_str("ThrowViaApi")); |
} |
-static void WebKitLike(Handle<Message> message, Handle<Value> data) { |
- Handle<String> errorMessageString = message->Get(); |
+static void WebKitLike(Local<Message> message, Local<Value> data) { |
+ Local<String> errorMessageString = message->Get(); |
CHECK(!errorMessageString.IsEmpty()); |
message->GetStackTrace(); |
message->GetScriptOrigin().ResourceName(); |
@@ -11125,9 +12553,11 @@ THREADED_TEST(ExceptionsDoNotPropagatePastTryCatch) { |
HandleScope scope(isolate); |
Local<Function> func = |
- FunctionTemplate::New(isolate, |
- ThrowingCallbackWithTryCatch)->GetFunction(); |
- context->Global()->Set(v8_str("func"), func); |
+ FunctionTemplate::New(isolate, ThrowingCallbackWithTryCatch) |
+ ->GetFunction(context.local()) |
+ .ToLocalChecked(); |
+ CHECK( |
+ context->Global()->Set(context.local(), v8_str("func"), func).FromJust()); |
MessageCallback callbacks[] = |
{ NULL, WebKitLike, ThrowViaApi, ThrowFromJS, WithTryCatch }; |
@@ -11191,34 +12621,39 @@ THREADED_TEST(Overriding) { |
// so 'h' can be shadowed on the instance object. |
Local<ObjectTemplate> child_proto_templ = child_templ->PrototypeTemplate(); |
child_proto_templ->SetAccessor(v8_str("h"), ParentGetter, 0, |
- v8::Handle<Value>(), v8::DEFAULT, v8::ReadOnly); |
+ v8::Local<Value>(), v8::DEFAULT, v8::ReadOnly); |
// Add 'i' as an accessor to the instance template with ReadOnly attributes |
// but the attribute does not have effect because it is duplicated with |
// NULL setter. |
child_instance_templ->SetAccessor(v8_str("i"), ChildGetter, 0, |
- v8::Handle<Value>(), v8::DEFAULT, v8::ReadOnly); |
- |
+ v8::Local<Value>(), v8::DEFAULT, |
+ v8::ReadOnly); |
// Instantiate the child template. |
- Local<v8::Object> instance = child_templ->GetFunction()->NewInstance(); |
+ Local<v8::Object> instance = child_templ->GetFunction(context.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
// Check that the child function overrides the parent one. |
- context->Global()->Set(v8_str("o"), instance); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), instance) |
+ .FromJust()); |
Local<Value> value = v8_compile("o.f")->Run(); |
// Check that the 'g' that was added last is hit. |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context.local()).FromJust()); |
value = v8_compile("o.g")->Run(); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context.local()).FromJust()); |
// Check that 'h' cannot be shadowed. |
value = v8_compile("o.h = 3; o.h")->Run(); |
- CHECK_EQ(1, value->Int32Value()); |
+ 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(); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context.local()).FromJust()); |
} |
@@ -11239,7 +12674,10 @@ THREADED_TEST(IsConstructCall) { |
LocalContext context; |
- context->Global()->Set(v8_str("f"), templ->GetFunction()); |
+ CHECK(context->Global() |
+ ->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(); |
@@ -11263,7 +12701,10 @@ THREADED_TEST(ObjectProtoToString) { |
"}")->Run(); |
// Normal ToString call should call replaced Object.prototype.toString |
- Local<v8::Object> instance = templ->GetFunction()->NewInstance(); |
+ 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)); |
@@ -11300,7 +12741,10 @@ TEST(ObjectProtoToStringES6) { |
"}"); |
// Normal ToString call should call replaced Object.prototype.toString |
- Local<v8::Object> instance = templ->GetFunction()->NewInstance(); |
+ 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)); |
@@ -11643,10 +13087,10 @@ static void ThrowInJS(const v8::FunctionCallbackInfo<v8::Value>& args) { |
{ |
v8::Locker nested_locker(isolate); |
v8::HandleScope scope(isolate); |
- v8::Handle<Value> exception; |
+ v8::Local<Value> exception; |
{ |
v8::TryCatch try_catch(isolate); |
- v8::Handle<Value> value = CompileRun(code); |
+ v8::Local<Value> value = CompileRun(code); |
CHECK(value.IsEmpty()); |
CHECK(try_catch.HasCaught()); |
// Make sure to wrap the exception in a new handle because |
@@ -11667,7 +13111,7 @@ static void ThrowInJSNoCatch(const v8::FunctionCallbackInfo<v8::Value>& args) { |
{ |
v8::Locker nested_locker(CcTest::isolate()); |
v8::HandleScope scope(args.GetIsolate()); |
- v8::Handle<Value> value = CompileRun(code); |
+ v8::Local<Value> value = CompileRun(code); |
CHECK(value.IsEmpty()); |
args.GetReturnValue().Set(v8_str("foo")); |
} |
@@ -11684,8 +13128,8 @@ TEST(NestedLockers) { |
v8::HandleScope scope(env->GetIsolate()); |
Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(isolate, ThrowInJS); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("throw_in_js"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global()->Set(env.local(), v8_str("throw_in_js"), fun).FromJust()); |
Local<Script> script = v8_compile("(function () {" |
" try {" |
" throw_in_js();" |
@@ -11694,7 +13138,7 @@ TEST(NestedLockers) { |
" return e * 13;" |
" }" |
"})();"); |
- CHECK_EQ(91, script->Run()->Int32Value()); |
+ CHECK_EQ(91, script->Run()->Int32Value(env.local()).FromJust()); |
} |
@@ -11706,8 +13150,8 @@ TEST(NestedLockersNoTryCatch) { |
v8::HandleScope scope(env->GetIsolate()); |
Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(env->GetIsolate(), ThrowInJSNoCatch); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("throw_in_js"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global()->Set(env.local(), v8_str("throw_in_js"), fun).FromJust()); |
Local<Script> script = v8_compile("(function () {" |
" try {" |
" throw_in_js();" |
@@ -11716,7 +13160,7 @@ TEST(NestedLockersNoTryCatch) { |
" return e * 13;" |
" }" |
"})();"); |
- CHECK_EQ(91, script->Run()->Int32Value()); |
+ CHECK_EQ(91, script->Run()->Int32Value(env.local()).FromJust()); |
} |
@@ -11742,13 +13186,15 @@ THREADED_TEST(LockUnlockLock) { |
LocalContext env; |
Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(CcTest::isolate(), UnlockForAMoment); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("unlock_for_a_moment"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("unlock_for_a_moment"), fun) |
+ .FromJust()); |
Local<Script> script = v8_compile("(function () {" |
" unlock_for_a_moment();" |
" return 42;" |
"})();"); |
- CHECK_EQ(42, script->Run()->Int32Value()); |
+ CHECK_EQ(42, script->Run()->Int32Value(env.local()).FromJust()); |
} |
{ |
v8::Locker locker(CcTest::isolate()); |
@@ -11756,13 +13202,15 @@ THREADED_TEST(LockUnlockLock) { |
LocalContext env; |
Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(CcTest::isolate(), UnlockForAMoment); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("unlock_for_a_moment"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("unlock_for_a_moment"), fun) |
+ .FromJust()); |
Local<Script> script = v8_compile("(function () {" |
" unlock_for_a_moment();" |
" return 42;" |
"})();"); |
- CHECK_EQ(42, script->Run()->Int32Value()); |
+ CHECK_EQ(42, script->Run()->Int32Value(env.local()).FromJust()); |
} |
} |
@@ -12031,7 +13479,7 @@ THREADED_TEST(CheckForCrossContextObjectLiterals) { |
} |
-static v8::Handle<Value> NestedScope(v8::Local<Context> env) { |
+static v8::Local<Value> NestedScope(v8::Local<Context> env) { |
v8::EscapableHandleScope inner(env->GetIsolate()); |
env->Enter(); |
v8::Local<Value> three = v8_num(3); |
@@ -12046,8 +13494,8 @@ THREADED_TEST(NestedHandleScopeAndContexts) { |
v8::HandleScope outer(isolate); |
v8::Local<Context> env = Context::New(isolate); |
env->Enter(); |
- v8::Handle<Value> value = NestedScope(env); |
- v8::Handle<String> str(value->ToString(isolate)); |
+ v8::Local<Value> value = NestedScope(env); |
+ v8::Local<String> str(value->ToString(isolate)); |
CHECK(!str.IsEmpty()); |
env->Exit(); |
} |
@@ -12294,7 +13742,9 @@ void SetFunctionEntryHookTest::RunLoopInNewEnv(v8::Isolate* isolate) { |
Local<ObjectTemplate> t = ObjectTemplate::New(isolate); |
t->Set(v8_str("asdf"), v8::FunctionTemplate::New(isolate, RuntimeCallback)); |
- env->Global()->Set(v8_str("obj"), t->NewInstance()); |
+ CHECK(env->Global() |
+ ->Set(env, v8_str("obj"), t->NewInstance(env).ToLocalChecked()) |
+ .FromJust()); |
const char* script = |
"function bar() {\n" |
@@ -12316,7 +13766,7 @@ void SetFunctionEntryHookTest::RunLoopInNewEnv(v8::Isolate* isolate) { |
v8::Utils::OpenHandle(*env->Global()->Get(v8_str("foo")))); |
DCHECK(!foo_func_.is_null()); |
- v8::Handle<v8::Value> value = CompileRun("bar();"); |
+ v8::Local<v8::Value> value = CompileRun("bar();"); |
CHECK(value->IsNumber()); |
CHECK_EQ(9801.0, v8::Number::Cast(*value)->Value()); |
@@ -12681,8 +14131,10 @@ THREADED_TEST(Regress54) { |
local->SetInternalFieldCount(1); |
templ.Reset(isolate, inner.Escape(local)); |
} |
- v8::Handle<v8::Object> result = |
- v8::Local<v8::ObjectTemplate>::New(isolate, templ)->NewInstance(); |
+ v8::Local<v8::Object> result = |
+ v8::Local<v8::ObjectTemplate>::New(isolate, templ) |
+ ->NewInstance(context.local()) |
+ .ToLocalChecked(); |
CHECK_EQ(1, result->InternalFieldCount()); |
} |
@@ -12693,25 +14145,25 @@ TEST(CatchStackOverflow) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
v8::TryCatch try_catch(context->GetIsolate()); |
- v8::Handle<v8::Value> result = CompileRun( |
- "function f() {" |
- " return f();" |
- "}" |
- "" |
- "f();"); |
+ v8::Local<v8::Value> result = CompileRun( |
+ "function f() {" |
+ " return f();" |
+ "}" |
+ "" |
+ "f();"); |
CHECK(result.IsEmpty()); |
} |
-static void CheckTryCatchSourceInfo(v8::Handle<v8::Script> script, |
+static void CheckTryCatchSourceInfo(v8::Local<v8::Script> script, |
const char* resource_name, |
int line_offset) { |
v8::HandleScope scope(CcTest::isolate()); |
v8::TryCatch try_catch(CcTest::isolate()); |
- v8::Handle<v8::Value> result = script->Run(); |
+ v8::Local<v8::Value> result = script->Run(); |
CHECK(result.IsEmpty()); |
CHECK(try_catch.HasCaught()); |
- v8::Handle<v8::Message> message = try_catch.Message(); |
+ v8::Local<v8::Message> message = try_catch.Message(); |
CHECK(!message.IsEmpty()); |
CHECK_EQ(10 + line_offset, message->GetLineNumber()); |
CHECK_EQ(91, message->GetStartPosition()); |
@@ -12744,21 +14196,19 @@ THREADED_TEST(TryCatchSourceInfo) { |
"Foo();\n"); |
const char* resource_name; |
- v8::Handle<v8::Script> script; |
+ v8::Local<v8::Script> script; |
resource_name = "test.js"; |
script = CompileWithOrigin(source, resource_name); |
CheckTryCatchSourceInfo(script, resource_name, 0); |
resource_name = "test1.js"; |
- v8::ScriptOrigin origin1( |
- v8::String::NewFromUtf8(context->GetIsolate(), resource_name)); |
+ v8::ScriptOrigin origin1(v8_str(resource_name)); |
script = v8::Script::Compile(source, &origin1); |
CheckTryCatchSourceInfo(script, resource_name, 0); |
resource_name = "test2.js"; |
- v8::ScriptOrigin origin2( |
- v8::String::NewFromUtf8(context->GetIsolate(), resource_name), |
- v8::Integer::New(context->GetIsolate(), 7)); |
+ v8::ScriptOrigin origin2(v8_str(resource_name), |
+ v8::Integer::New(context->GetIsolate(), 7)); |
script = v8::Script::Compile(source, &origin2); |
CheckTryCatchSourceInfo(script, resource_name, 7); |
} |
@@ -12770,7 +14220,7 @@ THREADED_TEST(TryCatchSourceInfoForEOSError) { |
v8::TryCatch try_catch(context->GetIsolate()); |
v8::Script::Compile(v8_str("!\n")); |
CHECK(try_catch.HasCaught()); |
- v8::Handle<v8::Message> message = try_catch.Message(); |
+ v8::Local<v8::Message> message = try_catch.Message(); |
CHECK_EQ(1, message->GetLineNumber()); |
CHECK_EQ(0, message->GetStartColumn()); |
} |
@@ -12779,17 +14229,15 @@ THREADED_TEST(TryCatchSourceInfoForEOSError) { |
THREADED_TEST(CompilationCache) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::Handle<v8::String> source0 = |
- v8::String::NewFromUtf8(context->GetIsolate(), "1234"); |
- v8::Handle<v8::String> source1 = |
- v8::String::NewFromUtf8(context->GetIsolate(), "1234"); |
- v8::Handle<v8::Script> script0 = CompileWithOrigin(source0, "test.js"); |
- v8::Handle<v8::Script> script1 = CompileWithOrigin(source1, "test.js"); |
- v8::Handle<v8::Script> script2 = |
+ v8::Local<v8::String> source0 = v8_str("1234"); |
+ 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()); |
- CHECK_EQ(1234, script1->Run()->Int32Value()); |
- CHECK_EQ(1234, script2->Run()->Int32Value()); |
+ 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()); |
} |
@@ -12807,8 +14255,11 @@ THREADED_TEST(CallbackFunctionName) { |
Local<ObjectTemplate> t = ObjectTemplate::New(isolate); |
t->Set(v8_str("asdf"), |
v8::FunctionTemplate::New(isolate, FunctionNameCallback)); |
- context->Global()->Set(v8_str("obj"), t->NewInstance()); |
- v8::Handle<v8::Value> value = CompileRun("obj.asdf.name"); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ t->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
+ v8::Local<v8::Value> value = CompileRun("obj.asdf.name"); |
CHECK(value->IsString()); |
v8::String::Utf8Value name(value); |
CHECK_EQ(0, strcmp("asdf", *name)); |
@@ -12818,17 +14269,17 @@ THREADED_TEST(CallbackFunctionName) { |
THREADED_TEST(DateAccess) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::Handle<v8::Value> date = |
+ v8::Local<v8::Value> date = |
v8::Date::New(context->GetIsolate(), 1224744689038.0); |
CHECK(date->IsDate()); |
CHECK_EQ(1224744689038.0, date.As<v8::Date>()->ValueOf()); |
} |
-void CheckProperties(v8::Isolate* isolate, v8::Handle<v8::Value> val, |
+void CheckProperties(v8::Isolate* isolate, v8::Local<v8::Value> val, |
unsigned elmc, const char* elmv[]) { |
- v8::Handle<v8::Object> obj = val.As<v8::Object>(); |
- v8::Handle<v8::Array> props = obj->GetPropertyNames(); |
+ v8::Local<v8::Object> obj = val.As<v8::Object>(); |
+ v8::Local<v8::Array> props = obj->GetPropertyNames(); |
CHECK_EQ(elmc, props->Length()); |
for (unsigned i = 0; i < elmc; i++) { |
v8::String::Utf8Value elm(props->Get(v8::Integer::New(isolate, i))); |
@@ -12837,10 +14288,10 @@ void CheckProperties(v8::Isolate* isolate, v8::Handle<v8::Value> val, |
} |
-void CheckOwnProperties(v8::Isolate* isolate, v8::Handle<v8::Value> val, |
+void CheckOwnProperties(v8::Isolate* isolate, v8::Local<v8::Value> val, |
unsigned elmc, const char* elmv[]) { |
- v8::Handle<v8::Object> obj = val.As<v8::Object>(); |
- v8::Handle<v8::Array> props = obj->GetOwnPropertyNames(); |
+ v8::Local<v8::Object> obj = val.As<v8::Object>(); |
+ v8::Local<v8::Array> props = obj->GetOwnPropertyNames(); |
CHECK_EQ(elmc, props->Length()); |
for (unsigned i = 0; i < elmc; i++) { |
v8::String::Utf8Value elm(props->Get(v8::Integer::New(isolate, i))); |
@@ -12853,7 +14304,7 @@ THREADED_TEST(PropertyEnumeration) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::Value> obj = CompileRun( |
+ v8::Local<v8::Value> obj = CompileRun( |
"var result = [];" |
"result[0] = {};" |
"result[1] = {a: 1, b: 2};" |
@@ -12862,7 +14313,7 @@ THREADED_TEST(PropertyEnumeration) { |
"var x = { __proto__: proto, w: 0, z: 1 };" |
"result[3] = x;" |
"result;"); |
- v8::Handle<v8::Array> elms = obj.As<v8::Array>(); |
+ v8::Local<v8::Array> elms = obj.As<v8::Array>(); |
CHECK_EQ(4u, elms->Length()); |
int elmc0 = 0; |
const char** elmv0 = NULL; |
@@ -12897,7 +14348,7 @@ THREADED_TEST(PropertyEnumeration2) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::Value> obj = CompileRun( |
+ v8::Local<v8::Value> obj = CompileRun( |
"var result = [];" |
"result[0] = {};" |
"result[1] = {a: 1, b: 2};" |
@@ -12906,15 +14357,15 @@ THREADED_TEST(PropertyEnumeration2) { |
"var x = { __proto__: proto, w: 0, z: 1 };" |
"result[3] = x;" |
"result;"); |
- v8::Handle<v8::Array> elms = obj.As<v8::Array>(); |
+ v8::Local<v8::Array> elms = obj.As<v8::Array>(); |
CHECK_EQ(4u, elms->Length()); |
int elmc0 = 0; |
const char** elmv0 = NULL; |
CheckProperties(isolate, |
elms->Get(v8::Integer::New(isolate, 0)), elmc0, elmv0); |
- v8::Handle<v8::Value> val = elms->Get(v8::Integer::New(isolate, 0)); |
- v8::Handle<v8::Array> props = val.As<v8::Object>()->GetPropertyNames(); |
+ v8::Local<v8::Value> val = elms->Get(v8::Integer::New(isolate, 0)); |
+ v8::Local<v8::Array> props = val.As<v8::Object>()->GetPropertyNames(); |
CHECK_EQ(0u, props->Length()); |
for (uint32_t i = 0; i < props->Length(); i++) { |
printf("p[%u]\n", i); |
@@ -12945,14 +14396,20 @@ THREADED_TEST(AccessChecksReenabledCorrectly) { |
} |
} |
- Local<v8::Object> instance_1 = templ->NewInstance(); |
- context->Global()->Set(v8_str("obj_1"), instance_1); |
+ Local<v8::Object> instance_1 = |
+ templ->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj_1"), instance_1) |
+ .FromJust()); |
Local<Value> value_1 = CompileRun("obj_1.a"); |
CHECK(value_1.IsEmpty()); |
- Local<v8::Object> instance_2 = templ->NewInstance(); |
- context->Global()->Set(v8_str("obj_2"), instance_2); |
+ Local<v8::Object> instance_2 = |
+ templ->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj_2"), instance_2) |
+ .FromJust()); |
Local<Value> value_2 = CompileRun("obj_2.a"); |
CHECK(value_2.IsEmpty()); |
@@ -12998,14 +14455,18 @@ THREADED_TEST(DictionaryICLoadedFunction) { |
// Test LoadIC. |
for (int i = 0; i < 2; i++) { |
LocalContext context; |
- context->Global()->Set(v8_str("tmp"), v8::True(CcTest::isolate())); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("tmp"), v8::True(CcTest::isolate())) |
+ .FromJust()); |
context->Global()->Delete(v8_str("tmp")); |
CompileRun("for (var j = 0; j < 10; j++) new RegExp('');"); |
} |
// Test CallIC. |
for (int i = 0; i < 2; i++) { |
LocalContext context; |
- context->Global()->Set(v8_str("tmp"), v8::True(CcTest::isolate())); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("tmp"), v8::True(CcTest::isolate())) |
+ .FromJust()); |
context->Global()->Delete(v8_str("tmp")); |
CompileRun("for (var j = 0; j < 10; j++) RegExp('')"); |
} |
@@ -13034,10 +14495,12 @@ THREADED_TEST(CrossContextNew) { |
// Call the constructor function from context0 and check that the |
// result has the 'x' property. |
context1->Enter(); |
- context1->Global()->Set(v8_str("other"), context0->Global()); |
+ CHECK(context1->Global() |
+ ->Set(context1, v8_str("other"), context0->Global()) |
+ .FromJust()); |
Local<Value> value = CompileRun("var instance = new other.C(); instance.x"); |
CHECK(value->IsInt32()); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context1).FromJust()); |
context1->Exit(); |
} |
@@ -13148,8 +14611,8 @@ THREADED_TEST(MorphCompositeStringTest) { |
v8::Utils::ToLocal(factory->NewExternalStringFromOneByte( |
&one_byte_resource).ToHandleChecked())); |
- env->Global()->Set(v8_str("lhs"), lhs); |
- env->Global()->Set(v8_str("rhs"), rhs); |
+ CHECK(env->Global()->Set(env.local(), v8_str("lhs"), lhs).FromJust()); |
+ CHECK(env->Global()->Set(env.local(), v8_str("rhs"), rhs).FromJust()); |
CompileRun( |
"var cons = lhs + rhs;" |
@@ -13165,7 +14628,7 @@ THREADED_TEST(MorphCompositeStringTest) { |
&uc16_resource); |
// This should UTF-8 without flattening, since everything is ASCII. |
- Handle<String> cons = v8_compile("cons")->Run().As<String>(); |
+ Local<String> cons = v8_compile("cons")->Run().As<String>(); |
CHECK_EQ(128, cons->Utf8Length()); |
int nchars = -1; |
CHECK_EQ(129, cons->WriteUtf8(utf_buffer, -1, &nchars)); |
@@ -13188,11 +14651,9 @@ 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(String::NewFromUtf8(env->GetIsolate(), expected_cons) |
- ->Equals(env->Global()->Get(v8_str("cons")))); |
- CHECK(String::NewFromUtf8(env->GetIsolate(), expected_slice) |
- ->Equals(env->Global()->Get(v8_str("slice")))); |
- CHECK(String::NewFromUtf8(env->GetIsolate(), expected_slice_on_cons) |
+ 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_slice_on_cons) |
->Equals(env->Global()->Get(v8_str("slice_on_cons")))); |
} |
i::DeleteArray(two_byte_string); |
@@ -13306,17 +14767,17 @@ TEST(RegExpInterruption) { |
TEST(ReadOnlyPropertyInGlobalProto) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate); |
LocalContext context(0, templ); |
- v8::Handle<v8::Object> global = context->Global(); |
- v8::Handle<v8::Object> global_proto = |
- v8::Handle<v8::Object>::Cast(global->Get(v8_str("__proto__"))); |
+ 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); |
// Check without 'eval' or 'with'. |
- v8::Handle<v8::Value> res = |
+ v8::Local<v8::Value> res = |
CompileRun("function f() { x = 42; return x; }; f()"); |
CHECK(v8::Integer::New(isolate, 0)->Equals(res)); |
// Check with 'eval'. |
@@ -13367,40 +14828,44 @@ TEST(ForceSet) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate); |
- v8::Handle<v8::String> access_property = |
- v8::String::NewFromUtf8(isolate, "a"); |
+ v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::String> access_property = v8_str("a"); |
templ->SetAccessor(access_property, ForceSetGetter, ForceSetSetter); |
LocalContext context(NULL, templ); |
- v8::Handle<v8::Object> global = context->Global(); |
+ v8::Local<v8::Object> global = context->Global(); |
// Ordinary properties |
- v8::Handle<v8::String> simple_property = |
- v8::String::NewFromUtf8(isolate, "p"); |
+ 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()); |
+ CHECK_EQ( |
+ 4, global->Get(simple_property)->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()); |
+ CHECK_EQ( |
+ 4, global->Get(simple_property)->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()); |
+ CHECK_EQ( |
+ 6, global->Get(simple_property)->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()); |
+ CHECK_EQ( |
+ 3, global->Get(access_property)->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()); |
+ CHECK_EQ( |
+ 3, global->Get(access_property)->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()); |
+ CHECK_EQ( |
+ 8, global->Get(access_property)->Int32Value(context.local()).FromJust()); |
CHECK_EQ(1, force_set_set_count); |
CHECK_EQ(2, force_set_get_count); |
} |
@@ -13409,26 +14874,27 @@ TEST(ForceSet) { |
TEST(ForceSetWithInterceptor) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
ForceSetInterceptGetter, ForceSetInterceptSetter)); |
pass_on_get = true; |
LocalContext context(NULL, templ); |
- v8::Handle<v8::Object> global = context->Global(); |
+ v8::Local<v8::Object> global = context->Global(); |
force_set_get_count = 0; |
force_set_set_count = 0; |
pass_on_get = false; |
- v8::Handle<v8::String> some_property = |
- v8::String::NewFromUtf8(isolate, "a"); |
+ 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()); |
+ CHECK_EQ(3, |
+ global->Get(some_property)->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()); |
+ CHECK_EQ(3, |
+ global->Get(some_property)->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 |
@@ -13441,18 +14907,19 @@ TEST(ForceSetWithInterceptor) { |
// 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()); |
+ CHECK_EQ(8, |
+ global->Get(some_property)->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()); |
+ CHECK_EQ(3, |
+ global->Get(some_property)->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::String::NewFromUtf8(isolate, "b")) |
- ->Int32Value()); |
+ CHECK_EQ(3, global->Get(v8_str("b"))->Int32Value(context.local()).FromJust()); |
CHECK_EQ(1, force_set_set_count); |
CHECK_EQ(6, force_set_get_count); |
} |
@@ -13699,9 +15166,9 @@ THREADED_TEST(InitGlobalVarInProtoChain) { |
v8::HandleScope scope(context->GetIsolate()); |
// Introduce a variable in the prototype chain. |
CompileRun("__proto__.x = 42"); |
- v8::Handle<v8::Value> result = CompileRun("var x = 43; x"); |
+ v8::Local<v8::Value> result = CompileRun("var x = 43; x"); |
CHECK(!result->IsUndefined()); |
- CHECK_EQ(43, result->Int32Value()); |
+ CHECK_EQ(43, result->Int32Value(context.local()).FromJust()); |
} |
@@ -13714,15 +15181,14 @@ THREADED_TEST(ReplaceConstantFunction) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::Object> obj = v8::Object::New(isolate); |
- v8::Handle<v8::FunctionTemplate> func_templ = |
+ v8::Local<v8::Object> obj = v8::Object::New(isolate); |
+ v8::Local<v8::FunctionTemplate> func_templ = |
v8::FunctionTemplate::New(isolate); |
- v8::Handle<v8::String> foo_string = |
- v8::String::NewFromUtf8(isolate, "foo"); |
- obj->Set(foo_string, func_templ->GetFunction()); |
- v8::Handle<v8::Object> obj_clone = obj->Clone(); |
- obj_clone->Set(foo_string, |
- v8::String::NewFromUtf8(isolate, "Hello")); |
+ v8::Local<v8::String> foo_string = v8_str("foo"); |
+ obj->Set(foo_string, |
+ func_templ->GetFunction(context.local()).ToLocalChecked()); |
+ v8::Local<v8::Object> obj_clone = obj->Clone(); |
+ obj_clone->Set(foo_string, v8_str("Hello")); |
CHECK(!obj->Get(foo_string)->IsUndefined()); |
} |
@@ -13738,8 +15204,8 @@ static void CheckElementValue(i::Isolate* isolate, |
template <class ExternalArrayClass, class ElementType> |
-static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
- v8::Handle<Object> obj, |
+static void ObjectWithExternalArrayTestHelper(Local<Context> context, |
+ v8::Local<Object> obj, |
int element_count, |
i::ExternalArrayType array_type, |
int64_t low, int64_t high) { |
@@ -13747,11 +15213,11 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
i::Isolate* isolate = jsobj->GetIsolate(); |
obj->Set(v8_str("field"), |
v8::Int32::New(reinterpret_cast<v8::Isolate*>(isolate), 1503)); |
- context->Global()->Set(v8_str("ext_array"), obj); |
- v8::Handle<v8::Value> result = CompileRun("ext_array.field"); |
- CHECK_EQ(1503, result->Int32Value()); |
+ 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()); |
result = CompileRun("ext_array[1]"); |
- CHECK_EQ(1, result->Int32Value()); |
+ CHECK_EQ(1, result->Int32Value(context).FromJust()); |
// Check assigned smis |
result = CompileRun("for (var i = 0; i < 8; i++) {" |
@@ -13763,14 +15229,14 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
"}" |
"sum;"); |
- CHECK_EQ(28, result->Int32Value()); |
+ CHECK_EQ(28, result->Int32Value(context).FromJust()); |
// Check pass through of assigned smis |
result = CompileRun("var sum = 0;" |
"for (var i = 0; i < 8; i++) {" |
" sum += ext_array[i] = ext_array[i] = -i;" |
"}" |
"sum;"); |
- CHECK_EQ(-28, result->Int32Value()); |
+ CHECK_EQ(-28, result->Int32Value(context).FromJust()); |
// Check assigned smis in reverse order |
@@ -13782,7 +15248,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" sum += ext_array[i];" |
"}" |
"sum;"); |
- CHECK_EQ(28, result->Int32Value()); |
+ CHECK_EQ(28, result->Int32Value(context).FromJust()); |
// Check pass through of assigned HeapNumbers |
result = CompileRun("var sum = 0;" |
@@ -13790,7 +15256,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" sum += ext_array[i] = ext_array[i] = (-i * 0.5);" |
"}" |
"sum;"); |
- CHECK_EQ(-28, result->Int32Value()); |
+ CHECK_EQ(-28, result->Int32Value(context).FromJust()); |
// Check assigned HeapNumbers |
result = CompileRun("for (var i = 0; i < 16; i+=2) {" |
@@ -13801,7 +15267,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" sum += ext_array[i];" |
"}" |
"sum;"); |
- CHECK_EQ(28, result->Int32Value()); |
+ CHECK_EQ(28, result->Int32Value(context).FromJust()); |
// Check assigned HeapNumbers in reverse order |
result = CompileRun("for (var i = 14; i >= 0; i-=2) {" |
@@ -13812,7 +15278,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" sum += ext_array[i];" |
"}" |
"sum;"); |
- CHECK_EQ(28, result->Int32Value()); |
+ CHECK_EQ(28, result->Int32Value(context).FromJust()); |
i::ScopedVector<char> test_buf(1024); |
@@ -13852,7 +15318,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
"sum;"); |
// Force GC to trigger verification. |
CcTest::heap()->CollectAllGarbage(); |
- CHECK_EQ(28, result->Int32Value()); |
+ CHECK_EQ(28, result->Int32Value(context).FromJust()); |
// Make sure out-of-range loads do not throw. |
i::SNPrintF(test_buf, |
@@ -13885,7 +15351,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" ext_array[7] = undefined;" |
"}" |
"ext_array[7];"); |
- CHECK_EQ(0, result->Int32Value()); |
+ CHECK_EQ(0, result->Int32Value(context).FromJust()); |
if (array_type == i::kExternalFloat64Array || |
array_type == i::kExternalFloat32Array) { |
CHECK(std::isnan( |
@@ -13898,7 +15364,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" ext_array[6] = '2.3';" |
"}" |
"ext_array[6];"); |
- CHECK_EQ(2, result->Int32Value()); |
+ CHECK_EQ(2, result->Int32Value(context).FromJust()); |
CHECK_EQ(2, |
static_cast<int>( |
i::Object::GetElement( |
@@ -13915,7 +15381,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" ext_array[i] = NaN;" |
"}" |
"ext_array[5];"); |
- CHECK_EQ(0, result->Int32Value()); |
+ CHECK_EQ(0, result->Int32Value(context).FromJust()); |
CheckElementValue(isolate, 0, jsobj, 5); |
result = CompileRun("for (var i = 0; i < 8; i++) {" |
@@ -13927,7 +15393,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
"ext_array[5];"); |
int expected_value = |
(array_type == i::kExternalUint8ClampedArray) ? 255 : 0; |
- CHECK_EQ(expected_value, result->Int32Value()); |
+ CHECK_EQ(expected_value, result->Int32Value(context).FromJust()); |
CheckElementValue(isolate, expected_value, jsobj, 5); |
result = CompileRun("for (var i = 0; i < 8; i++) {" |
@@ -13937,7 +15403,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" ext_array[i] = -Infinity;" |
"}" |
"ext_array[5];"); |
- CHECK_EQ(0, result->Int32Value()); |
+ CHECK_EQ(0, result->Int32Value(context).FromJust()); |
CheckElementValue(isolate, 0, jsobj, 5); |
// Check truncation behavior of integral arrays. |
@@ -13992,7 +15458,7 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" sum=ee_op_test_complex_func(sum);" |
"}" |
"sum;"); |
- CHECK_EQ(16000000, result->Int32Value()); |
+ CHECK_EQ(16000000, result->Int32Value(context).FromJust()); |
// Test count operations |
result = CompileRun("function ee_op_test_count_func(sum) {" |
@@ -14007,34 +15473,43 @@ static void ObjectWithExternalArrayTestHelper(Handle<Context> context, |
" sum=ee_op_test_count_func(sum);" |
"}" |
"sum;"); |
- CHECK_EQ(16000000, result->Int32Value()); |
+ CHECK_EQ(16000000, result->Int32Value(context).FromJust()); |
result = CompileRun("ext_array[3] = 33;" |
"delete ext_array[3];" |
"ext_array[3];"); |
- CHECK_EQ(33, result->Int32Value()); |
+ CHECK_EQ(33, result->Int32Value(context).FromJust()); |
result = CompileRun("ext_array[0] = 10; ext_array[1] = 11;" |
"ext_array[2] = 12; ext_array[3] = 13;" |
"ext_array.__defineGetter__('2'," |
"function() { return 120; });" |
"ext_array[2];"); |
- CHECK_EQ(12, result->Int32Value()); |
+ CHECK_EQ(12, result->Int32Value(context).FromJust()); |
result = CompileRun("var js_array = new Array(40);" |
"js_array[0] = 77;" |
"js_array;"); |
- CHECK_EQ(77, v8::Object::Cast(*result)->Get(v8_str("0"))->Int32Value()); |
+ CHECK_EQ(77, v8::Object::Cast(*result) |
+ ->Get(v8_str("0")) |
+ ->Int32Value(context) |
+ .FromJust()); |
result = CompileRun("ext_array[1] = 23;" |
"ext_array.__proto__ = [];" |
"js_array.__proto__ = ext_array;" |
"js_array.concat(ext_array);"); |
- CHECK_EQ(77, v8::Object::Cast(*result)->Get(v8_str("0"))->Int32Value()); |
- CHECK_EQ(23, v8::Object::Cast(*result)->Get(v8_str("1"))->Int32Value()); |
+ CHECK_EQ(77, v8::Object::Cast(*result) |
+ ->Get(v8_str("0")) |
+ ->Int32Value(context) |
+ .FromJust()); |
+ CHECK_EQ(23, v8::Object::Cast(*result) |
+ ->Get(v8_str("1")) |
+ ->Int32Value(context) |
+ .FromJust()); |
result = CompileRun("ext_array[1] = 23;"); |
- CHECK_EQ(23, result->Int32Value()); |
+ CHECK_EQ(23, result->Int32Value(context).FromJust()); |
} |
@@ -14065,7 +15540,7 @@ static void FixedTypedArrayTestHelper(i::ExternalArrayType array_type, |
CHECK_EQ(static_cast<int64_t>(static_cast<ElementType>(i)), |
static_cast<int64_t>(fixed_array->get_scalar(i))); |
} |
- v8::Handle<v8::Object> obj = v8::Utils::ToLocal(jsobj); |
+ v8::Local<v8::Object> obj = v8::Utils::ToLocal(jsobj); |
ObjectWithExternalArrayTestHelper<FixedTypedArrayClass, ElementType>( |
context.local(), obj, kElementCount, array_type, |
@@ -14378,18 +15853,18 @@ THREADED_TEST(SharedDataView) { |
} |
-#define IS_ARRAY_BUFFER_VIEW_TEST(View) \ |
- THREADED_TEST(Is##View) { \ |
- LocalContext env; \ |
- v8::Isolate* isolate = env->GetIsolate(); \ |
- v8::HandleScope handle_scope(isolate); \ |
- \ |
- Handle<Value> result = CompileRun( \ |
- "var ab = new ArrayBuffer(128);" \ |
- "new " #View "(ab)"); \ |
- CHECK(result->IsArrayBufferView()); \ |
- CHECK(result->Is##View()); \ |
- CheckInternalFieldsAreZero<v8::ArrayBufferView>(result.As<v8::View>()); \ |
+#define IS_ARRAY_BUFFER_VIEW_TEST(View) \ |
+ THREADED_TEST(Is##View) { \ |
+ LocalContext env; \ |
+ v8::Isolate* isolate = env->GetIsolate(); \ |
+ v8::HandleScope handle_scope(isolate); \ |
+ \ |
+ Local<Value> result = CompileRun( \ |
+ "var ab = new ArrayBuffer(128);" \ |
+ "new " #View "(ab)"); \ |
+ CHECK(result->IsArrayBufferView()); \ |
+ CHECK(result->Is##View()); \ |
+ CheckInternalFieldsAreZero<v8::ArrayBufferView>(result.As<v8::View>()); \ |
} |
IS_ARRAY_BUFFER_VIEW_TEST(Uint8Array) |
@@ -14411,20 +15886,30 @@ THREADED_TEST(ScriptContextDependence) { |
LocalContext c1; |
v8::HandleScope scope(c1->GetIsolate()); |
const char *source = "foo"; |
- v8::Handle<v8::Script> dep = v8_compile(source); |
- v8::ScriptCompiler::Source script_source(v8::String::NewFromUtf8( |
- c1->GetIsolate(), source)); |
- v8::Handle<v8::UnboundScript> indep = |
+ v8::Local<v8::Script> dep = v8_compile(source); |
+ v8::ScriptCompiler::Source script_source( |
+ v8::String::NewFromUtf8(c1->GetIsolate(), source, |
+ 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"), |
+ c1->Global()->Set(v8::String::NewFromUtf8(c1->GetIsolate(), "foo", |
+ v8::NewStringType::kNormal) |
+ .ToLocalChecked(), |
v8::Integer::New(c1->GetIsolate(), 100)); |
- CHECK_EQ(dep->Run()->Int32Value(), 100); |
- CHECK_EQ(indep->BindToCurrentContext()->Run()->Int32Value(), 100); |
+ CHECK_EQ(dep->Run()->Int32Value(c1.local()).FromJust(), 100); |
+ CHECK_EQ( |
+ indep->BindToCurrentContext()->Run()->Int32Value(c1.local()).FromJust(), |
+ 100); |
LocalContext c2; |
- c2->Global()->Set(v8::String::NewFromUtf8(c2->GetIsolate(), "foo"), |
+ c2->Global()->Set(v8::String::NewFromUtf8(c2->GetIsolate(), "foo", |
+ v8::NewStringType::kNormal) |
+ .ToLocalChecked(), |
v8::Integer::New(c2->GetIsolate(), 101)); |
- CHECK_EQ(dep->Run()->Int32Value(), 100); |
- CHECK_EQ(indep->BindToCurrentContext()->Run()->Int32Value(), 101); |
+ CHECK_EQ(dep->Run()->Int32Value(c2.local()).FromJust(), 100); |
+ CHECK_EQ( |
+ indep->BindToCurrentContext()->Run()->Int32Value(c2.local()).FromJust(), |
+ 101); |
} |
@@ -14433,10 +15918,8 @@ THREADED_TEST(StackTrace) { |
v8::HandleScope scope(context->GetIsolate()); |
v8::TryCatch try_catch(context->GetIsolate()); |
const char *source = "function foo() { FAIL.FAIL; }; foo();"; |
- v8::Handle<v8::String> src = |
- v8::String::NewFromUtf8(context->GetIsolate(), source); |
- v8::Handle<v8::String> origin = |
- v8::String::NewFromUtf8(context->GetIsolate(), "stack-trace-test"); |
+ 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() |
@@ -14449,9 +15932,9 @@ THREADED_TEST(StackTrace) { |
// Checks that a StackFrame has certain expected values. |
void checkStackFrame(const char* expected_script_name, |
- const char* expected_func_name, int expected_line_number, |
- int expected_column, bool is_eval, bool is_constructor, |
- v8::Handle<v8::StackFrame> frame) { |
+ const char* expected_func_name, int expected_line_number, |
+ int expected_column, bool is_eval, bool is_constructor, |
+ v8::Local<v8::StackFrame> frame) { |
v8::HandleScope scope(CcTest::isolate()); |
v8::String::Utf8Value func_name(frame->GetFunctionName()); |
v8::String::Utf8Value script_name(frame->GetScriptName()); |
@@ -14482,9 +15965,10 @@ void AnalyzeStackInNativeCode(const v8::FunctionCallbackInfo<v8::Value>& args) { |
DCHECK(args.Length() == 1); |
- int testGroup = args[0]->Int32Value(); |
+ v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext(); |
+ int testGroup = args[0]->Int32Value(context).FromJust(); |
if (testGroup == kOverviewTest) { |
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
args.GetIsolate(), 10, v8::StackTrace::kOverview); |
CHECK_EQ(4, stackTrace->GetFrameCount()); |
checkStackFrame(origin, "bar", 2, 10, false, false, |
@@ -14498,7 +15982,7 @@ void AnalyzeStackInNativeCode(const v8::FunctionCallbackInfo<v8::Value>& args) { |
CHECK(stackTrace->AsArray()->IsArray()); |
} else if (testGroup == kDetailedTest) { |
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
args.GetIsolate(), 10, v8::StackTrace::kDetailed); |
CHECK_EQ(4, stackTrace->GetFrameCount()); |
checkStackFrame(origin, "bat", 4, 22, false, false, |
@@ -14551,8 +16035,7 @@ void AnalyzeStackInNativeCode(const v8::FunctionCallbackInfo<v8::Value>& args) { |
TEST(CaptureStackTrace) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::String> origin = |
- v8::String::NewFromUtf8(isolate, "capture-stack-trace-test"); |
+ v8::Local<v8::String> origin = v8_str("capture-stack-trace-test"); |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->Set(v8_str("AnalyzeStackInNativeCode"), |
v8::FunctionTemplate::New(isolate, AnalyzeStackInNativeCode)); |
@@ -14569,11 +16052,10 @@ TEST(CaptureStackTrace) { |
" bar();\n" |
"}\n" |
"var x;eval('new foo();');"; |
- v8::Handle<v8::String> overview_src = |
- v8::String::NewFromUtf8(isolate, overview_source); |
+ v8::Local<v8::String> overview_src = v8_str(overview_source); |
v8::ScriptCompiler::Source script_source(overview_src, |
v8::ScriptOrigin(origin)); |
- v8::Handle<Value> overview_result( |
+ v8::Local<Value> overview_result( |
v8::ScriptCompiler::CompileUnbound(isolate, &script_source) |
->BindToCurrentContext() |
->Run()); |
@@ -14589,16 +16071,15 @@ TEST(CaptureStackTrace) { |
" bat();\n" |
"}\n" |
"eval('new baz();');"; |
- v8::Handle<v8::String> detailed_src = |
- v8::String::NewFromUtf8(isolate, detailed_source); |
+ v8::Local<v8::String> detailed_src = v8_str(detailed_source); |
// Make the script using a non-zero line and column offset. |
- v8::Handle<v8::Integer> line_offset = v8::Integer::New(isolate, 3); |
- v8::Handle<v8::Integer> column_offset = v8::Integer::New(isolate, 5); |
+ v8::Local<v8::Integer> line_offset = v8::Integer::New(isolate, 3); |
+ v8::Local<v8::Integer> column_offset = v8::Integer::New(isolate, 5); |
v8::ScriptOrigin detailed_origin(origin, line_offset, column_offset); |
v8::ScriptCompiler::Source script_source2(detailed_src, detailed_origin); |
- v8::Handle<v8::UnboundScript> detailed_script( |
+ v8::Local<v8::UnboundScript> detailed_script( |
v8::ScriptCompiler::CompileUnbound(isolate, &script_source2)); |
- v8::Handle<Value> detailed_result( |
+ v8::Local<Value> detailed_result( |
detailed_script->BindToCurrentContext()->Run()); |
CHECK(!detailed_result.IsEmpty()); |
CHECK(detailed_result->IsObject()); |
@@ -14633,10 +16114,9 @@ TEST(CaptureStackTrace) { |
static void StackTraceForUncaughtExceptionListener( |
- v8::Handle<v8::Message> message, |
- v8::Handle<Value>) { |
+ v8::Local<v8::Message> message, v8::Local<Value>) { |
report_count++; |
- v8::Handle<v8::StackTrace> stack_trace = message->GetStackTrace(); |
+ v8::Local<v8::StackTrace> stack_trace = message->GetStackTrace(); |
CHECK_EQ(2, stack_trace->GetFrameCount()); |
checkStackFrame("origin", "foo", 2, 3, false, false, |
stack_trace->GetFrame(0)); |
@@ -14721,9 +16201,9 @@ TEST(CaptureStackTraceForUncaughtExceptionAndSetters) { |
} |
-static void StackTraceFunctionNameListener(v8::Handle<v8::Message> message, |
- v8::Handle<Value>) { |
- v8::Handle<v8::StackTrace> stack_trace = message->GetStackTrace(); |
+static void StackTraceFunctionNameListener(v8::Local<v8::Message> message, |
+ v8::Local<Value>) { |
+ v8::Local<v8::StackTrace> stack_trace = message->GetStackTrace(); |
CHECK_EQ(5, stack_trace->GetFrameCount()); |
checkStackFrame("origin", "foo:0", 4, 7, false, false, |
stack_trace->GetFrame(0)); |
@@ -14769,10 +16249,10 @@ TEST(GetStackTraceContainsFunctionsWithFunctionName) { |
} |
-static void RethrowStackTraceHandler(v8::Handle<v8::Message> message, |
- v8::Handle<v8::Value> data) { |
+static void RethrowStackTraceHandler(v8::Local<v8::Message> message, |
+ v8::Local<v8::Value> data) { |
// Use the frame where JavaScript is called from. |
- v8::Handle<v8::StackTrace> stack_trace = message->GetStackTrace(); |
+ v8::Local<v8::StackTrace> stack_trace = message->GetStackTrace(); |
CHECK(!stack_trace.IsEmpty()); |
int frame_count = stack_trace->GetFrameCount(); |
CHECK_EQ(3, frame_count); |
@@ -14813,9 +16293,9 @@ TEST(RethrowStackTrace) { |
} |
-static void RethrowPrimitiveStackTraceHandler(v8::Handle<v8::Message> message, |
- v8::Handle<v8::Value> data) { |
- v8::Handle<v8::StackTrace> stack_trace = message->GetStackTrace(); |
+static void RethrowPrimitiveStackTraceHandler(v8::Local<v8::Message> message, |
+ v8::Local<v8::Value> data) { |
+ v8::Local<v8::StackTrace> stack_trace = message->GetStackTrace(); |
CHECK(!stack_trace.IsEmpty()); |
int frame_count = stack_trace->GetFrameCount(); |
CHECK_EQ(2, frame_count); |
@@ -14849,10 +16329,10 @@ TEST(RethrowPrimitiveStackTrace) { |
} |
-static void RethrowExistingStackTraceHandler(v8::Handle<v8::Message> message, |
- v8::Handle<v8::Value> data) { |
+static void RethrowExistingStackTraceHandler(v8::Local<v8::Message> message, |
+ v8::Local<v8::Value> data) { |
// Use the frame where JavaScript is called from. |
- v8::Handle<v8::StackTrace> stack_trace = message->GetStackTrace(); |
+ v8::Local<v8::StackTrace> stack_trace = message->GetStackTrace(); |
CHECK(!stack_trace.IsEmpty()); |
CHECK_EQ(1, stack_trace->GetFrameCount()); |
CHECK_EQ(1, stack_trace->GetFrame(0)->GetLineNumber()); |
@@ -14875,10 +16355,10 @@ TEST(RethrowExistingStackTrace) { |
} |
-static void RethrowBogusErrorStackTraceHandler(v8::Handle<v8::Message> message, |
- v8::Handle<v8::Value> data) { |
+static void RethrowBogusErrorStackTraceHandler(v8::Local<v8::Message> message, |
+ v8::Local<v8::Value> data) { |
// Use the frame where JavaScript is called from. |
- v8::Handle<v8::StackTrace> stack_trace = message->GetStackTrace(); |
+ v8::Local<v8::StackTrace> stack_trace = message->GetStackTrace(); |
CHECK(!stack_trace.IsEmpty()); |
CHECK_EQ(1, stack_trace->GetFrameCount()); |
CHECK_EQ(2, stack_trace->GetFrame(0)->GetLineNumber()); |
@@ -14914,9 +16394,9 @@ void PromiseRejectCallback(v8::PromiseRejectMessage reject_message) { |
promise_reject_counter++; |
CcTest::global()->Set(v8_str("rejected"), reject_message.GetPromise()); |
CcTest::global()->Set(v8_str("value"), reject_message.GetValue()); |
- v8::Handle<v8::Message> message = v8::Exception::CreateMessage( |
+ v8::Local<v8::Message> message = v8::Exception::CreateMessage( |
CcTest::isolate(), reject_message.GetValue()); |
- v8::Handle<v8::StackTrace> stack_trace = message->GetStackTrace(); |
+ v8::Local<v8::StackTrace> stack_trace = message->GetStackTrace(); |
promise_reject_msg_line_number = message->GetLineNumber(); |
promise_reject_msg_column_number = message->GetStartColumn() + 1; |
@@ -14940,12 +16420,12 @@ void PromiseRejectCallback(v8::PromiseRejectMessage reject_message) { |
} |
-v8::Handle<v8::Promise> GetPromise(const char* name) { |
- return v8::Handle<v8::Promise>::Cast(CcTest::global()->Get(v8_str(name))); |
+v8::Local<v8::Promise> GetPromise(const char* name) { |
+ return v8::Local<v8::Promise>::Cast(CcTest::global()->Get(v8_str(name))); |
} |
-v8::Handle<v8::Value> RejectValue() { |
+v8::Local<v8::Value> RejectValue() { |
return CcTest::global()->Get(v8_str("value")); |
} |
@@ -15284,12 +16764,12 @@ TEST(PromiseRejectCallback) { |
void AnalyzeStackOfEvalWithSourceURL( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
v8::HandleScope scope(args.GetIsolate()); |
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
args.GetIsolate(), 10, v8::StackTrace::kDetailed); |
CHECK_EQ(5, stackTrace->GetFrameCount()); |
- v8::Handle<v8::String> url = v8_str("eval_url"); |
+ v8::Local<v8::String> url = v8_str("eval_url"); |
for (int i = 0; i < 3; i++) { |
- v8::Handle<v8::String> name = |
+ v8::Local<v8::String> name = |
stackTrace->GetFrame(i)->GetScriptNameOrSourceURL(); |
CHECK(!name.IsEmpty()); |
CHECK(url->Equals(name)); |
@@ -15332,7 +16812,7 @@ static int scriptIdInStack[2]; |
void AnalyzeScriptIdInStack( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
v8::HandleScope scope(args.GetIsolate()); |
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
args.GetIsolate(), 10, v8::StackTrace::kScriptId); |
CHECK_EQ(2, stackTrace->GetFrameCount()); |
for (int i = 0; i < 2; i++) { |
@@ -15349,12 +16829,11 @@ TEST(ScriptIdInStackTrace) { |
v8::FunctionTemplate::New(isolate, AnalyzeScriptIdInStack)); |
LocalContext context(0, templ); |
- v8::Handle<v8::String> scriptSource = v8::String::NewFromUtf8( |
- isolate, |
- "function foo() {\n" |
- " AnalyzeScriptIdInStack();" |
- "}\n" |
- "foo();\n"); |
+ v8::Local<v8::String> scriptSource = v8_str( |
+ "function foo() {\n" |
+ " AnalyzeScriptIdInStack();" |
+ "}\n" |
+ "foo();\n"); |
v8::Local<v8::Script> script = CompileWithOrigin(scriptSource, "test"); |
script->Run(); |
for (int i = 0; i < 2; i++) { |
@@ -15367,12 +16846,12 @@ TEST(ScriptIdInStackTrace) { |
void AnalyzeStackOfInlineScriptWithSourceURL( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
v8::HandleScope scope(args.GetIsolate()); |
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
args.GetIsolate(), 10, v8::StackTrace::kDetailed); |
CHECK_EQ(4, stackTrace->GetFrameCount()); |
- v8::Handle<v8::String> url = v8_str("source_url"); |
+ v8::Local<v8::String> url = v8_str("source_url"); |
for (int i = 0; i < 3; i++) { |
- v8::Handle<v8::String> name = |
+ v8::Local<v8::String> name = |
stackTrace->GetFrame(i)->GetScriptNameOrSourceURL(); |
CHECK(!name.IsEmpty()); |
CHECK(url->Equals(name)); |
@@ -15413,12 +16892,12 @@ TEST(InlineScriptWithSourceURLInStackTrace) { |
void AnalyzeStackOfDynamicScriptWithSourceURL( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
v8::HandleScope scope(args.GetIsolate()); |
- v8::Handle<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
+ v8::Local<v8::StackTrace> stackTrace = v8::StackTrace::CurrentStackTrace( |
args.GetIsolate(), 10, v8::StackTrace::kDetailed); |
CHECK_EQ(4, stackTrace->GetFrameCount()); |
- v8::Handle<v8::String> url = v8_str("source_url"); |
+ v8::Local<v8::String> url = v8_str("source_url"); |
for (int i = 0; i < 3; i++) { |
- v8::Handle<v8::String> name = |
+ v8::Local<v8::String> name = |
stackTrace->GetFrame(i)->GetScriptNameOrSourceURL(); |
CHECK(!name.IsEmpty()); |
CHECK(url->Equals(name)); |
@@ -15497,8 +16976,7 @@ TEST(EvalWithSourceURLInMessageScriptResourceNameOrSourceURL) { |
CHECK(try_catch.HasCaught()); |
Local<v8::Message> message = try_catch.Message(); |
- Handle<Value> sourceURL = |
- message->GetScriptOrigin().ResourceName(); |
+ Local<Value> sourceURL = message->GetScriptOrigin().ResourceName(); |
CHECK_EQ(0, strcmp(*v8::String::Utf8Value(sourceURL), "source_url")); |
} |
@@ -15521,8 +16999,7 @@ TEST(RecursionWithSourceURLInMessageScriptResourceNameOrSourceURL) { |
CHECK(try_catch.HasCaught()); |
Local<v8::Message> message = try_catch.Message(); |
- Handle<Value> sourceURL = |
- message->GetScriptOrigin().ResourceName(); |
+ Local<Value> sourceURL = message->GetScriptOrigin().ResourceName(); |
CHECK_EQ(0, strcmp(*v8::String::Utf8Value(sourceURL), "source_url")); |
} |
@@ -15612,8 +17089,10 @@ TEST(SetStackLimit) { |
v8::HandleScope scope(env->GetIsolate()); |
Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(env->GetIsolate(), GetStackLimitCallback); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("get_stack_limit"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("get_stack_limit"), fun) |
+ .FromJust()); |
CompileRun("get_stack_limit();"); |
CHECK(stack_limit == set_limit); |
@@ -15634,8 +17113,10 @@ TEST(SetStackLimitInThread) { |
LocalContext env; |
Local<v8::FunctionTemplate> fun_templ = |
v8::FunctionTemplate::New(CcTest::isolate(), GetStackLimitCallback); |
- Local<Function> fun = fun_templ->GetFunction(); |
- env->Global()->Set(v8_str("get_stack_limit"), fun); |
+ Local<Function> fun = fun_templ->GetFunction(env.local()).ToLocalChecked(); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("get_stack_limit"), fun) |
+ .FromJust()); |
CompileRun("get_stack_limit();"); |
CHECK(stack_limit == set_limit); |
@@ -15668,7 +17149,7 @@ class VisitorImpl : public v8::ExternalResourceVisitor { |
} |
} |
virtual ~VisitorImpl() {} |
- virtual void VisitExternalString(v8::Handle<v8::String> string) { |
+ virtual void VisitExternalString(v8::Local<v8::String> string) { |
if (!string->IsExternal()) { |
CHECK(string->IsExternalOneByte()); |
return; |
@@ -15755,8 +17236,10 @@ TEST(VisitExternalStrings) { |
// Externalized symbol. |
resource[2] = new TestResource(two_byte_string, NULL, false); |
- v8::Local<v8::String> string2 = v8::String::NewFromUtf8( |
- env->GetIsolate(), string, v8::String::kInternalizedString); |
+ v8::Local<v8::String> string2 = |
+ v8::String::NewFromUtf8(env->GetIsolate(), string, |
+ v8::NewStringType::kInternalized) |
+ .ToLocalChecked(); |
CHECK(string2->MakeExternal(resource[2])); |
// Symbolized External. |
@@ -15932,7 +17415,7 @@ THREADED_TEST(QuietSignalingNaNs) { |
double test_value = test_values[i]; |
// Check that Number::New preserves non-NaNs and quiets SNaNs. |
- v8::Handle<v8::Value> number = v8::Number::New(isolate, test_value); |
+ v8::Local<v8::Value> number = v8::Number::New(isolate, test_value); |
double stored_number = number->NumberValue(); |
if (!std::isnan(test_value)) { |
CHECK_EQ(test_value, stored_number); |
@@ -15952,8 +17435,7 @@ THREADED_TEST(QuietSignalingNaNs) { |
// Check that Date::New preserves non-NaNs in the date range and |
// quiets SNaNs. |
- v8::Handle<v8::Value> date = |
- v8::Date::New(isolate, test_value); |
+ v8::Local<v8::Value> date = v8::Date::New(isolate, test_value); |
double expected_stored_date = DoubleToDateTime(test_value); |
double stored_date = date->NumberValue(); |
if (!std::isnan(expected_stored_date)) { |
@@ -15979,7 +17461,7 @@ static void SpaghettiIncident( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
v8::HandleScope scope(args.GetIsolate()); |
v8::TryCatch tc(args.GetIsolate()); |
- v8::Handle<v8::String> str(args[0]->ToString(args.GetIsolate())); |
+ v8::Local<v8::String> str(args[0]->ToString(args.GetIsolate())); |
USE(str); |
if (tc.HasCaught()) |
tc.ReThrow(); |
@@ -15992,9 +17474,10 @@ THREADED_TEST(SpaghettiStackReThrow) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
LocalContext context; |
- context->Global()->Set( |
- v8::String::NewFromUtf8(isolate, "s"), |
- v8::FunctionTemplate::New(isolate, SpaghettiIncident)->GetFunction()); |
+ context->Global()->Set(v8_str("s"), |
+ v8::FunctionTemplate::New(isolate, SpaghettiIncident) |
+ ->GetFunction(context.local()) |
+ .ToLocalChecked()); |
v8::TryCatch try_catch(isolate); |
CompileRun( |
"var i = 0;" |
@@ -16035,7 +17518,7 @@ TEST(Regress528) { |
v8::Local<Context> context = Context::New(isolate); |
context->Enter(); |
- Local<v8::String> obj = v8::String::NewFromUtf8(isolate, ""); |
+ Local<v8::String> obj = v8_str(""); |
context->SetEmbedderData(0, obj); |
CompileRun(source_simple); |
context->Exit(); |
@@ -16084,7 +17567,7 @@ TEST(Regress528) { |
v8::TryCatch try_catch(isolate); |
CompileRun(source_exception); |
CHECK(try_catch.HasCaught()); |
- v8::Handle<v8::Message> message = try_catch.Message(); |
+ v8::Local<v8::Message> message = try_catch.Message(); |
CHECK(!message.IsEmpty()); |
CHECK_EQ(1, message->GetLineNumber()); |
context->Exit(); |
@@ -16108,24 +17591,23 @@ THREADED_TEST(ScriptOrigin) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
v8::ScriptOrigin origin = v8::ScriptOrigin( |
- v8::String::NewFromUtf8(env->GetIsolate(), "test"), |
- v8::Integer::New(env->GetIsolate(), 1), |
+ v8_str("test"), v8::Integer::New(env->GetIsolate(), 1), |
v8::Integer::New(env->GetIsolate(), 1), v8::True(env->GetIsolate()), |
- v8::Handle<v8::Integer>(), v8::True(env->GetIsolate()), |
- v8::String::NewFromUtf8(env->GetIsolate(), "http://sourceMapUrl"), |
- v8::True(env->GetIsolate())); |
- v8::Handle<v8::String> script = v8::String::NewFromUtf8( |
- env->GetIsolate(), "function f() {}\n\nfunction g() {}"); |
+ v8::Local<v8::Integer>(), v8::True(env->GetIsolate()), |
+ v8_str("http://sourceMapUrl"), v8::True(env->GetIsolate())); |
+ v8::Local<v8::String> script = v8_str("function f() {}\n\nfunction g() {}"); |
v8::Script::Compile(script, &origin)->Run(); |
- v8::Local<v8::Function> f = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f"))); |
- v8::Local<v8::Function> g = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "g"))); |
+ v8::Local<v8::Function> f = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("f"))); |
+ v8::Local<v8::Function> g = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("g"))); |
v8::ScriptOrigin script_origin_f = f->GetScriptOrigin(); |
CHECK_EQ(0, strcmp("test", |
*v8::String::Utf8Value(script_origin_f.ResourceName()))); |
- CHECK_EQ(1, script_origin_f.ResourceLineOffset()->Int32Value()); |
+ CHECK_EQ( |
+ 1, |
+ script_origin_f.ResourceLineOffset()->Int32Value(env.local()).FromJust()); |
CHECK(script_origin_f.Options().IsSharedCrossOrigin()); |
CHECK(script_origin_f.Options().IsEmbedderDebugScript()); |
CHECK(script_origin_f.Options().IsOpaque()); |
@@ -16137,7 +17619,9 @@ THREADED_TEST(ScriptOrigin) { |
v8::ScriptOrigin script_origin_g = g->GetScriptOrigin(); |
CHECK_EQ(0, strcmp("test", |
*v8::String::Utf8Value(script_origin_g.ResourceName()))); |
- CHECK_EQ(1, script_origin_g.ResourceLineOffset()->Int32Value()); |
+ CHECK_EQ( |
+ 1, |
+ script_origin_g.ResourceLineOffset()->Int32Value(env.local()).FromJust()); |
CHECK(script_origin_g.Options().IsSharedCrossOrigin()); |
CHECK(script_origin_g.Options().IsEmbedderDebugScript()); |
CHECK(script_origin_g.Options().IsOpaque()); |
@@ -16149,14 +17633,12 @@ THREADED_TEST(ScriptOrigin) { |
THREADED_TEST(FunctionGetInferredName) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::ScriptOrigin origin = |
- v8::ScriptOrigin(v8::String::NewFromUtf8(env->GetIsolate(), "test")); |
- v8::Handle<v8::String> script = v8::String::NewFromUtf8( |
- env->GetIsolate(), |
- "var foo = { bar : { baz : function() {}}}; var f = foo.bar.baz;"); |
+ v8::ScriptOrigin origin = v8::ScriptOrigin(v8_str("test")); |
+ v8::Local<v8::String> script = |
+ v8_str("var foo = { bar : { baz : function() {}}}; var f = foo.bar.baz;"); |
v8::Script::Compile(script, &origin)->Run(); |
- v8::Local<v8::Function> f = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f"))); |
+ v8::Local<v8::Function> f = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("f"))); |
CHECK_EQ(0, |
strcmp("foo.bar.baz", *v8::String::Utf8Value(f->GetInferredName()))); |
} |
@@ -16270,26 +17752,23 @@ THREADED_TEST(FunctionGetDisplayName) { |
"var g = function() {" |
" arguments.callee.displayName = 'set_in_runtime';" |
"}; g();"; |
- v8::ScriptOrigin origin = |
- v8::ScriptOrigin(v8::String::NewFromUtf8(env->GetIsolate(), "test")); |
- v8::Script::Compile(v8::String::NewFromUtf8(env->GetIsolate(), code), &origin) |
- ->Run(); |
- v8::Local<v8::Value> error = |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "error")); |
- v8::Local<v8::Function> a = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "a"))); |
- v8::Local<v8::Function> b = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "b"))); |
- v8::Local<v8::Function> c = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "c"))); |
- v8::Local<v8::Function> d = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "d"))); |
- v8::Local<v8::Function> e = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "e"))); |
- v8::Local<v8::Function> f = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f"))); |
- v8::Local<v8::Function> g = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "g"))); |
+ v8::ScriptOrigin origin = v8::ScriptOrigin(v8_str("test")); |
+ v8::Script::Compile(v8_str(code), &origin)->Run(); |
+ v8::Local<v8::Value> error = env->Global()->Get(v8_str("error")); |
+ v8::Local<v8::Function> a = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("a"))); |
+ v8::Local<v8::Function> b = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("b"))); |
+ v8::Local<v8::Function> c = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("c"))); |
+ v8::Local<v8::Function> d = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("d"))); |
+ v8::Local<v8::Function> e = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("e"))); |
+ v8::Local<v8::Function> f = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("f"))); |
+ v8::Local<v8::Function> g = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("g"))); |
CHECK_EQ(false, error->BooleanValue()); |
CHECK_EQ(0, strcmp("display_a", *v8::String::Utf8Value(a->GetDisplayName()))); |
CHECK_EQ(0, strcmp("display_b", *v8::String::Utf8Value(b->GetDisplayName()))); |
@@ -16305,15 +17784,13 @@ THREADED_TEST(FunctionGetDisplayName) { |
THREADED_TEST(ScriptLineNumber) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::ScriptOrigin origin = |
- v8::ScriptOrigin(v8::String::NewFromUtf8(env->GetIsolate(), "test")); |
- v8::Handle<v8::String> script = v8::String::NewFromUtf8( |
- env->GetIsolate(), "function f() {}\n\nfunction g() {}"); |
+ v8::ScriptOrigin origin = v8::ScriptOrigin(v8_str("test")); |
+ v8::Local<v8::String> script = v8_str("function f() {}\n\nfunction g() {}"); |
v8::Script::Compile(script, &origin)->Run(); |
- v8::Local<v8::Function> f = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f"))); |
- v8::Local<v8::Function> g = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "g"))); |
+ v8::Local<v8::Function> f = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("f"))); |
+ v8::Local<v8::Function> g = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("g"))); |
CHECK_EQ(0, f->GetScriptLineNumber()); |
CHECK_EQ(2, g->GetScriptLineNumber()); |
} |
@@ -16324,16 +17801,15 @@ THREADED_TEST(ScriptColumnNumber) { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
v8::ScriptOrigin origin = |
- v8::ScriptOrigin(v8::String::NewFromUtf8(isolate, "test"), |
- v8::Integer::New(isolate, 3), |
+ v8::ScriptOrigin(v8_str("test"), v8::Integer::New(isolate, 3), |
v8::Integer::New(isolate, 2)); |
- v8::Handle<v8::String> script = v8::String::NewFromUtf8( |
- isolate, "function foo() {}\n\n function bar() {}"); |
+ v8::Local<v8::String> script = |
+ v8_str("function foo() {}\n\n function bar() {}"); |
v8::Script::Compile(script, &origin)->Run(); |
- v8::Local<v8::Function> foo = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(isolate, "foo"))); |
- v8::Local<v8::Function> bar = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(isolate, "bar"))); |
+ v8::Local<v8::Function> foo = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("foo"))); |
+ v8::Local<v8::Function> bar = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("bar"))); |
CHECK_EQ(14, foo->GetScriptColumnNumber()); |
CHECK_EQ(17, bar->GetScriptColumnNumber()); |
} |
@@ -16362,17 +17838,16 @@ THREADED_TEST(FunctionGetScriptId) { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
v8::ScriptOrigin origin = |
- v8::ScriptOrigin(v8::String::NewFromUtf8(isolate, "test"), |
- v8::Integer::New(isolate, 3), |
+ v8::ScriptOrigin(v8_str("test"), v8::Integer::New(isolate, 3), |
v8::Integer::New(isolate, 2)); |
- v8::Handle<v8::String> scriptSource = v8::String::NewFromUtf8( |
- isolate, "function foo() {}\n\n function bar() {}"); |
+ v8::Local<v8::String> scriptSource = |
+ v8_str("function foo() {}\n\n function bar() {}"); |
v8::Local<v8::Script> script(v8::Script::Compile(scriptSource, &origin)); |
script->Run(); |
- v8::Local<v8::Function> foo = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(isolate, "foo"))); |
- v8::Local<v8::Function> bar = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(isolate, "bar"))); |
+ v8::Local<v8::Function> foo = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("foo"))); |
+ v8::Local<v8::Function> bar = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("bar"))); |
CHECK_EQ(script->GetUnboundScript()->GetId(), foo->ScriptId()); |
CHECK_EQ(script->GetUnboundScript()->GetId(), bar->ScriptId()); |
} |
@@ -16381,20 +17856,18 @@ THREADED_TEST(FunctionGetScriptId) { |
THREADED_TEST(FunctionGetBoundFunction) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::ScriptOrigin origin = v8::ScriptOrigin(v8::String::NewFromUtf8( |
- env->GetIsolate(), "test")); |
- v8::Handle<v8::String> script = v8::String::NewFromUtf8( |
- env->GetIsolate(), |
+ v8::ScriptOrigin origin = v8::ScriptOrigin(v8_str("test")); |
+ v8::Local<v8::String> script = v8_str( |
"var a = new Object();\n" |
"a.x = 1;\n" |
"function f () { return this.x };\n" |
"var g = f.bind(a);\n" |
"var b = g();"); |
v8::Script::Compile(script, &origin)->Run(); |
- v8::Local<v8::Function> f = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "f"))); |
- v8::Local<v8::Function> g = v8::Local<v8::Function>::Cast( |
- env->Global()->Get(v8::String::NewFromUtf8(env->GetIsolate(), "g"))); |
+ v8::Local<v8::Function> f = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("f"))); |
+ v8::Local<v8::Function> g = |
+ v8::Local<v8::Function>::Cast(env->Global()->Get(v8_str("g"))); |
CHECK(g->GetBoundFunction()->IsFunction()); |
Local<v8::Function> original_function = Local<v8::Function>::Cast( |
g->GetBoundFunction()); |
@@ -16450,7 +17923,10 @@ TEST(SetterOnConstructorPrototype) { |
templ->SetAccessor(v8_str("x"), GetterWhichReturns42, |
SetterWhichSetsYOnThisTo23); |
LocalContext context; |
- context->Global()->Set(v8_str("P"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("P"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("function C1() {" |
" this.x = 23;" |
"};" |
@@ -16464,16 +17940,16 @@ TEST(SetterOnConstructorPrototype) { |
v8::Local<v8::Script> script; |
script = v8_compile("new C1();"); |
for (int i = 0; i < 10; i++) { |
- v8::Handle<v8::Object> c1 = v8::Handle<v8::Object>::Cast(script->Run()); |
- CHECK_EQ(42, c1->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(23, c1->Get(v8_str("y"))->Int32Value()); |
+ v8::Local<v8::Object> c1 = v8::Local<v8::Object>::Cast(script->Run()); |
+ CHECK_EQ(42, c1->Get(v8_str("x"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(23, c1->Get(v8_str("y"))->Int32Value(context.local()).FromJust()); |
} |
-script = v8_compile("new C2();"); |
+ script = v8_compile("new C2();"); |
for (int i = 0; i < 10; i++) { |
- v8::Handle<v8::Object> c2 = v8::Handle<v8::Object>::Cast(script->Run()); |
- CHECK_EQ(42, c2->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(23, c2->Get(v8_str("y"))->Int32Value()); |
+ v8::Local<v8::Object> c2 = v8::Local<v8::Object>::Cast(script->Run()); |
+ CHECK_EQ(42, c2->Get(v8_str("x"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(23, c2->Get(v8_str("y"))->Int32Value(context.local()).FromJust()); |
} |
} |
@@ -16501,7 +17977,10 @@ THREADED_TEST(InterceptorOnConstructorPrototype) { |
NamedPropertyGetterWhichReturns42, |
NamedPropertySetterWhichSetsYOnThisTo23)); |
LocalContext context; |
- context->Global()->Set(v8_str("P"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("P"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("function C1() {" |
" this.x = 23;" |
"};" |
@@ -16515,16 +17994,16 @@ THREADED_TEST(InterceptorOnConstructorPrototype) { |
v8::Local<v8::Script> script; |
script = v8_compile("new C1();"); |
for (int i = 0; i < 10; i++) { |
- v8::Handle<v8::Object> c1 = v8::Handle<v8::Object>::Cast(script->Run()); |
- CHECK_EQ(23, c1->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(42, c1->Get(v8_str("y"))->Int32Value()); |
+ v8::Local<v8::Object> c1 = v8::Local<v8::Object>::Cast(script->Run()); |
+ CHECK_EQ(23, c1->Get(v8_str("x"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(42, c1->Get(v8_str("y"))->Int32Value(context.local()).FromJust()); |
} |
script = v8_compile("new C2();"); |
for (int i = 0; i < 10; i++) { |
- v8::Handle<v8::Object> c2 = v8::Handle<v8::Object>::Cast(script->Run()); |
- CHECK_EQ(23, c2->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(42, c2->Get(v8_str("y"))->Int32Value()); |
+ v8::Local<v8::Object> c2 = v8::Local<v8::Object>::Cast(script->Run()); |
+ CHECK_EQ(23, c2->Get(v8_str("x"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(42, c2->Get(v8_str("y"))->Int32Value(context.local()).FromJust()); |
} |
} |
@@ -16543,7 +18022,9 @@ TEST(Regress618) { |
// Use a simple object as prototype. |
v8::Local<v8::Object> prototype = v8::Object::New(isolate); |
prototype->Set(v8_str("y"), v8_num(42)); |
- context->Global()->Set(v8_str("P"), prototype); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("P"), prototype) |
+ .FromJust()); |
// This compile will add the code to the compilation cache. |
CompileRun(source); |
@@ -16552,25 +18033,28 @@ TEST(Regress618) { |
// Allow enough iterations for the inobject slack tracking logic |
// to finalize instance size and install the fast construct stub. |
for (int i = 0; i < 256; i++) { |
- v8::Handle<v8::Object> c1 = v8::Handle<v8::Object>::Cast(script->Run()); |
- CHECK_EQ(23, c1->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(42, c1->Get(v8_str("y"))->Int32Value()); |
+ v8::Local<v8::Object> c1 = v8::Local<v8::Object>::Cast(script->Run()); |
+ CHECK_EQ(23, c1->Get(v8_str("x"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(42, c1->Get(v8_str("y"))->Int32Value(context.local()).FromJust()); |
} |
// Use an API object with accessors as prototype. |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetAccessor(v8_str("x"), GetterWhichReturns42, |
SetterWhichSetsYOnThisTo23); |
- context->Global()->Set(v8_str("P"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("P"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
// This compile will get the code from the compilation cache. |
CompileRun(source); |
script = v8_compile("new C1();"); |
for (int i = 0; i < 10; i++) { |
- v8::Handle<v8::Object> c1 = v8::Handle<v8::Object>::Cast(script->Run()); |
- CHECK_EQ(42, c1->Get(v8_str("x"))->Int32Value()); |
- CHECK_EQ(23, c1->Get(v8_str("y"))->Int32Value()); |
+ v8::Local<v8::Object> c1 = v8::Local<v8::Object>::Cast(script->Run()); |
+ CHECK_EQ(42, c1->Get(v8_str("x"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(23, c1->Get(v8_str("y"))->Int32Value(context.local()).FromJust()); |
} |
} |
@@ -16814,17 +18298,17 @@ THREADED_TEST(TwoByteStringInOneByteCons) { |
// Atom RegExp. |
Local<Value> reresult = CompileRun("str2.match(/abel/g).length;"); |
- CHECK_EQ(6, reresult->Int32Value()); |
+ CHECK_EQ(6, reresult->Int32Value(context.local()).FromJust()); |
// Nonatom RegExp. |
reresult = CompileRun("str2.match(/abe./g).length;"); |
- CHECK_EQ(6, reresult->Int32Value()); |
+ CHECK_EQ(6, reresult->Int32Value(context.local()).FromJust()); |
reresult = CompileRun("str2.search(/bel/g);"); |
- CHECK_EQ(1, reresult->Int32Value()); |
+ CHECK_EQ(1, reresult->Int32Value(context.local()).FromJust()); |
reresult = CompileRun("str2.search(/be./g);"); |
- CHECK_EQ(1, reresult->Int32Value()); |
+ CHECK_EQ(1, reresult->Int32Value(context.local()).FromJust()); |
ExpectTrue("/bel/g.test(str2);"); |
@@ -16847,7 +18331,8 @@ THREADED_TEST(TwoByteStringInOneByteCons) { |
ExpectObject("str2.lastIndexOf('dab');", lastindexof); |
reresult = CompileRun("str2.charCodeAt(2);"); |
- CHECK_EQ(static_cast<int32_t>('e'), reresult->Int32Value()); |
+ CHECK_EQ(static_cast<int32_t>('e'), |
+ reresult->Int32Value(context.local()).FromJust()); |
} |
@@ -16869,27 +18354,25 @@ TEST(ContainsOnlyOneByte) { |
} |
string_contents[length-1] = 0; |
// Simple case. |
- Handle<String> string = |
- String::NewExternal(isolate, |
- new TestResource(string_contents, NULL, false)); |
+ Local<String> string = String::NewExternal( |
+ isolate, new TestResource(string_contents, NULL, false)); |
CHECK(!string->IsOneByte() && string->ContainsOnlyOneByte()); |
// Counter example. |
string = String::NewFromTwoByte(isolate, string_contents); |
CHECK(string->IsOneByte() && string->ContainsOnlyOneByte()); |
// Test left right and balanced cons strings. |
- Handle<String> base = String::NewFromUtf8(isolate, "a"); |
- Handle<String> left = base; |
- Handle<String> right = base; |
+ Local<String> base = v8_str("a"); |
+ Local<String> left = base; |
+ Local<String> right = base; |
for (int i = 0; i < 1000; i++) { |
left = String::Concat(base, left); |
right = String::Concat(right, base); |
} |
- Handle<String> balanced = String::Concat(left, base); |
+ Local<String> balanced = String::Concat(left, base); |
balanced = String::Concat(balanced, right); |
- Handle<String> cons_strings[] = {left, balanced, right}; |
- Handle<String> two_byte = |
- String::NewExternal(isolate, |
- new TestResource(string_contents, NULL, false)); |
+ Local<String> cons_strings[] = {left, balanced, right}; |
+ Local<String> two_byte = String::NewExternal( |
+ isolate, new TestResource(string_contents, NULL, false)); |
USE(two_byte); USE(cons_strings); |
for (size_t i = 0; i < arraysize(cons_strings); i++) { |
// Base assumptions. |
@@ -16945,19 +18428,23 @@ TEST(GCInFailedAccessCheckCallback) { |
// Create an ObjectTemplate for global objects and install access |
// check callbacks that will block access. |
- v8::Handle<v8::ObjectTemplate> global_template = |
+ v8::Local<v8::ObjectTemplate> global_template = |
v8::ObjectTemplate::New(isolate); |
global_template->SetAccessCheckCallback(AccessAlwaysBlocked); |
// Create a context and set an x property on it's global object. |
LocalContext context0(NULL, global_template); |
- context0->Global()->Set(v8_str("x"), v8_num(42)); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
+ CHECK(context0->Global() |
+ ->Set(context0.local(), v8_str("x"), v8_num(42)) |
+ .FromJust()); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
// Create a context with a different security token so that the |
// failed access check callback will be called on each access. |
LocalContext context1(NULL, global_template); |
- context1->Global()->Set(v8_str("other"), global0); |
+ CHECK(context1->Global() |
+ ->Set(context1.local(), v8_str("other"), global0) |
+ .FromJust()); |
v8::TryCatch try_catch(isolate); |
@@ -17550,11 +19037,10 @@ class Visitor42 : public v8::PersistentHandleVisitor { |
CHECK_EQ(42, value->WrapperClassId()); |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::Value> handle = v8::Local<v8::Value>::New(isolate, *value); |
- v8::Handle<v8::Value> object = |
- v8::Local<v8::Object>::New(isolate, *object_); |
+ v8::Local<v8::Value> handle = v8::Local<v8::Value>::New(isolate, *value); |
+ v8::Local<v8::Value> object = v8::Local<v8::Object>::New(isolate, *object_); |
CHECK(handle->IsObject()); |
- CHECK(Handle<Object>::Cast(handle)->Equals(object)); |
+ CHECK(Local<Object>::Cast(handle)->Equals(object)); |
++counter_; |
} |
@@ -17624,7 +19110,7 @@ TEST(RegExp) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::Handle<v8::RegExp> re = v8::RegExp::New(v8_str("foo"), v8::RegExp::kNone); |
+ v8::Local<v8::RegExp> re = v8::RegExp::New(v8_str("foo"), v8::RegExp::kNone); |
CHECK(re->IsRegExp()); |
CHECK(re->GetSource()->Equals(v8_str("foo"))); |
CHECK_EQ(v8::RegExp::kNone, re->GetFlags()); |
@@ -17681,19 +19167,21 @@ TEST(RegExp) { |
CHECK_EQ(v8::RegExp::kIgnoreCase | v8::RegExp::kMultiline, |
static_cast<int>(re->GetFlags())); |
- context->Global()->Set(v8_str("re"), re); |
+ CHECK(context->Global()->Set(context.local(), v8_str("re"), re).FromJust()); |
ExpectTrue("re.test('FoobarbaZ')"); |
// RegExps are objects on which you can set properties. |
re->Set(v8_str("property"), v8::Integer::New(context->GetIsolate(), 32)); |
- v8::Handle<v8::Value> value(CompileRun("re.property")); |
- CHECK_EQ(32, value->Int32Value()); |
+ v8::Local<v8::Value> value(CompileRun("re.property")); |
+ CHECK_EQ(32, value->Int32Value(context.local()).FromJust()); |
v8::TryCatch try_catch(context->GetIsolate()); |
re = v8::RegExp::New(v8_str("foo["), v8::RegExp::kNone); |
CHECK(re.IsEmpty()); |
CHECK(try_catch.HasCaught()); |
- context->Global()->Set(v8_str("ex"), try_catch.Exception()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("ex"), try_catch.Exception()) |
+ .FromJust()); |
ExpectTrue("ex instanceof SyntaxError"); |
} |
@@ -17702,8 +19190,8 @@ THREADED_TEST(Equals) { |
LocalContext localContext; |
v8::HandleScope handleScope(localContext->GetIsolate()); |
- v8::Handle<v8::Object> globalProxy = localContext->Global(); |
- v8::Handle<Value> global = globalProxy->GetPrototype(); |
+ v8::Local<v8::Object> globalProxy = localContext->Global(); |
+ v8::Local<Value> global = globalProxy->GetPrototype(); |
CHECK(global->StrictEquals(global)); |
CHECK(!global->StrictEquals(globalProxy)); |
@@ -17724,7 +19212,7 @@ static void Getter(v8::Local<v8::Name> property, |
static void Enumerator(const v8::PropertyCallbackInfo<v8::Array>& info) { |
- v8::Handle<v8::Array> result = v8::Array::New(info.GetIsolate()); |
+ v8::Local<v8::Array> result = v8::Array::New(info.GetIsolate()); |
result->Set(0, v8_str("universalAnswer")); |
info.GetReturnValue().Set(result); |
} |
@@ -17736,12 +19224,15 @@ TEST(NamedEnumeratorAndForIn) { |
v8::HandleScope handle_scope(isolate); |
v8::Context::Scope context_scope(context.local()); |
- v8::Handle<v8::ObjectTemplate> tmpl = v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> tmpl = v8::ObjectTemplate::New(isolate); |
tmpl->SetHandler(v8::NamedPropertyHandlerConfiguration(Getter, NULL, NULL, |
NULL, Enumerator)); |
- context->Global()->Set(v8_str("o"), tmpl->NewInstance()); |
- v8::Handle<v8::Array> result = v8::Handle<v8::Array>::Cast(CompileRun( |
- "var result = []; for (var k in o) result.push(k); result")); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("o"), |
+ tmpl->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
+ v8::Local<v8::Array> result = v8::Local<v8::Array>::Cast( |
+ CompileRun("var result = []; for (var k in o) result.push(k); result")); |
CHECK_EQ(1u, result->Length()); |
CHECK(v8_str("universalAnswer")->Equals(result->Get(0))); |
} |
@@ -17750,39 +19241,46 @@ TEST(NamedEnumeratorAndForIn) { |
TEST(DefinePropertyPostDetach) { |
LocalContext context; |
v8::HandleScope scope(context->GetIsolate()); |
- v8::Handle<v8::Object> proxy = context->Global(); |
- v8::Handle<v8::Function> define_property = |
- CompileRun("(function() {" |
- " Object.defineProperty(" |
- " this," |
- " 1," |
- " { configurable: true, enumerable: true, value: 3 });" |
- "})").As<Function>(); |
+ v8::Local<v8::Object> proxy = context->Global(); |
+ v8::Local<v8::Function> define_property = |
+ CompileRun( |
+ "(function() {" |
+ " Object.defineProperty(" |
+ " this," |
+ " 1," |
+ " { configurable: true, enumerable: true, value: 3 });" |
+ "})") |
+ .As<Function>(); |
context->DetachGlobal(); |
define_property->Call(proxy, 0, NULL); |
} |
-static void InstallContextId(v8::Handle<Context> context, int id) { |
+static void InstallContextId(v8::Local<Context> context, int id) { |
Context::Scope scope(context); |
- CompileRun("Object.prototype").As<Object>()-> |
- Set(v8_str("context_id"), v8::Integer::New(context->GetIsolate(), id)); |
+ CHECK(CompileRun("Object.prototype") |
+ .As<Object>() |
+ ->Set(context, v8_str("context_id"), |
+ v8::Integer::New(context->GetIsolate(), id)) |
+ .FromJust()); |
} |
-static void CheckContextId(v8::Handle<Object> object, int expected) { |
- CHECK_EQ(expected, object->Get(v8_str("context_id"))->Int32Value()); |
+static void CheckContextId(v8::Local<Object> object, int expected) { |
+ CHECK_EQ(expected, object->Get(v8_str("context_id")) |
+ ->Int32Value(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
} |
THREADED_TEST(CreationContext) { |
v8::Isolate* isolate = CcTest::isolate(); |
HandleScope handle_scope(isolate); |
- Handle<Context> context1 = Context::New(isolate); |
+ Local<Context> context1 = Context::New(isolate); |
InstallContextId(context1, 1); |
- Handle<Context> context2 = Context::New(isolate); |
+ Local<Context> context2 = Context::New(isolate); |
InstallContextId(context2, 2); |
- Handle<Context> context3 = Context::New(isolate); |
+ Local<Context> context3 = Context::New(isolate); |
InstallContextId(context3, 3); |
Local<v8::FunctionTemplate> tmpl = v8::FunctionTemplate::New(isolate); |
@@ -17792,7 +19290,7 @@ THREADED_TEST(CreationContext) { |
{ |
Context::Scope scope(context1); |
object1 = Object::New(isolate); |
- func1 = tmpl->GetFunction(); |
+ func1 = tmpl->GetFunction(context1).ToLocalChecked(); |
} |
Local<Object> object2; |
@@ -17800,7 +19298,7 @@ THREADED_TEST(CreationContext) { |
{ |
Context::Scope scope(context2); |
object2 = Object::New(isolate); |
- func2 = tmpl->GetFunction(); |
+ func2 = tmpl->GetFunction(context2).ToLocalChecked(); |
} |
Local<Object> instance1; |
@@ -17808,12 +19306,12 @@ THREADED_TEST(CreationContext) { |
{ |
Context::Scope scope(context3); |
- instance1 = func1->NewInstance(); |
- instance2 = func2->NewInstance(); |
+ instance1 = func1->NewInstance(context3).ToLocalChecked(); |
+ instance2 = func2->NewInstance(context3).ToLocalChecked(); |
} |
{ |
- Handle<Context> other_context = Context::New(isolate); |
+ Local<Context> other_context = Context::New(isolate); |
Context::Scope scope(other_context); |
CHECK(object1->CreationContext() == context1); |
CheckContextId(object1, 1); |
@@ -17865,7 +19363,7 @@ THREADED_TEST(CreationContext) { |
THREADED_TEST(CreationContextOfJsFunction) { |
HandleScope handle_scope(CcTest::isolate()); |
- Handle<Context> context = Context::New(CcTest::isolate()); |
+ Local<Context> context = Context::New(CcTest::isolate()); |
InstallContextId(context, 1); |
Local<Object> function; |
@@ -17874,7 +19372,7 @@ THREADED_TEST(CreationContextOfJsFunction) { |
function = CompileRun("function foo() {}; foo").As<Object>(); |
} |
- Handle<Context> other_context = Context::New(CcTest::isolate()); |
+ Local<Context> other_context = Context::New(CcTest::isolate()); |
Context::Scope scope(other_context); |
CHECK(function->CreationContext() == context); |
CheckContextId(function, 1); |
@@ -17924,7 +19422,7 @@ TEST(HasOwnProperty) { |
v8::Isolate* isolate = env->GetIsolate(); |
v8::HandleScope scope(isolate); |
{ // Check normal properties and defined getters. |
- Handle<Value> value = CompileRun( |
+ Local<Value> value = CompileRun( |
"function Foo() {" |
" this.foo = 11;" |
" this.__defineGetter__('baz', function() { return 1; });" |
@@ -17936,7 +19434,7 @@ TEST(HasOwnProperty) { |
"Bar.prototype = new Foo();" |
"new Bar();"); |
CHECK(value->IsObject()); |
- Handle<Object> object = value->ToObject(isolate); |
+ Local<Object> object = value->ToObject(isolate); |
CHECK(object->Has(v8_str("foo"))); |
CHECK(!object->HasOwnProperty(v8_str("foo"))); |
CHECK(object->HasOwnProperty(v8_str("bar"))); |
@@ -17945,52 +19443,52 @@ TEST(HasOwnProperty) { |
CHECK(object->HasOwnProperty(v8_str("bla"))); |
} |
{ // Check named getter interceptors. |
- Handle<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
HasOwnPropertyNamedPropertyGetter)); |
- Handle<Object> instance = templ->NewInstance(); |
+ Local<Object> instance = templ->NewInstance(env.local()).ToLocalChecked(); |
CHECK(!instance->HasOwnProperty(v8_str("42"))); |
CHECK(instance->HasOwnProperty(v8_str("foo"))); |
CHECK(!instance->HasOwnProperty(v8_str("bar"))); |
} |
{ // Check indexed getter interceptors. |
- Handle<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetHandler(v8::IndexedPropertyHandlerConfiguration( |
HasOwnPropertyIndexedPropertyGetter)); |
- Handle<Object> instance = templ->NewInstance(); |
+ Local<Object> instance = templ->NewInstance(env.local()).ToLocalChecked(); |
CHECK(instance->HasOwnProperty(v8_str("42"))); |
CHECK(!instance->HasOwnProperty(v8_str("43"))); |
CHECK(!instance->HasOwnProperty(v8_str("foo"))); |
} |
{ // Check named query interceptors. |
- Handle<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
0, 0, HasOwnPropertyNamedPropertyQuery)); |
- Handle<Object> instance = templ->NewInstance(); |
+ Local<Object> instance = templ->NewInstance(env.local()).ToLocalChecked(); |
CHECK(instance->HasOwnProperty(v8_str("foo"))); |
CHECK(!instance->HasOwnProperty(v8_str("bar"))); |
} |
{ // Check indexed query interceptors. |
- Handle<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetHandler(v8::IndexedPropertyHandlerConfiguration( |
0, 0, HasOwnPropertyIndexedPropertyQuery)); |
- Handle<Object> instance = templ->NewInstance(); |
+ Local<Object> instance = templ->NewInstance(env.local()).ToLocalChecked(); |
CHECK(instance->HasOwnProperty(v8_str("42"))); |
CHECK(!instance->HasOwnProperty(v8_str("41"))); |
} |
{ // Check callbacks. |
- Handle<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetAccessor(v8_str("foo"), HasOwnPropertyAccessorGetter); |
- Handle<Object> instance = templ->NewInstance(); |
+ Local<Object> instance = templ->NewInstance(env.local()).ToLocalChecked(); |
CHECK(instance->HasOwnProperty(v8_str("foo"))); |
CHECK(!instance->HasOwnProperty(v8_str("bar"))); |
} |
{ // Check that query wins on disagreement. |
- Handle<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetHandler(v8::NamedPropertyHandlerConfiguration( |
HasOwnPropertyNamedPropertyGetter, 0, |
HasOwnPropertyNamedPropertyQuery2)); |
- Handle<Object> instance = templ->NewInstance(); |
+ Local<Object> instance = templ->NewInstance(env.local()).ToLocalChecked(); |
CHECK(!instance->HasOwnProperty(v8_str("foo"))); |
CHECK(instance->HasOwnProperty(v8_str("bar"))); |
} |
@@ -18000,11 +19498,14 @@ TEST(HasOwnProperty) { |
TEST(IndexedInterceptorWithStringProto) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope scope(isolate); |
- Handle<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
+ Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetHandler(v8::IndexedPropertyHandlerConfiguration( |
NULL, NULL, HasOwnPropertyIndexedPropertyQuery)); |
LocalContext context; |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("var s = new String('foobar'); obj.__proto__ = s;"); |
// These should be intercepted. |
CHECK(CompileRun("42 in obj")->BooleanValue()); |
@@ -18019,19 +19520,20 @@ TEST(IndexedInterceptorWithStringProto) { |
void CheckCodeGenerationAllowed() { |
- Handle<Value> result = CompileRun("eval('42')"); |
- CHECK_EQ(42, result->Int32Value()); |
+ Local<v8::Context> context = CcTest::isolate()->GetCurrentContext(); |
+ Local<Value> result = CompileRun("eval('42')"); |
+ CHECK_EQ(42, result->Int32Value(context).FromJust()); |
result = CompileRun("(function(e) { return e('42'); })(eval)"); |
- CHECK_EQ(42, result->Int32Value()); |
+ CHECK_EQ(42, result->Int32Value(context).FromJust()); |
result = CompileRun("var f = new Function('return 42'); f()"); |
- CHECK_EQ(42, result->Int32Value()); |
+ CHECK_EQ(42, result->Int32Value(context).FromJust()); |
} |
void CheckCodeGenerationDisallowed() { |
TryCatch try_catch(CcTest::isolate()); |
- Handle<Value> result = CompileRun("eval('42')"); |
+ Local<Value> result = CompileRun("eval('42')"); |
CHECK(result.IsEmpty()); |
CHECK(try_catch.HasCaught()); |
try_catch.Reset(); |
@@ -18094,15 +19596,15 @@ TEST(SetErrorMessageForCodeGenFromStrings) { |
v8::HandleScope scope(context->GetIsolate()); |
TryCatch try_catch(context->GetIsolate()); |
- Handle<String> message = v8_str("Message"); |
- Handle<String> expected_message = v8_str("Uncaught EvalError: Message"); |
+ Local<String> message = v8_str("Message"); |
+ Local<String> expected_message = v8_str("Uncaught EvalError: Message"); |
V8::SetAllowCodeGenerationFromStringsCallback(&CodeGenerationDisallowed); |
context->AllowCodeGenerationFromStrings(false); |
context->SetErrorMessageForCodeGenerationFromStrings(message); |
- Handle<Value> result = CompileRun("eval('42')"); |
+ Local<Value> result = CompileRun("eval('42')"); |
CHECK(result.IsEmpty()); |
CHECK(try_catch.HasCaught()); |
- Handle<String> actual_message = try_catch.Message()->Get(); |
+ Local<String> actual_message = try_catch.Message()->Get(); |
CHECK(expected_message->Equals(actual_message)); |
} |
@@ -18115,10 +19617,13 @@ THREADED_TEST(CallAPIFunctionOnNonObject) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- Handle<FunctionTemplate> templ = |
+ Local<FunctionTemplate> templ = |
v8::FunctionTemplate::New(isolate, NonObjectThis); |
- Handle<Function> function = templ->GetFunction(); |
- context->Global()->Set(v8_str("f"), function); |
+ Local<Function> function = |
+ templ->GetFunction(context.local()).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("f"), function) |
+ .FromJust()); |
TryCatch try_catch(isolate); |
CompileRun("f.call(2)"); |
} |
@@ -18131,8 +19636,8 @@ THREADED_TEST(ReadOnlyIndexedProperties) { |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
LocalContext context; |
- Local<v8::Object> obj = templ->NewInstance(); |
- context->Global()->Set(v8_str("obj"), obj); |
+ Local<v8::Object> obj = templ->NewInstance(context.local()).ToLocalChecked(); |
+ CHECK(context->Global()->Set(context.local(), v8_str("obj"), obj).FromJust()); |
obj->ForceSet(v8_str("1"), v8_str("DONT_CHANGE"), v8::ReadOnly); |
obj->Set(v8_str("1"), v8_str("foobar")); |
CHECK(v8_str("DONT_CHANGE")->Equals(obj->Get(v8_str("1")))); |
@@ -18211,7 +19716,8 @@ THREADED_TEST(Regress93759) { |
Local<Object> simple_object = Object::New(isolate); |
// Object with explicit security check. |
- Local<Object> protected_object = no_proto_template->NewInstance(); |
+ Local<Object> protected_object = |
+ no_proto_template->NewInstance(context).ToLocalChecked(); |
// JSGlobalProxy object, always have security check. |
Local<Object> proxy_object = context->Global(); |
@@ -18220,8 +19726,10 @@ THREADED_TEST(Regress93759) { |
Local<Object> global_object = proxy_object->GetPrototype()->ToObject(isolate); |
// Hidden prototype without security check. |
- Local<Object> hidden_prototype = |
- hidden_proto_template->GetFunction()->NewInstance(); |
+ Local<Object> hidden_prototype = hidden_proto_template->GetFunction(context) |
+ .ToLocalChecked() |
+ ->NewInstance(context) |
+ .ToLocalChecked(); |
Local<Object> object_with_hidden = |
Object::New(isolate); |
object_with_hidden->SetPrototype(hidden_prototype); |
@@ -18312,7 +19820,9 @@ THREADED_TEST(ForeignFunctionReceiver) { |
"}" |
"var id = 'o';" |
"ownfunc"); |
- context->Global()->Set(v8_str("func"), foreign_function); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("func"), foreign_function) |
+ .FromJust()); |
// Sanity check the contexts. |
CHECK(i->Equals(foreign_context->Global()->Get(id))); |
@@ -18375,7 +19885,8 @@ void CallCompletedCallback2() { |
void RecursiveCall(const v8::FunctionCallbackInfo<v8::Value>& args) { |
- int32_t level = args[0]->Int32Value(); |
+ int32_t level = |
+ args[0]->Int32Value(args.GetIsolate()->GetCurrentContext()).FromJust(); |
if (level < 3) { |
level++; |
v8::base::OS::Print("Entering recursion level %d.\n", level); |
@@ -18395,17 +19906,17 @@ void RecursiveCall(const v8::FunctionCallbackInfo<v8::Value>& args) { |
TEST(CallCompletedCallback) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
- v8::Handle<v8::FunctionTemplate> recursive_runtime = |
+ v8::Local<v8::FunctionTemplate> recursive_runtime = |
v8::FunctionTemplate::New(env->GetIsolate(), RecursiveCall); |
- env->Global()->Set(v8_str("recursion"), |
- recursive_runtime->GetFunction()); |
+ env->Global()->Set( |
+ v8_str("recursion"), |
+ recursive_runtime->GetFunction(env.local()).ToLocalChecked()); |
// Adding the same callback a second time has no effect. |
env->GetIsolate()->AddCallCompletedCallback(CallCompletedCallback1); |
env->GetIsolate()->AddCallCompletedCallback(CallCompletedCallback1); |
env->GetIsolate()->AddCallCompletedCallback(CallCompletedCallback2); |
v8::base::OS::Print("--- Script (1) ---\n"); |
- Local<Script> script = v8::Script::Compile( |
- v8::String::NewFromUtf8(env->GetIsolate(), "recursion(0)")); |
+ Local<Script> script = v8::Script::Compile(v8_str("recursion(0)")); |
script->Run(); |
CHECK_EQ(3, callback_fired); |
@@ -18419,7 +19930,7 @@ TEST(CallCompletedCallback) { |
callback_fired = 0; |
Local<Function> recursive_function = |
Local<Function>::Cast(env->Global()->Get(v8_str("recursion"))); |
- v8::Handle<Value> args[] = { v8_num(0) }; |
+ v8::Local<Value> args[] = {v8_num(0)}; |
recursive_function->Call(env->Global(), 1, args); |
CHECK_EQ(2, callback_fired); |
} |
@@ -18480,39 +19991,39 @@ TEST(EnqueueMicrotask) { |
"var ext1Calls = 0;" |
"var ext2Calls = 0;"); |
CompileRun("1+1;"); |
- CHECK_EQ(0, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(0, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->EnqueueMicrotask( |
Function::New(env->GetIsolate(), MicrotaskOne)); |
CompileRun("1+1;"); |
- CHECK_EQ(1, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(1, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->EnqueueMicrotask( |
Function::New(env->GetIsolate(), MicrotaskOne)); |
env->GetIsolate()->EnqueueMicrotask( |
Function::New(env->GetIsolate(), MicrotaskTwo)); |
CompileRun("1+1;"); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(1, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(1, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->EnqueueMicrotask( |
Function::New(env->GetIsolate(), MicrotaskTwo)); |
CompileRun("1+1;"); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(2, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(2, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
CompileRun("1+1;"); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(2, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(2, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
g_passed_to_three = NULL; |
env->GetIsolate()->EnqueueMicrotask(MicrotaskThree); |
CompileRun("1+1;"); |
CHECK(!g_passed_to_three); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(2, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(2, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
int dummy; |
env->GetIsolate()->EnqueueMicrotask( |
@@ -18522,8 +20033,8 @@ TEST(EnqueueMicrotask) { |
Function::New(env->GetIsolate(), MicrotaskTwo)); |
CompileRun("1+1;"); |
CHECK_EQ(&dummy, g_passed_to_three); |
- CHECK_EQ(3, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(3, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(3, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(3, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
g_passed_to_three = NULL; |
} |
@@ -18560,8 +20071,10 @@ TEST(RunMicrotasksIgnoresThrownExceptions) { |
TryCatch try_catch(isolate); |
CompileRun("1+1;"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(1, CompileRun("exception1Calls")->Int32Value()); |
- CHECK_EQ(1, CompileRun("exception2Calls")->Int32Value()); |
+ CHECK_EQ(1, |
+ CompileRun("exception1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(1, |
+ CompileRun("exception2Calls")->Int32Value(env.local()).FromJust()); |
} |
@@ -18572,14 +20085,14 @@ TEST(SetAutorunMicrotasks) { |
"var ext1Calls = 0;" |
"var ext2Calls = 0;"); |
CompileRun("1+1;"); |
- CHECK_EQ(0, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(0, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->EnqueueMicrotask( |
Function::New(env->GetIsolate(), MicrotaskOne)); |
CompileRun("1+1;"); |
- CHECK_EQ(1, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(1, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->SetAutorunMicrotasks(false); |
env->GetIsolate()->EnqueueMicrotask( |
@@ -18587,42 +20100,42 @@ TEST(SetAutorunMicrotasks) { |
env->GetIsolate()->EnqueueMicrotask( |
Function::New(env->GetIsolate(), MicrotaskTwo)); |
CompileRun("1+1;"); |
- CHECK_EQ(1, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(1, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(0, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->RunMicrotasks(); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(1, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(1, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->EnqueueMicrotask( |
Function::New(env->GetIsolate(), MicrotaskTwo)); |
CompileRun("1+1;"); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(1, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(1, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->RunMicrotasks(); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(2, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(2, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->SetAutorunMicrotasks(true); |
env->GetIsolate()->EnqueueMicrotask( |
Function::New(env->GetIsolate(), MicrotaskTwo)); |
CompileRun("1+1;"); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(3, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(3, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
env->GetIsolate()->EnqueueMicrotask( |
Function::New(env->GetIsolate(), MicrotaskTwo)); |
{ |
v8::Isolate::SuppressMicrotaskExecutionScope scope(env->GetIsolate()); |
CompileRun("1+1;"); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(3, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(3, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
} |
CompileRun("1+1;"); |
- CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value()); |
- CHECK_EQ(4, CompileRun("ext2Calls")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("ext1Calls")->Int32Value(env.local()).FromJust()); |
+ CHECK_EQ(4, CompileRun("ext2Calls")->Int32Value(env.local()).FromJust()); |
} |
@@ -18630,7 +20143,7 @@ TEST(RunMicrotasksWithoutEnteringContext) { |
v8::Isolate* isolate = CcTest::isolate(); |
HandleScope handle_scope(isolate); |
isolate->SetAutorunMicrotasks(false); |
- Handle<Context> context = Context::New(isolate); |
+ Local<Context> context = Context::New(isolate); |
{ |
Context::Scope context_scope(context); |
CompileRun("var ext1Calls = 0;"); |
@@ -18639,7 +20152,7 @@ TEST(RunMicrotasksWithoutEnteringContext) { |
isolate->RunMicrotasks(); |
{ |
Context::Scope context_scope(context); |
- CHECK_EQ(1, CompileRun("ext1Calls")->Int32Value()); |
+ CHECK_EQ(1, CompileRun("ext1Calls")->Int32Value(context).FromJust()); |
} |
isolate->SetAutorunMicrotasks(true); |
} |
@@ -18648,11 +20161,11 @@ TEST(RunMicrotasksWithoutEnteringContext) { |
static void DebugEventInObserver(const v8::Debug::EventDetails& event_details) { |
v8::DebugEvent event = event_details.GetEvent(); |
if (event != v8::Break) return; |
- Handle<Object> exec_state = event_details.GetExecutionState(); |
- Handle<Value> break_id = exec_state->Get(v8_str("break_id")); |
+ Local<Object> exec_state = event_details.GetExecutionState(); |
+ Local<Value> break_id = exec_state->Get(v8_str("break_id")); |
CompileRun("function f(id) { new FrameDetails(id, 0); }"); |
- Handle<Function> fun = |
- Handle<Function>::Cast(CcTest::global()->Get(v8_str("f"))); |
+ Local<Function> fun = |
+ Local<Function>::Cast(CcTest::global()->Get(v8_str("f"))); |
fun->Call(CcTest::global(), 1, &break_id); |
} |
@@ -18662,7 +20175,7 @@ TEST(Regress385349) { |
v8::Isolate* isolate = CcTest::isolate(); |
HandleScope handle_scope(isolate); |
isolate->SetAutorunMicrotasks(false); |
- Handle<Context> context = Context::New(isolate); |
+ Local<Context> context = Context::New(isolate); |
v8::Debug::SetDebugEventListener(DebugEventInObserver); |
{ |
Context::Scope context_scope(context); |
@@ -18925,13 +20438,13 @@ THREADED_TEST(InstanceCheckOnInstanceAccessor) { |
Local<FunctionTemplate> templ = FunctionTemplate::New(context->GetIsolate()); |
Local<ObjectTemplate> inst = templ->InstanceTemplate(); |
- inst->SetAccessor(v8_str("foo"), |
- InstanceCheckedGetter, InstanceCheckedSetter, |
- Handle<Value>(), |
- v8::DEFAULT, |
- v8::None, |
+ inst->SetAccessor(v8_str("foo"), InstanceCheckedGetter, InstanceCheckedSetter, |
+ Local<Value>(), v8::DEFAULT, v8::None, |
v8::AccessorSignature::New(context->GetIsolate(), templ)); |
- context->Global()->Set(v8_str("f"), templ->GetFunction()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("f"), |
+ templ->GetFunction(context.local()).ToLocalChecked()) |
+ .FromJust()); |
printf("Testing positive ...\n"); |
CompileRun("var obj = new f();"); |
@@ -18964,13 +20477,13 @@ THREADED_TEST(InstanceCheckOnInstanceAccessorWithInterceptor) { |
Local<ObjectTemplate> inst = templ->InstanceTemplate(); |
templ->InstanceTemplate()->SetNamedPropertyHandler(EmptyInterceptorGetter, |
EmptyInterceptorSetter); |
- inst->SetAccessor(v8_str("foo"), |
- InstanceCheckedGetter, InstanceCheckedSetter, |
- Handle<Value>(), |
- v8::DEFAULT, |
- v8::None, |
+ inst->SetAccessor(v8_str("foo"), InstanceCheckedGetter, InstanceCheckedSetter, |
+ Local<Value>(), v8::DEFAULT, v8::None, |
v8::AccessorSignature::New(context->GetIsolate(), templ)); |
- context->Global()->Set(v8_str("f"), templ->GetFunction()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("f"), |
+ templ->GetFunction(context.local()).ToLocalChecked()) |
+ .FromJust()); |
printf("Testing positive ...\n"); |
CompileRun("var obj = new f();"); |
@@ -18993,10 +20506,13 @@ THREADED_TEST(InstanceCheckOnPrototypeAccessor) { |
Local<FunctionTemplate> templ = FunctionTemplate::New(context->GetIsolate()); |
Local<ObjectTemplate> proto = templ->PrototypeTemplate(); |
proto->SetAccessor(v8_str("foo"), InstanceCheckedGetter, |
- InstanceCheckedSetter, Handle<Value>(), v8::DEFAULT, |
+ InstanceCheckedSetter, Local<Value>(), v8::DEFAULT, |
v8::None, |
v8::AccessorSignature::New(context->GetIsolate(), templ)); |
- context->Global()->Set(v8_str("f"), templ->GetFunction()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("f"), |
+ templ->GetFunction(context.local()).ToLocalChecked()) |
+ .FromJust()); |
printf("Testing positive ...\n"); |
CompileRun("var obj = new f();"); |
@@ -19076,7 +20592,10 @@ static void Helper137002(bool do_store, |
GetterWhichReturns42, |
SetterWhichSetsYOnThisTo23); |
} |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
// Turn monomorphic on slow object with native accessor, then turn |
// polymorphic, finally optimize to create negative lookup and fail. |
@@ -19104,8 +20623,10 @@ static void Helper137002(bool do_store, |
if (remove_accessor && !interceptor) { |
CHECK(context->Global()->Get(v8_str("result"))->IsUndefined()); |
} else { |
- CHECK_EQ(do_store ? 23 : 42, |
- context->Global()->Get(v8_str("result"))->Int32Value()); |
+ CHECK_EQ(do_store ? 23 : 42, context->Global() |
+ ->Get(v8_str("result")) |
+ ->Int32Value(context.local()) |
+ .FromJust()); |
} |
} |
@@ -19129,7 +20650,10 @@ THREADED_TEST(Regress137002b) { |
templ->SetAccessor(v8_str("foo"), |
GetterWhichReturns42, |
SetterWhichSetsYOnThisTo23); |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
// Turn monomorphic on slow object with native accessor, then just |
// delete the property and fail. |
@@ -19198,7 +20722,10 @@ THREADED_TEST(Regress142088) { |
templ->SetAccessor(v8_str("foo"), |
GetterWhichReturns42, |
SetterWhichSetsYOnThisTo23); |
- context->Global()->Set(v8_str("obj"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("obj"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("function load(x) { return x.foo; }" |
"var o = Object.create(obj);" |
@@ -19226,7 +20753,7 @@ THREADED_TEST(Regress157124) { |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
- Local<Object> obj = templ->NewInstance(); |
+ Local<Object> obj = templ->NewInstance(context.local()).ToLocalChecked(); |
obj->GetIdentityHash(); |
obj->DeletePrivate(context.local(), |
v8::Private::ForApi(isolate, v8_str("Bug"))) |
@@ -19267,7 +20794,8 @@ THREADED_TEST(Regress260106) { |
Local<FunctionTemplate> templ = FunctionTemplate::New(isolate, |
DummyCallHandler); |
CompileRun("for (var i = 0; i < 128; i++) Object.prototype[i] = 0;"); |
- Local<Function> function = templ->GetFunction(); |
+ Local<Function> function = |
+ templ->GetFunction(context.local()).ToLocalChecked(); |
CHECK(!function.IsEmpty()); |
CHECK(function->IsFunction()); |
} |
@@ -19277,7 +20805,7 @@ THREADED_TEST(JSONParseObject) { |
LocalContext context; |
HandleScope scope(context->GetIsolate()); |
Local<Value> obj = v8::JSON::Parse(v8_str("{\"x\":42}")); |
- Handle<Object> global = context->Global(); |
+ Local<Object> global = context->Global(); |
global->Set(v8_str("obj"), obj); |
ExpectString("JSON.stringify(obj)", "{\"x\":42}"); |
} |
@@ -19287,7 +20815,7 @@ THREADED_TEST(JSONParseNumber) { |
LocalContext context; |
HandleScope scope(context->GetIsolate()); |
Local<Value> obj = v8::JSON::Parse(v8_str("42")); |
- Handle<Object> global = context->Global(); |
+ Local<Object> global = context->Global(); |
global->Set(v8_str("obj"), obj); |
ExpectString("JSON.stringify(obj)", "42"); |
} |
@@ -19369,28 +20897,31 @@ TEST(JSONStringifyAccessCheck) { |
// Create an ObjectTemplate for global objects and install access |
// check callbacks that will block access. |
- v8::Handle<v8::ObjectTemplate> global_template = |
+ v8::Local<v8::ObjectTemplate> global_template = |
v8::ObjectTemplate::New(isolate); |
global_template->SetAccessCheckCallback(AccessAlwaysBlocked); |
// Create a context and set an x property on it's global object. |
LocalContext context0(NULL, global_template); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
global0->Set(v8_str("x"), v8_num(42)); |
ExpectString("JSON.stringify(this)", "{\"x\":42}"); |
for (int i = 0; i < 2; i++) { |
if (i == 1) { |
// Install a toJSON function on the second run. |
- v8::Handle<v8::FunctionTemplate> toJSON = |
+ v8::Local<v8::FunctionTemplate> toJSON = |
v8::FunctionTemplate::New(isolate, UnreachableCallback); |
- global0->Set(v8_str("toJSON"), toJSON->GetFunction()); |
+ global0->Set(v8_str("toJSON"), |
+ toJSON->GetFunction(context0.local()).ToLocalChecked()); |
} |
// Create a context with a different security token so that the |
// failed access check callback will be called on each access. |
LocalContext context1(NULL, global_template); |
- context1->Global()->Set(v8_str("other"), global0); |
+ CHECK(context1->Global() |
+ ->Set(context1.local(), v8_str("other"), global0) |
+ .FromJust()); |
CHECK(CompileRun("JSON.stringify(other)").IsEmpty()); |
CHECK(CompileRun("JSON.stringify({ 'a' : other, 'b' : ['c'] })").IsEmpty()); |
@@ -19457,27 +20988,35 @@ TEST(AccessCheckThrows) { |
// Create an ObjectTemplate for global objects and install access |
// check callbacks that will block access. |
- v8::Handle<v8::ObjectTemplate> global_template = |
+ v8::Local<v8::ObjectTemplate> global_template = |
v8::ObjectTemplate::New(isolate); |
global_template->SetAccessCheckCallback(AccessAlwaysBlocked); |
// Create a context and set an x property on it's global object. |
LocalContext context0(NULL, global_template); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
// Create a context with a different security token so that the |
// failed access check callback will be called on each access. |
LocalContext context1(NULL, global_template); |
- context1->Global()->Set(v8_str("other"), global0); |
+ CHECK(context1->Global() |
+ ->Set(context1.local(), v8_str("other"), global0) |
+ .FromJust()); |
- v8::Handle<v8::FunctionTemplate> catcher_fun = |
+ v8::Local<v8::FunctionTemplate> catcher_fun = |
v8::FunctionTemplate::New(isolate, CatcherCallback); |
- context1->Global()->Set(v8_str("catcher"), catcher_fun->GetFunction()); |
+ CHECK(context1->Global() |
+ ->Set(context1.local(), v8_str("catcher"), |
+ catcher_fun->GetFunction(context1.local()).ToLocalChecked()) |
+ .FromJust()); |
- v8::Handle<v8::FunctionTemplate> has_own_property_fun = |
+ v8::Local<v8::FunctionTemplate> has_own_property_fun = |
v8::FunctionTemplate::New(isolate, HasOwnPropertyCallback); |
- context1->Global()->Set(v8_str("has_own_property"), |
- has_own_property_fun->GetFunction()); |
+ CHECK(context1->Global() |
+ ->Set(context1.local(), v8_str("has_own_property"), |
+ has_own_property_fun->GetFunction(context1.local()) |
+ .ToLocalChecked()) |
+ .FromJust()); |
{ |
v8::TryCatch try_catch(isolate); |
@@ -19610,7 +21149,9 @@ class RequestInterruptTestWithFunctionCall |
virtual void TestBody() { |
Local<Function> func = Function::New( |
isolate_, ShouldContinueCallback, v8::External::New(isolate_, this)); |
- env_->Global()->Set(v8_str("ShouldContinue"), func); |
+ CHECK(env_->Global() |
+ ->Set(env_.local(), v8_str("ShouldContinue"), func) |
+ .FromJust()); |
CompileRun("while (ShouldContinue()) { }"); |
} |
@@ -19625,7 +21166,10 @@ class RequestInterruptTestWithMethodCall |
v8::Local<v8::Template> proto = t->PrototypeTemplate(); |
proto->Set(v8_str("shouldContinue"), Function::New( |
isolate_, ShouldContinueCallback, v8::External::New(isolate_, this))); |
- env_->Global()->Set(v8_str("Klass"), t->GetFunction()); |
+ CHECK(env_->Global() |
+ ->Set(env_.local(), v8_str("Klass"), |
+ t->GetFunction(env_.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("var obj = new Klass; while (obj.shouldContinue()) { }"); |
} |
@@ -19640,7 +21184,10 @@ class RequestInterruptTestWithAccessor |
v8::Local<v8::Template> proto = t->PrototypeTemplate(); |
proto->SetAccessorProperty(v8_str("shouldContinue"), FunctionTemplate::New( |
isolate_, ShouldContinueCallback, v8::External::New(isolate_, this))); |
- env_->Global()->Set(v8_str("Klass"), t->GetFunction()); |
+ CHECK(env_->Global() |
+ ->Set(env_.local(), v8_str("Klass"), |
+ t->GetFunction(env_.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("var obj = new Klass; while (obj.shouldContinue) { }"); |
} |
@@ -19657,7 +21204,10 @@ class RequestInterruptTestWithNativeAccessor |
&ShouldContinueNativeGetter, |
NULL, |
v8::External::New(isolate_, this)); |
- env_->Global()->Set(v8_str("Klass"), t->GetFunction()); |
+ CHECK(env_->Global() |
+ ->Set(env_.local(), v8_str("Klass"), |
+ t->GetFunction(env_.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("var obj = new Klass; while (obj.shouldContinue) { }"); |
} |
@@ -19686,7 +21236,10 @@ class RequestInterruptTestWithMethodCallAndInterceptor |
instance_template->SetHandler( |
v8::NamedPropertyHandlerConfiguration(EmptyInterceptor)); |
- env_->Global()->Set(v8_str("Klass"), t->GetFunction()); |
+ CHECK(env_->Global() |
+ ->Set(env_.local(), v8_str("Klass"), |
+ t->GetFunction(env_.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("var obj = new Klass; while (obj.shouldContinue()) { }"); |
} |
@@ -19793,7 +21346,9 @@ class RequestMultipleInterrupts : public RequestInterruptTestBase { |
virtual void TestBody() { |
Local<Function> func = Function::New( |
isolate_, ShouldContinueCallback, v8::External::New(isolate_, this)); |
- env_->Global()->Set(v8_str("ShouldContinue"), func); |
+ CHECK(env_->Global() |
+ ->Set(env_.local(), v8_str("ShouldContinue"), func) |
+ .FromJust()); |
CompileRun("while (ShouldContinue()) { }"); |
} |
@@ -19864,7 +21419,7 @@ THREADED_TEST(FunctionNew) { |
Local<Object> data = v8::Object::New(isolate); |
function_new_expected_env = data; |
Local<Function> func = Function::New(isolate, FunctionNewCallback, data); |
- env->Global()->Set(v8_str("func"), func); |
+ CHECK(env->Global()->Set(env.local(), v8_str("func"), func).FromJust()); |
Local<Value> result = CompileRun("func();"); |
CHECK(v8::Integer::New(isolate, 17)->Equals(result)); |
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); |
@@ -19883,7 +21438,7 @@ THREADED_TEST(FunctionNew) { |
Local<Function> func2 = Function::New(isolate, FunctionNewCallback, data2); |
CHECK(!func2->IsNull()); |
CHECK(!func->Equals(func2)); |
- env->Global()->Set(v8_str("func2"), func2); |
+ CHECK(env->Global()->Set(env.local(), v8_str("func2"), func2).FromJust()); |
Local<Value> result2 = CompileRun("func2();"); |
CHECK(v8::Integer::New(isolate, 17)->Equals(result2)); |
} |
@@ -19923,7 +21478,10 @@ TEST(Regress239669) { |
v8::HandleScope scope(isolate); |
Local<ObjectTemplate> templ = ObjectTemplate::New(isolate); |
templ->SetAccessor(v8_str("x"), 0, SetterWhichExpectsThisAndHolderToDiffer); |
- context->Global()->Set(v8_str("P"), templ->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context.local(), v8_str("P"), |
+ templ->NewInstance(context.local()).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"function C1() {" |
" this.x = 23;" |
@@ -20007,8 +21565,11 @@ class ApiCallOptimizationChecker { |
v8::Context::New(isolate, NULL, signature_template); |
v8::Context::Scope context_scope(context); |
// Install regular object that can pass signature checks. |
- Local<Object> function_receiver = signature_template->NewInstance(); |
- context->Global()->Set(v8_str("function_receiver"), function_receiver); |
+ Local<Object> function_receiver = |
+ signature_template->NewInstance(context).ToLocalChecked(); |
+ CHECK(context->Global() |
+ ->Set(context, v8_str("function_receiver"), function_receiver) |
+ .FromJust()); |
// Get the holder objects. |
Local<Object> inner_global = |
Local<Object>::Cast(context->Global()->GetPrototype()); |
@@ -20016,7 +21577,8 @@ class ApiCallOptimizationChecker { |
data = Object::New(isolate); |
Local<FunctionTemplate> function_template = FunctionTemplate::New( |
isolate, OptimizationCallback, data, signature); |
- Local<Function> function = function_template->GetFunction(); |
+ Local<Function> function = |
+ function_template->GetFunction(context).ToLocalChecked(); |
Local<Object> global_holder = inner_global; |
Local<Object> function_holder = function_receiver; |
if (signature_type == kSignatureOnPrototype) { |
@@ -20124,7 +21686,7 @@ TEST(FunctionCallOptimizationMultipleArgs) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- Handle<Object> global = context->Global(); |
+ Local<Object> global = context->Global(); |
Local<v8::Function> function = Function::New(isolate, Returns42); |
global->Set(v8_str("x"), function); |
CompileRun( |
@@ -20150,7 +21712,7 @@ TEST(ApiCallbackCanReturnSymbols) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- Handle<Object> global = context->Global(); |
+ Local<Object> global = context->Global(); |
Local<v8::Function> function = Function::New(isolate, ReturnsSymbolCallback); |
global->Set(v8_str("x"), function); |
CompileRun( |
@@ -20170,7 +21732,9 @@ TEST(EmptyApiCallback) { |
auto isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
auto global = context->Global(); |
- auto function = FunctionTemplate::New(isolate)->GetFunction(); |
+ auto function = FunctionTemplate::New(isolate) |
+ ->GetFunction(context.local()) |
+ .ToLocalChecked(); |
global->Set(v8_str("x"), function); |
auto result = CompileRun("x()"); |
@@ -20181,11 +21745,11 @@ TEST(EmptyApiCallback) { |
result = CompileRun("7 + x.call(3) + 11"); |
CHECK(result->IsInt32()); |
- CHECK_EQ(21, result->Int32Value()); |
+ CHECK_EQ(21, result->Int32Value(context.local()).FromJust()); |
result = CompileRun("7 + x.call(3, 101, 102, 103, 104) + 11"); |
CHECK(result->IsInt32()); |
- CHECK_EQ(21, result->Int32Value()); |
+ CHECK_EQ(21, result->Int32Value(context.local()).FromJust()); |
result = CompileRun("var y = []; x.call(y)"); |
CHECK(result->IsArray()); |
@@ -20202,9 +21766,10 @@ TEST(SimpleSignatureCheck) { |
auto global = context->Global(); |
auto sig_obj = FunctionTemplate::New(isolate); |
auto sig = v8::Signature::New(isolate, sig_obj); |
- auto x = FunctionTemplate::New(isolate, Returns42, Handle<Value>(), sig); |
- global->Set(v8_str("sig_obj"), sig_obj->GetFunction()); |
- global->Set(v8_str("x"), x->GetFunction()); |
+ auto x = FunctionTemplate::New(isolate, Returns42, Local<Value>(), sig); |
+ global->Set(v8_str("sig_obj"), |
+ sig_obj->GetFunction(context.local()).ToLocalChecked()); |
+ global->Set(v8_str("x"), x->GetFunction(context.local()).ToLocalChecked()); |
CompileRun("var s = new sig_obj();"); |
{ |
TryCatch try_catch(isolate); |
@@ -20220,13 +21785,13 @@ TEST(SimpleSignatureCheck) { |
TryCatch try_catch(isolate); |
auto result = CompileRun("s.x = x; s.x()"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(42, result->Int32Value()); |
+ CHECK_EQ(42, result->Int32Value(context.local()).FromJust()); |
} |
{ |
TryCatch try_catch(isolate); |
auto result = CompileRun("x.call(s)"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(42, result->Int32Value()); |
+ CHECK_EQ(42, result->Int32Value(context.local()).FromJust()); |
} |
} |
@@ -20243,9 +21808,10 @@ TEST(ChainSignatureCheck) { |
temp->Inherit(sig_obj); |
sig_obj = temp; |
} |
- auto x = FunctionTemplate::New(isolate, Returns42, Handle<Value>(), sig); |
- global->Set(v8_str("sig_obj"), sig_obj->GetFunction()); |
- global->Set(v8_str("x"), x->GetFunction()); |
+ auto x = FunctionTemplate::New(isolate, Returns42, Local<Value>(), sig); |
+ global->Set(v8_str("sig_obj"), |
+ sig_obj->GetFunction(context.local()).ToLocalChecked()); |
+ global->Set(v8_str("x"), x->GetFunction(context.local()).ToLocalChecked()); |
CompileRun("var s = new sig_obj();"); |
{ |
TryCatch try_catch(isolate); |
@@ -20261,13 +21827,13 @@ TEST(ChainSignatureCheck) { |
TryCatch try_catch(isolate); |
auto result = CompileRun("s.x = x; s.x()"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(42, result->Int32Value()); |
+ CHECK_EQ(42, result->Int32Value(context.local()).FromJust()); |
} |
{ |
TryCatch try_catch(isolate); |
auto result = CompileRun("x.call(s)"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(42, result->Int32Value()); |
+ CHECK_EQ(42, result->Int32Value(context.local()).FromJust()); |
} |
} |
@@ -20280,9 +21846,10 @@ TEST(PrototypeSignatureCheck) { |
auto sig_obj = FunctionTemplate::New(isolate); |
sig_obj->SetHiddenPrototype(true); |
auto sig = v8::Signature::New(isolate, sig_obj); |
- auto x = FunctionTemplate::New(isolate, Returns42, Handle<Value>(), sig); |
- global->Set(v8_str("sig_obj"), sig_obj->GetFunction()); |
- global->Set(v8_str("x"), x->GetFunction()); |
+ auto x = FunctionTemplate::New(isolate, Returns42, Local<Value>(), sig); |
+ global->Set(v8_str("sig_obj"), |
+ sig_obj->GetFunction(context.local()).ToLocalChecked()); |
+ global->Set(v8_str("x"), x->GetFunction(context.local()).ToLocalChecked()); |
CompileRun("s = {}; s.__proto__ = new sig_obj();"); |
{ |
TryCatch try_catch(isolate); |
@@ -20298,13 +21865,13 @@ TEST(PrototypeSignatureCheck) { |
TryCatch try_catch(isolate); |
auto result = CompileRun("s.x = x; s.x()"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(42, result->Int32Value()); |
+ CHECK_EQ(42, result->Int32Value(context.local()).FromJust()); |
} |
{ |
TryCatch try_catch(isolate); |
auto result = CompileRun("x.call(s)"); |
CHECK(!try_catch.HasCaught()); |
- CHECK_EQ(42, result->Int32Value()); |
+ CHECK_EQ(42, result->Int32Value(context.local()).FromJust()); |
} |
} |
@@ -20336,19 +21903,19 @@ TEST(Promises) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- Handle<Object> global = context->Global(); |
+ Local<Object> global = context->Global(); |
// Creation. |
- Handle<v8::Promise::Resolver> pr = v8::Promise::Resolver::New(isolate); |
- Handle<v8::Promise::Resolver> rr = v8::Promise::Resolver::New(isolate); |
- Handle<v8::Promise> p = pr->GetPromise(); |
- Handle<v8::Promise> r = rr->GetPromise(); |
+ Local<v8::Promise::Resolver> pr = v8::Promise::Resolver::New(isolate); |
+ Local<v8::Promise::Resolver> rr = v8::Promise::Resolver::New(isolate); |
+ Local<v8::Promise> p = pr->GetPromise(); |
+ Local<v8::Promise> r = rr->GetPromise(); |
CHECK_EQ(isolate, p->GetIsolate()); |
// IsPromise predicate. |
CHECK(p->IsPromise()); |
CHECK(r->IsPromise()); |
- Handle<Value> o = v8::Object::New(isolate); |
+ Local<Value> o = v8::Object::New(isolate); |
CHECK(!o->IsPromise()); |
// Resolution and rejection. |
@@ -20363,26 +21930,32 @@ TEST(Promises) { |
"var x2 = 0;\n" |
"function f1(x) { x1 = x; return x+1 };\n" |
"function f2(x) { x2 = x; return x+1 };\n"); |
- Handle<Function> f1 = Handle<Function>::Cast(global->Get(v8_str("f1"))); |
- Handle<Function> f2 = Handle<Function>::Cast(global->Get(v8_str("f2"))); |
+ Local<Function> f1 = Local<Function>::Cast(global->Get(v8_str("f1"))); |
+ Local<Function> f2 = Local<Function>::Cast(global->Get(v8_str("f2"))); |
p->Chain(f1); |
- CHECK_EQ(0, global->Get(v8_str("x1"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
isolate->RunMicrotasks(); |
- CHECK_EQ(1, global->Get(v8_str("x1"))->Int32Value()); |
+ CHECK_EQ(1, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
p->Catch(f2); |
isolate->RunMicrotasks(); |
- CHECK_EQ(0, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
r->Catch(f2); |
- CHECK_EQ(0, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
isolate->RunMicrotasks(); |
- CHECK_EQ(2, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(2, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
r->Chain(f1); |
isolate->RunMicrotasks(); |
- CHECK_EQ(1, global->Get(v8_str("x1"))->Int32Value()); |
+ CHECK_EQ(1, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
// Chaining pending promises. |
CompileRun("x1 = x2 = 0;"); |
@@ -20392,38 +21965,52 @@ TEST(Promises) { |
pr->GetPromise()->Chain(f1); |
rr->GetPromise()->Catch(f2); |
isolate->RunMicrotasks(); |
- CHECK_EQ(0, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(0, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
pr->Resolve(v8::Integer::New(isolate, 1)); |
rr->Reject(v8::Integer::New(isolate, 2)); |
- CHECK_EQ(0, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(0, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
isolate->RunMicrotasks(); |
- CHECK_EQ(1, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(2, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(1, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(2, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
// Multi-chaining. |
CompileRun("x1 = x2 = 0;"); |
pr = v8::Promise::Resolver::New(isolate); |
pr->GetPromise()->Chain(f1)->Chain(f2); |
pr->Resolve(v8::Integer::New(isolate, 3)); |
- CHECK_EQ(0, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(0, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
isolate->RunMicrotasks(); |
- CHECK_EQ(3, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(4, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(3, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(4, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
CompileRun("x1 = x2 = 0;"); |
rr = v8::Promise::Resolver::New(isolate); |
rr->GetPromise()->Catch(f1)->Chain(f2); |
rr->Reject(v8::Integer::New(isolate, 3)); |
- CHECK_EQ(0, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(0, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
isolate->RunMicrotasks(); |
- CHECK_EQ(3, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(4, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(3, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(4, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
} |
@@ -20431,13 +22018,13 @@ TEST(PromiseThen) { |
LocalContext context; |
v8::Isolate* isolate = context->GetIsolate(); |
v8::HandleScope scope(isolate); |
- Handle<Object> global = context->Global(); |
+ Local<Object> global = context->Global(); |
// Creation. |
- Handle<v8::Promise::Resolver> pr = v8::Promise::Resolver::New(isolate); |
- Handle<v8::Promise::Resolver> qr = v8::Promise::Resolver::New(isolate); |
- Handle<v8::Promise> p = pr->GetPromise(); |
- Handle<v8::Promise> q = qr->GetPromise(); |
+ Local<v8::Promise::Resolver> pr = v8::Promise::Resolver::New(isolate); |
+ Local<v8::Promise::Resolver> qr = v8::Promise::Resolver::New(isolate); |
+ Local<v8::Promise> p = pr->GetPromise(); |
+ Local<v8::Promise> q = qr->GetPromise(); |
CHECK(p->IsPromise()); |
CHECK(q->IsPromise()); |
@@ -20451,8 +22038,8 @@ TEST(PromiseThen) { |
"var x2 = 0;\n" |
"function f1(x) { x1 = x; return x+1 };\n" |
"function f2(x) { x2 = x; return x+1 };\n"); |
- Handle<Function> f1 = Handle<Function>::Cast(global->Get(v8_str("f1"))); |
- Handle<Function> f2 = Handle<Function>::Cast(global->Get(v8_str("f2"))); |
+ Local<Function> f1 = Local<Function>::Cast(global->Get(v8_str("f1"))); |
+ Local<Function> f2 = Local<Function>::Cast(global->Get(v8_str("f2"))); |
// TODO(caitp): remove tests once PromiseChain is removed, per bug 3237 |
/* q->Chain(f1); |
@@ -20465,9 +22052,11 @@ TEST(PromiseThen) { |
// Then |
CompileRun("x1 = x2 = 0;"); |
q->Then(f1); |
- CHECK_EQ(0, global->Get(v8_str("x1"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
isolate->RunMicrotasks(); |
- CHECK_EQ(1, global->Get(v8_str("x1"))->Int32Value()); |
+ CHECK_EQ(1, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
// Then |
CompileRun("x1 = x2 = 0;"); |
@@ -20477,19 +22066,27 @@ TEST(PromiseThen) { |
qr->Resolve(pr); |
qr->GetPromise()->Then(f1)->Then(f2); |
- CHECK_EQ(0, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(0, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
isolate->RunMicrotasks(); |
- CHECK_EQ(0, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(0, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
pr->Resolve(v8::Integer::New(isolate, 3)); |
- CHECK_EQ(0, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(0, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(0, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
isolate->RunMicrotasks(); |
- CHECK_EQ(3, global->Get(v8_str("x1"))->Int32Value()); |
- CHECK_EQ(4, global->Get(v8_str("x2"))->Int32Value()); |
+ CHECK_EQ(3, |
+ global->Get(v8_str("x1"))->Int32Value(context.local()).FromJust()); |
+ CHECK_EQ(4, |
+ global->Get(v8_str("x2"))->Int32Value(context.local()).FromJust()); |
} |
@@ -20534,9 +22131,12 @@ TEST(Regress354123) { |
v8::Isolate* isolate = current->GetIsolate(); |
v8::HandleScope scope(isolate); |
- v8::Handle<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> templ = v8::ObjectTemplate::New(isolate); |
templ->SetAccessCheckCallback(AccessCounter); |
- current->Global()->Set(v8_str("friend"), templ->NewInstance()); |
+ CHECK(current->Global() |
+ ->Set(current.local(), v8_str("friend"), |
+ templ->NewInstance(current.local()).ToLocalChecked()) |
+ .FromJust()); |
// Test access using __proto__ from the prototype chain. |
access_count = 0; |
@@ -20605,7 +22205,7 @@ TEST(ScriptNameAndLineNumber) { |
CHECK_EQ(13, line_number); |
} |
-void CheckMagicComments(Handle<Script> script, const char* expected_source_url, |
+void CheckMagicComments(Local<Script> script, const char* expected_source_url, |
const char* expected_source_mapping_url) { |
if (expected_source_url != NULL) { |
v8::String::Utf8Value url(script->GetUnboundScript()->GetSourceURL()); |
@@ -20714,7 +22314,7 @@ TEST(GetOwnPropertyDescriptor) { |
Local<Function> get = |
Local<Function>::Cast(Local<Object>::Cast(desc)->Get(v8_str("get"))); |
CHECK(v8_num(13)->Equals(get->Call(x, 0, NULL))); |
- Handle<Value> args[] = { v8_num(14) }; |
+ Local<Value> args[] = {v8_num(14)}; |
set->Call(x, 1, args); |
CHECK(v8_num(14)->Equals(get->Call(x, 0, NULL))); |
} |
@@ -20723,14 +22323,17 @@ TEST(GetOwnPropertyDescriptor) { |
TEST(Regress411877) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ObjectTemplate> object_template = |
+ v8::Local<v8::ObjectTemplate> object_template = |
v8::ObjectTemplate::New(isolate); |
object_template->SetAccessCheckCallback(AccessCounter); |
- v8::Handle<Context> context = Context::New(isolate); |
+ v8::Local<Context> context = Context::New(isolate); |
v8::Context::Scope context_scope(context); |
- context->Global()->Set(v8_str("o"), object_template->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context, v8_str("o"), |
+ object_template->NewInstance(context).ToLocalChecked()) |
+ .FromJust()); |
CompileRun("Object.getOwnPropertyNames(o)"); |
} |
@@ -20738,14 +22341,15 @@ TEST(Regress411877) { |
TEST(GetHiddenPropertyTableAfterAccessCheck) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ObjectTemplate> object_template = |
+ v8::Local<v8::ObjectTemplate> object_template = |
v8::ObjectTemplate::New(isolate); |
object_template->SetAccessCheckCallback(AccessCounter); |
- v8::Handle<Context> context = Context::New(isolate); |
+ v8::Local<Context> context = Context::New(isolate); |
v8::Context::Scope context_scope(context); |
- v8::Handle<v8::Object> obj = object_template->NewInstance(); |
+ v8::Local<v8::Object> obj = |
+ object_template->NewInstance(context).ToLocalChecked(); |
obj->Set(v8_str("key"), v8_str("value")); |
obj->Delete(v8_str("key")); |
@@ -20758,14 +22362,17 @@ TEST(GetHiddenPropertyTableAfterAccessCheck) { |
TEST(Regress411793) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ObjectTemplate> object_template = |
+ v8::Local<v8::ObjectTemplate> object_template = |
v8::ObjectTemplate::New(isolate); |
object_template->SetAccessCheckCallback(AccessCounter); |
- v8::Handle<Context> context = Context::New(isolate); |
+ v8::Local<Context> context = Context::New(isolate); |
v8::Context::Scope context_scope(context); |
- context->Global()->Set(v8_str("o"), object_template->NewInstance()); |
+ CHECK(context->Global() |
+ ->Set(context, v8_str("o"), |
+ object_template->NewInstance(context).ToLocalChecked()) |
+ .FromJust()); |
CompileRun( |
"Object.defineProperty(o, 'key', " |
" { get: function() {}, set: function() {} });"); |
@@ -20841,13 +22448,13 @@ void RunStreamingTest(const char** chunks, |
v8::ScriptOrigin origin(v8_str("http://foo.com")); |
char* full_source = TestSourceStream::FullSourceString(chunks); |
- v8::Handle<Script> script = v8::ScriptCompiler::Compile( |
+ v8::Local<Script> script = v8::ScriptCompiler::Compile( |
isolate, &source, v8_str(full_source), origin); |
if (expected_success) { |
CHECK(!script.IsEmpty()); |
- v8::Handle<Value> result(script->Run()); |
+ v8::Local<Value> result(script->Run()); |
// All scripts are supposed to return the fixed value 13 when ran. |
- CHECK_EQ(13, result->Int32Value()); |
+ CHECK_EQ(13, result->Int32Value(env.local()).FromJust()); |
CheckMagicComments(script, expected_source_url, |
expected_source_mapping_url); |
} else { |
@@ -21116,7 +22723,7 @@ TEST(StreamingWithDebuggingEnabledLate) { |
EnableDebugger(); |
- v8::Handle<Script> script = v8::ScriptCompiler::Compile( |
+ v8::Local<Script> script = v8::ScriptCompiler::Compile( |
isolate, &source, v8_str(full_source), origin); |
Maybe<uint32_t> result = |
@@ -21220,13 +22827,13 @@ TEST(StreamingWithHarmonyScopes) { |
v8::ScriptOrigin origin(v8_str("http://foo.com")); |
char* full_source = TestSourceStream::FullSourceString(chunks); |
- v8::Handle<Script> script = v8::ScriptCompiler::Compile( |
+ v8::Local<Script> script = v8::ScriptCompiler::Compile( |
isolate, &source, v8_str(full_source), origin); |
CHECK(!script.IsEmpty()); |
CHECK_EQ(false, try_catch.HasCaught()); |
// Running the script exposes the error. |
- v8::Handle<Value> result(script->Run()); |
+ v8::Local<Value> result(script->Run()); |
CHECK(result.IsEmpty()); |
CHECK(try_catch.HasCaught()); |
delete[] full_source; |
@@ -21279,7 +22886,8 @@ TEST(CodeCache) { |
script = v8::ScriptCompiler::Compile(context, &source, option) |
.ToLocalChecked(); |
} |
- CHECK_EQ(2, script->Run()->ToInt32(isolate2)->Int32Value()); |
+ CHECK_EQ(2, |
+ script->Run()->ToInt32(isolate2)->Int32Value(context).FromJust()); |
} |
isolate2->Dispose(); |
} |
@@ -21294,10 +22902,12 @@ void TestInvalidCacheData(v8::ScriptCompiler::CompileOptions option) { |
DCHECK(!cached_data->rejected); |
v8::ScriptOrigin origin(v8_str("origin")); |
v8::ScriptCompiler::Source source(v8_str("42"), origin, cached_data); |
- v8::Handle<v8::Script> script = |
+ v8::Local<v8::Script> script = |
v8::ScriptCompiler::Compile(CcTest::isolate(), &source, option); |
CHECK(cached_data->rejected); |
- CHECK_EQ(42, script->Run()->Int32Value()); |
+ CHECK_EQ(42, script->Run() |
+ ->Int32Value(CcTest::isolate()->GetCurrentContext()) |
+ .FromJust()); |
} |
@@ -21319,7 +22929,7 @@ TEST(ParserCacheRejectedGracefully) { |
v8::ScriptOrigin origin(v8_str("origin")); |
v8::Local<v8::String> source_str = v8_str("function foo() {}"); |
v8::ScriptCompiler::Source source(source_str, origin); |
- v8::Handle<v8::Script> script = v8::ScriptCompiler::Compile( |
+ v8::Local<v8::Script> script = v8::ScriptCompiler::Compile( |
CcTest::isolate(), &source, v8::ScriptCompiler::kProduceParserCache); |
CHECK(!script.IsEmpty()); |
const v8::ScriptCompiler::CachedData* original_cached_data = |
@@ -21334,7 +22944,7 @@ TEST(ParserCacheRejectedGracefully) { |
source_str, origin, |
new v8::ScriptCompiler::CachedData(original_cached_data->data, |
original_cached_data->length)); |
- v8::Handle<v8::Script> script = |
+ v8::Local<v8::Script> script = |
v8::ScriptCompiler::Compile(CcTest::isolate(), &source_with_cached_data, |
v8::ScriptCompiler::kConsumeParserCache); |
CHECK(!script.IsEmpty()); |
@@ -21353,7 +22963,7 @@ TEST(ParserCacheRejectedGracefully) { |
incompatible_source_str, origin, |
new v8::ScriptCompiler::CachedData(original_cached_data->data, |
original_cached_data->length)); |
- v8::Handle<v8::Script> script = |
+ v8::Local<v8::Script> script = |
v8::ScriptCompiler::Compile(CcTest::isolate(), &source_with_cached_data, |
v8::ScriptCompiler::kConsumeParserCache); |
CHECK(!script.IsEmpty()); |
@@ -21422,11 +23032,13 @@ TEST(GetPrototypeAccessControl) { |
v8::HandleScope handle_scope(isolate); |
LocalContext env; |
- v8::Handle<v8::ObjectTemplate> obj_template = |
- v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj_template = v8::ObjectTemplate::New(isolate); |
obj_template->SetAccessCheckCallback(AccessAlwaysBlocked); |
- env->Global()->Set(v8_str("prohibited"), obj_template->NewInstance()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("prohibited"), |
+ obj_template->NewInstance(env.local()).ToLocalChecked()) |
+ .FromJust()); |
CHECK(CompileRun( |
"function f() { return %_GetPrototype(prohibited); }" |
@@ -21441,19 +23053,22 @@ TEST(GetPrototypeHidden) { |
v8::HandleScope handle_scope(isolate); |
LocalContext env; |
- Handle<FunctionTemplate> t = FunctionTemplate::New(isolate); |
+ Local<FunctionTemplate> t = FunctionTemplate::New(isolate); |
t->SetHiddenPrototype(true); |
- Handle<Object> proto = t->GetFunction()->NewInstance(); |
- Handle<Object> object = Object::New(isolate); |
- Handle<Object> proto2 = Object::New(isolate); |
+ Local<Object> proto = t->GetFunction(env.local()) |
+ .ToLocalChecked() |
+ ->NewInstance(env.local()) |
+ .ToLocalChecked(); |
+ Local<Object> object = Object::New(isolate); |
+ Local<Object> proto2 = Object::New(isolate); |
object->SetPrototype(proto); |
proto->SetPrototype(proto2); |
- env->Global()->Set(v8_str("object"), object); |
- env->Global()->Set(v8_str("proto"), proto); |
- env->Global()->Set(v8_str("proto2"), proto2); |
+ CHECK(env->Global()->Set(env.local(), v8_str("object"), object).FromJust()); |
+ CHECK(env->Global()->Set(env.local(), v8_str("proto"), proto).FromJust()); |
+ CHECK(env->Global()->Set(env.local(), v8_str("proto2"), proto2).FromJust()); |
- v8::Handle<v8::Value> result = CompileRun("%_GetPrototype(object)"); |
+ v8::Local<v8::Value> result = CompileRun("%_GetPrototype(object)"); |
CHECK(result->Equals(proto2)); |
result = CompileRun( |
@@ -21469,7 +23084,7 @@ TEST(ClassPrototypeCreationContext) { |
v8::HandleScope handle_scope(isolate); |
LocalContext env; |
- Handle<Object> result = Handle<Object>::Cast( |
+ Local<Object> result = Local<Object>::Cast( |
CompileRun("'use strict'; class Example { }; Example.prototype")); |
CHECK(env.local() == result->CreationContext()); |
} |
@@ -21510,22 +23125,25 @@ TEST(NewStringRangeError) { |
{ |
v8::TryCatch try_catch(isolate); |
char* data = reinterpret_cast<char*>(buffer); |
- CHECK(v8::String::NewFromUtf8(isolate, data, v8::String::kNormalString, |
- length).IsEmpty()); |
+ CHECK(v8::String::NewFromUtf8(isolate, data, v8::NewStringType::kNormal, |
+ length) |
+ .IsEmpty()); |
CHECK(!try_catch.HasCaught()); |
} |
{ |
v8::TryCatch try_catch(isolate); |
uint8_t* data = reinterpret_cast<uint8_t*>(buffer); |
- CHECK(v8::String::NewFromOneByte(isolate, data, v8::String::kNormalString, |
- length).IsEmpty()); |
+ CHECK(v8::String::NewFromOneByte(isolate, data, v8::NewStringType::kNormal, |
+ length) |
+ .IsEmpty()); |
CHECK(!try_catch.HasCaught()); |
} |
{ |
v8::TryCatch try_catch(isolate); |
uint16_t* data = reinterpret_cast<uint16_t*>(buffer); |
- CHECK(v8::String::NewFromTwoByte(isolate, data, v8::String::kNormalString, |
- length).IsEmpty()); |
+ CHECK(v8::String::NewFromTwoByte(isolate, data, v8::NewStringType::kNormal, |
+ length) |
+ .IsEmpty()); |
CHECK(!try_catch.HasCaught()); |
} |
free(buffer); |
@@ -21585,11 +23203,10 @@ TEST(StrongModeAccessCheckAllowed) { |
i::FLAG_strong_mode = true; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<Value> value; |
+ v8::Local<Value> value; |
access_was_called = false; |
- v8::Handle<v8::ObjectTemplate> obj_template = |
- v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj_template = v8::ObjectTemplate::New(isolate); |
obj_template->Set(v8_str("x"), v8::Integer::New(isolate, 42)); |
obj_template->SetAccessCheckCallback(AccessAlwaysAllowedWithFlag); |
@@ -21597,14 +23214,15 @@ TEST(StrongModeAccessCheckAllowed) { |
// Create an environment |
v8::Local<Context> context0 = Context::New(isolate, NULL, obj_template); |
context0->Enter(); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
- global0->Set(v8_str("object"), obj_template->NewInstance()); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
+ global0->Set(v8_str("object"), |
+ obj_template->NewInstance(context0).ToLocalChecked()); |
{ |
v8::TryCatch try_catch(isolate); |
value = CompileRun("'use strong'; object.x"); |
CHECK(!try_catch.HasCaught()); |
CHECK(!access_was_called); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context0).FromJust()); |
} |
{ |
v8::TryCatch try_catch(isolate); |
@@ -21622,14 +23240,15 @@ TEST(StrongModeAccessCheckAllowed) { |
// Create an environment |
v8::Local<Context> context1 = Context::New(isolate); |
context1->Enter(); |
- v8::Handle<v8::Object> global1 = context1->Global(); |
- global1->Set(v8_str("object"), obj_template->NewInstance()); |
+ v8::Local<v8::Object> global1 = context1->Global(); |
+ global1->Set(v8_str("object"), |
+ obj_template->NewInstance(context1).ToLocalChecked()); |
{ |
v8::TryCatch try_catch(isolate); |
value = CompileRun("'use strong'; object.x"); |
CHECK(!try_catch.HasCaught()); |
CHECK(access_was_called); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context1).FromJust()); |
} |
access_was_called = false; |
{ |
@@ -21655,11 +23274,10 @@ TEST(StrongModeAccessCheckBlocked) { |
i::FLAG_strong_mode = true; |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<Value> value; |
+ v8::Local<Value> value; |
access_was_called = false; |
- v8::Handle<v8::ObjectTemplate> obj_template = |
- v8::ObjectTemplate::New(isolate); |
+ v8::Local<v8::ObjectTemplate> obj_template = v8::ObjectTemplate::New(isolate); |
obj_template->Set(v8_str("x"), v8::Integer::New(isolate, 42)); |
obj_template->SetAccessCheckCallback(AccessAlwaysBlockedWithFlag); |
@@ -21667,14 +23285,15 @@ TEST(StrongModeAccessCheckBlocked) { |
// Create an environment |
v8::Local<Context> context0 = Context::New(isolate, NULL, obj_template); |
context0->Enter(); |
- v8::Handle<v8::Object> global0 = context0->Global(); |
- global0->Set(v8_str("object"), obj_template->NewInstance()); |
+ v8::Local<v8::Object> global0 = context0->Global(); |
+ global0->Set(v8_str("object"), |
+ obj_template->NewInstance(context0).ToLocalChecked()); |
{ |
v8::TryCatch try_catch(isolate); |
value = CompileRun("'use strong'; object.x"); |
CHECK(!try_catch.HasCaught()); |
CHECK(!access_was_called); |
- CHECK_EQ(42, value->Int32Value()); |
+ CHECK_EQ(42, value->Int32Value(context0).FromJust()); |
} |
{ |
v8::TryCatch try_catch(isolate); |
@@ -21692,8 +23311,9 @@ TEST(StrongModeAccessCheckBlocked) { |
// Create an environment |
v8::Local<Context> context1 = Context::New(isolate); |
context1->Enter(); |
- v8::Handle<v8::Object> global1 = context1->Global(); |
- global1->Set(v8_str("object"), obj_template->NewInstance()); |
+ v8::Local<v8::Object> global1 = context1->Global(); |
+ global1->Set(v8_str("object"), |
+ obj_template->NewInstance(context1).ToLocalChecked()); |
{ |
v8::TryCatch try_catch(isolate); |
value = CompileRun("'use strong'; object.x"); |
@@ -21743,14 +23363,14 @@ TEST(StrongModeArityCallFromApi) { |
{ |
v8::TryCatch try_catch(isolate); |
- v8::Handle<Value> args[] = {v8_num(42)}; |
+ v8::Local<Value> args[] = {v8_num(42)}; |
fun->Call(v8::Undefined(isolate), arraysize(args), args); |
CHECK(!try_catch.HasCaught()); |
} |
{ |
v8::TryCatch try_catch(isolate); |
- v8::Handle<Value> args[] = {v8_num(42), v8_num(555)}; |
+ v8::Local<Value> args[] = {v8_num(42), v8_num(555)}; |
fun->Call(v8::Undefined(isolate), arraysize(args), args); |
CHECK(!try_catch.HasCaught()); |
} |
@@ -21781,14 +23401,14 @@ TEST(StrongModeArityCallFromApi2) { |
{ |
v8::TryCatch try_catch(isolate); |
- v8::Handle<Value> args[] = {v8_num(42)}; |
+ v8::Local<Value> args[] = {v8_num(42)}; |
fun->Call(v8::Undefined(isolate), arraysize(args), args); |
CHECK(!try_catch.HasCaught()); |
} |
{ |
v8::TryCatch try_catch(isolate); |
- v8::Handle<Value> args[] = {v8_num(42), v8_num(555)}; |
+ v8::Local<Value> args[] = {v8_num(42), v8_num(555)}; |
fun->Call(v8::Undefined(isolate), arraysize(args), args); |
CHECK(!try_catch.HasCaught()); |
} |
@@ -21819,7 +23439,9 @@ TEST(StrongObjectDelete) { |
static void ExtrasBindingTestRuntimeFunction( |
const v8::FunctionCallbackInfo<v8::Value>& args) { |
- CHECK_EQ(3, args[0]->Int32Value()); |
+ CHECK_EQ( |
+ 3, |
+ args[0]->Int32Value(args.GetIsolate()->GetCurrentContext()).FromJust()); |
args.GetReturnValue().Set(v8_num(7)); |
} |
@@ -21837,15 +23459,16 @@ TEST(ExtrasBindingObject) { |
binding->Get(v8_str("testExtraShouldReturnFive")).As<v8::Function>(); |
auto undefined = v8::Undefined(isolate); |
auto result = func->Call(undefined, 0, {}).As<v8::Number>(); |
- CHECK_EQ(5, result->Int32Value()); |
+ CHECK_EQ(5, result->Int32Value(env.local()).FromJust()); |
- v8::Handle<v8::FunctionTemplate> runtimeFunction = |
+ v8::Local<v8::FunctionTemplate> runtimeFunction = |
v8::FunctionTemplate::New(isolate, ExtrasBindingTestRuntimeFunction); |
- binding->Set(v8_str("runtime"), runtimeFunction->GetFunction()); |
+ binding->Set(v8_str("runtime"), |
+ runtimeFunction->GetFunction(env.local()).ToLocalChecked()); |
func = |
binding->Get(v8_str("testExtraShouldCallToRuntime")).As<v8::Function>(); |
result = func->Call(undefined, 0, {}).As<v8::Number>(); |
- CHECK_EQ(7, result->Int32Value()); |
+ CHECK_EQ(7, result->Int32Value(env.local()).FromJust()); |
} |
@@ -21864,15 +23487,16 @@ TEST(ExperimentalExtras) { |
.As<v8::Function>(); |
auto undefined = v8::Undefined(isolate); |
auto result = func->Call(undefined, 0, {}).As<v8::Number>(); |
- CHECK_EQ(10, result->Int32Value()); |
+ CHECK_EQ(10, result->Int32Value(env.local()).FromJust()); |
- v8::Handle<v8::FunctionTemplate> runtimeFunction = |
+ v8::Local<v8::FunctionTemplate> runtimeFunction = |
v8::FunctionTemplate::New(isolate, ExtrasBindingTestRuntimeFunction); |
- binding->Set(v8_str("runtime"), runtimeFunction->GetFunction()); |
+ binding->Set(v8_str("runtime"), |
+ runtimeFunction->GetFunction(env.local()).ToLocalChecked()); |
func = binding->Get(v8_str("testExperimentalExtraShouldCallToRuntime")) |
.As<v8::Function>(); |
result = func->Call(undefined, 0, {}).As<v8::Number>(); |
- CHECK_EQ(7, result->Int32Value()); |
+ CHECK_EQ(7, result->Int32Value(env.local()).FromJust()); |
} |
@@ -21899,19 +23523,19 @@ TEST(ExtrasUtilsObject) { |
result->Get(v8_str("fulfilledPromise")).As<v8::Promise>(); |
fulfilled_promise->Then(store); |
isolate->RunMicrotasks(); |
- CHECK_EQ(1, CompileRun("result")->Int32Value()); |
+ CHECK_EQ(1, CompileRun("result")->Int32Value(env.local()).FromJust()); |
auto fulfilled_promise_2 = |
result->Get(v8_str("fulfilledPromise2")).As<v8::Promise>(); |
fulfilled_promise_2->Then(store); |
isolate->RunMicrotasks(); |
- CHECK_EQ(2, CompileRun("result")->Int32Value()); |
+ CHECK_EQ(2, CompileRun("result")->Int32Value(env.local()).FromJust()); |
auto rejected_promise = |
result->Get(v8_str("rejectedPromise")).As<v8::Promise>(); |
rejected_promise->Catch(store); |
isolate->RunMicrotasks(); |
- CHECK_EQ(3, CompileRun("result")->Int32Value()); |
+ CHECK_EQ(3, CompileRun("result")->Int32Value(env.local()).FromJust()); |
} |
@@ -21948,10 +23572,12 @@ TEST(Map) { |
CHECK_EQ(2, map->Get(env.local(), v8::Integer::New(isolate, 1)) |
.ToLocalChecked() |
- ->Int32Value()); |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
CHECK_EQ(4, map->Get(env.local(), v8::Integer::New(isolate, 3)) |
.ToLocalChecked() |
- ->Int32Value()); |
+ ->Int32Value(env.local()) |
+ .FromJust()); |
CHECK(map->Get(env.local(), v8::Integer::New(isolate, 42)) |
.ToLocalChecked() |
@@ -22025,7 +23651,10 @@ TEST(CompatibleReceiverCheckOnCachedICHandler) { |
v8::Local<v8::FunctionTemplate> child = v8::FunctionTemplate::New(isolate); |
child->Inherit(parent); |
LocalContext env; |
- env->Global()->Set(v8_str("Child"), child->GetFunction()); |
+ CHECK(env->Global() |
+ ->Set(env.local(), v8_str("Child"), |
+ child->GetFunction(env.local()).ToLocalChecked()) |
+ .FromJust()); |
// Make sure there's a compiled stub for "Child.prototype.age" in the cache. |
CompileRun( |
@@ -22108,7 +23737,7 @@ bool NoAbortOnUncaughtException(v8::Isolate* isolate) { |
TEST(AbortOnUncaughtExceptionNoAbort) { |
v8::Isolate* isolate = CcTest::isolate(); |
v8::HandleScope handle_scope(isolate); |
- v8::Handle<v8::ObjectTemplate> global_template = |
+ v8::Local<v8::ObjectTemplate> global_template = |
v8::ObjectTemplate::New(isolate); |
LocalContext env(NULL, global_template); |
@@ -22138,10 +23767,11 @@ TEST(AccessCheckedIsConcatSpreadable) { |
spreadable_template->SetAccessCheckCallback(AccessBlocker); |
spreadable_template->Set(v8::Symbol::GetIsConcatSpreadable(isolate), |
v8::Boolean::New(isolate, true)); |
- Local<Object> object = spreadable_template->NewInstance(); |
+ Local<Object> object = |
+ spreadable_template->NewInstance(env.local()).ToLocalChecked(); |
allowed_access = true; |
- env->Global()->Set(v8_str("object"), object); |
+ CHECK(env->Global()->Set(env.local(), v8_str("object"), object).FromJust()); |
object->Set(v8_str("length"), v8_num(2)); |
object->Set(0U, v8_str("a")); |
object->Set(1U, v8_str("b")); |
@@ -22210,9 +23840,10 @@ TEST(ObjectTemplateIntrinsics) { |
Local<ObjectTemplate> object_template = v8::ObjectTemplate::New(isolate); |
object_template->SetIntrinsicDataProperty(v8_str("values"), |
v8::kArrayProto_values); |
- Local<Object> object = object_template->NewInstance(); |
+ Local<Object> object = |
+ object_template->NewInstance(env.local()).ToLocalChecked(); |
- env->Global()->Set(v8_str("obj1"), object); |
+ CHECK(env->Global()->Set(env.local(), v8_str("obj1"), object).FromJust()); |
ExpectString("typeof obj1.values", "function"); |
auto values = Local<Function>::Cast(object->Get(v8_str("values"))); |
@@ -22222,8 +23853,10 @@ TEST(ObjectTemplateIntrinsics) { |
{ |
LocalContext env2; |
- Local<Object> object2 = object_template->NewInstance(); |
- env2->Global()->Set(v8_str("obj2"), object2); |
+ Local<Object> object2 = |
+ object_template->NewInstance(env2.local()).ToLocalChecked(); |
+ CHECK( |
+ env2->Global()->Set(env2.local(), v8_str("obj2"), object2).FromJust()); |
ExpectString("typeof obj2.values", "function"); |
CHECK_NE(*object->Get(v8_str("values")), *object2->Get(v8_str("values"))); |