| Index: Source/bindings/v8/SerializedScriptValue.cpp
|
| diff --git a/Source/bindings/v8/SerializedScriptValue.cpp b/Source/bindings/v8/SerializedScriptValue.cpp
|
| index 8b47d65f1b4ac16315dba30f39f2737f69804e7d..f067774e36bb9221dced0e7938c974740067e937 100644
|
| --- a/Source/bindings/v8/SerializedScriptValue.cpp
|
| +++ b/Source/bindings/v8/SerializedScriptValue.cpp
|
| @@ -697,7 +697,6 @@ public:
|
| : m_writer(writer)
|
| , m_tryCatch(tryCatch)
|
| , m_depth(0)
|
| - , m_execDepth(0)
|
| , m_status(Success)
|
| , m_nextObjectReference(0)
|
| , m_blobDataHandles(blobDataHandles)
|
| @@ -731,12 +730,9 @@ public:
|
| // Functions used by serialization states.
|
| StateBase* doSerialize(v8::Handle<v8::Value>, StateBase* next);
|
|
|
| - // The serializer workhorse, no stack depth check.
|
| - StateBase* doSerializeImpl(v8::Handle<v8::Value>, StateBase* next);
|
| -
|
| StateBase* doSerializeArrayBuffer(v8::Handle<v8::Value> arrayBuffer, StateBase* next)
|
| {
|
| - return doSerializeImpl(arrayBuffer, next);
|
| + return doSerialize(arrayBuffer, next);
|
| }
|
|
|
| StateBase* checkException(StateBase* state)
|
| @@ -835,20 +831,15 @@ private:
|
| , m_index(0)
|
| , m_numSerializedProperties(0)
|
| , m_nameDone(false)
|
| - , m_isSerializingAccessor(false)
|
| {
|
| }
|
|
|
| - virtual uint32_t execDepth() const { return m_isSerializingAccessor ? 1 : 0; }
|
| -
|
| protected:
|
| virtual StateBase* objectDone(unsigned numProperties, Serializer&) = 0;
|
|
|
| StateBase* serializeProperties(bool ignoreIndexed, Serializer& serializer)
|
| {
|
| - m_isSerializingAccessor = false;
|
| while (m_index < m_propertyNames->Length()) {
|
| - bool isAccessor = false;
|
| if (!m_nameDone) {
|
| v8::Local<v8::Value> propertyName = m_propertyNames->Get(m_index);
|
| if (StateBase* newState = serializer.checkException(this))
|
| @@ -861,9 +852,6 @@ private:
|
| bool hasIndexedProperty = !hasStringProperty && propertyName->IsUint32() && composite()->HasRealIndexedProperty(propertyName->Uint32Value());
|
| if (StateBase* newState = serializer.checkException(this))
|
| return newState;
|
| - isAccessor = hasStringProperty && composite()->HasRealNamedCallbackProperty(propertyName.As<v8::String>());
|
| - if (StateBase* newState = serializer.checkException(this))
|
| - return newState;
|
| if (hasStringProperty || (hasIndexedProperty && !ignoreIndexed))
|
| m_propertyName = propertyName;
|
| else {
|
| @@ -884,15 +872,11 @@ private:
|
| m_propertyName.Clear();
|
| ++m_index;
|
| ++m_numSerializedProperties;
|
| - m_isSerializingAccessor = isAccessor;
|
| // If we return early here, it's either because we have pushed a new state onto the
|
| // serialization state stack or because we have encountered an error (and in both cases
|
| - // we are unwinding the native stack). We reset m_isSerializingAccessor at the beginning
|
| - // of advance() for this case (because advance() will be called on us again once we
|
| - // are the top of the stack).
|
| + // we are unwinding the native stack).
|
| if (StateBase* newState = serializer.doSerialize(value, this))
|
| return newState;
|
| - m_isSerializingAccessor = false;
|
| }
|
| return objectDone(m_numSerializedProperties, serializer);
|
| }
|
| @@ -904,9 +888,6 @@ private:
|
| unsigned m_index;
|
| unsigned m_numSerializedProperties;
|
| bool m_nameDone;
|
| - // Used along with execDepth() to determine the number of
|
| - // accessors under which the serializer is currently serializing.
|
| - bool m_isSerializingAccessor;
|
| };
|
|
|
| class ObjectState : public AbstractObjectState {
|
| @@ -992,8 +973,6 @@ private:
|
| StateBase* push(StateBase* state)
|
| {
|
| ASSERT(state);
|
| - if (state->nextState())
|
| - m_execDepth += state->nextState()->execDepth();
|
| ++m_depth;
|
| return checkComposite(state) ? state : handleError(InputError, state);
|
| }
|
| @@ -1003,8 +982,6 @@ private:
|
| ASSERT(state);
|
| --m_depth;
|
| StateBase* next = state->nextState();
|
| - if (next)
|
| - m_execDepth -= next->execDepth();
|
| delete state;
|
| return next;
|
| }
|
| @@ -1017,8 +994,6 @@ private:
|
| StateBase* tmp = state->nextState();
|
| delete state;
|
| state = tmp;
|
| - if (state)
|
| - m_execDepth -= state->execDepth();
|
| }
|
| return new ErrorState;
|
| }
|
| @@ -1217,7 +1192,6 @@ private:
|
| Writer& m_writer;
|
| v8::TryCatch& m_tryCatch;
|
| int m_depth;
|
| - int m_execDepth;
|
| Status m_status;
|
| typedef V8ObjectMap<v8::Object, uint32_t> ObjectPool;
|
| ObjectPool m_objectPool;
|
| @@ -1228,7 +1202,7 @@ private:
|
| v8::Isolate* m_isolate;
|
| };
|
|
|
| -Serializer::StateBase* Serializer::doSerializeImpl(v8::Handle<v8::Value> value, StateBase* next)
|
| +Serializer::StateBase* Serializer::doSerialize(v8::Handle<v8::Value> value, StateBase* next)
|
| {
|
| m_writer.writeReferenceCount(m_nextObjectReference);
|
| uint32_t objectReference;
|
| @@ -1307,15 +1281,6 @@ Serializer::StateBase* Serializer::doSerializeImpl(v8::Handle<v8::Value> value,
|
| return 0;
|
| }
|
|
|
| -Serializer::StateBase* Serializer::doSerialize(v8::Handle<v8::Value> value, StateBase* next)
|
| -{
|
| - if (m_execDepth + (next ? next->execDepth() : 0) > 1) {
|
| - m_writer.writeNull();
|
| - return 0;
|
| - }
|
| - return doSerializeImpl(value, next);
|
| -}
|
| -
|
| // Interface used by Reader to create objects of composite types.
|
| class CompositeCreator {
|
| public:
|
|
|