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);