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

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

Issue 1088943006: implement tear offs (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 8 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; 1 var _isolate_helper;
2 (function(exports) { 2 (function(exports) {
3 'use strict'; 3 'use strict';
4 // Function _serializeMessage: (dynamic) → dynamic 4 // Function _serializeMessage: (dynamic) → dynamic
5 function _serializeMessage(message) { 5 function _serializeMessage(message) {
6 return new _Serializer().serialize(message); 6 return new _Serializer().serialize(message);
7 } 7 }
8 // Function _deserializeMessage: (dynamic) → dynamic 8 // Function _deserializeMessage: (dynamic) → dynamic
9 function _deserializeMessage(message) { 9 function _deserializeMessage(message) {
10 return new _Deserializer().deserialize(message); 10 return new _Deserializer().deserialize(message);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 } 103 }
104 return serialized; 104 return serialized;
105 } 105 }
106 serializeArrayInPlace(x) { 106 serializeArrayInPlace(x) {
107 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) { 107 for (let i = 0; dart.notNull(i) < dart.notNull(x[core.$length]); i = dart. notNull(i) + 1) {
108 x[core.$set](i, this.serialize(x[core.$get](i))); 108 x[core.$set](i, this.serialize(x[core.$get](i)));
109 } 109 }
110 return x; 110 return x;
111 } 111 }
112 serializeMap(x) { 112 serializeMap(x) {
113 let serializeTearOff = this.serialize; 113 let serializeTearOff = this.serialize.bind(this);
114 return ['map', x.keys[core.$map](dart.as(serializeTearOff, __CastType0))[c ore.$toList](), x.values[core.$map](dart.as(serializeTearOff, dart.functionType( dart.dynamic, [dart.dynamic])))[core.$toList]()]; 114 return ['map', x.keys[core.$map](dart.as(serializeTearOff, __CastType0))[c ore.$toList](), x.values[core.$map](dart.as(serializeTearOff, dart.functionType( dart.dynamic, [dart.dynamic])))[core.$toList]()];
115 } 115 }
116 serializeJSObject(x) { 116 serializeJSObject(x) {
117 if (!!x.constructor && x.constructor !== Object) { 117 if (!!x.constructor && x.constructor !== Object) {
118 this.unsupported(x, "Only plain JS Objects are supported:"); 118 this.unsupported(x, "Only plain JS Objects are supported:");
119 } 119 }
120 let keys = dart.as(Object.keys(x), core.List); 120 let keys = dart.as(Object.keys(x), core.List);
121 let values = []; 121 let values = [];
122 values[core.$length] = keys[core.$length]; 122 values[core.$length] = keys[core.$length];
123 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) { 123 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) {
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 let result = dart.as(dart.dindex(x, 1), core.List); 280 let result = dart.as(dart.dindex(x, 1), core.List);
281 this.deserializedObjects[core.$add](result); 281 this.deserializedObjects[core.$add](result);
282 return new _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(da rt.as(result, _interceptors.JSArray))); 282 return new _interceptors.JSArray.markFixed(this.deserializeArrayInPlace(da rt.as(result, _interceptors.JSArray)));
283 } 283 }
284 deserializeMap(x) { 284 deserializeMap(x) {
285 dart.assert(dart.equals(dart.dindex(x, 0), 'map')); 285 dart.assert(dart.equals(dart.dindex(x, 0), 'map'));
286 let keys = dart.as(dart.dindex(x, 1), core.List); 286 let keys = dart.as(dart.dindex(x, 1), core.List);
287 let values = dart.as(dart.dindex(x, 2), core.List); 287 let values = dart.as(dart.dindex(x, 2), core.List);
288 let result = dart.map(); 288 let result = dart.map();
289 this.deserializedObjects[core.$add](result); 289 this.deserializedObjects[core.$add](result);
290 keys = keys[core.$map](this.deserialize)[core.$toList](); 290 keys = keys[core.$map](this.deserialize.bind(this))[core.$toList]();
291 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) { 291 for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = da rt.notNull(i) + 1) {
292 result.set(keys[core.$get](i), this.deserialize(values[core.$get](i))); 292 result.set(keys[core.$get](i), this.deserialize(values[core.$get](i)));
293 } 293 }
294 return result; 294 return result;
295 } 295 }
296 deserializeSendPort(x) { 296 deserializeSendPort(x) {
297 dart.assert(dart.equals(dart.dindex(x, 0), 'sendport')); 297 dart.assert(dart.equals(dart.dindex(x, 0), 'sendport'));
298 let managerId = dart.as(dart.dindex(x, 1), core.int); 298 let managerId = dart.as(dart.dindex(x, 1), core.int);
299 let isolateId = dart.as(dart.dindex(x, 2), core.int); 299 let isolateId = dart.as(dart.dindex(x, 2), core.int);
300 let receivePortId = dart.as(dart.dindex(x, 3), core.int); 300 let receivePortId = dart.as(dart.dindex(x, 3), core.int);
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 let isWorkerDefined = exports.globalWorker != null; 447 let isWorkerDefined = exports.globalWorker != null;
448 this.isWorker = !dart.notNull(isWindowDefined) && dart.notNull(exports.glo balPostMessageDefined); 448 this.isWorker = !dart.notNull(isWindowDefined) && dart.notNull(exports.glo balPostMessageDefined);
449 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(isWorke rDefined) && IsolateNatives.thisScript != null; 449 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(isWorke rDefined) && IsolateNatives.thisScript != null;
450 this.fromCommandLine = !dart.notNull(isWindowDefined) && !dart.notNull(thi s.isWorker); 450 this.fromCommandLine = !dart.notNull(isWindowDefined) && !dart.notNull(thi s.isWorker);
451 } 451 }
452 [_nativeInitWorkerMessageHandler]() { 452 [_nativeInitWorkerMessageHandler]() {
453 let func = function(f, a) { 453 let func = function(f, a) {
454 return function(e) { 454 return function(e) {
455 f(a, e); 455 f(a, e);
456 }; 456 };
457 }(_foreign_helper.DART_CLOSURE_TO_JS(IsolateNatives[_processWorkerMessage] ), this.mainManager); 457 }(_foreign_helper.DART_CLOSURE_TO_JS(dart.bind(IsolateNatives, _processWor kerMessage)), this.mainManager);
458 self.onmessage = func; 458 self.onmessage = func;
459 self.dartPrint = self.dartPrint || function(serialize) { 459 self.dartPrint = self.dartPrint || function(serialize) {
460 return function(object) { 460 return function(object) {
461 if (self.console && self.console.log) { 461 if (self.console && self.console.log) {
462 self.console.log(object); 462 self.console.log(object);
463 } else { 463 } else {
464 self.postMessage(serialize(object)); 464 self.postMessage(serialize(object));
465 } 465 }
466 }; 466 };
467 }(_foreign_helper.DART_CLOSURE_TO_JS(_Manager[_serializePrintMessage])); 467 }(_foreign_helper.DART_CLOSURE_TO_JS(_Manager[_serializePrintMessage]));
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 dart.dsend(this[_scheduledControlEvents], 'addLast', respond); 565 dart.dsend(this[_scheduledControlEvents], 'addLast', respond);
566 } 566 }
567 handleKill(authentification, priority) { 567 handleKill(authentification, priority) {
568 if (!dart.equals(this.terminateCapability, authentification)) 568 if (!dart.equals(this.terminateCapability, authentification))
569 return; 569 return;
570 if (priority == isolate.Isolate.IMMEDIATE || priority == isolate.Isolate.B EFORE_NEXT_EVENT && !dart.notNull(this[_isExecutingEvent])) { 570 if (priority == isolate.Isolate.IMMEDIATE || priority == isolate.Isolate.B EFORE_NEXT_EVENT && !dart.notNull(this[_isExecutingEvent])) {
571 this.kill(); 571 this.kill();
572 return; 572 return;
573 } 573 }
574 if (priority == isolate.Isolate.AS_EVENT) { 574 if (priority == isolate.Isolate.AS_EVENT) {
575 exports._globalState.topEventLoop.enqueue(this, this.kill, "kill"); 575 exports._globalState.topEventLoop.enqueue(this, this.kill.bind(this), "k ill");
576 return; 576 return;
577 } 577 }
578 dart.assert(priority == isolate.Isolate.BEFORE_NEXT_EVENT); 578 dart.assert(priority == isolate.Isolate.BEFORE_NEXT_EVENT);
579 if (this[_scheduledControlEvents] == null) { 579 if (this[_scheduledControlEvents] == null) {
580 this[_scheduledControlEvents] = new collection.Queue(); 580 this[_scheduledControlEvents] = new collection.Queue();
581 } 581 }
582 dart.dsend(this[_scheduledControlEvents], 'addLast', this.kill); 582 dart.dsend(this[_scheduledControlEvents], 'addLast', this.kill.bind(this)) ;
583 } 583 }
584 addErrorListener(port) { 584 addErrorListener(port) {
585 this.errorPorts.add(port); 585 this.errorPorts.add(port);
586 } 586 }
587 removeErrorListener(port) { 587 removeErrorListener(port) {
588 this.errorPorts.remove(port); 588 this.errorPorts.remove(port);
589 } 589 }
590 handleUncaughtError(error, stackTrace) { 590 handleUncaughtError(error, stackTrace) {
591 if (this.errorPorts[core.$isEmpty]) { 591 if (this.errorPorts[core.$isEmpty]) {
592 if (dart.notNull(this.errorsAreFatal) && dart.notNull(core.identical(thi s, exports._globalState.rootContext))) { 592 if (dart.notNull(this.errorsAreFatal) && dart.notNull(core.identical(thi s, exports._globalState.rootContext))) {
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
1258 ReceivePortImpl() { 1258 ReceivePortImpl() {
1259 this.fromRawReceivePort(new RawReceivePortImpl(null)); 1259 this.fromRawReceivePort(new RawReceivePortImpl(null));
1260 } 1260 }
1261 weak() { 1261 weak() {
1262 this.fromRawReceivePort(new RawReceivePortImpl.weak(null)); 1262 this.fromRawReceivePort(new RawReceivePortImpl.weak(null));
1263 } 1263 }
1264 fromRawReceivePort(rawPort) { 1264 fromRawReceivePort(rawPort) {
1265 this[_rawPort] = rawPort; 1265 this[_rawPort] = rawPort;
1266 this[_controller] = null; 1266 this[_controller] = null;
1267 super.Stream(); 1267 super.Stream();
1268 this[_controller] = new async.StreamController({onCancel: this.close, sync : true}); 1268 this[_controller] = new async.StreamController({onCancel: this.close.bind( this), sync: true});
1269 this[_rawPort].handler = this[_controller].add; 1269 this[_rawPort].handler = dart.bind(this[_controller], 'add');
1270 } 1270 }
1271 listen(onData, opts) { 1271 listen(onData, opts) {
1272 let onError = opts && 'onError' in opts ? opts.onError : null; 1272 let onError = opts && 'onError' in opts ? opts.onError : null;
1273 let onDone = opts && 'onDone' in opts ? opts.onDone : null; 1273 let onDone = opts && 'onDone' in opts ? opts.onDone : null;
1274 let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null; 1274 let cancelOnError = opts && 'cancelOnError' in opts ? opts.cancelOnError : null;
1275 return this[_controller].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError}); 1275 return this[_controller].stream.listen(onData, {onError: onError, onDone: onDone, cancelOnError: cancelOnError});
1276 } 1276 }
1277 close() { 1277 close() {
1278 this[_rawPort].close(); 1278 this[_rawPort].close();
1279 this[_controller].close(); 1279 this[_controller].close();
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
1393 exports.leaveJsAsync = leaveJsAsync; 1393 exports.leaveJsAsync = leaveJsAsync;
1394 exports.isWorker = isWorker; 1394 exports.isWorker = isWorker;
1395 exports.startRootIsolate = startRootIsolate; 1395 exports.startRootIsolate = startRootIsolate;
1396 exports.IsolateNatives = IsolateNatives; 1396 exports.IsolateNatives = IsolateNatives;
1397 exports.RawReceivePortImpl = RawReceivePortImpl; 1397 exports.RawReceivePortImpl = RawReceivePortImpl;
1398 exports.ReceivePortImpl = ReceivePortImpl; 1398 exports.ReceivePortImpl = ReceivePortImpl;
1399 exports.TimerImpl = TimerImpl; 1399 exports.TimerImpl = TimerImpl;
1400 exports.hasTimer = hasTimer; 1400 exports.hasTimer = hasTimer;
1401 exports.CapabilityImpl = CapabilityImpl; 1401 exports.CapabilityImpl = CapabilityImpl;
1402 })(_isolate_helper || (_isolate_helper = {})); 1402 })(_isolate_helper || (_isolate_helper = {}));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698