Index: test/cctest/test-serialize.cc |
diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc |
index 19081691ce3316a4d0d360fc4fb51c8f5647d76d..6ce2406c41a7b74841908337a860f6eeb4353009 100644 |
--- a/test/cctest/test-serialize.cc |
+++ b/test/cctest/test-serialize.cc |
@@ -49,6 +49,7 @@ |
#include "src/snapshot/startup-serializer.h" |
#include "test/cctest/cctest.h" |
#include "test/cctest/heap/heap-utils.h" |
+#include "test/cctest/setup-isolate-for-tests.h" |
using namespace v8::internal; |
@@ -64,14 +65,26 @@ class TestIsolate : public Isolate { |
public: |
static v8::Isolate* NewInitialized(bool enable_serializer) { |
i::Isolate* isolate = new TestIsolate(enable_serializer); |
+ isolate->setup_delegate_ = new SetupIsolateDelegateForTests(); |
v8::Isolate* v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); |
v8::Isolate::Scope isolate_scope(v8_isolate); |
isolate->Init(NULL); |
return v8_isolate; |
} |
+ // Wraps v8::Isolate::New, but with a TestIsolate under the hood. |
+ // Allows flexibility to bootstrap with or without snapshot even when |
+ // the production Isolate class has one or the other behavior baked in. |
+ static v8::Isolate* New(const v8::Isolate::CreateParams& params) { |
+ i::Isolate* isolate = new TestIsolate(false); |
+ isolate->setup_delegate_ = new SetupIsolateDelegateForTests(); |
+ return v8::IsolateNewImpl(isolate, params); |
+ } |
explicit TestIsolate(bool enable_serializer) : Isolate(enable_serializer) { |
set_array_buffer_allocator(CcTest::array_buffer_allocator()); |
} |
+ void CreateSetupDelegateForTests() { |
+ setup_delegate_ = new SetupIsolateDelegateForTests(); |
+ } |
}; |
static Vector<const byte> WritePayload(const Vector<const byte>& payload) { |
@@ -125,9 +138,10 @@ v8::Isolate* InitializeFromBlob(Vector<const byte> blob) { |
{ |
SnapshotData snapshot_data(blob); |
Deserializer deserializer(&snapshot_data); |
- Isolate* isolate = new TestIsolate(false); |
+ TestIsolate* isolate = new TestIsolate(false); |
v8_isolate = reinterpret_cast<v8::Isolate*>(isolate); |
v8::Isolate::Scope isolate_scope(v8_isolate); |
+ isolate->CreateSetupDelegateForTests(); |
isolate->Init(&deserializer); |
} |
return v8_isolate; |
@@ -633,7 +647,8 @@ TEST(CustomSnapshotDataBlob1) { |
params1.snapshot_blob = &data1; |
params1.array_buffer_allocator = CcTest::array_buffer_allocator(); |
- v8::Isolate* isolate1 = v8::Isolate::New(params1); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate1 = TestIsolate::New(params1); |
{ |
v8::Isolate::Scope i_scope(isolate1); |
v8::HandleScope h_scope(isolate1); |
@@ -660,7 +675,8 @@ TEST(CustomSnapshotDataBlob2) { |
v8::Isolate::CreateParams params2; |
params2.snapshot_blob = &data2; |
params2.array_buffer_allocator = CcTest::array_buffer_allocator(); |
- v8::Isolate* isolate2 = v8::Isolate::New(params2); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate2 = TestIsolate::New(params2); |
{ |
v8::Isolate::Scope i_scope(isolate2); |
v8::HandleScope h_scope(isolate2); |
@@ -703,7 +719,8 @@ TEST(CustomSnapshotDataBlobOutdatedContextWithOverflow) { |
params.snapshot_blob = &data; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope i_scope(isolate); |
v8::HandleScope h_scope(isolate); |
@@ -750,7 +767,8 @@ TEST(CustomSnapshotDataBlobWithLocker) { |
v8::Isolate::CreateParams params1; |
params1.snapshot_blob = &data1; |
params1.array_buffer_allocator = CcTest::array_buffer_allocator(); |
- v8::Isolate* isolate1 = v8::Isolate::New(params1); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate1 = TestIsolate::New(params1); |
{ |
v8::Locker locker(isolate1); |
v8::Isolate::Scope i_scope(isolate1); |
@@ -782,7 +800,8 @@ TEST(CustomSnapshotDataBlobStackOverflow) { |
params.snapshot_blob = &data; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope i_scope(isolate); |
v8::HandleScope h_scope(isolate); |
@@ -822,7 +841,8 @@ TEST(SnapshotDataBlobWithWarmup) { |
params.snapshot_blob = &warm; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope i_scope(isolate); |
v8::HandleScope h_scope(isolate); |
@@ -855,7 +875,8 @@ TEST(CustomSnapshotDataBlobWithWarmup) { |
params.snapshot_blob = &warm; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope i_scope(isolate); |
v8::HandleScope h_scope(isolate); |
@@ -891,7 +912,8 @@ TEST(CustomSnapshotDataBlobImmortalImmovableRoots) { |
params.snapshot_blob = &data; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope i_scope(isolate); |
v8::HandleScope h_scope(isolate); |
@@ -1906,7 +1928,8 @@ TEST(SnapshotCreatorMultipleContexts) { |
v8::Isolate::CreateParams params; |
params.snapshot_blob = &blob; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope isolate_scope(isolate); |
{ |
@@ -2028,7 +2051,8 @@ TEST(SnapshotCreatorExternalReferences) { |
params.snapshot_blob = &blob; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
params.external_references = original_external_references; |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope isolate_scope(isolate); |
v8::HandleScope handle_scope(isolate); |
@@ -2045,7 +2069,8 @@ TEST(SnapshotCreatorExternalReferences) { |
params.snapshot_blob = &blob; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
params.external_references = replaced_external_references; |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope isolate_scope(isolate); |
v8::HandleScope handle_scope(isolate); |
@@ -2178,7 +2203,8 @@ TEST(SnapshotCreatorTemplates) { |
params.snapshot_blob = &blob; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
params.external_references = original_external_references; |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope isolate_scope(isolate); |
{ |
@@ -2355,7 +2381,8 @@ TEST(SnapshotCreatorIncludeGlobalProxy) { |
params.snapshot_blob = &blob; |
params.array_buffer_allocator = CcTest::array_buffer_allocator(); |
params.external_references = original_external_references; |
- v8::Isolate* isolate = v8::Isolate::New(params); |
+ // Test-appropriate equivalent of v8::Isolate::New. |
+ v8::Isolate* isolate = TestIsolate::New(params); |
{ |
v8::Isolate::Scope isolate_scope(isolate); |
// We can introduce new extensions, which could override the already |