Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Side by Side Diff: lib/runtime/dart/_isolate_helper.js

Issue 1178523004: fixes #215, removes special case for length (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 dart.library('dart/_isolate_helper', null, /* Imports */[ 1 dart.library('dart/_isolate_helper', null, /* Imports */[
2 'dart/core', 2 'dart/core',
3 'dart/_native_typed_data', 3 'dart/_native_typed_data',
4 'dart/_interceptors', 4 'dart/_interceptors',
5 'dart/_js_helper', 5 'dart/_js_helper',
6 'dart/isolate', 6 'dart/isolate',
7 'dart/_foreign_helper', 7 'dart/_foreign_helper',
8 'dart/_js_embedded_names', 8 'dart/_js_embedded_names',
9 'dart/collection', 9 'dart/collection',
10 'dart/async' 10 'dart/async'
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 return ["extendable", serialized]; 99 return ["extendable", serialized];
100 if (dart.is(indexable, _interceptors.JSMutableArray)) 100 if (dart.is(indexable, _interceptors.JSMutableArray))
101 return ["mutable", serialized]; 101 return ["mutable", serialized];
102 if (dart.is(indexable, _interceptors.JSArray)) 102 if (dart.is(indexable, _interceptors.JSArray))
103 return ["const", serialized]; 103 return ["const", serialized];
104 this.unsupported(indexable, "Can't serialize indexable: "); 104 this.unsupported(indexable, "Can't serialize indexable: ");
105 return null; 105 return null;
106 } 106 }
107 serializeArray(x) { 107 serializeArray(x) {
108 let serialized = []; 108 let serialized = [];
109 serialized.length = x.length; 109 serialized[dartx.length] = x[dartx.length];
110 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) { 110 for (let i = 0; dart.notNull(i) < dart.notNull(x[dartx.length]); i = dart. notNull(i) + 1) {
111 serialized[dartx.set](i, this.serialize(x[dartx.get](i))); 111 serialized[dartx.set](i, this.serialize(x[dartx.get](i)));
112 } 112 }
113 return serialized; 113 return serialized;
114 } 114 }
115 serializeArrayInPlace(x) { 115 serializeArrayInPlace(x) {
116 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) { 116 for (let i = 0; dart.notNull(i) < dart.notNull(x[dartx.length]); i = dart. notNull(i) + 1) {
117 x[dartx.set](i, this.serialize(x[dartx.get](i))); 117 x[dartx.set](i, this.serialize(x[dartx.get](i)));
118 } 118 }
119 return x; 119 return x;
120 } 120 }
121 serializeMap(x) { 121 serializeMap(x) {
122 let serializeTearOff = dart.bind(this, 'serialize'); 122 let serializeTearOff = dart.bind(this, 'serialize');
123 return ['map', x.keys[dartx.map](dart.as(serializeTearOff, __CastType0))[d artx.toList](), x.values[dartx.map](dart.as(serializeTearOff, dart.functionType( core.Object, [dart.bottom])))[dartx.toList]()]; 123 return ['map', x.keys[dartx.map](dart.as(serializeTearOff, __CastType0))[d artx.toList](), x.values[dartx.map](dart.as(serializeTearOff, dart.functionType( core.Object, [dart.bottom])))[dartx.toList]()];
124 } 124 }
125 serializeJSObject(x) { 125 serializeJSObject(x) {
126 if (!!x.constructor && x.constructor !== Object) { 126 if (!!x.constructor && x.constructor !== Object) {
127 this.unsupported(x, "Only plain JS Objects are supported:"); 127 this.unsupported(x, "Only plain JS Objects are supported:");
128 } 128 }
129 let keys = dart.as(Object.keys(x), core.List); 129 let keys = dart.as(Object.keys(x), core.List);
130 let values = []; 130 let values = [];
131 values.length = keys.length; 131 values[dartx.length] = keys[dartx.length];
132 for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notN ull(i) + 1) { 132 for (let i = 0; dart.notNull(i) < dart.notNull(keys[dartx.length]); i = da rt.notNull(i) + 1) {
133 values[dartx.set](i, this.serialize(x[keys[dartx.get](i)])); 133 values[dartx.set](i, this.serialize(x[keys[dartx.get](i)]));
134 } 134 }
135 return ['js-object', keys, values]; 135 return ['js-object', keys, values];
136 } 136 }
137 serializeWorkerSendPort(x) { 137 serializeWorkerSendPort(x) {
138 if (dart.notNull(this[_serializeSendPorts])) { 138 if (dart.notNull(this[_serializeSendPorts])) {
139 return ['sendport', x[_workerId], x[_isolateId], x[_receivePortId]]; 139 return ['sendport', x[_workerId], x[_isolateId], x[_receivePortId]];
140 } 140 }
141 return ['raw sendport', x]; 141 return ['raw sendport', x];
142 } 142 }
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 this.deserializedObjects[dartx.add](result); 275 this.deserializedObjects[dartx.add](result);
276 return result; 276 return result;
277 } 277 }
278 deserializeTypedData(x) { 278 deserializeTypedData(x) {
279 dart.assert(dart.equals(dart.dindex(x, 0), 'typed')); 279 dart.assert(dart.equals(dart.dindex(x, 0), 'typed'));
280 let result = dart.as(dart.dindex(x, 1), _native_typed_data.NativeTypedData ); 280 let result = dart.as(dart.dindex(x, 1), _native_typed_data.NativeTypedData );
281 this.deserializedObjects[dartx.add](result); 281 this.deserializedObjects[dartx.add](result);
282 return result; 282 return result;
283 } 283 }
284 deserializeArrayInPlace(x) { 284 deserializeArrayInPlace(x) {
285 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) { 285 for (let i = 0; dart.notNull(i) < dart.notNull(x[dartx.length]); i = dart. notNull(i) + 1) {
286 x[dartx.set](i, this.deserialize(x[dartx.get](i))); 286 x[dartx.set](i, this.deserialize(x[dartx.get](i)));
287 } 287 }
288 return x; 288 return x;
289 } 289 }
290 deserializeFixed(x) { 290 deserializeFixed(x) {
291 dart.assert(dart.equals(dart.dindex(x, 0), 'fixed')); 291 dart.assert(dart.equals(dart.dindex(x, 0), 'fixed'));
292 let result = dart.as(dart.dindex(x, 1), core.List); 292 let result = dart.as(dart.dindex(x, 1), core.List);
293 this.deserializedObjects[dartx.add](result); 293 this.deserializedObjects[dartx.add](result);
294 return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.a s(result, _interceptors.JSArray))); 294 return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.a s(result, _interceptors.JSArray)));
295 } 295 }
(...skipping 15 matching lines...) Expand all
311 this.deserializedObjects[dartx.add](result); 311 this.deserializedObjects[dartx.add](result);
312 return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.a s(result, _interceptors.JSArray))); 312 return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.a s(result, _interceptors.JSArray)));
313 } 313 }
314 deserializeMap(x) { 314 deserializeMap(x) {
315 dart.assert(dart.equals(dart.dindex(x, 0), 'map')); 315 dart.assert(dart.equals(dart.dindex(x, 0), 'map'));
316 let keys = dart.as(dart.dindex(x, 1), core.List); 316 let keys = dart.as(dart.dindex(x, 1), core.List);
317 let values = dart.as(dart.dindex(x, 2), core.List); 317 let values = dart.as(dart.dindex(x, 2), core.List);
318 let result = dart.map(); 318 let result = dart.map();
319 this.deserializedObjects[dartx.add](result); 319 this.deserializedObjects[dartx.add](result);
320 keys = keys[dartx.map](dart.bind(this, 'deserialize'))[dartx.toList](); 320 keys = keys[dartx.map](dart.bind(this, 'deserialize'))[dartx.toList]();
321 for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notN ull(i) + 1) { 321 for (let i = 0; dart.notNull(i) < dart.notNull(keys[dartx.length]); i = da rt.notNull(i) + 1) {
322 result.set(keys[dartx.get](i), this.deserialize(values[dartx.get](i))); 322 result.set(keys[dartx.get](i), this.deserialize(values[dartx.get](i)));
323 } 323 }
324 return result; 324 return result;
325 } 325 }
326 deserializeSendPort(x) { 326 deserializeSendPort(x) {
327 dart.assert(dart.equals(dart.dindex(x, 0), 'sendport')); 327 dart.assert(dart.equals(dart.dindex(x, 0), 'sendport'));
328 let managerId = dart.as(dart.dindex(x, 1), core.int); 328 let managerId = dart.as(dart.dindex(x, 1), core.int);
329 let isolateId = dart.as(dart.dindex(x, 2), core.int); 329 let isolateId = dart.as(dart.dindex(x, 2), core.int);
330 let receivePortId = dart.as(dart.dindex(x, 3), core.int); 330 let receivePortId = dart.as(dart.dindex(x, 3), core.int);
331 let result = null; 331 let result = null;
(...skipping 16 matching lines...) Expand all
348 let result = dart.as(dart.dindex(x, 1), isolate.SendPort); 348 let result = dart.as(dart.dindex(x, 1), isolate.SendPort);
349 this.deserializedObjects[dartx.add](result); 349 this.deserializedObjects[dartx.add](result);
350 return result; 350 return result;
351 } 351 }
352 deserializeJSObject(x) { 352 deserializeJSObject(x) {
353 dart.assert(dart.equals(dart.dindex(x, 0), 'js-object')); 353 dart.assert(dart.equals(dart.dindex(x, 0), 'js-object'));
354 let keys = dart.as(dart.dindex(x, 1), core.List); 354 let keys = dart.as(dart.dindex(x, 1), core.List);
355 let values = dart.as(dart.dindex(x, 2), core.List); 355 let values = dart.as(dart.dindex(x, 2), core.List);
356 let o = {}; 356 let o = {};
357 this.deserializedObjects[dartx.add](o); 357 this.deserializedObjects[dartx.add](o);
358 for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notN ull(i) + 1) { 358 for (let i = 0; dart.notNull(i) < dart.notNull(keys[dartx.length]); i = da rt.notNull(i) + 1) {
359 o[keys[dartx.get](i)] = this.deserialize(values[dartx.get](i)); 359 o[keys[dartx.get](i)] = this.deserialize(values[dartx.get](i));
360 } 360 }
361 return o; 361 return o;
362 } 362 }
363 deserializeClosure(x) { 363 deserializeClosure(x) {
364 dart.assert(dart.equals(dart.dindex(x, 0), 'function')); 364 dart.assert(dart.equals(dart.dindex(x, 0), 'function'));
365 let name = dart.as(dart.dindex(x, 1), core.String); 365 let name = dart.as(dart.dindex(x, 1), core.String);
366 let result = dart.as(IsolateNatives._getJSFunctionFromName(name), core.Fun ction); 366 let result = dart.as(IsolateNatives._getJSFunctionFromName(name), core.Fun ction);
367 this.deserializedObjects[dartx.add](result); 367 this.deserializedObjects[dartx.add](result);
368 return result; 368 return result;
(...skipping 1183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1552 exports.leaveJsAsync = leaveJsAsync; 1552 exports.leaveJsAsync = leaveJsAsync;
1553 exports.isWorker = isWorker; 1553 exports.isWorker = isWorker;
1554 exports.startRootIsolate = startRootIsolate; 1554 exports.startRootIsolate = startRootIsolate;
1555 exports.IsolateNatives = IsolateNatives; 1555 exports.IsolateNatives = IsolateNatives;
1556 exports.RawReceivePortImpl = RawReceivePortImpl; 1556 exports.RawReceivePortImpl = RawReceivePortImpl;
1557 exports.ReceivePortImpl = ReceivePortImpl; 1557 exports.ReceivePortImpl = ReceivePortImpl;
1558 exports.TimerImpl = TimerImpl; 1558 exports.TimerImpl = TimerImpl;
1559 exports.hasTimer = hasTimer; 1559 exports.hasTimer = hasTimer;
1560 exports.CapabilityImpl = CapabilityImpl; 1560 exports.CapabilityImpl = CapabilityImpl;
1561 }); 1561 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698