Title: [115229] trunk/Source/WebCore
Revision
115229
Author
hara...@chromium.org
Date
2012-04-25 11:07:34 -0700 (Wed, 25 Apr 2012)

Log Message

[V8] Add m_isolate to SerializedScriptValue::Writer
and SerializedScriptValue::Reader
https://bugs.webkit.org/show_bug.cgi?id=84739

Reviewed by Nate Chapin.

This is the second step to pass Isolate around
in SerializedScriptValue. This patch adds m_isolate to
SerializedScriptValue::Writer and SerializedScriptValue::Reader,
so that they can use the isolate around. The fix is safe since
Writer and Reader are guaranteed to be used by one Isolate.

No tests. No change in behavior.

* bindings/v8/SerializedScriptValue.cpp:
(WebCore::SerializedScriptValue::create):
(WebCore::SerializedScriptValue::nullValue):
(WebCore::SerializedScriptValue::undefinedValue):
(WebCore::SerializedScriptValue::booleanValue):
(WebCore::SerializedScriptValue::numberValue):
(WebCore::SerializedScriptValue::SerializedScriptValue):
(WebCore::SerializedScriptValue::deserialize):
* bindings/v8/SerializedScriptValue.h:
(SerializedScriptValue):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (115228 => 115229)


--- trunk/Source/WebCore/ChangeLog	2012-04-25 17:58:19 UTC (rev 115228)
+++ trunk/Source/WebCore/ChangeLog	2012-04-25 18:07:34 UTC (rev 115229)
@@ -1,5 +1,32 @@
 2012-04-25  Kentaro Hara  <hara...@chromium.org>
 
+        [V8] Add m_isolate to SerializedScriptValue::Writer
+        and SerializedScriptValue::Reader
+        https://bugs.webkit.org/show_bug.cgi?id=84739
+
+        Reviewed by Nate Chapin.
+
+        This is the second step to pass Isolate around
+        in SerializedScriptValue. This patch adds m_isolate to
+        SerializedScriptValue::Writer and SerializedScriptValue::Reader,
+        so that they can use the isolate around. The fix is safe since
+        Writer and Reader are guaranteed to be used by one Isolate.
+
+        No tests. No change in behavior.
+
+        * bindings/v8/SerializedScriptValue.cpp:
+        (WebCore::SerializedScriptValue::create):
+        (WebCore::SerializedScriptValue::nullValue):
+        (WebCore::SerializedScriptValue::undefinedValue):
+        (WebCore::SerializedScriptValue::booleanValue):
+        (WebCore::SerializedScriptValue::numberValue):
+        (WebCore::SerializedScriptValue::SerializedScriptValue):
+        (WebCore::SerializedScriptValue::deserialize):
+        * bindings/v8/SerializedScriptValue.h:
+        (SerializedScriptValue):
+
+2012-04-25  Kentaro Hara  <hara...@chromium.org>
+
         [V8] Make the Isolate* parameter non-optional in setDOMException()
         https://bugs.webkit.org/show_bug.cgi?id=84736
 

Modified: trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp (115228 => 115229)


--- trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp	2012-04-25 17:58:19 UTC (rev 115228)
+++ trunk/Source/WebCore/bindings/v8/SerializedScriptValue.cpp	2012-04-25 18:07:34 UTC (rev 115229)
@@ -274,8 +274,9 @@
 class Writer {
     WTF_MAKE_NONCOPYABLE(Writer);
 public:
-    Writer()
+    Writer(v8::Isolate* isolate)
         : m_position(0)
+        , m_isolate(isolate)
     {
     }
 
@@ -591,6 +592,7 @@
 
     Vector<BufferValueType> m_buffer;
     unsigned m_position;
+    v8::Isolate* m_isolate;
 };
 
 class Serializer {
@@ -1222,11 +1224,12 @@
 // restoring information about saved objects of composite types.
 class Reader {
 public:
-    Reader(const uint8_t* buffer, int length)
+    Reader(const uint8_t* buffer, int length, v8::Isolate* isolate)
         : m_buffer(buffer)
         , m_length(length)
         , m_position(0)
         , m_version(0)
+        , m_isolate(isolate)
     {
         ASSERT(length >= 0);
     }
@@ -1802,6 +1805,7 @@
     const unsigned m_length;
     unsigned m_position;
     uint32_t m_version;
+    v8::Isolate* m_isolate;
 };
 
 
@@ -2081,7 +2085,7 @@
 
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(const String& data, v8::Isolate* isolate)
 {
-    Writer writer;
+    Writer writer(isolate);
     writer.writeWebCoreString(data);
     String wireData = StringImpl::adopt(writer.data());
     return adoptRef(new SerializedScriptValue(wireData));
@@ -2092,13 +2096,13 @@
     return adoptRef(new SerializedScriptValue());
 }
 
-SerializedScriptValue* SerializedScriptValue::nullValue()
+SerializedScriptValue* SerializedScriptValue::nullValue(v8::Isolate* isolate)
 {
     // FIXME: This is not thread-safe. Move caching to callers.
     // https://bugs.webkit.org/show_bug.cgi?id=70833
     DEFINE_STATIC_LOCAL(RefPtr<SerializedScriptValue>, nullValue, (0));
     if (!nullValue) {
-        Writer writer;
+        Writer writer(isolate);
         writer.writeNull();
         String wireData = StringImpl::adopt(writer.data());
         nullValue = adoptRef(new SerializedScriptValue(wireData));
@@ -2108,7 +2112,7 @@
 
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::undefinedValue(v8::Isolate* isolate)
 {
-    Writer writer;
+    Writer writer(isolate);
     writer.writeUndefined();
     String wireData = StringImpl::adopt(writer.data());
     return adoptRef(new SerializedScriptValue(wireData));
@@ -2116,7 +2120,7 @@
 
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::booleanValue(bool value, v8::Isolate* isolate)
 {
-    Writer writer;
+    Writer writer(isolate);
     if (value)
         writer.writeTrue();
     else
@@ -2127,7 +2131,7 @@
 
 PassRefPtr<SerializedScriptValue> SerializedScriptValue::numberValue(double value, v8::Isolate* isolate)
 {
-    Writer writer;
+    Writer writer(isolate);
     writer.writeNumber(value);
     String wireData = StringImpl::adopt(writer.data());
     return adoptRef(new SerializedScriptValue(wireData));
@@ -2194,7 +2198,7 @@
                                              v8::Isolate* isolate)
 {
     didThrow = false;
-    Writer writer;
+    Writer writer(isolate);
     Serializer::Status status;
     {
         v8::TryCatch tryCatch;
@@ -2247,7 +2251,7 @@
     if (!m_data.impl())
         return v8::Null();
     COMPILE_ASSERT(sizeof(BufferValueType) == 2, BufferValueTypeIsTwoBytes);
-    Reader reader(reinterpret_cast<const uint8_t*>(m_data.impl()->characters()), 2 * m_data.length());
+    Reader reader(reinterpret_cast<const uint8_t*>(m_data.impl()->characters()), 2 * m_data.length(), isolate);
     Deserializer deserializer(reader, messagePorts, m_arrayBufferContentsArray.get());
     return deserializer.deserialize();
 }

Modified: trunk/Source/WebCore/bindings/v8/SerializedScriptValue.h (115228 => 115229)


--- trunk/Source/WebCore/bindings/v8/SerializedScriptValue.h	2012-04-25 17:58:19 UTC (rev 115228)
+++ trunk/Source/WebCore/bindings/v8/SerializedScriptValue.h	2012-04-25 18:07:34 UTC (rev 115229)
@@ -58,7 +58,7 @@
     static PassRefPtr<SerializedScriptValue> create(const String& data, v8::Isolate* = 0);
     static PassRefPtr<SerializedScriptValue> create();
 
-    static SerializedScriptValue* nullValue();
+    static 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);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to