Index: test/cctest/test-api.cc |
diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc |
index d0b986b796e61f1c2a4e90d9e3fb930e3b2ac881..1656f1e3e4c66be82ac555d26a9c824806673a04 100644 |
--- a/test/cctest/test-api.cc |
+++ b/test/cctest/test-api.cc |
@@ -32,6 +32,11 @@ |
#include <unistd.h> // getpid |
#endif // WIN32 |
+// TODO(dcarney): remove |
+#define V8_ALLOW_ACCESS_TO_RAW_HANDLE_CONSTRUCTOR |
+#define V8_ALLOW_ACCESS_TO_PERSISTENT_IMPLICIT |
+#define V8_ALLOW_ACCESS_TO_PERSISTENT_ARROW |
+ |
#include "v8.h" |
#include "api.h" |
@@ -162,8 +167,8 @@ THREADED_TEST(Handles) { |
THREADED_TEST(IsolateOfContext) { |
- v8::Persistent<Context> env = Context::New(); |
- v8::HandleScope scope(env->GetIsolate()); |
+ v8::HandleScope scope(v8::Isolate::GetCurrent()); |
+ v8::Handle<Context> env = Context::New(v8::Isolate::GetCurrent()); |
CHECK(!env->InContext()); |
CHECK(env->GetIsolate() == v8::Isolate::GetCurrent()); |
@@ -173,8 +178,6 @@ THREADED_TEST(IsolateOfContext) { |
env->Exit(); |
CHECK(!env->InContext()); |
CHECK(env->GetIsolate() == v8::Isolate::GetCurrent()); |
- |
- env.Dispose(env->GetIsolate()); |
} |
@@ -2319,6 +2322,9 @@ THREADED_TEST(ArrayBuffer) { |
} |
+ |
+ |
+ |
THREADED_TEST(HiddenProperties) { |
LocalContext env; |
v8::HandleScope scope(env->GetIsolate()); |
@@ -2546,8 +2552,8 @@ THREADED_TEST(OldApiObjectGroups) { |
Persistent<Object> root = Persistent<Object>::New(iso, g1s1); // make a root. |
// Connect group 1 and 2, make a cycle. |
- CHECK(g1s2->Set(0, g2s2)); |
- CHECK(g2s1->Set(0, g1s1)); |
+ CHECK(g1s2->Set(0, Handle<Object>(*g2s2))); |
+ CHECK(g2s1->Set(0, Handle<Object>(*g1s1))); |
{ |
Persistent<Value> g1_objects[] = { g1s1, g1s2 }; |
@@ -2632,8 +2638,8 @@ THREADED_TEST(ApiObjectGroups) { |
Persistent<Object> root = Persistent<Object>::New(iso, g1s1); // make a root. |
// Connect group 1 and 2, make a cycle. |
- CHECK(g1s2->Set(0, g2s2)); |
- CHECK(g2s1->Set(0, g1s1)); |
+ CHECK(g1s2->Set(0, Local<Value>(*g2s2))); |
+ CHECK(g2s1->Set(0, Local<Value>(*g1s1))); |
{ |
UniqueId id1(reinterpret_cast<intptr_t>(*g1s1)); |
@@ -2954,11 +2960,11 @@ TEST(OldApiObjectGroupsCycleForScavenger) { |
Persistent<Value> g2_objects[] = { g2s1, g2s2 }; |
Persistent<Value> g3_objects[] = { g3s1, g3s2 }; |
V8::AddObjectGroup(g1_objects, 2); |
- g1s1->Set(v8_str("x"), g2s1); |
+ g1s1->Set(v8_str("x"), Handle<Object>(*g2s1)); |
V8::AddObjectGroup(g2_objects, 2); |
- g2s1->Set(v8_str("x"), g3s1); |
+ g2s1->Set(v8_str("x"), Handle<Object>(*g3s1)); |
V8::AddObjectGroup(g3_objects, 2); |
- g3s1->Set(v8_str("x"), g1s1); |
+ g3s1->Set(v8_str("x"), Handle<Object>(*g1s1)); |
} |
HEAP->CollectGarbage(i::NEW_SPACE); |
@@ -2983,11 +2989,11 @@ TEST(OldApiObjectGroupsCycleForScavenger) { |
Persistent<Value> g2_objects[] = { g2s1, g2s2 }; |
Persistent<Value> g3_objects[] = { g3s1, g3s2 }; |
V8::AddObjectGroup(g1_objects, 2); |
- g1s1->Set(v8_str("x"), g2s1); |
+ g1s1->Set(v8_str("x"), Handle<Object>(*g2s1)); |
V8::AddObjectGroup(g2_objects, 2); |
- g2s1->Set(v8_str("x"), g3s1); |
+ g2s1->Set(v8_str("x"), Handle<Object>(*g3s1)); |
V8::AddObjectGroup(g3_objects, 2); |
- g3s1->Set(v8_str("x"), g1s1); |
+ g3s1->Set(v8_str("x"), Handle<Object>(*g1s1)); |
} |
HEAP->CollectGarbage(i::NEW_SPACE); |
@@ -3049,13 +3055,13 @@ TEST(ApiObjectGroupsCycleForScavenger) { |
g3s2.MarkPartiallyDependent(iso); |
iso->SetObjectGroupId(g1s1, UniqueId(1)); |
iso->SetObjectGroupId(g1s2, UniqueId(1)); |
- g1s1->Set(v8_str("x"), g2s1); |
+ g1s1->Set(v8_str("x"), Local<Value>(*g2s1)); |
iso->SetObjectGroupId(g2s1, UniqueId(2)); |
iso->SetObjectGroupId(g2s2, UniqueId(2)); |
- g2s1->Set(v8_str("x"), g3s1); |
+ g2s1->Set(v8_str("x"), Local<Value>(*g3s1)); |
iso->SetObjectGroupId(g3s1, UniqueId(3)); |
iso->SetObjectGroupId(g3s2, UniqueId(3)); |
- g3s1->Set(v8_str("x"), g1s1); |
+ g3s1->Set(v8_str("x"), Local<Value>(*g1s1)); |
} |
v8::internal::Heap* heap = reinterpret_cast<v8::internal::Isolate*>( |
@@ -3080,13 +3086,13 @@ TEST(ApiObjectGroupsCycleForScavenger) { |
g3s2.MarkPartiallyDependent(isolate); |
iso->SetObjectGroupId(g1s1, UniqueId(1)); |
iso->SetObjectGroupId(g1s2, UniqueId(1)); |
- g1s1->Set(v8_str("x"), g2s1); |
+ g1s1->Set(v8_str("x"), Local<Value>(*g2s1)); |
iso->SetObjectGroupId(g2s1, UniqueId(2)); |
iso->SetObjectGroupId(g2s2, UniqueId(2)); |
- g2s1->Set(v8_str("x"), g3s1); |
+ g2s1->Set(v8_str("x"), Local<Value>(*g3s1)); |
iso->SetObjectGroupId(g3s1, UniqueId(3)); |
iso->SetObjectGroupId(g3s2, UniqueId(3)); |
- g3s1->Set(v8_str("x"), g1s1); |
+ g3s1->Set(v8_str("x"), Local<Value>(*g1s1)); |
} |
heap->CollectGarbage(i::NEW_SPACE); |
@@ -4540,7 +4546,7 @@ THREADED_TEST(SimplePropertyWrite) { |
for (int i = 0; i < 10; i++) { |
CHECK(xValue.IsEmpty()); |
script->Run(); |
- CHECK_EQ(v8_num(4), xValue); |
+ CHECK_EQ(v8_num(4), Handle<Value>(*xValue)); |
xValue.Dispose(context->GetIsolate()); |
xValue = v8::Persistent<Value>(); |
} |
@@ -4557,7 +4563,7 @@ THREADED_TEST(SetterOnly) { |
for (int i = 0; i < 10; i++) { |
CHECK(xValue.IsEmpty()); |
script->Run(); |
- CHECK_EQ(v8_num(4), xValue); |
+ CHECK_EQ(v8_num(4), Handle<Value>(*xValue)); |
xValue.Dispose(context->GetIsolate()); |
xValue = v8::Persistent<Value>(); |
} |
@@ -5448,7 +5454,7 @@ THREADED_TEST(GlobalObjectTemplate) { |
global_template->Set(v8_str("JSNI_Log"), |
v8::FunctionTemplate::New(HandleLogDelegator)); |
v8::Persistent<Context> context = Context::New(0, global_template); |
- Context::Scope context_scope(context); |
+ Context::Scope context_scope(v8::Isolate::GetCurrent(), context); |
Script::Compile(v8_str("JSNI_Log('LOG')"))->Run(); |
context.Dispose(context->GetIsolate()); |
} |
@@ -5465,7 +5471,8 @@ THREADED_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(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
Context::Scope lock(context); |
v8::Handle<Value> result = Script::Compile(v8_str("Foo()"))->Run(); |
CHECK_EQ(result, v8::Integer::New(4)); |
@@ -5477,7 +5484,8 @@ THREADED_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(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
Context::Scope lock(context); |
v8::Handle<Value> result = Script::Compile(v8_str("1+3"))->Run(); |
CHECK_EQ(result, v8::Integer::New(4)); |
@@ -5496,7 +5504,8 @@ THREADED_TEST(ExtensionMissingSourceLength) { |
kEmbeddedExtensionSource)); |
const char* extension_names[] = { "srclentest_fail" }; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
CHECK_EQ(0, *context); |
} |
@@ -5512,7 +5521,8 @@ THREADED_TEST(ExtensionWithSourceLength) { |
source_len)); |
const char* extension_names[1] = { extension_name.start() }; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
if (source_len == kEmbeddedExtensionSourceValidLen) { |
Context::Scope lock(context); |
v8::Handle<Value> result = Script::Compile(v8_str("Ret54321()"))->Run(); |
@@ -5548,7 +5558,8 @@ THREADED_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(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
Context::Scope lock(context); |
v8::Handle<Value> result = Script::Compile(v8_str("UseEval1()"))->Run(); |
CHECK_EQ(result, v8::Integer::New(42)); |
@@ -5581,7 +5592,8 @@ THREADED_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(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
Context::Scope lock(context); |
v8::Handle<Value> result = Script::Compile(v8_str("UseWith1()"))->Run(); |
CHECK_EQ(result, v8::Integer::New(87)); |
@@ -5595,7 +5607,8 @@ THREADED_TEST(AutoExtensions) { |
Extension* extension = new Extension("autotest", kSimpleExtensionSource); |
extension->set_auto_enable(true); |
v8::RegisterExtension(extension); |
- v8::Handle<Context> context = Context::New(); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent()); |
Context::Scope lock(context); |
v8::Handle<Value> result = Script::Compile(v8_str("Foo()"))->Run(); |
CHECK_EQ(result, v8::Integer::New(4)); |
@@ -5614,7 +5627,8 @@ THREADED_TEST(SyntaxErrorExtensions) { |
kSyntaxErrorInExtensionSource)); |
const char* extension_names[] = { "syntaxerror" }; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
CHECK(context.IsEmpty()); |
} |
@@ -5631,7 +5645,8 @@ THREADED_TEST(ExceptionExtensions) { |
kExceptionInExtensionSource)); |
const char* extension_names[] = { "exception" }; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
CHECK(context.IsEmpty()); |
} |
@@ -5652,7 +5667,8 @@ THREADED_TEST(NativeCallInExtensions) { |
kNativeCallInExtensionSource)); |
const char* extension_names[] = { "nativecall" }; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
Context::Scope lock(context); |
v8::Handle<Value> result = Script::Compile(v8_str(kNativeCallTest))->Run(); |
CHECK_EQ(result, v8::Integer::New(3)); |
@@ -5688,7 +5704,8 @@ THREADED_TEST(NativeFunctionDeclaration) { |
"native function foo();")); |
const char* extension_names[] = { name }; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context = Context::New(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
Context::Scope lock(context); |
v8::Handle<Value> result = Script::Compile(v8_str("foo(42);"))->Run(); |
CHECK_EQ(result, v8::Integer::New(42)); |
@@ -5703,7 +5720,8 @@ THREADED_TEST(NativeFunctionDeclarationError) { |
"native\nfunction foo();")); |
const char* extension_names[] = { name }; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context(Context::New(&extensions)); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
CHECK(context.IsEmpty()); |
} |
@@ -5718,7 +5736,8 @@ THREADED_TEST(NativeFunctionDeclarationErrorEscape) { |
"nativ\\u0065 function foo();")); |
const char* extension_names[] = { name }; |
v8::ExtensionConfiguration extensions(1, extension_names); |
- v8::Handle<Context> context(Context::New(&extensions)); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
CHECK(context.IsEmpty()); |
} |
@@ -5858,7 +5877,8 @@ TEST(ErrorReporting) { |
v8::RegisterExtension(new Extension("B", "", 1, bDeps)); |
last_location = NULL; |
v8::ExtensionConfiguration config(1, bDeps); |
- v8::Handle<Context> context = Context::New(&config); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &config); |
CHECK(context.IsEmpty()); |
CHECK_NE(last_location, NULL); |
} |
@@ -5974,7 +5994,8 @@ THREADED_TEST(WeakReference) { |
v8::External::New(whammy)); |
const char* extension_list[] = { "v8/gc" }; |
v8::ExtensionConfiguration extensions(1, extension_list); |
- v8::Persistent<Context> context = Context::New(&extensions); |
+ v8::Handle<Context> context = |
+ Context::New(v8::Isolate::GetCurrent(), &extensions); |
Context::Scope context_scope(context); |
v8::Handle<v8::Object> interceptor = templ->NewInstance(); |
@@ -5991,7 +6012,6 @@ THREADED_TEST(WeakReference) { |
v8::Handle<Value> result = CompileRun(code); |
CHECK_EQ(4.0, result->NumberValue()); |
delete whammy; |
- context.Dispose(context->GetIsolate()); |
} |
@@ -6005,8 +6025,9 @@ static void DisposeAndSetFlag(v8::Isolate* isolate, |
THREADED_TEST(IndependentWeakHandle) { |
- v8::Persistent<Context> context = Context::New(); |
- v8::Isolate* iso = context->GetIsolate(); |
+ v8::Isolate* iso = v8::Isolate::GetCurrent(); |
+ v8::HandleScope scope(iso); |
+ v8::Handle<Context> context = Context::New(iso); |
Context::Scope context_scope(context); |
v8::Persistent<v8::Object> object_a, object_b; |
@@ -6062,8 +6083,9 @@ static void ForceMarkSweep(v8::Isolate* isolate, |
THREADED_TEST(GCFromWeakCallbacks) { |
- v8::Persistent<Context> context = Context::New(); |
- v8::Isolate* isolate = context->GetIsolate(); |
+ v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
+ v8::HandleScope scope(isolate); |
+ v8::Handle<Context> context = Context::New(isolate); |
Context::Scope context_scope(context); |
static const int kNumberOfGCTypes = 2; |
@@ -6099,9 +6121,10 @@ static void RevivingCallback(v8::Isolate* isolate, |
THREADED_TEST(IndependentHandleRevival) { |
- v8::Persistent<Context> context = Context::New(); |
+ v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
+ v8::HandleScope scope(isolate); |
+ v8::Handle<Context> context = Context::New(isolate); |
Context::Scope context_scope(context); |
- v8::Isolate* isolate = context->GetIsolate(); |
v8::Persistent<v8::Object> object; |
{ |
@@ -7156,8 +7179,8 @@ TEST(SecurityHandler) { |
global_template->SetAccessCheckCallbacks(NamedSecurityTestCallback, |
IndexedSecurityTestCallback); |
// Create an environment |
- v8::Persistent<Context> context0 = |
- Context::New(NULL, global_template); |
+ v8::Handle<Context> context0 = |
+ Context::New(v8::Isolate::GetCurrent(), NULL, global_template); |
context0->Enter(); |
v8::Handle<v8::Object> global0 = context0->Global(); |
@@ -7172,8 +7195,8 @@ TEST(SecurityHandler) { |
// Create another environment, should fail security checks. |
v8::HandleScope scope1(v8::Isolate::GetCurrent()); |
- v8::Persistent<Context> context1 = |
- Context::New(NULL, global_template); |
+ v8::Handle<Context> context1 = |
+ Context::New(v8::Isolate::GetCurrent(), NULL, global_template); |
context1->Enter(); |
v8::Handle<v8::Object> global1 = context1->Global(); |
@@ -7205,17 +7228,14 @@ TEST(SecurityHandler) { |
} |
context1->Exit(); |
- context1.Dispose(context1->GetIsolate()); |
- |
context0->Exit(); |
- context0.Dispose(context0->GetIsolate()); |
} |
THREADED_TEST(SecurityChecks) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Persistent<Context> env2 = Context::New(); |
+ v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
Local<Value> bar = v8_str("bar"); |
@@ -7251,8 +7271,6 @@ THREADED_TEST(SecurityChecks) { |
Function::Cast(*spy2)->Call(env2->Global(), 0, NULL); |
CHECK(try_catch.HasCaught()); |
} |
- |
- env2.Dispose(env2->GetIsolate()); |
} |
@@ -7260,7 +7278,7 @@ THREADED_TEST(SecurityChecks) { |
THREADED_TEST(SecurityChecksForPrototypeChain) { |
LocalContext current; |
v8::HandleScope scope(current->GetIsolate()); |
- v8::Persistent<Context> other = Context::New(); |
+ v8::Handle<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. |
@@ -7321,14 +7339,13 @@ THREADED_TEST(SecurityChecksForPrototypeChain) { |
CHECK(!access_f3->Run()->Equals(v8_num(101))); |
CHECK(access_f3->Run()->IsUndefined()); |
} |
- other.Dispose(other->GetIsolate()); |
} |
THREADED_TEST(CrossDomainDelete) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Persistent<Context> env2 = Context::New(); |
+ v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
Local<Value> bar = v8_str("bar"); |
@@ -7353,15 +7370,13 @@ THREADED_TEST(CrossDomainDelete) { |
Local<Value> v = env1->Global()->Get(v8_str("prop")); |
CHECK(v->IsNumber()); |
CHECK_EQ(3, v->Int32Value()); |
- |
- env2.Dispose(env2->GetIsolate()); |
} |
THREADED_TEST(CrossDomainIsPropertyEnumerable) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Persistent<Context> env2 = Context::New(); |
+ v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
Local<Value> bar = v8_str("bar"); |
@@ -7388,15 +7403,13 @@ THREADED_TEST(CrossDomainIsPropertyEnumerable) { |
Local<Value> result = Script::Compile(test)->Run(); |
CHECK(result->IsFalse()); |
} |
- |
- env2.Dispose(env2->GetIsolate()); |
} |
THREADED_TEST(CrossDomainForIn) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Persistent<Context> env2 = Context::New(); |
+ v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
Local<Value> bar = v8_str("bar"); |
@@ -7422,14 +7435,13 @@ THREADED_TEST(CrossDomainForIn) { |
"return true;})()"); |
CHECK(result->IsTrue()); |
} |
- env2.Dispose(env2->GetIsolate()); |
} |
TEST(ContextDetachGlobal) { |
LocalContext env1; |
v8::HandleScope handle_scope(env1->GetIsolate()); |
- v8::Persistent<Context> env2 = Context::New(); |
+ v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
Local<v8::Object> global1 = env1->Global(); |
@@ -7456,8 +7468,10 @@ TEST(ContextDetachGlobal) { |
// env2 has a new global object. |
CHECK(!env2->Global()->Equals(global2)); |
- v8::Persistent<Context> env3 = |
- Context::New(0, v8::Handle<v8::ObjectTemplate>(), global2); |
+ v8::Handle<Context> env3 = Context::New(env1->GetIsolate(), |
+ 0, |
+ v8::Handle<v8::ObjectTemplate>(), |
+ global2); |
env3->SetSecurityToken(v8_str("bar")); |
env3->Enter(); |
@@ -7484,9 +7498,6 @@ TEST(ContextDetachGlobal) { |
Local<Value> r = global3->Get(v8_str("prop2")); |
CHECK(r->IsUndefined()); |
} |
- |
- env2.Dispose(env2->GetIsolate()); |
- env3.Dispose(env3->GetIsolate()); |
} |
@@ -7495,7 +7506,7 @@ TEST(DetachAndReattachGlobal) { |
v8::HandleScope scope(env1->GetIsolate()); |
// Create second environment. |
- v8::Persistent<Context> env2 = Context::New(); |
+ v8::Handle<Context> env2 = Context::New(env1->GetIsolate()); |
Local<Value> foo = v8_str("foo"); |
@@ -7527,8 +7538,10 @@ TEST(DetachAndReattachGlobal) { |
CHECK(result->IsUndefined()); |
// Reuse global2 for env3. |
- v8::Persistent<Context> env3 = |
- Context::New(0, v8::Handle<v8::ObjectTemplate>(), global2); |
+ v8::Handle<Context> env3 = Context::New(env1->GetIsolate(), |
+ 0, |
+ v8::Handle<v8::ObjectTemplate>(), |
+ global2); |
CHECK_EQ(global2, env3->Global()); |
// Start by using the same security token for env3 as for env1 and env2. |
@@ -7563,9 +7576,6 @@ TEST(DetachAndReattachGlobal) { |
result = CompileRun("other.p"); |
CHECK(result->IsInt32()); |
CHECK_EQ(42, result->Int32Value()); |
- |
- env2.Dispose(env2->GetIsolate()); |
- env3.Dispose(env3->GetIsolate()); |
} |
@@ -9634,7 +9644,7 @@ static v8::Handle<Value> InterceptorLoadXICGetter(Local<String> name, |
const AccessorInfo& info) { |
ApiTestFuzzer::Fuzz(); |
return v8_str("x")->Equals(name) |
- ? v8::Integer::New(42) : v8::Handle<v8::Value>(); |
+ ? v8::Handle<v8::Value>(v8::Integer::New(42)) : v8::Handle<v8::Value>(); |
} |
@@ -12652,7 +12662,7 @@ THREADED_TEST(TurnOnAccessCheck) { |
v8::Handle<v8::Value>(), |
false); |
v8::Persistent<Context> context = Context::New(NULL, global_template); |
- Context::Scope context_scope(context); |
+ Context::Scope context_scope(v8::Isolate::GetCurrent(), context); |
// Set up a property and a number of functions. |
context->Global()->Set(v8_str("a"), v8_num(1)); |
@@ -12733,7 +12743,7 @@ THREADED_TEST(TurnOnAccessCheckAndRecompile) { |
v8::Handle<v8::Value>(), |
false); |
v8::Persistent<Context> context = Context::New(NULL, global_template); |
- Context::Scope context_scope(context); |
+ Context::Scope context_scope(v8::Isolate::GetCurrent(), context); |
// Set up a property and a number of functions. |
context->Global()->Set(v8_str("a"), v8_num(1)); |
@@ -16852,8 +16862,8 @@ TEST(RunTwoIsolatesOnSingleThread) { |
v8::Persistent<v8::Context> context1 = v8::Context::New(); |
{ |
- v8::Context::Scope cscope(context1); |
v8::HandleScope scope(isolate1); |
+ v8::Context::Scope cscope(isolate1, context1); |
// Run something in new isolate. |
CompileRun("var foo = 'isolate 1';"); |
ExpectString("function f() { return foo; }; f()", "isolate 1"); |
@@ -16866,8 +16876,8 @@ TEST(RunTwoIsolatesOnSingleThread) { |
{ |
v8::Isolate::Scope iscope(isolate2); |
context2 = v8::Context::New(); |
- v8::Context::Scope cscope(context2); |
v8::HandleScope scope(isolate2); |
+ v8::Context::Scope cscope(isolate2, context2); |
// Run something in new isolate. |
CompileRun("var foo = 'isolate 2';"); |
@@ -16875,8 +16885,8 @@ TEST(RunTwoIsolatesOnSingleThread) { |
} |
{ |
- v8::Context::Scope cscope(context1); |
v8::HandleScope scope(isolate1); |
+ v8::Context::Scope cscope(isolate1, context1); |
// Now again in isolate 1 |
ExpectString("function f() { return foo; }; f()", "isolate 1"); |
} |
@@ -16887,8 +16897,8 @@ TEST(RunTwoIsolatesOnSingleThread) { |
v8::Persistent<v8::Context> context_default = v8::Context::New(); |
{ |
- v8::Context::Scope cscope(context_default); |
v8::HandleScope scope(v8::Isolate::GetCurrent()); |
+ v8::Context::Scope cscope(v8::Isolate::GetCurrent(), context_default); |
// Variables in other isolates should be not available, verify there |
// is an exception. |
ExpectTrue("function f() {" |
@@ -16907,14 +16917,14 @@ TEST(RunTwoIsolatesOnSingleThread) { |
{ |
v8::Isolate::Scope iscope(isolate2); |
- v8::Context::Scope cscope(context2); |
v8::HandleScope scope(v8::Isolate::GetCurrent()); |
+ v8::Context::Scope cscope(isolate2, context2); |
ExpectString("function f() { return foo; }; f()", "isolate 2"); |
} |
{ |
- v8::Context::Scope cscope(context1); |
v8::HandleScope scope(v8::Isolate::GetCurrent()); |
+ v8::Context::Scope cscope(v8::Isolate::GetCurrent(), context1); |
ExpectString("function f() { return foo; }; f()", "isolate 1"); |
} |
@@ -16939,8 +16949,8 @@ TEST(RunTwoIsolatesOnSingleThread) { |
// Check that default isolate still runs. |
{ |
- v8::Context::Scope cscope(context_default); |
v8::HandleScope scope(v8::Isolate::GetCurrent()); |
+ v8::Context::Scope cscope(v8::Isolate::GetCurrent(), context_default); |
ExpectTrue("function f() { return isDefaultIsolate; }; f()"); |
} |
} |
@@ -17015,7 +17025,7 @@ TEST(IsolateDifferentContexts) { |
v8::Isolate::Scope isolate_scope(isolate); |
v8::HandleScope handle_scope(isolate); |
context = v8::Context::New(); |
- v8::Context::Scope context_scope(context); |
+ v8::Context::Scope context_scope(isolate, context); |
Local<Value> v = CompileRun("2"); |
CHECK(v->IsNumber()); |
CHECK_EQ(2, static_cast<int>(v->NumberValue())); |
@@ -17024,7 +17034,7 @@ TEST(IsolateDifferentContexts) { |
v8::Isolate::Scope isolate_scope(isolate); |
v8::HandleScope handle_scope(isolate); |
context = v8::Context::New(); |
- v8::Context::Scope context_scope(context); |
+ v8::Context::Scope context_scope(isolate, context); |
Local<Value> v = CompileRun("22"); |
CHECK(v->IsNumber()); |
CHECK_EQ(22, static_cast<int>(v->NumberValue())); |
@@ -17299,7 +17309,7 @@ class Visitor42 : public v8::PersistentHandleVisitor { |
v8::Persistent<v8::Object> visited = |
v8::Persistent<v8::Object>::Cast(value); |
CHECK_EQ(42, visited.WrapperClassId(v8::Isolate::GetCurrent())); |
- CHECK_EQ(object_, visited); |
+ CHECK_EQ(Handle<Value>(*object_), Handle<Value>(*visited)); |
++counter_; |
} |
} |
@@ -17514,11 +17524,11 @@ static void CheckContextId(v8::Handle<Object> object, int expected) { |
THREADED_TEST(CreationContext) { |
HandleScope handle_scope(v8::Isolate::GetCurrent()); |
- Persistent<Context> context1 = Context::New(); |
+ Handle<Context> context1 = Context::New(v8::Isolate::GetCurrent()); |
InstallContextId(context1, 1); |
- Persistent<Context> context2 = Context::New(); |
+ Handle<Context> context2 = Context::New(v8::Isolate::GetCurrent()); |
InstallContextId(context2, 2); |
- Persistent<Context> context3 = Context::New(); |
+ Handle<Context> context3 = Context::New(v8::Isolate::GetCurrent()); |
InstallContextId(context3, 3); |
Local<v8::FunctionTemplate> tmpl = v8::FunctionTemplate::New(); |
@@ -17592,16 +17602,12 @@ THREADED_TEST(CreationContext) { |
CHECK(instance2->CreationContext() == context2); |
CheckContextId(instance2, 2); |
} |
- |
- context1.Dispose(context1->GetIsolate()); |
- context2.Dispose(context2->GetIsolate()); |
- context3.Dispose(context3->GetIsolate()); |
} |
THREADED_TEST(CreationContextOfJsFunction) { |
HandleScope handle_scope(v8::Isolate::GetCurrent()); |
- Persistent<Context> context = Context::New(); |
+ Handle<Context> context = Context::New(v8::Isolate::GetCurrent()); |
InstallContextId(context, 1); |
Local<Object> function; |
@@ -17612,8 +17618,6 @@ THREADED_TEST(CreationContextOfJsFunction) { |
CHECK(function->CreationContext() == context); |
CheckContextId(function, 1); |
- |
- context.Dispose(context->GetIsolate()); |
} |