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

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

Issue 1153003003: fixes #40, extension methods for primitive types (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 var _isolate_helper = dart.defineLibrary(_isolate_helper, {}); 1 var _isolate_helper = dart.defineLibrary(_isolate_helper, {});
2 var core = dart.import(core); 2 var core = dart.import(core);
3 var _native_typed_data = dart.import(_native_typed_data); 3 var _native_typed_data = dart.import(_native_typed_data);
4 var _interceptors = dart.lazyImport(_interceptors); 4 var _interceptors = dart.lazyImport(_interceptors);
5 var _js_helper = dart.lazyImport(_js_helper); 5 var _js_helper = dart.lazyImport(_js_helper);
6 var isolate = dart.import(isolate); 6 var isolate = dart.import(isolate);
7 var _foreign_helper = dart.import(_foreign_helper); 7 var _foreign_helper = dart.import(_foreign_helper);
8 var _js_embedded_names = dart.import(_js_embedded_names); 8 var _js_embedded_names = dart.import(_js_embedded_names);
9 var collection = dart.import(collection); 9 var collection = dart.import(collection);
10 var async = dart.import(async); 10 var async = dart.import(async);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 return ["extendable", serialized]; 98 return ["extendable", serialized];
99 if (dart.is(indexable, _interceptors.JSMutableArray)) 99 if (dart.is(indexable, _interceptors.JSMutableArray))
100 return ["mutable", serialized]; 100 return ["mutable", serialized];
101 if (dart.is(indexable, _interceptors.JSArray)) 101 if (dart.is(indexable, _interceptors.JSArray))
102 return ["const", serialized]; 102 return ["const", serialized];
103 this.unsupported(indexable, "Can't serialize indexable: "); 103 this.unsupported(indexable, "Can't serialize indexable: ");
104 return null; 104 return null;
105 } 105 }
106 serializeArray(x) { 106 serializeArray(x) {
107 let serialized = []; 107 let serialized = [];
108 serialized[core.$length] = x[core.$length]; 108 serialized.length = x.length;
109 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) { 109 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) {
110 serialized[core.$set](i, this.serialize(x[core.$get](i))); 110 serialized[dartx.set](i, this.serialize(x[dartx.get](i)));
111 } 111 }
112 return serialized; 112 return serialized;
113 } 113 }
114 serializeArrayInPlace(x) { 114 serializeArrayInPlace(x) {
115 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) { 115 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) {
116 x[core.$set](i, this.serialize(x[core.$get](i))); 116 x[dartx.set](i, this.serialize(x[dartx.get](i)));
117 } 117 }
118 return x; 118 return x;
119 } 119 }
120 serializeMap(x) { 120 serializeMap(x) {
121 let serializeTearOff = dart.bind(this, 'serialize'); 121 let serializeTearOff = dart.bind(this, 'serialize');
122 return ['map', x.keys[core.$map](dart.as(serializeTearOff, __CastType0))[c ore.$toList](), x.values[core.$map](dart.as(serializeTearOff, dart.functionType( core.Object, [dart.bottom])))[core.$toList]()]; 122 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 } 123 }
124 serializeJSObject(x) { 124 serializeJSObject(x) {
125 if (!!x.constructor && x.constructor !== Object) { 125 if (!!x.constructor && x.constructor !== Object) {
126 this.unsupported(x, "Only plain JS Objects are supported:"); 126 this.unsupported(x, "Only plain JS Objects are supported:");
127 } 127 }
128 let keys = dart.as(Object.keys(x), core.List); 128 let keys = dart.as(Object.keys(x), core.List);
129 let values = []; 129 let values = [];
130 values[core.$length] = keys[core.$length]; 130 values.length = keys.length;
131 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) { 131 for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notN ull(i) + 1) {
132 values[core.$set](i, this.serialize(x[keys[core.$get](i)])); 132 values[dartx.set](i, this.serialize(x[keys[dartx.get](i)]));
133 } 133 }
134 return ['js-object', keys, values]; 134 return ['js-object', keys, values];
135 } 135 }
136 serializeWorkerSendPort(x) { 136 serializeWorkerSendPort(x) {
137 if (this[_serializeSendPorts]) { 137 if (this[_serializeSendPorts]) {
138 return ['sendport', x[_workerId], x[_isolateId], x[_receivePortId]]; 138 return ['sendport', x[_workerId], x[_isolateId], x[_receivePortId]];
139 } 139 }
140 return ['raw sendport', x]; 140 return ['raw sendport', x];
141 } 141 }
142 serializeJsSendPort(x) { 142 serializeJsSendPort(x) {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 } 259 }
260 isPrimitive(x) { 260 isPrimitive(x) {
261 return dart.notNull(x == null) || typeof x == 'string' || dart.is(x, core. num) || typeof x == 'boolean'; 261 return dart.notNull(x == null) || typeof x == 'string' || dart.is(x, core. num) || typeof x == 'boolean';
262 } 262 }
263 deserializePrimitive(x) { 263 deserializePrimitive(x) {
264 return x; 264 return x;
265 } 265 }
266 deserializeRef(x) { 266 deserializeRef(x) {
267 dart.assert(dart.equals(dart.dindex(x, 0), 'ref')); 267 dart.assert(dart.equals(dart.dindex(x, 0), 'ref'));
268 let serializationId = dart.as(dart.dindex(x, 1), core.int); 268 let serializationId = dart.as(dart.dindex(x, 1), core.int);
269 return this.deserializedObjects[core.$get](serializationId); 269 return this.deserializedObjects[dartx.get](serializationId);
270 } 270 }
271 deserializeByteBuffer(x) { 271 deserializeByteBuffer(x) {
272 dart.assert(dart.equals(dart.dindex(x, 0), 'buffer')); 272 dart.assert(dart.equals(dart.dindex(x, 0), 'buffer'));
273 let result = dart.as(dart.dindex(x, 1), _native_typed_data.NativeByteBuffe r); 273 let result = dart.as(dart.dindex(x, 1), _native_typed_data.NativeByteBuffe r);
274 this.deserializedObjects[core.$add](result); 274 this.deserializedObjects[dartx.add](result);
275 return result; 275 return result;
276 } 276 }
277 deserializeTypedData(x) { 277 deserializeTypedData(x) {
278 dart.assert(dart.equals(dart.dindex(x, 0), 'typed')); 278 dart.assert(dart.equals(dart.dindex(x, 0), 'typed'));
279 let result = dart.as(dart.dindex(x, 1), _native_typed_data.NativeTypedData ); 279 let result = dart.as(dart.dindex(x, 1), _native_typed_data.NativeTypedData );
280 this.deserializedObjects[core.$add](result); 280 this.deserializedObjects[dartx.add](result);
281 return result; 281 return result;
282 } 282 }
283 deserializeArrayInPlace(x) { 283 deserializeArrayInPlace(x) {
284 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) { 284 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) {
285 x[core.$set](i, this.deserialize(x[core.$get](i))); 285 x[dartx.set](i, this.deserialize(x[dartx.get](i)));
286 } 286 }
287 return x; 287 return x;
288 } 288 }
289 deserializeFixed(x) { 289 deserializeFixed(x) {
290 dart.assert(dart.equals(dart.dindex(x, 0), 'fixed')); 290 dart.assert(dart.equals(dart.dindex(x, 0), 'fixed'));
291 let result = dart.as(dart.dindex(x, 1), core.List); 291 let result = dart.as(dart.dindex(x, 1), core.List);
292 this.deserializedObjects[core.$add](result); 292 this.deserializedObjects[dartx.add](result);
293 return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.a s(result, _interceptors.JSArray))); 293 return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.a s(result, _interceptors.JSArray)));
294 } 294 }
295 deserializeExtendable(x) { 295 deserializeExtendable(x) {
296 dart.assert(dart.equals(dart.dindex(x, 0), 'extendable')); 296 dart.assert(dart.equals(dart.dindex(x, 0), 'extendable'));
297 let result = dart.as(dart.dindex(x, 1), core.List); 297 let result = dart.as(dart.dindex(x, 1), core.List);
298 this.deserializedObjects[core.$add](result); 298 this.deserializedObjects[dartx.add](result);
299 return _interceptors.JSArray.markGrowable(this.deserializeArrayInPlace(dar t.as(result, _interceptors.JSArray))); 299 return _interceptors.JSArray.markGrowable(this.deserializeArrayInPlace(dar t.as(result, _interceptors.JSArray)));
300 } 300 }
301 deserializeMutable(x) { 301 deserializeMutable(x) {
302 dart.assert(dart.equals(dart.dindex(x, 0), 'mutable')); 302 dart.assert(dart.equals(dart.dindex(x, 0), 'mutable'));
303 let result = dart.as(dart.dindex(x, 1), core.List); 303 let result = dart.as(dart.dindex(x, 1), core.List);
304 this.deserializedObjects[core.$add](result); 304 this.deserializedObjects[dartx.add](result);
305 return this.deserializeArrayInPlace(dart.as(result, _interceptors.JSArray) ); 305 return this.deserializeArrayInPlace(dart.as(result, _interceptors.JSArray) );
306 } 306 }
307 deserializeConst(x) { 307 deserializeConst(x) {
308 dart.assert(dart.equals(dart.dindex(x, 0), 'const')); 308 dart.assert(dart.equals(dart.dindex(x, 0), 'const'));
309 let result = dart.as(dart.dindex(x, 1), core.List); 309 let result = dart.as(dart.dindex(x, 1), core.List);
310 this.deserializedObjects[core.$add](result); 310 this.deserializedObjects[dartx.add](result);
311 return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.a s(result, _interceptors.JSArray))); 311 return _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(dart.a s(result, _interceptors.JSArray)));
312 } 312 }
313 deserializeMap(x) { 313 deserializeMap(x) {
314 dart.assert(dart.equals(dart.dindex(x, 0), 'map')); 314 dart.assert(dart.equals(dart.dindex(x, 0), 'map'));
315 let keys = dart.as(dart.dindex(x, 1), core.List); 315 let keys = dart.as(dart.dindex(x, 1), core.List);
316 let values = dart.as(dart.dindex(x, 2), core.List); 316 let values = dart.as(dart.dindex(x, 2), core.List);
317 let result = dart.map(); 317 let result = dart.map();
318 this.deserializedObjects[core.$add](result); 318 this.deserializedObjects[dartx.add](result);
319 keys = keys[core.$map](dart.bind(this, 'deserialize'))[core.$toList](); 319 keys = keys[dartx.map](dart.bind(this, 'deserialize'))[dartx.toList]();
320 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) { 320 for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notN ull(i) + 1) {
321 result.set(keys[core.$get](i), this.deserialize(values[core.$get](i))); 321 result.set(keys[dartx.get](i), this.deserialize(values[dartx.get](i)));
322 } 322 }
323 return result; 323 return result;
324 } 324 }
325 deserializeSendPort(x) { 325 deserializeSendPort(x) {
326 dart.assert(dart.equals(dart.dindex(x, 0), 'sendport')); 326 dart.assert(dart.equals(dart.dindex(x, 0), 'sendport'));
327 let managerId = dart.as(dart.dindex(x, 1), core.int); 327 let managerId = dart.as(dart.dindex(x, 1), core.int);
328 let isolateId = dart.as(dart.dindex(x, 2), core.int); 328 let isolateId = dart.as(dart.dindex(x, 2), core.int);
329 let receivePortId = dart.as(dart.dindex(x, 3), core.int); 329 let receivePortId = dart.as(dart.dindex(x, 3), core.int);
330 let result = null; 330 let result = null;
331 if (managerId == exports._globalState.currentManagerId) { 331 if (managerId == exports._globalState.currentManagerId) {
332 let isolate = exports._globalState.isolates.get(isolateId); 332 let isolate = exports._globalState.isolates.get(isolateId);
333 if (isolate == null) 333 if (isolate == null)
334 return null; 334 return null;
335 let receivePort = isolate.lookup(receivePortId); 335 let receivePort = isolate.lookup(receivePortId);
336 if (receivePort == null) 336 if (receivePort == null)
337 return null; 337 return null;
338 result = new _NativeJsSendPort(receivePort, isolateId); 338 result = new _NativeJsSendPort(receivePort, isolateId);
339 } else { 339 } else {
340 result = new _WorkerSendPort(managerId, isolateId, receivePortId); 340 result = new _WorkerSendPort(managerId, isolateId, receivePortId);
341 } 341 }
342 this.deserializedObjects[core.$add](result); 342 this.deserializedObjects[dartx.add](result);
343 return result; 343 return result;
344 } 344 }
345 deserializeRawSendPort(x) { 345 deserializeRawSendPort(x) {
346 dart.assert(dart.equals(dart.dindex(x, 0), 'raw sendport')); 346 dart.assert(dart.equals(dart.dindex(x, 0), 'raw sendport'));
347 let result = dart.as(dart.dindex(x, 1), isolate.SendPort); 347 let result = dart.as(dart.dindex(x, 1), isolate.SendPort);
348 this.deserializedObjects[core.$add](result); 348 this.deserializedObjects[dartx.add](result);
349 return result; 349 return result;
350 } 350 }
351 deserializeJSObject(x) { 351 deserializeJSObject(x) {
352 dart.assert(dart.equals(dart.dindex(x, 0), 'js-object')); 352 dart.assert(dart.equals(dart.dindex(x, 0), 'js-object'));
353 let keys = dart.as(dart.dindex(x, 1), core.List); 353 let keys = dart.as(dart.dindex(x, 1), core.List);
354 let values = dart.as(dart.dindex(x, 2), core.List); 354 let values = dart.as(dart.dindex(x, 2), core.List);
355 let o = {}; 355 let o = {};
356 this.deserializedObjects[core.$add](o); 356 this.deserializedObjects[dartx.add](o);
357 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) { 357 for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notN ull(i) + 1) {
358 o[keys[core.$get](i)] = this.deserialize(values[core.$get](i)); 358 o[keys[dartx.get](i)] = this.deserialize(values[dartx.get](i));
359 } 359 }
360 return o; 360 return o;
361 } 361 }
362 deserializeClosure(x) { 362 deserializeClosure(x) {
363 dart.assert(dart.equals(dart.dindex(x, 0), 'function')); 363 dart.assert(dart.equals(dart.dindex(x, 0), 'function'));
364 let name = dart.as(dart.dindex(x, 1), core.String); 364 let name = dart.as(dart.dindex(x, 1), core.String);
365 let result = dart.as(IsolateNatives._getJSFunctionFromName(name), core.Fun ction); 365 let result = dart.as(IsolateNatives._getJSFunctionFromName(name), core.Fun ction);
366 this.deserializedObjects[core.$add](result); 366 this.deserializedObjects[dartx.add](result);
367 return result; 367 return result;
368 } 368 }
369 deserializeDartObject(x) { 369 deserializeDartObject(x) {
370 dart.assert(dart.equals(dart.dindex(x, 0), 'dart')); 370 dart.assert(dart.equals(dart.dindex(x, 0), 'dart'));
371 let classId = dart.as(dart.dindex(x, 1), core.String); 371 let classId = dart.as(dart.dindex(x, 1), core.String);
372 let fields = dart.as(dart.dindex(x, 2), core.List); 372 let fields = dart.as(dart.dindex(x, 2), core.List);
373 let instanceFromClassId = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embed ded_names.INSTANCE_FROM_CLASS_ID); 373 let instanceFromClassId = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embed ded_names.INSTANCE_FROM_CLASS_ID);
374 let initializeObject = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded _names.INITIALIZE_EMPTY_INSTANCE); 374 let initializeObject = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded _names.INITIALIZE_EMPTY_INSTANCE);
375 let emptyInstance = instanceFromClassId(classId); 375 let emptyInstance = instanceFromClassId(classId);
376 this.deserializedObjects[core.$add](emptyInstance); 376 this.deserializedObjects[dartx.add](emptyInstance);
377 this.deserializeArrayInPlace(dart.as(fields, _interceptors.JSArray)); 377 this.deserializeArrayInPlace(dart.as(fields, _interceptors.JSArray));
378 return initializeObject(classId, emptyInstance, fields); 378 return initializeObject(classId, emptyInstance, fields);
379 } 379 }
380 } 380 }
381 dart.setSignature(_Deserializer, { 381 dart.setSignature(_Deserializer, {
382 constructors: () => ({_Deserializer: [_Deserializer, [], {adjustSendPorts: c ore.Object}]}), 382 constructors: () => ({_Deserializer: [_Deserializer, [], {adjustSendPorts: c ore.Object}]}),
383 methods: () => ({ 383 methods: () => ({
384 deserialize: [core.Object, [core.Object]], 384 deserialize: [core.Object, [core.Object]],
385 isPrimitive: [core.bool, [core.Object]], 385 isPrimitive: [core.bool, [core.Object]],
386 deserializePrimitive: [core.Object, [core.Object]], 386 deserializePrimitive: [core.Object, [core.Object]],
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
546 let o = exports._globalState, x = o.nextIsolateId; 546 let o = exports._globalState, x = o.nextIsolateId;
547 o.nextIsolateId = dart.notNull(x) + 1; 547 o.nextIsolateId = dart.notNull(x) + 1;
548 return x; 548 return x;
549 })(); 549 })();
550 this.ports = core.Map$(core.int, RawReceivePortImpl).new(); 550 this.ports = core.Map$(core.int, RawReceivePortImpl).new();
551 this.weakPorts = core.Set$(core.int).new(); 551 this.weakPorts = core.Set$(core.int).new();
552 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE(); 552 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE();
553 this.controlPort = new RawReceivePortImpl._controlPort(); 553 this.controlPort = new RawReceivePortImpl._controlPort();
554 this.pauseCapability = isolate.Capability.new(); 554 this.pauseCapability = isolate.Capability.new();
555 this.terminateCapability = isolate.Capability.new(); 555 this.terminateCapability = isolate.Capability.new();
556 this.delayedEvents = dart.setType([], core.List$(_IsolateEvent)); 556 this.delayedEvents = dart.list([], _IsolateEvent);
557 this.pauseTokens = core.Set$(isolate.Capability).new(); 557 this.pauseTokens = core.Set$(isolate.Capability).new();
558 this.errorPorts = core.Set$(isolate.SendPort).new(); 558 this.errorPorts = core.Set$(isolate.SendPort).new();
559 this.initialized = false; 559 this.initialized = false;
560 this.isPaused = false; 560 this.isPaused = false;
561 this.doneHandlers = null; 561 this.doneHandlers = null;
562 this[_scheduledControlEvents] = null; 562 this[_scheduledControlEvents] = null;
563 this[_isExecutingEvent] = false; 563 this[_isExecutingEvent] = false;
564 this.errorsAreFatal = true; 564 this.errorsAreFatal = true;
565 this.registerWeak(this.controlPort[_id], this.controlPort); 565 this.registerWeak(this.controlPort[_id], this.controlPort);
566 } 566 }
567 addPause(authentification, resume) { 567 addPause(authentification, resume) {
568 if (!dart.equals(this.pauseCapability, authentification)) 568 if (!dart.equals(this.pauseCapability, authentification))
569 return; 569 return;
570 if (dart.notNull(this.pauseTokens.add(resume)) && !dart.notNull(this.isPau sed)) { 570 if (dart.notNull(this.pauseTokens.add(resume)) && !dart.notNull(this.isPau sed)) {
571 this.isPaused = true; 571 this.isPaused = true;
572 } 572 }
573 this[_updateGlobalState](); 573 this[_updateGlobalState]();
574 } 574 }
575 removePause(resume) { 575 removePause(resume) {
576 if (!dart.notNull(this.isPaused)) 576 if (!dart.notNull(this.isPaused))
577 return; 577 return;
578 this.pauseTokens.remove(resume); 578 this.pauseTokens.remove(resume);
579 if (this.pauseTokens[core.$isEmpty]) { 579 if (this.pauseTokens.isEmpty) {
580 while (this.delayedEvents[core.$isNotEmpty]) { 580 while (this.delayedEvents[dartx.isNotEmpty]) {
581 let event = this.delayedEvents[core.$removeLast](); 581 let event = this.delayedEvents[dartx.removeLast]();
582 exports._globalState.topEventLoop.prequeue(event); 582 exports._globalState.topEventLoop.prequeue(event);
583 } 583 }
584 this.isPaused = false; 584 this.isPaused = false;
585 } 585 }
586 this[_updateGlobalState](); 586 this[_updateGlobalState]();
587 } 587 }
588 addDoneListener(responsePort) { 588 addDoneListener(responsePort) {
589 if (this.doneHandlers == null) { 589 if (this.doneHandlers == null) {
590 this.doneHandlers = []; 590 this.doneHandlers = [];
591 } 591 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 } 639 }
640 dart.dsend(this[_scheduledControlEvents], 'addLast', dart.bind(this, 'kill ')); 640 dart.dsend(this[_scheduledControlEvents], 'addLast', dart.bind(this, 'kill '));
641 } 641 }
642 addErrorListener(port) { 642 addErrorListener(port) {
643 this.errorPorts.add(port); 643 this.errorPorts.add(port);
644 } 644 }
645 removeErrorListener(port) { 645 removeErrorListener(port) {
646 this.errorPorts.remove(port); 646 this.errorPorts.remove(port);
647 } 647 }
648 handleUncaughtError(error, stackTrace) { 648 handleUncaughtError(error, stackTrace) {
649 if (this.errorPorts[core.$isEmpty]) { 649 if (this.errorPorts.isEmpty) {
650 if (dart.notNull(this.errorsAreFatal) && dart.notNull(core.identical(thi s, exports._globalState.rootContext))) { 650 if (dart.notNull(this.errorsAreFatal) && dart.notNull(core.identical(thi s, exports._globalState.rootContext))) {
651 return; 651 return;
652 } 652 }
653 if (self.console && self.console.error) { 653 if (self.console && self.console.error) {
654 self.console.error(error, stackTrace); 654 self.console.error(error, stackTrace);
655 } else { 655 } else {
656 core.print(error); 656 core.print(error);
657 if (stackTrace != null) 657 if (stackTrace != null)
658 core.print(stackTrace); 658 core.print(stackTrace);
659 } 659 }
660 return; 660 return;
661 } 661 }
662 let message = core.List.new(2); 662 let message = core.List.new(2);
663 message[core.$set](0, dart.toString(error)); 663 message[dartx.set](0, dart.toString(error));
664 message[core.$set](1, stackTrace == null ? null : dart.toString(stackTrace )); 664 message[dartx.set](1, stackTrace == null ? null : dart.toString(stackTrace ));
665 for (let port of this.errorPorts) 665 for (let port of this.errorPorts)
666 port.send(message); 666 port.send(message);
667 } 667 }
668 eval(code) { 668 eval(code) {
669 let old = exports._globalState.currentContext; 669 let old = exports._globalState.currentContext;
670 exports._globalState.currentContext = this; 670 exports._globalState.currentContext = this;
671 this[_setGlobals](); 671 this[_setGlobals]();
672 let result = null; 672 let result = null;
673 this[_isExecutingEvent] = true; 673 this[_isExecutingEvent] = true;
674 try { 674 try {
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 } 760 }
761 register(portId, port) { 761 register(portId, port) {
762 this[_addRegistration](portId, port); 762 this[_addRegistration](portId, port);
763 this[_updateGlobalState](); 763 this[_updateGlobalState]();
764 } 764 }
765 registerWeak(portId, port) { 765 registerWeak(portId, port) {
766 this.weakPorts.add(portId); 766 this.weakPorts.add(portId);
767 this[_addRegistration](portId, port); 767 this[_addRegistration](portId, port);
768 } 768 }
769 [_updateGlobalState]() { 769 [_updateGlobalState]() {
770 if (dart.notNull(this.ports.length) - dart.notNull(this.weakPorts[core.$le ngth]) > 0 || dart.notNull(this.isPaused) || !dart.notNull(this.initialized)) { 770 if (dart.notNull(this.ports.length) - dart.notNull(this.weakPorts.length) > 0 || dart.notNull(this.isPaused) || !dart.notNull(this.initialized)) {
771 exports._globalState.isolates.set(this.id, this); 771 exports._globalState.isolates.set(this.id, this);
772 } else { 772 } else {
773 this.kill(); 773 this.kill();
774 } 774 }
775 } 775 }
776 kill() { 776 kill() {
777 if (this[_scheduledControlEvents] != null) { 777 if (this[_scheduledControlEvents] != null) {
778 dart.dsend(this[_scheduledControlEvents], 'clear'); 778 dart.dsend(this[_scheduledControlEvents], 'clear');
779 } 779 }
780 for (let port of this.ports.values) { 780 for (let port of this.ports.values) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
829 this.events = collection.Queue$(_IsolateEvent).new(); 829 this.events = collection.Queue$(_IsolateEvent).new();
830 this[_activeJsAsyncCount] = 0; 830 this[_activeJsAsyncCount] = 0;
831 } 831 }
832 enqueue(isolate, fn, msg) { 832 enqueue(isolate, fn, msg) {
833 this.events.addLast(new _IsolateEvent(dart.as(isolate, _IsolateContext), d art.as(fn, core.Function), dart.as(msg, core.String))); 833 this.events.addLast(new _IsolateEvent(dart.as(isolate, _IsolateContext), d art.as(fn, core.Function), dart.as(msg, core.String)));
834 } 834 }
835 prequeue(event) { 835 prequeue(event) {
836 this.events.addFirst(event); 836 this.events.addFirst(event);
837 } 837 }
838 dequeue() { 838 dequeue() {
839 if (this.events[core.$isEmpty]) 839 if (this.events.isEmpty)
840 return null; 840 return null;
841 return this.events.removeFirst(); 841 return this.events.removeFirst();
842 } 842 }
843 checkOpenReceivePortsFromCommandLine() { 843 checkOpenReceivePortsFromCommandLine() {
844 if (dart.notNull(exports._globalState.rootContext != null) && dart.notNull (exports._globalState.isolates.containsKey(exports._globalState.rootContext.id)) && dart.notNull(exports._globalState.fromCommandLine) && dart.notNull(exports._ globalState.rootContext.ports.isEmpty)) { 844 if (dart.notNull(exports._globalState.rootContext != null) && dart.notNull (exports._globalState.isolates.containsKey(exports._globalState.rootContext.id)) && dart.notNull(exports._globalState.fromCommandLine) && dart.notNull(exports._ globalState.rootContext.ports.isEmpty)) {
845 throw core.Exception.new("Program exited with open ReceivePorts."); 845 throw core.Exception.new("Program exited with open ReceivePorts.");
846 } 846 }
847 } 847 }
848 runIteration() { 848 runIteration() {
849 let event = this.dequeue(); 849 let event = this.dequeue();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
896 }) 896 })
897 }); 897 });
898 class _IsolateEvent extends core.Object { 898 class _IsolateEvent extends core.Object {
899 _IsolateEvent(isolate, fn, message) { 899 _IsolateEvent(isolate, fn, message) {
900 this.isolate = isolate; 900 this.isolate = isolate;
901 this.fn = fn; 901 this.fn = fn;
902 this.message = message; 902 this.message = message;
903 } 903 }
904 process() { 904 process() {
905 if (this.isolate.isPaused) { 905 if (this.isolate.isPaused) {
906 this.isolate.delayedEvents[core.$add](this); 906 this.isolate.delayedEvents[dartx.add](this);
907 return; 907 return;
908 } 908 }
909 this.isolate.eval(this.fn); 909 this.isolate.eval(this.fn);
910 } 910 }
911 } 911 }
912 dart.setSignature(_IsolateEvent, { 912 dart.setSignature(_IsolateEvent, {
913 constructors: () => ({_IsolateEvent: [_IsolateEvent, [_IsolateContext, core. Function, core.String]]}), 913 constructors: () => ({_IsolateEvent: [_IsolateEvent, [_IsolateContext, core. Function, core.String]]}),
914 methods: () => ({process: [dart.void, []]}) 914 methods: () => ({process: [dart.void, []]})
915 }); 915 });
916 class _MainManagerStub extends core.Object { 916 class _MainManagerStub extends core.Object {
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1097 let isSpawnUri = false; 1097 let isSpawnUri = false;
1098 return IsolateNatives.spawn(name, null, null, message, isLight, isSpawnUri , startPaused); 1098 return IsolateNatives.spawn(name, null, null, message, isLight, isSpawnUri , startPaused);
1099 } 1099 }
1100 static spawnUri(uri, args, message, startPaused) { 1100 static spawnUri(uri, args, message, startPaused) {
1101 IsolateNatives.enableSpawnWorker = true; 1101 IsolateNatives.enableSpawnWorker = true;
1102 let isLight = false; 1102 let isLight = false;
1103 let isSpawnUri = true; 1103 let isSpawnUri = true;
1104 return IsolateNatives.spawn(null, dart.toString(uri), args, message, isLig ht, isSpawnUri, startPaused); 1104 return IsolateNatives.spawn(null, dart.toString(uri), args, message, isLig ht, isSpawnUri, startPaused);
1105 } 1105 }
1106 static spawn(functionName, uri, args, message, isLight, isSpawnUri, startPau sed) { 1106 static spawn(functionName, uri, args, message, isLight, isSpawnUri, startPau sed) {
1107 if (uri != null && dart.notNull(uri.endsWith(".dart"))) { 1107 if (uri != null && dart.notNull(uri[dartx.endsWith](".dart"))) {
1108 uri = dart.notNull(uri) + ".js"; 1108 uri = dart.notNull(uri) + ".js";
1109 } 1109 }
1110 let port = isolate.ReceivePort.new(); 1110 let port = isolate.ReceivePort.new();
1111 let completer = async.Completer$(core.List).new(); 1111 let completer = async.Completer$(core.List).new();
1112 port.first.then(dart.fn(msg => { 1112 port.first.then(dart.fn(msg => {
1113 if (dart.equals(dart.dindex(msg, 0), _SPAWNED_SIGNAL)) { 1113 if (dart.equals(dart.dindex(msg, 0), _SPAWNED_SIGNAL)) {
1114 completer.complete(msg); 1114 completer.complete(msg);
1115 } else { 1115 } else {
1116 dart.assert(dart.equals(dart.dindex(msg, 0), _SPAWN_FAILED_SIGNAL)); 1116 dart.assert(dart.equals(dart.dindex(msg, 0), _SPAWN_FAILED_SIGNAL));
1117 completer.completeError(dart.dindex(msg, 1)); 1117 completer.completeError(dart.dindex(msg, 1));
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
1557 exports.leaveJsAsync = leaveJsAsync; 1557 exports.leaveJsAsync = leaveJsAsync;
1558 exports.isWorker = isWorker; 1558 exports.isWorker = isWorker;
1559 exports.startRootIsolate = startRootIsolate; 1559 exports.startRootIsolate = startRootIsolate;
1560 exports.IsolateNatives = IsolateNatives; 1560 exports.IsolateNatives = IsolateNatives;
1561 exports.RawReceivePortImpl = RawReceivePortImpl; 1561 exports.RawReceivePortImpl = RawReceivePortImpl;
1562 exports.ReceivePortImpl = ReceivePortImpl; 1562 exports.ReceivePortImpl = ReceivePortImpl;
1563 exports.TimerImpl = TimerImpl; 1563 exports.TimerImpl = TimerImpl;
1564 exports.hasTimer = hasTimer; 1564 exports.hasTimer = hasTimer;
1565 exports.CapabilityImpl = CapabilityImpl; 1565 exports.CapabilityImpl = CapabilityImpl;
1566 })(_isolate_helper, core, _native_typed_data, _interceptors, _js_helper, isolate , _foreign_helper, _js_embedded_names, collection, async); 1566 })(_isolate_helper, core, _native_typed_data, _interceptors, _js_helper, isolate , _foreign_helper, _js_embedded_names, collection, async);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698