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

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

Issue 1042003002: fix list literal initialization call fix typeof calls for primitive JS types add dart/collection.js… (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 9 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 return this.serializeDartObject(x); 59 return this.serializeDartObject(x);
60 } 60 }
61 unsupported(x, message) { 61 unsupported(x, message) {
62 if (message === void 0) 62 if (message === void 0)
63 message = null; 63 message = null;
64 if (message === null) 64 if (message === null)
65 message = "Can't transmit:"; 65 message = "Can't transmit:";
66 throw new core.UnsupportedError(`${message} ${x}`); 66 throw new core.UnsupportedError(`${message} ${x}`);
67 } 67 }
68 makeRef(serializationId) { 68 makeRef(serializationId) {
69 return new List.from(["ref", serializationId]); 69 return new core.List.from(["ref", serializationId]);
70 } 70 }
71 isPrimitive(x) { 71 isPrimitive(x) {
72 return dart.notNull(x === null) || dart.notNull(typeof x == string) || dar t.notNull(dart.is(x, core.num)) || dart.notNull(typeof x == boolean); 72 return dart.notNull(x === null) || dart.notNull(typeof x == 'string') || d art.notNull(dart.is(x, core.num)) || dart.notNull(typeof x == 'boolean');
73 } 73 }
74 serializePrimitive(primitive) { 74 serializePrimitive(primitive) {
75 return primitive; 75 return primitive;
76 } 76 }
77 serializeByteBuffer(buffer) { 77 serializeByteBuffer(buffer) {
78 return new List.from(["buffer", buffer]); 78 return new core.List.from(["buffer", buffer]);
79 } 79 }
80 serializeTypedData(data) { 80 serializeTypedData(data) {
81 return new List.from(["typed", data]); 81 return new core.List.from(["typed", data]);
82 } 82 }
83 serializeJSIndexable(indexable) { 83 serializeJSIndexable(indexable) {
84 dart.assert(!(typeof indexable == string)); 84 dart.assert(!(typeof indexable == 'string'));
85 let serialized = dart.as(this.serializeArray(dart.as(indexable, _intercept ors.JSArray)), core.List); 85 let serialized = dart.as(this.serializeArray(dart.as(indexable, _intercept ors.JSArray)), core.List);
86 if (dart.is(indexable, _interceptors.JSFixedArray)) 86 if (dart.is(indexable, _interceptors.JSFixedArray))
87 return new List.from(["fixed", serialized]); 87 return new core.List.from(["fixed", serialized]);
88 if (dart.is(indexable, _interceptors.JSExtendableArray)) 88 if (dart.is(indexable, _interceptors.JSExtendableArray))
89 return new List.from(["extendable", serialized]); 89 return new core.List.from(["extendable", serialized]);
90 if (dart.is(indexable, _interceptors.JSMutableArray)) 90 if (dart.is(indexable, _interceptors.JSMutableArray))
91 return new List.from(["mutable", serialized]); 91 return new core.List.from(["mutable", serialized]);
92 if (dart.is(indexable, _interceptors.JSArray)) 92 if (dart.is(indexable, _interceptors.JSArray))
93 return new List.from(["const", serialized]); 93 return new core.List.from(["const", serialized]);
94 this.unsupported(indexable, "Can't serialize indexable: "); 94 this.unsupported(indexable, "Can't serialize indexable: ");
95 return null; 95 return null;
96 } 96 }
97 serializeArray(x) { 97 serializeArray(x) {
98 let serialized = new List.from([]); 98 let serialized = new core.List.from([]);
99 serialized.length = x.length; 99 serialized.length = x.length;
100 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) { 100 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) {
101 serialized.set(i, this.serialize(x.get(i))); 101 serialized.set(i, this.serialize(x.get(i)));
102 } 102 }
103 return serialized; 103 return serialized;
104 } 104 }
105 serializeArrayInPlace(x) { 105 serializeArrayInPlace(x) {
106 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) { 106 for (let i = 0; dart.notNull(i) < dart.notNull(x.length); i = dart.notNull (i) + 1) {
107 x.set(i, this.serialize(x.get(i))); 107 x.set(i, this.serialize(x.get(i)));
108 } 108 }
109 return x; 109 return x;
110 } 110 }
111 serializeMap(x) { 111 serializeMap(x) {
112 let serializeTearOff = this.serialize; 112 let serializeTearOff = this.serialize;
113 return new List.from(['map', x.keys.map(dart.as(serializeTearOff, dart.thr ow_("Unimplemented type (dynamic) → dynamic"))).toList(), x.values.map(dart.as(s erializeTearOff, dart.throw_("Unimplemented type (dynamic) → dynamic"))).toList( )]); 113 return new core.List.from(['map', x.keys.map(dart.as(serializeTearOff, dar t.throw_("Unimplemented type (dynamic) → dynamic"))).toList(), x.values.map(dart .as(serializeTearOff, dart.throw_("Unimplemented type (dynamic) → dynamic"))).to List()]);
114 } 114 }
115 serializeJSObject(x) { 115 serializeJSObject(x) {
116 if (!!x.constructor && x.constructor !== Object) { 116 if (!!x.constructor && x.constructor !== Object) {
117 this.unsupported(x, "Only plain JS Objects are supported:"); 117 this.unsupported(x, "Only plain JS Objects are supported:");
118 } 118 }
119 let keys = dart.as(Object.keys(x), core.List); 119 let keys = dart.as(Object.keys(x), core.List);
120 let values = new List.from([]); 120 let values = new core.List.from([]);
121 values.length = keys.length; 121 values.length = keys.length;
122 for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notN ull(i) + 1) { 122 for (let i = 0; dart.notNull(i) < dart.notNull(keys.length); i = dart.notN ull(i) + 1) {
123 values.set(i, this.serialize(x[keys.get(i)])); 123 values.set(i, this.serialize(x[keys.get(i)]));
124 } 124 }
125 return new List.from(['js-object', keys, values]); 125 return new core.List.from(['js-object', keys, values]);
126 } 126 }
127 serializeWorkerSendPort(x) { 127 serializeWorkerSendPort(x) {
128 if (this[_serializeSendPorts]) { 128 if (this[_serializeSendPorts]) {
129 return new List.from(['sendport', x[_workerId], x[_isolateId], x[_receiv ePortId]]); 129 return new core.List.from(['sendport', x[_workerId], x[_isolateId], x[_r eceivePortId]]);
130 } 130 }
131 return new List.from(['raw sendport', x]); 131 return new core.List.from(['raw sendport', x]);
132 } 132 }
133 serializeJsSendPort(x) { 133 serializeJsSendPort(x) {
134 if (this[_serializeSendPorts]) { 134 if (this[_serializeSendPorts]) {
135 let workerId = exports._globalState.currentManagerId; 135 let workerId = exports._globalState.currentManagerId;
136 return new List.from(['sendport', workerId, x[_isolateId], x[_receivePor t][_id]]); 136 return new core.List.from(['sendport', workerId, x[_isolateId], x[_recei vePort][_id]]);
137 } 137 }
138 return new List.from(['raw sendport', x]); 138 return new core.List.from(['raw sendport', x]);
139 } 139 }
140 serializeCapability(x) { 140 serializeCapability(x) {
141 return new List.from(['capability', x[_id]]); 141 return new core.List.from(['capability', x[_id]]);
142 } 142 }
143 serializeClosure(x) { 143 serializeClosure(x) {
144 let name = IsolateNatives._getJSFunctionName(x); 144 let name = IsolateNatives._getJSFunctionName(x);
145 if (name === null) { 145 if (name === null) {
146 this.unsupported(x, "Closures can't be transmitted:"); 146 this.unsupported(x, "Closures can't be transmitted:");
147 } 147 }
148 return new List.from(['function', name]); 148 return new core.List.from(['function', name]);
149 } 149 }
150 serializeDartObject(x) { 150 serializeDartObject(x) {
151 let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_n ames.CLASS_ID_EXTRACTOR); 151 let classExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_n ames.CLASS_ID_EXTRACTOR);
152 let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_ names.CLASS_FIELDS_EXTRACTOR); 152 let fieldsExtractor = _foreign_helper.JS_EMBEDDED_GLOBAL('', _js_embedded_ names.CLASS_FIELDS_EXTRACTOR);
153 let classId = classExtractor(x); 153 let classId = classExtractor(x);
154 let fields = dart.as(fieldsExtractor(x), core.List); 154 let fields = dart.as(fieldsExtractor(x), core.List);
155 return new List.from(['dart', classId, this.serializeArrayInPlace(dart.as( fields, _interceptors.JSArray))]); 155 return new core.List.from(['dart', classId, this.serializeArrayInPlace(dar t.as(fields, _interceptors.JSArray))]);
156 } 156 }
157 } 157 }
158 let _adjustSendPorts = Symbol('_adjustSendPorts'); 158 let _adjustSendPorts = Symbol('_adjustSendPorts');
159 class _Deserializer extends core.Object { 159 class _Deserializer extends core.Object {
160 _Deserializer(opts) { 160 _Deserializer(opts) {
161 let adjustSendPorts = opts && 'adjustSendPorts' in opts ? opts.adjustSendP orts : true; 161 let adjustSendPorts = opts && 'adjustSendPorts' in opts ? opts.adjustSendP orts : true;
162 this.deserializedObjects = new core.List(); 162 this.deserializedObjects = new core.List();
163 this[_adjustSendPorts] = dart.as(adjustSendPorts, core.bool); 163 this[_adjustSendPorts] = dart.as(adjustSendPorts, core.bool);
164 } 164 }
165 deserialize(x) { 165 deserialize(x) {
166 if (this.isPrimitive(x)) 166 if (this.isPrimitive(x))
167 return this.deserializePrimitive(x); 167 return this.deserializePrimitive(x);
168 if (!dart.is(x, _interceptors.JSArray)) 168 if (!dart.is(x, _interceptors.JSArray))
169 throw new core.ArgumentError(`Bad serialized message: ${x}`); 169 throw new core.ArgumentError(`Bad serialized message: ${x}`);
170 switch (dart.dload(x, 'first')) { 170 switch (dart.dload(x, 'first')) {
171 case "ref": 171 case "ref":
172 {
172 return this.deserializeRef(x); 173 return this.deserializeRef(x);
174 }
173 case "buffer": 175 case "buffer":
176 {
174 return this.deserializeByteBuffer(x); 177 return this.deserializeByteBuffer(x);
178 }
175 case "typed": 179 case "typed":
180 {
176 return this.deserializeTypedData(x); 181 return this.deserializeTypedData(x);
182 }
177 case "fixed": 183 case "fixed":
184 {
178 return this.deserializeFixed(x); 185 return this.deserializeFixed(x);
186 }
179 case "extendable": 187 case "extendable":
188 {
180 return this.deserializeExtendable(x); 189 return this.deserializeExtendable(x);
190 }
181 case "mutable": 191 case "mutable":
192 {
182 return this.deserializeMutable(x); 193 return this.deserializeMutable(x);
194 }
183 case "const": 195 case "const":
196 {
184 return this.deserializeConst(x); 197 return this.deserializeConst(x);
198 }
185 case "map": 199 case "map":
200 {
186 return this.deserializeMap(x); 201 return this.deserializeMap(x);
202 }
187 case "sendport": 203 case "sendport":
204 {
188 return this.deserializeSendPort(x); 205 return this.deserializeSendPort(x);
206 }
189 case "raw sendport": 207 case "raw sendport":
208 {
190 return this.deserializeRawSendPort(x); 209 return this.deserializeRawSendPort(x);
210 }
191 case "js-object": 211 case "js-object":
212 {
192 return this.deserializeJSObject(x); 213 return this.deserializeJSObject(x);
214 }
193 case "function": 215 case "function":
216 {
194 return this.deserializeClosure(x); 217 return this.deserializeClosure(x);
218 }
195 case "dart": 219 case "dart":
220 {
196 return this.deserializeDartObject(x); 221 return this.deserializeDartObject(x);
222 }
197 default: 223 default:
224 {
198 throw `couldn't deserialize: ${x}`; 225 throw `couldn't deserialize: ${x}`;
226 }
199 } 227 }
200 } 228 }
201 isPrimitive(x) { 229 isPrimitive(x) {
202 return dart.notNull(x === null) || dart.notNull(typeof x == string) || dar t.notNull(dart.is(x, core.num)) || dart.notNull(typeof x == boolean); 230 return dart.notNull(x === null) || dart.notNull(typeof x == 'string') || d art.notNull(dart.is(x, core.num)) || dart.notNull(typeof x == 'boolean');
203 } 231 }
204 deserializePrimitive(x) { 232 deserializePrimitive(x) {
205 return x; 233 return x;
206 } 234 }
207 deserializeRef(x) { 235 deserializeRef(x) {
208 dart.assert(dart.equals(dart.dindex(x, 0), 'ref')); 236 dart.assert(dart.equals(dart.dindex(x, 0), 'ref'));
209 let serializationId = dart.as(dart.dindex(x, 1), core.int); 237 let serializationId = dart.as(dart.dindex(x, 1), core.int);
210 return this.deserializedObjects.get(serializationId); 238 return this.deserializedObjects.get(serializationId);
211 } 239 }
212 deserializeByteBuffer(x) { 240 deserializeByteBuffer(x) {
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 return exports._globalState.isWorker; 368 return exports._globalState.isWorker;
341 } 369 }
342 // Function _currentIsolate: () → _IsolateContext 370 // Function _currentIsolate: () → _IsolateContext
343 function _currentIsolate() { 371 function _currentIsolate() {
344 return exports._globalState.currentContext; 372 return exports._globalState.currentContext;
345 } 373 }
346 // Function startRootIsolate: (dynamic, dynamic) → void 374 // Function startRootIsolate: (dynamic, dynamic) → void
347 function startRootIsolate(entry, args) { 375 function startRootIsolate(entry, args) {
348 args = args; 376 args = args;
349 if (args === null) 377 if (args === null)
350 args = new List.from([]); 378 args = new core.List.from([]);
351 if (!dart.is(args, core.List)) { 379 if (!dart.is(args, core.List)) {
352 throw new core.ArgumentError(`Arguments to main must be a List: ${args}`); 380 throw new core.ArgumentError(`Arguments to main must be a List: ${args}`);
353 } 381 }
354 exports._globalState = new _Manager(dart.as(entry, core.Function)); 382 exports._globalState = new _Manager(dart.as(entry, core.Function));
355 if (exports._globalState.isWorker) 383 if (exports._globalState.isWorker)
356 return; 384 return;
357 let rootContext = new _IsolateContext(); 385 let rootContext = new _IsolateContext();
358 exports._globalState.rootContext = rootContext; 386 exports._globalState.rootContext = rootContext;
359 exports._globalState.currentContext = rootContext; 387 exports._globalState.currentContext = rootContext;
360 if (dart.is(entry, _MainFunctionArgs)) { 388 if (dart.is(entry, _MainFunctionArgs)) {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 let _addRegistration = Symbol('_addRegistration'); 477 let _addRegistration = Symbol('_addRegistration');
450 class _IsolateContext extends core.Object { 478 class _IsolateContext extends core.Object {
451 _IsolateContext() { 479 _IsolateContext() {
452 this.id = ((x$) => exports._globalState.nextIsolateId = dart.notNull(x$) + 1, x$).bind(this)(exports._globalState.nextIsolateId); 480 this.id = ((x$) => exports._globalState.nextIsolateId = dart.notNull(x$) + 1, x$).bind(this)(exports._globalState.nextIsolateId);
453 this.ports = new core.Map(); 481 this.ports = new core.Map();
454 this.weakPorts = new core.Set(); 482 this.weakPorts = new core.Set();
455 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE(); 483 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE();
456 this.controlPort = new RawReceivePortImpl._controlPort(); 484 this.controlPort = new RawReceivePortImpl._controlPort();
457 this.pauseCapability = new isolate.Capability(); 485 this.pauseCapability = new isolate.Capability();
458 this.terminateCapability = new isolate.Capability(); 486 this.terminateCapability = new isolate.Capability();
459 this.delayedEvents = dart.as(new List.from([]), core.List$(_IsolateEvent)) ; 487 this.delayedEvents = dart.as(new core.List.from([]), core.List$(_IsolateEv ent));
460 this.pauseTokens = dart.as(new core.Set(), core.Set$(isolate.Capability)); 488 this.pauseTokens = dart.as(new core.Set(), core.Set$(isolate.Capability));
461 this.errorPorts = dart.as(new core.Set(), core.Set$(isolate.SendPort)); 489 this.errorPorts = dart.as(new core.Set(), core.Set$(isolate.SendPort));
462 this.initialized = false; 490 this.initialized = false;
463 this.isPaused = false; 491 this.isPaused = false;
464 this.doneHandlers = null; 492 this.doneHandlers = null;
465 this[_scheduledControlEvents] = null; 493 this[_scheduledControlEvents] = null;
466 this[_isExecutingEvent] = false; 494 this[_isExecutingEvent] = false;
467 this.errorsAreFatal = true; 495 this.errorsAreFatal = true;
468 this.registerWeak(this.controlPort[_id], this.controlPort); 496 this.registerWeak(this.controlPort[_id], this.controlPort);
469 } 497 }
(...skipping 13 matching lines...) Expand all
483 while (this.delayedEvents.isNotEmpty) { 511 while (this.delayedEvents.isNotEmpty) {
484 let event = this.delayedEvents.removeLast(); 512 let event = this.delayedEvents.removeLast();
485 exports._globalState.topEventLoop.prequeue(event); 513 exports._globalState.topEventLoop.prequeue(event);
486 } 514 }
487 this.isPaused = false; 515 this.isPaused = false;
488 } 516 }
489 this[_updateGlobalState](); 517 this[_updateGlobalState]();
490 } 518 }
491 addDoneListener(responsePort) { 519 addDoneListener(responsePort) {
492 if (this.doneHandlers === null) { 520 if (this.doneHandlers === null) {
493 this.doneHandlers = new List.from([]); 521 this.doneHandlers = new core.List.from([]);
494 } 522 }
495 if (dart.dinvoke(this.doneHandlers, 'contains', responsePort)) 523 if (dart.dinvoke(this.doneHandlers, 'contains', responsePort))
496 return; 524 return;
497 dart.dinvoke(this.doneHandlers, 'add', responsePort); 525 dart.dinvoke(this.doneHandlers, 'add', responsePort);
498 } 526 }
499 removeDoneListener(responsePort) { 527 removeDoneListener(responsePort) {
500 if (this.doneHandlers === null) 528 if (this.doneHandlers === null)
501 return; 529 return;
502 dart.dinvoke(this.doneHandlers, 'remove', responsePort); 530 dart.dinvoke(this.doneHandlers, 'remove', responsePort);
503 } 531 }
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
598 } 626 }
599 } 627 }
600 return result; 628 return result;
601 } 629 }
602 [_setGlobals]() { 630 [_setGlobals]() {
603 _foreign_helper.JS_SET_CURRENT_ISOLATE(this.isolateStatics); 631 _foreign_helper.JS_SET_CURRENT_ISOLATE(this.isolateStatics);
604 } 632 }
605 handleControlMessage(message) { 633 handleControlMessage(message) {
606 switch (dart.dindex(message, 0)) { 634 switch (dart.dindex(message, 0)) {
607 case "pause": 635 case "pause":
636 {
608 this.addPause(dart.as(dart.dindex(message, 1), isolate.Capability), da rt.as(dart.dindex(message, 2), isolate.Capability)); 637 this.addPause(dart.as(dart.dindex(message, 1), isolate.Capability), da rt.as(dart.dindex(message, 2), isolate.Capability));
609 break; 638 break;
639 }
610 case "resume": 640 case "resume":
641 {
611 this.removePause(dart.as(dart.dindex(message, 1), isolate.Capability)) ; 642 this.removePause(dart.as(dart.dindex(message, 1), isolate.Capability)) ;
612 break; 643 break;
644 }
613 case 'add-ondone': 645 case 'add-ondone':
646 {
614 this.addDoneListener(dart.as(dart.dindex(message, 1), isolate.SendPort )); 647 this.addDoneListener(dart.as(dart.dindex(message, 1), isolate.SendPort ));
615 break; 648 break;
649 }
616 case 'remove-ondone': 650 case 'remove-ondone':
651 {
617 this.removeDoneListener(dart.as(dart.dindex(message, 1), isolate.SendP ort)); 652 this.removeDoneListener(dart.as(dart.dindex(message, 1), isolate.SendP ort));
618 break; 653 break;
654 }
619 case 'set-errors-fatal': 655 case 'set-errors-fatal':
656 {
620 this.setErrorsFatal(dart.as(dart.dindex(message, 1), isolate.Capabilit y), dart.as(dart.dindex(message, 2), core.bool)); 657 this.setErrorsFatal(dart.as(dart.dindex(message, 1), isolate.Capabilit y), dart.as(dart.dindex(message, 2), core.bool));
621 break; 658 break;
659 }
622 case "ping": 660 case "ping":
661 {
623 this.handlePing(dart.as(dart.dindex(message, 1), isolate.SendPort), da rt.as(dart.dindex(message, 2), core.int)); 662 this.handlePing(dart.as(dart.dindex(message, 1), isolate.SendPort), da rt.as(dart.dindex(message, 2), core.int));
624 break; 663 break;
664 }
625 case "kill": 665 case "kill":
666 {
626 this.handleKill(dart.as(dart.dindex(message, 1), isolate.Capability), dart.as(dart.dindex(message, 2), core.int)); 667 this.handleKill(dart.as(dart.dindex(message, 1), isolate.Capability), dart.as(dart.dindex(message, 2), core.int));
627 break; 668 break;
669 }
628 case "getErrors": 670 case "getErrors":
671 {
629 this.addErrorListener(dart.as(dart.dindex(message, 1), isolate.SendPor t)); 672 this.addErrorListener(dart.as(dart.dindex(message, 1), isolate.SendPor t));
630 break; 673 break;
674 }
631 case "stopErrors": 675 case "stopErrors":
676 {
632 this.removeErrorListener(dart.as(dart.dindex(message, 1), isolate.Send Port)); 677 this.removeErrorListener(dart.as(dart.dindex(message, 1), isolate.Send Port));
633 break; 678 break;
679 }
634 default: 680 default:
635 } 681 }
636 } 682 }
637 lookup(portId) { 683 lookup(portId) {
638 return this.ports.get(portId); 684 return this.ports.get(portId);
639 } 685 }
640 [_addRegistration](portId, port) { 686 [_addRegistration](portId, port) {
641 if (this.ports.containsKey(portId)) { 687 if (this.ports.containsKey(portId)) {
642 throw new core.Exception("Registry: ports must be registered only once." ); 688 throw new core.Exception("Registry: ports must be registered only once." );
643 } 689 }
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 return matches[1]; 879 return matches[1];
834 throw new core.UnsupportedError(`Cannot extract URI from "${stack}"`); 880 throw new core.UnsupportedError(`Cannot extract URI from "${stack}"`);
835 } 881 }
836 static [_getEventData$](e) { 882 static [_getEventData$](e) {
837 return e.data; 883 return e.data;
838 } 884 }
839 static [_processWorkerMessage$](sender, e) { 885 static [_processWorkerMessage$](sender, e) {
840 let msg = _deserializeMessage(_getEventData(e)); 886 let msg = _deserializeMessage(_getEventData(e));
841 switch (dart.dindex(msg, 'command')) { 887 switch (dart.dindex(msg, 'command')) {
842 case 'start': 888 case 'start':
889 {
843 exports._globalState.currentManagerId = dart.as(dart.dindex(msg, 'id') , core.int); 890 exports._globalState.currentManagerId = dart.as(dart.dindex(msg, 'id') , core.int);
844 let functionName = dart.as(dart.dindex(msg, 'functionName'), core.Stri ng); 891 let functionName = dart.as(dart.dindex(msg, 'functionName'), core.Stri ng);
845 let entryPoint = dart.as(functionName === null ? exports._globalState. entry : _getJSFunctionFromName(functionName), core.Function); 892 let entryPoint = dart.as(functionName === null ? exports._globalState. entry : _getJSFunctionFromName(functionName), core.Function);
846 let args = dart.dindex(msg, 'args'); 893 let args = dart.dindex(msg, 'args');
847 let message = _deserializeMessage(dart.dindex(msg, 'msg')); 894 let message = _deserializeMessage(dart.dindex(msg, 'msg'));
848 let isSpawnUri = dart.dindex(msg, 'isSpawnUri'); 895 let isSpawnUri = dart.dindex(msg, 'isSpawnUri');
849 let startPaused = dart.dindex(msg, 'startPaused'); 896 let startPaused = dart.dindex(msg, 'startPaused');
850 let replyTo = _deserializeMessage(dart.dindex(msg, 'replyTo')); 897 let replyTo = _deserializeMessage(dart.dindex(msg, 'replyTo'));
851 let context = new _IsolateContext(); 898 let context = new _IsolateContext();
852 exports._globalState.topEventLoop.enqueue(context, () => { 899 exports._globalState.topEventLoop.enqueue(context, () => {
853 _startIsolate(entryPoint, dart.as(args, core.List$(core.String)), me ssage, dart.as(isSpawnUri, core.bool), dart.as(startPaused, core.bool), dart.as( replyTo, isolate.SendPort)); 900 _startIsolate(entryPoint, dart.as(args, core.List$(core.String)), me ssage, dart.as(isSpawnUri, core.bool), dart.as(startPaused, core.bool), dart.as( replyTo, isolate.SendPort));
854 }, 'worker-start'); 901 }, 'worker-start');
855 exports._globalState.currentContext = context; 902 exports._globalState.currentContext = context;
856 exports._globalState.topEventLoop.run(); 903 exports._globalState.topEventLoop.run();
857 break; 904 break;
905 }
858 case 'spawn-worker': 906 case 'spawn-worker':
907 {
859 if (enableSpawnWorker !== null) 908 if (enableSpawnWorker !== null)
860 handleSpawnWorkerRequest(msg); 909 handleSpawnWorkerRequest(msg);
861 break; 910 break;
911 }
862 case 'message': 912 case 'message':
913 {
863 let port = dart.as(dart.dindex(msg, 'port'), isolate.SendPort); 914 let port = dart.as(dart.dindex(msg, 'port'), isolate.SendPort);
864 if (port !== null) { 915 if (port !== null) {
865 dart.dinvoke(dart.dindex(msg, 'port'), 'send', dart.dindex(msg, 'msg ')); 916 dart.dinvoke(dart.dindex(msg, 'port'), 'send', dart.dindex(msg, 'msg '));
866 } 917 }
867 exports._globalState.topEventLoop.run(); 918 exports._globalState.topEventLoop.run();
868 break; 919 break;
920 }
869 case 'close': 921 case 'close':
922 {
870 exports._globalState.managers.remove(workerIds.get(sender)); 923 exports._globalState.managers.remove(workerIds.get(sender));
871 sender.terminate(); 924 sender.terminate();
872 exports._globalState.topEventLoop.run(); 925 exports._globalState.topEventLoop.run();
873 break; 926 break;
927 }
874 case 'log': 928 case 'log':
929 {
875 _log(dart.dindex(msg, 'msg')); 930 _log(dart.dindex(msg, 'msg'));
876 break; 931 break;
932 }
877 case 'print': 933 case 'print':
934 {
878 if (exports._globalState.isWorker) { 935 if (exports._globalState.isWorker) {
879 exports._globalState.mainManager.postMessage(_serializeMessage(dart. map({command: 'print', msg: msg}))); 936 exports._globalState.mainManager.postMessage(_serializeMessage(dart. map({command: 'print', msg: msg})));
880 } else { 937 } else {
881 core.print(dart.dindex(msg, 'msg')); 938 core.print(dart.dindex(msg, 'msg'));
882 } 939 }
883 break; 940 break;
941 }
884 case 'error': 942 case 'error':
943 {
885 throw dart.dindex(msg, 'msg'); 944 throw dart.dindex(msg, 'msg');
945 }
886 } 946 }
887 } 947 }
888 static handleSpawnWorkerRequest(msg) { 948 static handleSpawnWorkerRequest(msg) {
889 let replyPort = dart.dindex(msg, 'replyPort'); 949 let replyPort = dart.dindex(msg, 'replyPort');
890 spawn(dart.as(dart.dindex(msg, 'functionName'), core.String), dart.as(dart .dindex(msg, 'uri'), core.String), dart.as(dart.dindex(msg, 'args'), core.List$( core.String)), dart.dindex(msg, 'msg'), false, dart.as(dart.dindex(msg, 'isSpawn Uri'), core.bool), dart.as(dart.dindex(msg, 'startPaused'), core.bool)).then(dar t.closureWrap((msg) => { 950 spawn(dart.as(dart.dindex(msg, 'functionName'), core.String), dart.as(dart .dindex(msg, 'uri'), core.String), dart.as(dart.dindex(msg, 'args'), core.List$( core.String)), dart.dindex(msg, 'msg'), false, dart.as(dart.dindex(msg, 'isSpawn Uri'), core.bool), dart.as(dart.dindex(msg, 'startPaused'), core.bool)).then(dar t.closureWrap((msg) => {
891 dart.dinvoke(replyPort, 'send', msg); 951 dart.dinvoke(replyPort, 'send', msg);
892 }, "(List<dynamic>) → dynamic"), { 952 }, "(List<dynamic>) → dynamic"), {
893 onError: (errorMessage) => { 953 onError: (errorMessage) => {
894 dart.dinvoke(replyPort, 'send', new List.from([_SPAWN_FAILED_SIGNAL, e rrorMessage])); 954 dart.dinvoke(replyPort, 'send', new core.List.from([_SPAWN_FAILED_SIGN AL, errorMessage]));
895 } 955 }
896 }); 956 });
897 } 957 }
898 static [_log$](msg) { 958 static [_log$](msg) {
899 if (exports._globalState.isWorker) { 959 if (exports._globalState.isWorker) {
900 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg}))); 960 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg})));
901 } else { 961 } else {
902 try { 962 try {
903 _consoleLog(msg); 963 _consoleLog(msg);
904 } catch (e) { 964 } catch (e) {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 _startIsolate(dart.as(func, core.Function), args, message, isSpawnUri, s tartPaused, replyPort); 1040 _startIsolate(dart.as(func, core.Function), args, message, isSpawnUri, s tartPaused, replyPort);
981 }, 'nonworker start'); 1041 }, 'nonworker start');
982 } 1042 }
983 static get currentIsolate() { 1043 static get currentIsolate() {
984 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext); 1044 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext);
985 return new isolate.Isolate(context.controlPort.sendPort, {pauseCapability: context.pauseCapability, terminateCapability: context.terminateCapability}); 1045 return new isolate.Isolate(context.controlPort.sendPort, {pauseCapability: context.pauseCapability, terminateCapability: context.terminateCapability});
986 } 1046 }
987 static [_startIsolate$](topLevel, args, message, isSpawnUri, startPaused, re plyTo) { 1047 static [_startIsolate$](topLevel, args, message, isSpawnUri, startPaused, re plyTo) {
988 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext); 1048 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext);
989 _js_helper.Primitives.initializeStatics(context.id); 1049 _js_helper.Primitives.initializeStatics(context.id);
990 replyTo.send(new List.from([_SPAWNED_SIGNAL, context.controlPort.sendPort, context.pauseCapability, context.terminateCapability])); 1050 replyTo.send(new core.List.from([_SPAWNED_SIGNAL, context.controlPort.send Port, context.pauseCapability, context.terminateCapability]));
991 // Function runStartFunction: () → void 1051 // Function runStartFunction: () → void
992 function runStartFunction() { 1052 function runStartFunction() {
993 context.initialized = true; 1053 context.initialized = true;
994 if (!dart.notNull(isSpawnUri)) { 1054 if (!dart.notNull(isSpawnUri)) {
995 dart.dinvokef(topLevel, message); 1055 dart.dinvokef(topLevel, message);
996 } else if (dart.is(topLevel, _MainFunctionArgsMessage)) { 1056 } else if (dart.is(topLevel, _MainFunctionArgsMessage)) {
997 dart.dinvokef(topLevel, args, message); 1057 dart.dinvokef(topLevel, args, message);
998 } else if (dart.is(topLevel, _MainFunctionArgs)) { 1058 } else if (dart.is(topLevel, _MainFunctionArgs)) {
999 dart.dinvokef(topLevel, args); 1059 dart.dinvokef(topLevel, args);
1000 } else { 1060 } else {
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 exports.leaveJsAsync = leaveJsAsync; 1361 exports.leaveJsAsync = leaveJsAsync;
1302 exports.isWorker = isWorker; 1362 exports.isWorker = isWorker;
1303 exports.startRootIsolate = startRootIsolate; 1363 exports.startRootIsolate = startRootIsolate;
1304 exports.IsolateNatives = IsolateNatives; 1364 exports.IsolateNatives = IsolateNatives;
1305 exports.RawReceivePortImpl = RawReceivePortImpl; 1365 exports.RawReceivePortImpl = RawReceivePortImpl;
1306 exports.ReceivePortImpl = ReceivePortImpl; 1366 exports.ReceivePortImpl = ReceivePortImpl;
1307 exports.TimerImpl = TimerImpl; 1367 exports.TimerImpl = TimerImpl;
1308 exports.hasTimer = hasTimer; 1368 exports.hasTimer = hasTimer;
1309 exports.CapabilityImpl = CapabilityImpl; 1369 exports.CapabilityImpl = CapabilityImpl;
1310 })(_isolate_helper || (_isolate_helper = {})); 1370 })(_isolate_helper || (_isolate_helper = {}));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698