The previous implementation of Free is a deprecated overload now.
R=mstarzinger@chromium.org
Committed: https://code.google.com/p/v8/source/detail?r=16031
Review URL: https://codereview.chromium.org/
21803002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16033
ce2b1a6d-e550-0410-aec6-
3dcde31c8c00
}
/**
- * 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);
};
/**
}
+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(),
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) {
+#ifndef V8_SHARED
+ UNREACHABLE();
+#endif
+ }
};
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);
}
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(); }
};