Changeset 139735 in webkit


Ignore:
Timestamp:
Jan 15, 2013 5:49:57 AM (11 years ago)
Author:
haraken@chromium.org
Message:

[V8] Make an Isolate parameter mandatory in SerializedScriptValue methods
https://bugs.webkit.org/show_bug.cgi?id=106800

Reviewed by Adam Barth.

SerializedScriptValue methods are used by both V8 bindings
and WebCore. So they should support both an Isolate-version
method and an non-Isolate version method.

There are two ways to accomplish that:

[1] Use an optional Isolate parameter.

[2] Implement two versions and delegate the non-Isolate
version method to the Isolate version method.

I would prefer the approach [2], because I'd like to statically
make sure that we never pass a 0 Isolate. If we take the approach
[1], we need to insert ASSERT(isolate) here and there.

This patch implements the approach [2].

No tests. No change in behavior.

  • bindings/v8/SerializedScriptValue.cpp:

(WebCore::SerializedScriptValue::create):
(WebCore):
(WebCore::SerializedScriptValue::nullValue):
(WebCore::SerializedScriptValue::undefinedValue):
(WebCore::SerializedScriptValue::booleanValue):
(WebCore::SerializedScriptValue::numberValue):
(WebCore::SerializedScriptValue::SerializedScriptValue):

  • bindings/v8/SerializedScriptValue.h:

