| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 = {})); |
| OLD | NEW |