Title: [134934] trunk
- Revision
- 134934
- Author
- commit-qu...@webkit.org
- Date
- 2012-11-16 05:19:56 -0800 (Fri, 16 Nov 2012)
Log Message
[V8] Increment the amount of externally allocated memory for the receiving V8 isolate when transferring ArrayBuffer
https://bugs.webkit.org/show_bug.cgi?id=94463
Patch by Ulan Degenbaev <u...@chromium.org> on 2012-11-16
Reviewed by Kentaro Hara.
Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer is deserialized and transferred.
.:
* ManualTests/typed-array-memory.html:
Source/WebCore:
Test: ManualTests/typed-array-memory.html
* bindings/v8/SerializedScriptValue.cpp:
Modified Paths
Diff
Modified: trunk/ChangeLog (134933 => 134934)
--- trunk/ChangeLog 2012-11-16 12:53:42 UTC (rev 134933)
+++ trunk/ChangeLog 2012-11-16 13:19:56 UTC (rev 134934)
@@ -1,3 +1,14 @@
+2012-11-16 Ulan Degenbaev <u...@chromium.org>
+
+ [V8] Increment the amount of externally allocated memory for the receiving V8 isolate when transferring ArrayBuffer
+ https://bugs.webkit.org/show_bug.cgi?id=94463
+
+ Reviewed by Kentaro Hara.
+
+ Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer is deserialized and transferred.
+
+ * ManualTests/typed-array-memory.html:
+
2012-11-16 Sheriff Bot <webkit.review....@gmail.com>
Unreviewed, rolling out r134908.
Modified: trunk/ManualTests/typed-array-memory.html (134933 => 134934)
--- trunk/ManualTests/typed-array-memory.html 2012-11-16 12:53:42 UTC (rev 134933)
+++ trunk/ManualTests/typed-array-memory.html 2012-11-16 13:19:56 UTC (rev 134934)
@@ -136,16 +136,18 @@
"function externalMemory() {\n" +
" return getV8Statistics().amount_of_external_allocated_memory;\n" +
"}\n" +
-"function collectGarbage() {\n" +
-" for (var i = 0; i < 10; i++) gc();\n" +
-"}\n" +
-"var before = externalMemory();\n" +
+"var KB = 1024;\n" +
+"var MB = KB * KB;\n" +
+"var noise = KB;\n" +
"self._onmessage_ = function(e) {\n" +
-" var now = externalMemory();\n" +
-" e.data = "" +
-" collectGarbage();\n" +
+" var before = externalMemory();\n" +
+" e.data;\n" +
" var after = externalMemory();\n" +
-" self.postMessage(before + ' ' + now + ' ' + after);\n" +
+" if (after > before + MB - noise) {\n" +
+" self.postMessage('PASS: Amount of external memory increased.');\n" +
+" } else {\n" +
+" self.postMessage('FAIL: Amount of external memory did not increase.');\n" +
+" }\n" +
"}\n";
var blob = new Blob([workerSource]);
@@ -158,7 +160,7 @@
var buffer = eval(_expression_);
try {
var before = externalMemory();
- worker.webkitPostMessage(buffer, [buffer]);
+ worker.postMessage(buffer, [buffer]);
var now = externalMemory();
if (now > before - MB + noise) {
fail("Transfer of " + _expression_ + " did not decrease the amount of external memory (" +
Modified: trunk/Source/WebCore/ChangeLog (134933 => 134934)
--- trunk/Source/WebCore/ChangeLog 2012-11-16 12:53:42 UTC (rev 134933)
+++ trunk/Source/WebCore/ChangeLog 2012-11-16 13:19:56 UTC (rev 134934)
@@ -1,3 +1,16 @@
+2012-11-16 Ulan Degenbaev <u...@chromium.org>
+
+ [V8] Increment the amount of externally allocated memory for the receiving V8 isolate when transferring ArrayBuffer
+ https://bugs.webkit.org/show_bug.cgi?id=94463
+
+ Reviewed by Kentaro Hara.
+
+ Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer is deserialized and transferred.
+
+ Test: ManualTests/typed-array-memory.html
+
+ * bindings/v8/SerializedScriptValue.cpp:
+
2012-11-16 Sheriff Bot <webkit.review....@gmail.com>
Unreviewed, rolling out r134694.
Modified: trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp (134933 => 134934)
--- trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp 2012-11-16 12:53:42 UTC (rev 134933)
+++ trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp 2012-11-16 13:19:56 UTC (rev 134934)
@@ -41,6 +41,7 @@
#include "MessagePort.h"
#include "SharedBuffer.h"
#include "V8ArrayBuffer.h"
+#include "V8ArrayBufferCustom.h"
#include "V8ArrayBufferView.h"
#include "V8Binding.h"
#include "V8Blob.h"
@@ -1647,6 +1648,8 @@
return 0;
const void* bufferStart = m_buffer + m_position;
RefPtr<ArrayBuffer> arrayBuffer = ArrayBuffer::create(bufferStart, byteLength);
+ arrayBuffer->setDeallocationObserver(V8ArrayBufferDeallocationObserver::instance());
+ v8::V8::AdjustAmountOfExternalAllocatedMemory(arrayBuffer->byteLength());
m_position += byteLength;
return arrayBuffer.release();
}
@@ -2034,7 +2037,10 @@
return false;
v8::Handle<v8::Object> result = m_arrayBuffers.at(index);
if (result.IsEmpty()) {
- result = toV8Object(ArrayBuffer::create(m_arrayBufferContents->at(index)).get(), v8::Handle<v8::Object>(), m_reader.getIsolate());
+ RefPtr<ArrayBuffer> buffer = ArrayBuffer::create(m_arrayBufferContents->at(index));
+ buffer->setDeallocationObserver(V8ArrayBufferDeallocationObserver::instance());
+ v8::V8::AdjustAmountOfExternalAllocatedMemory(buffer->byteLength());
+ result = toV8Object(buffer.get(), v8::Handle<v8::Object>(), m_reader.getIsolate());
m_arrayBuffers[index] = result;
}
*object = result;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes