| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 924 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 935 | 935 |
| 936 protected: | 936 protected: |
| 937 virtual StateBase* objectDone(unsigned numProperties, Serializer& serial
izer) | 937 virtual StateBase* objectDone(unsigned numProperties, Serializer& serial
izer) |
| 938 { | 938 { |
| 939 return serializer.writeObject(numProperties, this); | 939 return serializer.writeObject(numProperties, this); |
| 940 } | 940 } |
| 941 }; | 941 }; |
| 942 | 942 |
| 943 class DenseArrayState : public AbstractObjectState { | 943 class DenseArrayState : public AbstractObjectState { |
| 944 public: | 944 public: |
| 945 DenseArrayState(v8::Handle<v8::Array> array, v8::Handle<v8::Array> prope
rtyNames, StateBase* next) | 945 DenseArrayState(v8::Handle<v8::Array> array, v8::Handle<v8::Array> prope
rtyNames, StateBase* next, v8::Isolate* isolate) |
| 946 : AbstractObjectState(array, next) | 946 : AbstractObjectState(array, next) |
| 947 , m_arrayIndex(0) | 947 , m_arrayIndex(0) |
| 948 , m_arrayLength(array->Length()) | 948 , m_arrayLength(array->Length()) |
| 949 { | 949 { |
| 950 m_propertyNames = v8::Local<v8::Array>::New(propertyNames); | 950 m_propertyNames = v8::Local<v8::Array>::New(isolate, propertyNames); |
| 951 } | 951 } |
| 952 | 952 |
| 953 virtual StateBase* advance(Serializer& serializer) | 953 virtual StateBase* advance(Serializer& serializer) |
| 954 { | 954 { |
| 955 while (m_arrayIndex < m_arrayLength) { | 955 while (m_arrayIndex < m_arrayLength) { |
| 956 v8::Handle<v8::Value> value = composite().As<v8::Array>()->Get(m
_arrayIndex); | 956 v8::Handle<v8::Value> value = composite().As<v8::Array>()->Get(m
_arrayIndex); |
| 957 m_arrayIndex++; | 957 m_arrayIndex++; |
| 958 if (StateBase* newState = serializer.checkException(this)) | 958 if (StateBase* newState = serializer.checkException(this)) |
| 959 return newState; | 959 return newState; |
| 960 if (StateBase* newState = serializer.doSerialize(value, this)) | 960 if (StateBase* newState = serializer.doSerialize(value, this)) |
| 961 return newState; | 961 return newState; |
| 962 } | 962 } |
| 963 return serializeProperties(true, serializer); | 963 return serializeProperties(true, serializer); |
| 964 } | 964 } |
| 965 | 965 |
| 966 protected: | 966 protected: |
| 967 virtual StateBase* objectDone(unsigned numProperties, Serializer& serial
izer) | 967 virtual StateBase* objectDone(unsigned numProperties, Serializer& serial
izer) |
| 968 { | 968 { |
| 969 return serializer.writeDenseArray(numProperties, m_arrayLength, this
); | 969 return serializer.writeDenseArray(numProperties, m_arrayLength, this
); |
| 970 } | 970 } |
| 971 | 971 |
| 972 private: | 972 private: |
| 973 uint32_t m_arrayIndex; | 973 uint32_t m_arrayIndex; |
| 974 uint32_t m_arrayLength; | 974 uint32_t m_arrayLength; |
| 975 }; | 975 }; |
| 976 | 976 |
| 977 class SparseArrayState : public AbstractObjectState { | 977 class SparseArrayState : public AbstractObjectState { |
| 978 public: | 978 public: |
| 979 SparseArrayState(v8::Handle<v8::Array> array, v8::Handle<v8::Array> prop
ertyNames, StateBase* next) | 979 SparseArrayState(v8::Handle<v8::Array> array, v8::Handle<v8::Array> prop
ertyNames, StateBase* next, v8::Isolate* isolate) |
| 980 : AbstractObjectState(array, next) | 980 : AbstractObjectState(array, next) |
| 981 { | 981 { |
| 982 m_propertyNames = v8::Local<v8::Array>::New(propertyNames); | 982 m_propertyNames = v8::Local<v8::Array>::New(isolate, propertyNames); |
| 983 } | 983 } |
| 984 | 984 |
| 985 virtual StateBase* advance(Serializer& serializer) | 985 virtual StateBase* advance(Serializer& serializer) |
| 986 { | 986 { |
| 987 return serializeProperties(false, serializer); | 987 return serializeProperties(false, serializer); |
| 988 } | 988 } |
| 989 | 989 |
| 990 protected: | 990 protected: |
| 991 virtual StateBase* objectDone(unsigned numProperties, Serializer& serial
izer) | 991 virtual StateBase* objectDone(unsigned numProperties, Serializer& serial
izer) |
| 992 { | 992 { |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1192 | 1192 |
| 1193 StateBase* startArrayState(v8::Handle<v8::Array> array, StateBase* next) | 1193 StateBase* startArrayState(v8::Handle<v8::Array> array, StateBase* next) |
| 1194 { | 1194 { |
| 1195 v8::Handle<v8::Array> propertyNames = array->GetPropertyNames(); | 1195 v8::Handle<v8::Array> propertyNames = array->GetPropertyNames(); |
| 1196 if (StateBase* newState = checkException(next)) | 1196 if (StateBase* newState = checkException(next)) |
| 1197 return newState; | 1197 return newState; |
| 1198 uint32_t length = array->Length(); | 1198 uint32_t length = array->Length(); |
| 1199 | 1199 |
| 1200 if (shouldSerializeDensely(length, propertyNames->Length())) { | 1200 if (shouldSerializeDensely(length, propertyNames->Length())) { |
| 1201 m_writer.writeGenerateFreshDenseArray(length); | 1201 m_writer.writeGenerateFreshDenseArray(length); |
| 1202 return push(new DenseArrayState(array, propertyNames, next)); | 1202 return push(new DenseArrayState(array, propertyNames, next, m_isolat
e)); |
| 1203 } | 1203 } |
| 1204 | 1204 |
| 1205 m_writer.writeGenerateFreshSparseArray(length); | 1205 m_writer.writeGenerateFreshSparseArray(length); |
| 1206 return push(new SparseArrayState(array, propertyNames, next)); | 1206 return push(new SparseArrayState(array, propertyNames, next, m_isolate))
; |
| 1207 } | 1207 } |
| 1208 | 1208 |
| 1209 StateBase* startObjectState(v8::Handle<v8::Object> object, StateBase* next) | 1209 StateBase* startObjectState(v8::Handle<v8::Object> object, StateBase* next) |
| 1210 { | 1210 { |
| 1211 m_writer.writeGenerateFreshObject(); | 1211 m_writer.writeGenerateFreshObject(); |
| 1212 // FIXME: check not a wrapper | 1212 // FIXME: check not a wrapper |
| 1213 return push(new ObjectState(object, next)); | 1213 return push(new ObjectState(object, next)); |
| 1214 } | 1214 } |
| 1215 | 1215 |
| 1216 // Marks object as having been visited by the serializer and assigns it a un
ique object reference ID. | 1216 // Marks object as having been visited by the serializer and assigns it a un
ique object reference ID. |
| (...skipping 1317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2534 v8::V8::AdjustAmountOfExternalAllocatedMemory(-m_externallyAllocatedMemo
ry); | 2534 v8::V8::AdjustAmountOfExternalAllocatedMemory(-m_externallyAllocatedMemo
ry); |
| 2535 } | 2535 } |
| 2536 } | 2536 } |
| 2537 | 2537 |
| 2538 uint32_t SerializedScriptValue::wireFormatVersion() | 2538 uint32_t SerializedScriptValue::wireFormatVersion() |
| 2539 { | 2539 { |
| 2540 return WebCore::wireFormatVersion; | 2540 return WebCore::wireFormatVersion; |
| 2541 } | 2541 } |
| 2542 | 2542 |
| 2543 } // namespace WebCore | 2543 } // namespace WebCore |
| OLD | NEW |