Chromium Code Reviews| Index: test/cctest/test-global-handles.cc |
| diff --git a/test/cctest/test-global-handles.cc b/test/cctest/test-global-handles.cc |
| index 07b4b4c39a6d1a639321c637dff37f2047034943..ec8f769fb5a5e9c706bf4ae0dddc04423105bcad 100644 |
| --- a/test/cctest/test-global-handles.cc |
| +++ b/test/cctest/test-global-handles.cc |
| @@ -475,24 +475,25 @@ TEST(EternalHandles) { |
| CcTest::InitializeVM(); |
| Isolate* isolate = Isolate::Current(); |
| v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); |
| - EternalHandles* eternals = isolate->eternal_handles(); |
| + EternalHandles* eternal_handles = isolate->eternal_handles(); |
| // Create a number of handles that will not be on a block boundary |
| const int kArrayLength = 2048-1; |
| int indices[kArrayLength]; |
| + v8::Eternal<v8::Value> eternals[kArrayLength]; |
| - CHECK_EQ(0, eternals->NumberOfHandles()); |
| + CHECK_EQ(0, eternal_handles->NumberOfHandles()); |
| for (int i = 0; i < kArrayLength; i++) { |
| HandleScope scope(isolate); |
| v8::Local<v8::Object> object = v8::Object::New(); |
| object->Set(i, v8::Integer::New(i, v8_isolate)); |
| - if (i % 2 == 0) { |
| - // Create with internal api |
| - indices[i] = eternals->Create(isolate, *v8::Utils::OpenHandle(*object)); |
| - } else { |
| - // Create with external api |
| - indices[i] = object.Eternalize(v8_isolate); |
| - } |
| + // Create with internal api |
| + eternal_handles->Create( |
| + isolate, *v8::Utils::OpenHandle(*object), &indices[i]); |
| + // Create with external api |
| + CHECK(!eternals[i].IsSet()); |
| + eternals[i].Set(v8_isolate, object); |
| + CHECK(eternals[i].IsSet()); |
| } |
| isolate->heap()->CollectAllAvailableGarbage(); |
| @@ -500,22 +501,32 @@ TEST(EternalHandles) { |
| for (int i = 0; i < kArrayLength; i++) { |
| for (int j = 0; j < 2; j++) { |
| HandleScope scope(isolate); |
| - v8::Local<v8::Object> object; |
| + v8::Local<v8::Value> local; |
| if (j == 0) { |
| // Test internal api |
| - v8::Local<v8::Value> local = |
| - v8::Utils::ToLocal(eternals->Get(indices[i])); |
| - object = v8::Handle<v8::Object>::Cast(local); |
| + local = v8::Utils::ToLocal(eternal_handles->Get(indices[i])); |
| } else { |
| // Test external api |
| - object = v8::Local<v8::Object>::GetEternal(v8_isolate, indices[i]); |
| + local = eternals[i].Get(v8_isolate); |
| } |
| + v8::Local<v8::Object> object = v8::Handle<v8::Object>::Cast(local); |
| v8::Local<v8::Value> value = object->Get(i); |
| CHECK(value->IsInt32()); |
| CHECK_EQ(i, value->Int32Value()); |
| } |
| } |
| - CHECK_EQ(kArrayLength, eternals->NumberOfHandles()); |
| + CHECK_EQ(2*kArrayLength, eternal_handles->NumberOfHandles()); |
| + |
| + // Create an eternal with via the constructor |
|
rossberg
2013/08/12 15:13:13
Nit: typo?
dcarney
2013/08/13 06:46:24
fixed
|
| + { |
| + HandleScope scope(isolate); |
| + v8::Local<v8::Object> object = v8::Object::New(); |
| + v8::Eternal<v8::Object> eternal(v8_isolate, object); |
| + CHECK(eternal.IsSet()); |
| + CHECK(object == eternal.Get(v8_isolate)); |
| + } |
| + |
| + CHECK_EQ(2*kArrayLength + 1, eternal_handles->NumberOfHandles()); |
| } |