Changeset 134934 in webkit


Ignore:
Timestamp:
Nov 16, 2012 5:19:56 AM (11 years ago)
Author:
commit-queue@webkit.org
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 <ulan@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:
Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r134916 r134934  
     12012-11-16  Ulan Degenbaev  <ulan@chromium.org>
     2
     3        [V8] Increment the amount of externally allocated memory for the receiving V8 isolate when transferring ArrayBuffer
     4        https://bugs.webkit.org/show_bug.cgi?id=94463
     5
     6        Reviewed by Kentaro Hara.
     7
     8        Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer is deserialized and transferred.
     9
     10        * ManualTests/typed-array-memory.html:
     11
    1122012-11-16  Sheriff Bot  <webkit.review.bot@gmail.com>
    213
  • trunk/ManualTests/typed-array-memory.html

    r126196 r134934  
    137137"    return getV8Statistics().amount_of_external_allocated_memory;\n" +
    138138"}\n" +
    139 "function collectGarbage() {\n" +
    140 "    for (var i = 0; i < 10; i++) gc();\n" +
    141 "}\n" +
    142 "var before = externalMemory();\n" +
     139"var KB = 1024;\n" +
     140"var MB = KB * KB;\n" +
     141"var noise = KB;\n" +
    143142"self.onmessage = function(e) {\n" +
    144 "    var now = externalMemory();\n" +
    145 "    e.data = null;\n" +
    146 "    collectGarbage();\n" +
     143"    var before = externalMemory();\n" +
     144"    e.data;\n" +
    147145"    var after = externalMemory();\n" +
    148 "    self.postMessage(before + ' ' + now + ' ' + after);\n" +
     146"    if (after > before + MB - noise) {\n" +
     147"      self.postMessage('PASS: Amount of external memory increased.');\n" +
     148"    } else {\n" +
     149"      self.postMessage('FAIL: Amount of external memory did not increase.');\n" +
     150"    }\n" +
    149151"}\n";
    150152
     
    159161        try {
    160162            var before = externalMemory();
    161             worker.webkitPostMessage(buffer, [buffer]);
     163            worker.postMessage(buffer, [buffer]);
    162164            var now = externalMemory();
    163165            if (now > before - MB + noise) {
  • trunk/Source/WebCore/ChangeLog

    r134932 r134934  
     12012-11-16  Ulan Degenbaev  <ulan@chromium.org>
     2
     3        [V8] Increment the amount of externally allocated memory for the receiving V8 isolate when transferring ArrayBuffer
     4        https://bugs.webkit.org/show_bug.cgi?id=94463
     5
     6        Reviewed by Kentaro Hara.
     7
     8        Call AdjustAmountOfExternalAllocatedMemory when V8ArrayBuffer is deserialized and transferred.
     9
     10        Test: ManualTests/typed-array-memory.html
     11
     12        * bindings/v8/SerializedScriptValue.cpp:
     13
    1142012-11-16  Sheriff Bot  <webkit.review.bot@gmail.com>
    215
  • trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp

    r134447 r134934  
    4242#include "SharedBuffer.h"
    4343#include "V8ArrayBuffer.h"
     44#include "V8ArrayBufferCustom.h"
    4445#include "V8ArrayBufferView.h"
    4546#include "V8Binding.h"
     
    16481649        const void* bufferStart = m_buffer + m_position;
    16491650        RefPtr<ArrayBuffer> arrayBuffer = ArrayBuffer::create(bufferStart, byteLength);
     1651        arrayBuffer->setDeallocationObserver(V8ArrayBufferDeallocationObserver::instance());
     1652        v8::V8::AdjustAmountOfExternalAllocatedMemory(arrayBuffer->byteLength());
    16501653        m_position += byteLength;
    16511654        return arrayBuffer.release();
     
    20352038        v8::Handle<v8::Object> result = m_arrayBuffers.at(index);
    20362039        if (result.IsEmpty()) {
    2037             result = toV8Object(ArrayBuffer::create(m_arrayBufferContents->at(index)).get(), v8::Handle<v8::Object>(), m_reader.getIsolate());
     2040            RefPtr<ArrayBuffer> buffer = ArrayBuffer::create(m_arrayBufferContents->at(index));
     2041            buffer->setDeallocationObserver(V8ArrayBufferDeallocationObserver::instance());
     2042            v8::V8::AdjustAmountOfExternalAllocatedMemory(buffer->byteLength());
     2043            result = toV8Object(buffer.get(), v8::Handle<v8::Object>(), m_reader.getIsolate());
    20382044            m_arrayBuffers[index] = result;
    20392045        }
Note: See TracChangeset for help on using the changeset viewer.