(SerializedScriptValue):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r139734 r139735  
     12013-01-14  Kentaro Hara  <haraken@chromium.org>
     2
     3        [V8] Make an Isolate parameter mandatory in SerializedScriptValue methods
     4        https://bugs.webkit.org/show_bug.cgi?id=106800
     5
     6        Reviewed by Adam Barth.
     7
     8        SerializedScriptValue methods are used by both V8 bindings
     9        and WebCore. So they should support both an Isolate-version
     10        method and an non-Isolate version method.
     11
     12        There are two ways to accomplish that:
     13
     14        [1] Use an optional Isolate parameter.
     15
     16        [2] Implement two versions and delegate the non-Isolate
     17        version method to the Isolate version method.
     18
     19        I would prefer the approach [2], because I'd like to statically
     20        make sure that we never pass a 0 Isolate. If we take the approach
     21        [1], we need to insert ASSERT(isolate) here and there.
     22
     23        This patch implements the approach [2].
     24
     25        No tests. No change in behavior.
     26
     27        * bindings/v8/SerializedScriptValue.cpp:
     28        (WebCore::SerializedScriptValue::create):
     29        (WebCore):
     30        (WebCore::SerializedScriptValue::nullValue):
     31        (WebCore::SerializedScriptValue::undefinedValue):
     32        (WebCore::SerializedScriptValue::booleanValue):
     33        (WebCore::SerializedScriptValue::numberValue):
     34        (WebCore::SerializedScriptValue::SerializedScriptValue):
     35        * bindings/v8/SerializedScriptValue.h:
     36        (SerializedScriptValue):
     37
    1382013-01-15  Dongwoo Joshua Im  <dw.im@samsung.com>
    239
  • trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp

    r137954 r139735  
    22322232} // namespace
    22332233
    2234 PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value,
    2235                                                                 MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers,
    2236                                                                 bool& didThrow,
    2237                                                                 v8::Isolate* isolate)
     2234PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow)
     2235{
     2236    return create(value, messagePorts, arrayBuffers, didThrow, v8::Isolate::GetCurrent());
     2237}
     2238
     2239PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow, v8::Isolate* isolate)
    22382240{
    22392241    return adoptRef(new SerializedScriptValue(value, messagePorts, arrayBuffers, didThrow, isolate));
     2242}
     2243
     2244PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value)
     2245{
     2246    return create(value, v8::Isolate::GetCurrent());
    22402247}
    22412248
     
    22652272}
    22662273
     2274PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(const String& data)
     2275{
     2276    return create(data, v8::Isolate::GetCurrent());
     2277}
     2278
    22672279PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(const String& data, v8::Isolate* isolate)
    22682280{
     
    22782290}
    22792291
     2292PassRefPtr<SerializedScriptValue> SerializedScriptValue::nullValue()
     2293{
     2294    return nullValue(v8::Isolate::GetCurrent());
     2295}
     2296
    22802297PassRefPtr<SerializedScriptValue> SerializedScriptValue::nullValue(v8::Isolate* isolate)
    22812298{
     
    22862303}
    22872304
     2305PassRefPtr<SerializedScriptValue> SerializedScriptValue::undefinedValue()
     2306{
     2307    return undefinedValue(v8::Isolate::GetCurrent());
     2308}
     2309
    22882310PassRefPtr<SerializedScriptValue> SerializedScriptValue::undefinedValue(v8::Isolate* isolate)
    22892311{
     
    22922314    String wireData = StringImpl::adopt(writer.data());
    22932315    return adoptRef(new SerializedScriptValue(wireData));
     2316}
     2317
     2318PassRefPtr<SerializedScriptValue> SerializedScriptValue::booleanValue(bool value)
     2319{
     2320    return booleanValue(value, v8::Isolate::GetCurrent());
    22942321}
    22952322
     
    23052332}
    23062333
     2334PassRefPtr<SerializedScriptValue> SerializedScriptValue::numberValue(double value)
     2335{
     2336    return numberValue(value, v8::Isolate::GetCurrent());
     2337}
     2338
    23072339PassRefPtr<SerializedScriptValue> SerializedScriptValue::numberValue(double value, v8::Isolate* isolate)
    23082340{
     
    23842416}
    23852417
    2386 SerializedScriptValue::SerializedScriptValue(v8::Handle<v8::Value> value,
    2387                                              MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers,
    2388                                              bool& didThrow,
    2389                                              v8::Isolate* isolate)
     2418SerializedScriptValue::SerializedScriptValue(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow, v8::Isolate* isolate)
    23902419    : m_externallyAllocatedMemory(0)
    23912420{
  • trunk/Source/WebCore/bindings/v8/SerializedScriptValue.h

    r137954 r139735  
    5353    // the caller must not invoke any V8 operations until control returns to
    5454    // V8. When serialization is successful, |didThrow| is false.
    55     static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>,
    56                                                     MessagePortArray*, ArrayBufferArray*,
    57                                                     bool& didThrow, v8::Isolate* = 0);
    58     static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>, v8::Isolate* = 0);
    59     static PassRefPtr<SerializedScriptValue> createFromWire(const String& data);
    60     static PassRefPtr<SerializedScriptValue> createFromWireBytes(const Vector<uint8_t>& data);
    61     static PassRefPtr<SerializedScriptValue> create(const String& data, v8::Isolate* = 0);
     55    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>, MessagePortArray*, ArrayBufferArray*, bool&);
     56    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>, MessagePortArray*, ArrayBufferArray*, bool&, v8::Isolate*);
     57    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>);
     58    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>, v8::Isolate*);
     59    static PassRefPtr<SerializedScriptValue> createFromWire(const String&);
     60    static PassRefPtr<SerializedScriptValue> createFromWireBytes(const Vector<uint8_t>&);
     61    static PassRefPtr<SerializedScriptValue> create(const String&);
     62    static PassRefPtr<SerializedScriptValue> create(const String&, v8::Isolate*);
    6263    static PassRefPtr<SerializedScriptValue> create();
    6364
    64     static PassRefPtr<SerializedScriptValue> nullValue(v8::Isolate* = 0);
    65     static PassRefPtr<SerializedScriptValue> undefinedValue(v8::Isolate* = 0);
    66     static PassRefPtr<SerializedScriptValue> booleanValue(bool value, v8::Isolate* = 0);
    67     static PassRefPtr<SerializedScriptValue> numberValue(double value, v8::Isolate* = 0);
     65    static PassRefPtr<SerializedScriptValue> nullValue();
     66    static PassRefPtr<SerializedScriptValue> nullValue(v8::Isolate*);
     67    static PassRefPtr<SerializedScriptValue> undefinedValue();
     68    static PassRefPtr<SerializedScriptValue> undefinedValue(v8::Isolate*);
     69    static PassRefPtr<SerializedScriptValue> booleanValue(bool);
     70    static PassRefPtr<SerializedScriptValue> booleanValue(bool, v8::Isolate*);
     71    static PassRefPtr<SerializedScriptValue> numberValue(double);
     72    static PassRefPtr<SerializedScriptValue> numberValue(double, v8::Isolate*);
    6873
    6974    static uint32_t wireFormatVersion();
Note: See TracChangeset for help on using the changeset viewer.