OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 part of dart._isolate_helper; | 5 part of dart._isolate_helper; |
6 | 6 |
7 /// Serialize [message]. | 7 /// Serialize [message]. |
8 _serializeMessage(message) { | 8 _serializeMessage(message) { |
9 return new _Serializer().serialize(message); | 9 return new _Serializer().serialize(message); |
10 } | 10 } |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 return serialized; | 107 return serialized; |
108 } | 108 } |
109 | 109 |
110 serializeArrayInPlace(JSArray x) { | 110 serializeArrayInPlace(JSArray x) { |
111 for (int i = 0; i < x.length; i++) { | 111 for (int i = 0; i < x.length; i++) { |
112 x[i] = serialize(x[i]); | 112 x[i] = serialize(x[i]); |
113 } | 113 } |
114 return x; | 114 return x; |
115 } | 115 } |
116 | 116 |
117 serializeMap(Map x) { | 117 serializeMap(InternalMap x) { |
118 Function serializeTearOff = serialize; | 118 Function serializeTearOff = serialize; |
119 return ['map', | 119 return ['map', |
120 x.keys.map(serializeTearOff).toList(), | 120 x.keys.map(serializeTearOff).toList(), |
121 x.values.map(serializeTearOff).toList()]; | 121 x.values.map(serializeTearOff).toList()]; |
122 } | 122 } |
123 | 123 |
124 serializeJSObject(JSObject x) { | 124 serializeJSObject(JSObject x) { |
125 // Don't serialize objects if their `constructor` property isn't `Object` | 125 // Don't serialize objects if their `constructor` property isn't `Object` |
126 // or undefined/null. | 126 // or undefined/null. |
127 // A different constructor is taken as a sign that the object has complex | 127 // A different constructor is taken as a sign that the object has complex |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 // ['const', <array>]. | 269 // ['const', <array>]. |
270 List deserializeConst(x) { | 270 List deserializeConst(x) { |
271 assert(x[0] == 'const'); | 271 assert(x[0] == 'const'); |
272 List result = x[1]; | 272 List result = x[1]; |
273 deserializedObjects.add(result); | 273 deserializedObjects.add(result); |
274 // TODO(floitsch): need to mark list as non-changeable. | 274 // TODO(floitsch): need to mark list as non-changeable. |
275 return new JSArray.markFixed(deserializeArrayInPlace(result)); | 275 return new JSArray.markFixed(deserializeArrayInPlace(result)); |
276 } | 276 } |
277 | 277 |
278 // ['map', <key-list>, <value-list>]. | 278 // ['map', <key-list>, <value-list>]. |
279 Map deserializeMap(x) { | 279 Map deserializeMap(InternalMap x) { |
280 assert(x[0] == 'map'); | 280 assert(x[0] == 'map'); |
281 List keys = x[1]; | 281 List keys = x[1]; |
282 List values = x[2]; | 282 List values = x[2]; |
283 Map result = {}; | 283 Map result = {}; |
284 deserializedObjects.add(result); | 284 deserializedObjects.add(result); |
285 // We need to keep the order of how objects were serialized. | 285 // We need to keep the order of how objects were serialized. |
286 // First deserialize all keys, and then only deserialize the values. | 286 // First deserialize all keys, and then only deserialize the values. |
287 keys = keys.map(deserialize).toList(); | 287 keys = keys.map(deserialize).toList(); |
288 | 288 |
289 for (int i = 0; i < keys.length; i++) { | 289 for (int i = 0; i < keys.length; i++) { |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 var instanceFromClassId = JS_EMBEDDED_GLOBAL('', INSTANCE_FROM_CLASS_ID); | 352 var instanceFromClassId = JS_EMBEDDED_GLOBAL('', INSTANCE_FROM_CLASS_ID); |
353 var initializeObject = JS_EMBEDDED_GLOBAL('', INITIALIZE_EMPTY_INSTANCE); | 353 var initializeObject = JS_EMBEDDED_GLOBAL('', INITIALIZE_EMPTY_INSTANCE); |
354 | 354 |
355 var emptyInstance = JS('', '#(#)', instanceFromClassId, classId); | 355 var emptyInstance = JS('', '#(#)', instanceFromClassId, classId); |
356 deserializedObjects.add(emptyInstance); | 356 deserializedObjects.add(emptyInstance); |
357 deserializeArrayInPlace(fields); | 357 deserializeArrayInPlace(fields); |
358 return JS('', '#(#, #, #)', | 358 return JS('', '#(#, #, #)', |
359 initializeObject, classId, emptyInstance, fields); | 359 initializeObject, classId, emptyInstance, fields); |
360 } | 360 } |
361 } | 361 } |
OLD | NEW |