Index: src/d8.cc |
diff --git a/src/d8.cc b/src/d8.cc |
index 38a4b8ec1a104cae465c7b75b898699c19589687..82196189959f3ed3fb18104fcd31499a970b1e89 100644 |
--- a/src/d8.cc |
+++ b/src/d8.cc |
@@ -1582,6 +1582,18 @@ class ShellArrayBufferAllocator : public v8::ArrayBuffer::Allocator { |
}; |
+class ShellSharedArrayBufferAllocator |
+ : public v8::SharedArrayBuffer::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) OVERRIDE { return malloc(1); } |
@@ -1590,6 +1602,14 @@ class MockArrayBufferAllocator : public v8::ArrayBuffer::Allocator { |
}; |
+class MockSharedArrayBufferAllocator : public v8::SharedArrayBuffer::Allocator { |
+ public: |
+ void* Allocate(size_t) OVERRIDE { return malloc(1); } |
+ void* AllocateUninitialized(size_t length) OVERRIDE { return malloc(1); } |
+ void Free(void* p, size_t) OVERRIDE { free(p); } |
+}; |
+ |
+ |
int Shell::Main(int argc, char* argv[]) { |
#if (defined(_WIN32) || defined(_WIN64)) |
UINT new_flags = |
@@ -1620,10 +1640,14 @@ int Shell::Main(int argc, char* argv[]) { |
SetFlagsFromString("--redirect-code-traces-to=code.asm"); |
ShellArrayBufferAllocator array_buffer_allocator; |
MockArrayBufferAllocator mock_arraybuffer_allocator; |
+ ShellSharedArrayBufferAllocator shared_array_buffer_allocator; |
+ MockSharedArrayBufferAllocator mock_shared_arraybuffer_allocator; |
if (options.mock_arraybuffer_allocator) { |
v8::V8::SetArrayBufferAllocator(&mock_arraybuffer_allocator); |
+ v8::V8::SetSharedArrayBufferAllocator(&mock_shared_arraybuffer_allocator); |
} else { |
v8::V8::SetArrayBufferAllocator(&array_buffer_allocator); |
+ v8::V8::SetSharedArrayBufferAllocator(&shared_array_buffer_allocator); |
} |
int result = 0; |
Isolate::CreateParams create_params; |