Index: src/d8.cc |
diff --git a/src/d8.cc b/src/d8.cc |
index ff6e1d3aa7d4144c07459cdb2c80f65bbccabcd0..75bbf1d5ab1b2b3a41395f4f96e1a1e7f91d0aeb 100644 |
--- a/src/d8.cc |
+++ b/src/d8.cc |
@@ -73,7 +73,37 @@ |
namespace v8 { |
namespace { |
+ |
+const int MB = 1024 * 1024; |
+ |
+ |
+class ShellArrayBufferAllocator : public v8::ArrayBuffer::Allocator { |
+ public: |
+ virtual void* Allocate(size_t length) { |
+ void* data = AllocateUninitialized(length); |
+ return data == NULL ? data : memset(data, 0, length); |
+ } |
+ virtual void* AllocateUninitialized(size_t length) { return malloc(length); } |
+ virtual void Free(void* data, size_t) { free(data); } |
+}; |
+ |
+ |
+class MockArrayBufferAllocator : public v8::ArrayBuffer::Allocator { |
+ public: |
+ void* Allocate(size_t length) override { |
+ size_t actual_length = length > 10 * MB ? 1 : length; |
+ void* data = AllocateUninitialized(actual_length); |
+ return data == NULL ? data : memset(data, 0, actual_length); |
+ } |
+ void* AllocateUninitialized(size_t length) override { |
+ return length > 10 * MB ? malloc(1) : malloc(length); |
+ } |
+ void Free(void* p, size_t) override { free(p); } |
+}; |
+ |
+ |
v8::Platform* g_platform = NULL; |
+ |
} // namespace |
@@ -166,7 +196,6 @@ Persistent<Context> Shell::utility_context_; |
Persistent<Context> Shell::evaluation_context_; |
ShellOptions Shell::options; |
const char* Shell::kPrompt = "d8> "; |
-const int MB = 1024 * 1024; |
#ifndef V8_SHARED |
bool CounterMap::Match(void* key1, void* key2) { |
@@ -197,7 +226,10 @@ ScriptCompiler::CachedData* CompileForCachedData( |
name_buffer = new uint16_t[name_length]; |
name_string->Write(name_buffer, 0, name_length); |
} |
- Isolate* temp_isolate = Isolate::New(); |
+ ShellArrayBufferAllocator allocator; |
+ Isolate::CreateParams create_params; |
+ create_params.array_buffer_allocator = &allocator; |
+ Isolate* temp_isolate = Isolate::New(create_params); |
ScriptCompiler::CachedData* result = NULL; |
{ |
Isolate::Scope isolate_scope(temp_isolate); |
@@ -1287,7 +1319,10 @@ base::Thread::Options SourceGroup::GetThreadOptions() { |
void SourceGroup::ExecuteInThread() { |
- Isolate* isolate = Isolate::New(); |
+ ShellArrayBufferAllocator allocator; |
+ Isolate::CreateParams create_params; |
+ create_params.array_buffer_allocator = &allocator; |
+ Isolate* isolate = Isolate::New(create_params); |
do { |
next_semaphore_.Wait(); |
{ |
@@ -1584,31 +1619,6 @@ static void DumpHeapConstants(i::Isolate* isolate) { |
#endif // !V8_SHARED |
-class ShellArrayBufferAllocator : public v8::ArrayBuffer::Allocator { |
- public: |
- virtual void* Allocate(size_t length) { |
- void* data = AllocateUninitialized(length); |
- return data == NULL ? data : memset(data, 0, length); |
- } |
- virtual void* AllocateUninitialized(size_t length) { return malloc(length); } |
- virtual void Free(void* data, size_t) { free(data); } |
-}; |
- |
- |
-class MockArrayBufferAllocator : public v8::ArrayBuffer::Allocator { |
- public: |
- void* Allocate(size_t length) override { |
- size_t actual_length = length > 10 * MB ? 1 : length; |
- void* data = AllocateUninitialized(actual_length); |
- return data == NULL ? data : memset(data, 0, actual_length); |
- } |
- void* AllocateUninitialized(size_t length) override { |
- return length > 10 * MB ? malloc(1) : malloc(length); |
- } |
- void Free(void* p, size_t) override { free(p); } |
-}; |
- |
- |
int Shell::Main(int argc, char* argv[]) { |
#if (defined(_WIN32) || defined(_WIN64)) |
UINT new_flags = |
@@ -1637,15 +1647,15 @@ int Shell::Main(int argc, char* argv[]) { |
SetFlagsFromString("--trace-hydrogen-file=hydrogen.cfg"); |
SetFlagsFromString("--trace-turbo-cfg-file=turbo.cfg"); |
SetFlagsFromString("--redirect-code-traces-to=code.asm"); |
+ int result = 0; |
+ Isolate::CreateParams create_params; |
ShellArrayBufferAllocator array_buffer_allocator; |
MockArrayBufferAllocator mock_arraybuffer_allocator; |
if (options.mock_arraybuffer_allocator) { |
- v8::V8::SetArrayBufferAllocator(&mock_arraybuffer_allocator); |
+ create_params.array_buffer_allocator = &mock_arraybuffer_allocator; |
} else { |
- v8::V8::SetArrayBufferAllocator(&array_buffer_allocator); |
+ create_params.array_buffer_allocator = &array_buffer_allocator; |
} |
- int result = 0; |
- Isolate::CreateParams create_params; |
#if !defined(V8_SHARED) && defined(ENABLE_GDB_JIT_INTERFACE) |
if (i::FLAG_gdbjit) { |
create_params.code_event_handler = i::GDBJITInterface::EventHandler; |