Index: src/wasm/wasm-module.cc |
diff --git a/src/wasm/wasm-module.cc b/src/wasm/wasm-module.cc |
index 6eff8f2820848bcac4b38b3ad9727cdb29bde0a8..7446fe30ad3cf17b7053866c78d3b43c4d560046 100644 |
--- a/src/wasm/wasm-module.cc |
+++ b/src/wasm/wasm-module.cc |
@@ -61,12 +61,14 @@ static void MemoryFinalizer(const v8::WeakCallbackInfo<void>& data) { |
JSArrayBuffer** p = reinterpret_cast<JSArrayBuffer**>(data.GetParameter()); |
JSArrayBuffer* buffer = *p; |
- void* memory = buffer->backing_store(); |
- base::OS::Free(memory, |
- RoundUp(kWasmMaxHeapOffset, base::OS::CommitPageSize())); |
+ if (!buffer->was_neutered()) { |
+ void* memory = buffer->backing_store(); |
Eric Holk
2017/01/25 18:16:57
`DCHECK(memory != nullptr)` would probably be good
gdeepti
2017/01/25 18:59:19
Done.
|
+ base::OS::Free(memory, |
+ RoundUp(kWasmMaxHeapOffset, base::OS::CommitPageSize())); |
- data.GetIsolate()->AdjustAmountOfExternalAllocatedMemory( |
- -buffer->byte_length()->Number()); |
+ data.GetIsolate()->AdjustAmountOfExternalAllocatedMemory( |
+ -buffer->byte_length()->Number()); |
+ } |
GlobalHandles::Destroy(reinterpret_cast<Object**>(p)); |
} |
@@ -2349,25 +2351,14 @@ Handle<JSArrayBuffer> GrowMemoryBuffer(Isolate* isolate, |
return Handle<JSArrayBuffer>::null(); |
} |
- Handle<JSArrayBuffer> new_buffer; |
- if (!old_buffer.is_null() && old_buffer->has_guard_region()) { |
- // We don't move the backing store, we simply change the protection to make |
- // more of it accessible. |
- base::OS::Unprotect(old_buffer->backing_store(), new_size); |
- reinterpret_cast<v8::Isolate*>(isolate) |
- ->AdjustAmountOfExternalAllocatedMemory(pages * WasmModule::kPageSize); |
- Handle<Object> new_size_object = |
- isolate->factory()->NewNumberFromSize(new_size); |
- old_buffer->set_byte_length(*new_size_object); |
- new_buffer = old_buffer; |
- } else { |
- const bool enable_guard_regions = false; |
- new_buffer = NewArrayBuffer(isolate, new_size, enable_guard_regions); |
- if (new_buffer.is_null()) return new_buffer; |
- Address new_mem_start = static_cast<Address>(new_buffer->backing_store()); |
- if (old_size != 0) { |
- memcpy(new_mem_start, old_mem_start, old_size); |
- } |
+ const bool enable_guard_regions = |
+ (!old_buffer.is_null() && old_buffer->has_guard_region()) ? true : false; |
titzer
2017/01/25 09:28:57
You don't need to do the {x ? true : false}, you c
gdeepti
2017/01/25 21:05:24
Done.
|
+ Handle<JSArrayBuffer> new_buffer = |
+ NewArrayBuffer(isolate, new_size, enable_guard_regions); |
titzer
2017/01/25 09:28:57
I think should adjust the old logic here (just cha
gdeepti
2017/01/25 21:05:24
After offline discussions with Eric (summarized he
|
+ if (new_buffer.is_null()) return new_buffer; |
+ Address new_mem_start = static_cast<Address>(new_buffer->backing_store()); |
+ if (old_size != 0) { |
+ memcpy(new_mem_start, old_mem_start, old_size); |
} |
return new_buffer; |
} |