Title: [139735] trunk/Source/WebCore
Revision
139735
Author
hara...@chromium.org
Date
2013-01-15 05:49:57 -0800 (Tue, 15 Jan 2013)

Log 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):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (139734 => 139735)


--- trunk/Source/WebCore/ChangeLog	2013-01-15 13:31:49 UTC (rev 139734)
+++ trunk/Source/WebCore/ChangeLog	2013-01-15 13:49:57 UTC (rev 139735)
@@ -1,3 +1,40 @@
+2013-01-14  Kentaro Hara  <hara...@chromium.org>
+
+        [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):
+
 2013-01-15  Dongwoo Joshua Im  <dw...@samsung.com>
 
         [CSS] Rename the enum, from "ETextAlignLast" to "TextAlignLast"

Modified: trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp (139734 => 139735)


--- trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp	2013-01-15 13:31:49 UTC (rev 139734)
+++ trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp	2013-01-15 13:49:57 UTC (rev 139735)
@@ -2231,14 +2231,21 @@
 
 } // namespace
 
-PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value,
-                                                                MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers,
-                                                                bool& didThrow,
-                                                                v8::Isolate* isolate)
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow)
 {
+    return create(value, messagePorts, arrayBuffers, didThrow, v8::Isolate::GetCurrent());
+}
+
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow, v8::Isolate* isolate)
+{
     return adoptRef(new SerializedScriptValue(value, messagePorts, arrayBuffers, didThrow, isolate));
 }
 
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value)
+{
+    return create(value, v8::Isolate::GetCurrent());
+}
+
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(v8::Handle<v8::Value> value, v8::Isolate* isolate)
 {
     bool didThrow;
@@ -2264,6 +2271,11 @@
     return createFromWire(String::adopt(buffer));
 }
 
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(const String& data)
+{
+    return create(data, v8::Isolate::GetCurrent());
+}
+
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(const String& data, v8::Isolate* isolate)
 {
     Writer writer(isolate);
@@ -2277,6 +2289,11 @@
     return adoptRef(new SerializedScriptValue());
 }
 
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::nullValue()
+{
+    return nullValue(v8::Isolate::GetCurrent());
+}
+
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::nullValue(v8::Isolate* isolate)
 {
     Writer writer(isolate);
@@ -2285,6 +2302,11 @@
     return adoptRef(new SerializedScriptValue(wireData));
 }
 
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::undefinedValue()
+{
+    return undefinedValue(v8::Isolate::GetCurrent());
+}
+
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::undefinedValue(v8::Isolate* isolate)
 {
     Writer writer(isolate);
@@ -2293,6 +2315,11 @@
     return adoptRef(new SerializedScriptValue(wireData));
 }
 
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::booleanValue(bool value)
+{
+    return booleanValue(value, v8::Isolate::GetCurrent());
+}
+
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::booleanValue(bool value, v8::Isolate* isolate)
 {
     Writer writer(isolate);
@@ -2304,6 +2331,11 @@
     return adoptRef(new SerializedScriptValue(wireData));
 }
 
+PassRefPtr<SerializedScriptValue> SerializedScriptValue::numberValue(double value)
+{
+    return numberValue(value, v8::Isolate::GetCurrent());
+}
+
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::numberValue(double value, v8::Isolate* isolate)
 {
     Writer writer(isolate);
@@ -2383,10 +2415,7 @@
     return contents.release();
 }
 
-SerializedScriptValue::SerializedScriptValue(v8::Handle<v8::Value> value, 
-                                             MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers,
-                                             bool& didThrow,
-                                             v8::Isolate* isolate)
+SerializedScriptValue::SerializedScriptValue(v8::Handle<v8::Value> value, MessagePortArray* messagePorts, ArrayBufferArray* arrayBuffers, bool& didThrow, v8::Isolate* isolate)
     : m_externallyAllocatedMemory(0)
 {
     didThrow = false;

Modified: trunk/Source/WebCore/bindings/v8/SerializedScriptValue.h (139734 => 139735)


--- trunk/Source/WebCore/bindings/v8/SerializedScriptValue.h	2013-01-15 13:31:49 UTC (rev 139734)
+++ trunk/Source/WebCore/bindings/v8/SerializedScriptValue.h	2013-01-15 13:49:57 UTC (rev 139735)
@@ -52,19 +52,24 @@
     // be thrown using v8::ThrowException(), and sets |didThrow|. In this case
     // the caller must not invoke any V8 operations until control returns to
     // V8. When serialization is successful, |didThrow| is false.
-    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>,
-                                                    MessagePortArray*, ArrayBufferArray*,
-                                                    bool& didThrow, v8::Isolate* = 0);
-    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>, v8::Isolate* = 0);
-    static PassRefPtr<SerializedScriptValue> createFromWire(const String& data);
-    static PassRefPtr<SerializedScriptValue> createFromWireBytes(const Vector<uint8_t>& data);
-    static PassRefPtr<SerializedScriptValue> create(const String& data, v8::Isolate* = 0);
+    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>, MessagePortArray*, ArrayBufferArray*, bool&);
+    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>, MessagePortArray*, ArrayBufferArray*, bool&, v8::Isolate*);
+    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>);
+    static PassRefPtr<SerializedScriptValue> create(v8::Handle<v8::Value>, v8::Isolate*);
+    static PassRefPtr<SerializedScriptValue> createFromWire(const String&);
+    static PassRefPtr<SerializedScriptValue> createFromWireBytes(const Vector<uint8_t>&);
+    static PassRefPtr<SerializedScriptValue> create(const String&);
+    static PassRefPtr<SerializedScriptValue> create(const String&, v8::Isolate*);
     static PassRefPtr<SerializedScriptValue> create();
 
-    static PassRefPtr<SerializedScriptValue> nullValue(v8::Isolate* = 0);
-    static PassRefPtr<SerializedScriptValue> undefinedValue(v8::Isolate* = 0);
-    static PassRefPtr<SerializedScriptValue> booleanValue(bool value, v8::Isolate* = 0);
-    static PassRefPtr<SerializedScriptValue> numberValue(double value, v8::Isolate* = 0);
+    static PassRefPtr<SerializedScriptValue> nullValue();
+    static PassRefPtr<SerializedScriptValue> nullValue(v8::Isolate*);
+    static PassRefPtr<SerializedScriptValue> undefinedValue();
+    static PassRefPtr<SerializedScriptValue> undefinedValue(v8::Isolate*);
+    static PassRefPtr<SerializedScriptValue> booleanValue(bool);
+    static PassRefPtr<SerializedScriptValue> booleanValue(bool, v8::Isolate*);
+    static PassRefPtr<SerializedScriptValue> numberValue(double);
+    static PassRefPtr<SerializedScriptValue> numberValue(double, v8::Isolate*);
 
     static uint32_t wireFormatVersion();
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to