Add size_t length argument to v8::ArrayBuffer::Allocator::Free.
The previous implementation of Free is a deprecated overload now. R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/21803002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16031 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
232a2c0d88
commit
1688f3c167
16
include/v8.h
16
include/v8.h
@ -2425,10 +2425,20 @@ class V8EXPORT ArrayBuffer : public Object {
|
||||
}
|
||||
|
||||
/**
|
||||
* Free the memory pointed to |data|. That memory is guaranteed to be
|
||||
* previously allocated by |Allocate|.
|
||||
* Free the memory block of size |length|, pointed to by |data|.
|
||||
* That memory is guaranteed to be previously allocated by |Allocate|.
|
||||
*/
|
||||
virtual void Free(void* data) = 0;
|
||||
virtual void Free(void* data, size_t length) {
|
||||
// Override with call to |Free(void*)| for compatibility
|
||||
// with legacy version.
|
||||
Free(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Deprecated. Never called directly by V8.
|
||||
* For compatibility with legacy version of this interface.
|
||||
*/
|
||||
virtual void Free(void* data);
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -3071,6 +3071,12 @@ void v8::ArrayBuffer::CheckCast(Value* that) {
|
||||
}
|
||||
|
||||
|
||||
void v8::ArrayBuffer::Allocator::Free(void* data) {
|
||||
API_Fatal("v8::ArrayBuffer::Allocator::Free",
|
||||
"Override Allocator::Free(void*, size_t)");
|
||||
}
|
||||
|
||||
|
||||
void v8::ArrayBufferView::CheckCast(Value* that) {
|
||||
i::Handle<i::Object> obj = Utils::OpenHandle(that);
|
||||
ApiCheck(obj->IsJSArrayBufferView(),
|
||||
|
@ -1635,7 +1635,9 @@ class ShellArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
|
||||
virtual void* AllocateUninitialized(size_t length) {
|
||||
return malloc(length);
|
||||
}
|
||||
virtual void Free(void* data) { free(data); }
|
||||
virtual void Free(void* data, size_t) { free(data); }
|
||||
// TODO(dslomov): Remove when v8:2823 is fixed.
|
||||
virtual void Free(void* data) { UNREACHABLE(); }
|
||||
};
|
||||
|
||||
|
||||
|
@ -689,7 +689,9 @@ void Runtime::FreeArrayBuffer(Isolate* isolate,
|
||||
isolate->heap()->AdjustAmountOfExternalAllocatedMemory(
|
||||
-static_cast<intptr_t>(allocated_length));
|
||||
CHECK(V8::ArrayBufferAllocator() != NULL);
|
||||
V8::ArrayBufferAllocator()->Free(phantom_array_buffer->backing_store());
|
||||
V8::ArrayBufferAllocator()->Free(
|
||||
phantom_array_buffer->backing_store(),
|
||||
allocated_length);
|
||||
}
|
||||
|
||||
|
||||
|
@ -99,9 +99,10 @@ v8::Isolate* CcTest::default_isolate_;
|
||||
|
||||
|
||||
class CcTestArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
|
||||
public:
|
||||
virtual void* Allocate(size_t length) { return malloc(length); }
|
||||
virtual void Free(void* data) { free(data); }
|
||||
virtual void Free(void* data, size_t length) { free(data); }
|
||||
// TODO(dslomov): Remove when v8:2823 is fixed.
|
||||
virtual void Free(void* data) { UNREACHABLE(); }
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user