| OLD | NEW |
| 1 dart_library.library('dart/_isolate_helper', null, /* Imports */[ | 1 dart_library.library('dart/_isolate_helper', null, /* Imports */[ |
| 2 "dart_runtime/dart", | 2 "dart_runtime/dart", |
| 3 'dart/core', | 3 'dart/core', |
| 4 'dart/_interceptors', | 4 'dart/_interceptors', |
| 5 'dart/_js_helper', | 5 'dart/_js_helper', |
| 6 'dart/isolate', | 6 'dart/isolate', |
| 7 'dart/_foreign_helper', | 7 'dart/_foreign_helper', |
| 8 'dart/collection', | 8 'dart/collection', |
| 9 'dart/async' | 9 'dart/async' |
| 10 ], /* Lazy imports */[ | 10 ], /* Lazy imports */[ |
| (...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 } | 495 } |
| 496 } | 496 } |
| 497 [_nativeDetectEnvironment]() { | 497 [_nativeDetectEnvironment]() { |
| 498 let isWindowDefined = exports.globalWindow != null; | 498 let isWindowDefined = exports.globalWindow != null; |
| 499 let isWorkerDefined = exports.globalWorker != null; | 499 let isWorkerDefined = exports.globalWorker != null; |
| 500 this.isWorker = !dart.notNull(isWindowDefined) && dart.notNull(exports.glo
balPostMessageDefined); | 500 this.isWorker = !dart.notNull(isWindowDefined) && dart.notNull(exports.glo
balPostMessageDefined); |
| 501 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(isWorke
rDefined) && IsolateNatives.thisScript != null; | 501 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(isWorke
rDefined) && IsolateNatives.thisScript != null; |
| 502 this.fromCommandLine = !dart.notNull(isWindowDefined) && !dart.notNull(thi
s.isWorker); | 502 this.fromCommandLine = !dart.notNull(isWindowDefined) && !dart.notNull(thi
s.isWorker); |
| 503 } | 503 } |
| 504 [_nativeInitWorkerMessageHandler]() { | 504 [_nativeInitWorkerMessageHandler]() { |
| 505 let func = function(f, a) { | 505 let func = (function(f, a) { |
| 506 return function(e) { | 506 return function(e) { |
| 507 f(a, e); | 507 f(a, e); |
| 508 }; | 508 }; |
| 509 }(IsolateNatives._processWorkerMessage, this.mainManager); | 509 })(IsolateNatives._processWorkerMessage, this.mainManager); |
| 510 self.onmessage = func; | 510 self.onmessage = func; |
| 511 self.dartPrint = self.dartPrint || function(serialize) { | 511 self.dartPrint = self.dartPrint || (function(serialize) { |
| 512 return function(object) { | 512 return function(object) { |
| 513 if (self.console && self.console.log) { | 513 if (self.console && self.console.log) { |
| 514 self.console.log(object); | 514 self.console.log(object); |
| 515 } else { | 515 } else { |
| 516 self.postMessage(serialize(object)); | 516 self.postMessage(serialize(object)); |
| 517 } | 517 } |
| 518 }; | 518 }; |
| 519 }(_Manager._serializePrintMessage); | 519 })(_Manager._serializePrintMessage); |
| 520 } | 520 } |
| 521 static _serializePrintMessage(object) { | 521 static _serializePrintMessage(object) { |
| 522 return _serializeMessage(dart.map({command: "print", msg: object})); | 522 return _serializeMessage(dart.map({command: "print", msg: object})); |
| 523 } | 523 } |
| 524 maybeCloseWorker() { | 524 maybeCloseWorker() { |
| 525 if (dart.notNull(this.isWorker) && dart.notNull(this.isolates.isEmpty) &&
this.topEventLoop[_activeJsAsyncCount] == 0) { | 525 if (dart.notNull(this.isWorker) && dart.notNull(this.isolates.isEmpty) &&
this.topEventLoop[_activeJsAsyncCount] == 0) { |
| 526 this.mainManager.postMessage(_serializeMessage(dart.map({command: 'close
'}))); | 526 this.mainManager.postMessage(_serializeMessage(dart.map({command: 'close
'}))); |
| 527 } | 527 } |
| 528 } | 528 } |
| 529 } | 529 } |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 604 setErrorsFatal(authentification, errorsAreFatal) { | 604 setErrorsFatal(authentification, errorsAreFatal) { |
| 605 if (!dart.equals(this.terminateCapability, authentification)) | 605 if (!dart.equals(this.terminateCapability, authentification)) |
| 606 return; | 606 return; |
| 607 this.errorsAreFatal = errorsAreFatal; | 607 this.errorsAreFatal = errorsAreFatal; |
| 608 } | 608 } |
| 609 handlePing(responsePort, pingType) { | 609 handlePing(responsePort, pingType) { |
| 610 if (pingType == isolate.Isolate.IMMEDIATE || pingType == isolate.Isolate.B
EFORE_NEXT_EVENT && !dart.notNull(this[_isExecutingEvent])) { | 610 if (pingType == isolate.Isolate.IMMEDIATE || pingType == isolate.Isolate.B
EFORE_NEXT_EVENT && !dart.notNull(this[_isExecutingEvent])) { |
| 611 responsePort.send(null); | 611 responsePort.send(null); |
| 612 return; | 612 return; |
| 613 } | 613 } |
| 614 let respond = () => { | 614 function respond() { |
| 615 responsePort.send(null); | 615 responsePort.send(null); |
| 616 }; | 616 } |
| 617 dart.fn(respond, dart.void, []); | 617 dart.fn(respond, dart.void, []); |
| 618 if (pingType == isolate.Isolate.AS_EVENT) { | 618 if (pingType == isolate.Isolate.AS_EVENT) { |
| 619 exports._globalState.topEventLoop.enqueue(this, respond, "ping"); | 619 exports._globalState.topEventLoop.enqueue(this, respond, "ping"); |
| 620 return; | 620 return; |
| 621 } | 621 } |
| 622 dart.assert(pingType == isolate.Isolate.BEFORE_NEXT_EVENT); | 622 dart.assert(pingType == isolate.Isolate.BEFORE_NEXT_EVENT); |
| 623 if (this[_scheduledControlEvents] == null) { | 623 if (this[_scheduledControlEvents] == null) { |
| 624 this[_scheduledControlEvents] = collection.Queue.new(); | 624 this[_scheduledControlEvents] = collection.Queue.new(); |
| 625 } | 625 } |
| 626 dart.dsend(this[_scheduledControlEvents], 'addLast', respond); | 626 dart.dsend(this[_scheduledControlEvents], 'addLast', respond); |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 853 if (event == null) { | 853 if (event == null) { |
| 854 this.checkOpenReceivePortsFromCommandLine(); | 854 this.checkOpenReceivePortsFromCommandLine(); |
| 855 exports._globalState.maybeCloseWorker(); | 855 exports._globalState.maybeCloseWorker(); |
| 856 return false; | 856 return false; |
| 857 } | 857 } |
| 858 event.process(); | 858 event.process(); |
| 859 return true; | 859 return true; |
| 860 } | 860 } |
| 861 [_runHelper]() { | 861 [_runHelper]() { |
| 862 if (exports.globalWindow != null) { | 862 if (exports.globalWindow != null) { |
| 863 let next = () => { | 863 let next = (function() { |
| 864 if (!dart.notNull(this.runIteration())) | 864 if (!dart.notNull(this.runIteration())) |
| 865 return; | 865 return; |
| 866 async.Timer.run(next); | 866 async.Timer.run(next); |
| 867 }; | 867 }).bind(this); |
| 868 dart.fn(next); | 868 dart.fn(next); |
| 869 next(); | 869 next(); |
| 870 } else { | 870 } else { |
| 871 while (dart.notNull(this.runIteration())) { | 871 while (dart.notNull(this.runIteration())) { |
| 872 } | 872 } |
| 873 } | 873 } |
| 874 } | 874 } |
| 875 run() { | 875 run() { |
| 876 if (!dart.notNull(exports._globalState.isWorker)) { | 876 if (!dart.notNull(exports._globalState.isWorker)) { |
| 877 this[_runHelper](); | 877 this[_runHelper](); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 } | 956 } |
| 957 static computeThisScriptJsshell() { | 957 static computeThisScriptJsshell() { |
| 958 return dart.as(thisFilename(), core.String); | 958 return dart.as(thisFilename(), core.String); |
| 959 } | 959 } |
| 960 static computeThisScriptD8() { | 960 static computeThisScriptD8() { |
| 961 return IsolateNatives.computeThisScriptFromTrace(); | 961 return IsolateNatives.computeThisScriptFromTrace(); |
| 962 } | 962 } |
| 963 static computeThisScriptFromTrace() { | 963 static computeThisScriptFromTrace() { |
| 964 let stack = new Error().stack; | 964 let stack = new Error().stack; |
| 965 if (stack == null) { | 965 if (stack == null) { |
| 966 stack = function() { | 966 stack = (function() { |
| 967 try { | 967 try { |
| 968 throw new Error(); | 968 throw new Error(); |
| 969 } catch (e) { | 969 } catch (e) { |
| 970 return e.stack; | 970 return e.stack; |
| 971 } | 971 } |
| 972 | 972 |
| 973 }(); | 973 })(); |
| 974 if (stack == null) | 974 if (stack == null) |
| 975 throw new core.UnsupportedError('No stack trace'); | 975 throw new core.UnsupportedError('No stack trace'); |
| 976 } | 976 } |
| 977 let pattern = null, matches = null; | 977 let pattern = null, matches = null; |
| 978 pattern = new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "m"); | 978 pattern = new RegExp("^ *at [^(]*\\((.*):[0-9]*:[0-9]*\\)$", "m"); |
| 979 matches = stack.match(pattern); | 979 matches = stack.match(pattern); |
| 980 if (matches != null) | 980 if (matches != null) |
| 981 return matches[1]; | 981 return matches[1]; |
| 982 pattern = new RegExp("^[^@]*@(.*):[0-9]*$", "m"); | 982 pattern = new RegExp("^[^@]*@(.*):[0-9]*$", "m"); |
| 983 matches = stack.match(pattern); | 983 matches = stack.match(pattern); |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1145 }), 'nonworker start'); | 1145 }), 'nonworker start'); |
| 1146 } | 1146 } |
| 1147 static get currentIsolate() { | 1147 static get currentIsolate() { |
| 1148 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola
teContext); | 1148 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola
teContext); |
| 1149 return new isolate.Isolate(context.controlPort.sendPort, {pauseCapability:
context.pauseCapability, terminateCapability: context.terminateCapability}); | 1149 return new isolate.Isolate(context.controlPort.sendPort, {pauseCapability:
context.pauseCapability, terminateCapability: context.terminateCapability}); |
| 1150 } | 1150 } |
| 1151 static _startIsolate(topLevel, args, message, isSpawnUri, startPaused, reply
To) { | 1151 static _startIsolate(topLevel, args, message, isSpawnUri, startPaused, reply
To) { |
| 1152 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola
teContext); | 1152 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola
teContext); |
| 1153 _js_helper.Primitives.initializeStatics(context.id); | 1153 _js_helper.Primitives.initializeStatics(context.id); |
| 1154 replyTo.send([_SPAWNED_SIGNAL, context.controlPort.sendPort, context.pause
Capability, context.terminateCapability]); | 1154 replyTo.send([_SPAWNED_SIGNAL, context.controlPort.sendPort, context.pause
Capability, context.terminateCapability]); |
| 1155 let runStartFunction = () => { | 1155 function runStartFunction() { |
| 1156 context.initialized = true; | 1156 context.initialized = true; |
| 1157 if (!dart.notNull(isSpawnUri)) { | 1157 if (!dart.notNull(isSpawnUri)) { |
| 1158 dart.dcall(topLevel, message); | 1158 dart.dcall(topLevel, message); |
| 1159 } else if (dart.is(topLevel, _MainFunctionArgsMessage)) { | 1159 } else if (dart.is(topLevel, _MainFunctionArgsMessage)) { |
| 1160 dart.dcall(topLevel, args, message); | 1160 dart.dcall(topLevel, args, message); |
| 1161 } else if (dart.is(topLevel, _MainFunctionArgs)) { | 1161 } else if (dart.is(topLevel, _MainFunctionArgs)) { |
| 1162 dart.dcall(topLevel, args); | 1162 dart.dcall(topLevel, args); |
| 1163 } else { | 1163 } else { |
| 1164 dart.dcall(topLevel); | 1164 dart.dcall(topLevel); |
| 1165 } | 1165 } |
| 1166 }; | 1166 } |
| 1167 dart.fn(runStartFunction, dart.void, []); | 1167 dart.fn(runStartFunction, dart.void, []); |
| 1168 if (dart.notNull(startPaused)) { | 1168 if (dart.notNull(startPaused)) { |
| 1169 context.addPause(context.pauseCapability, context.pauseCapability); | 1169 context.addPause(context.pauseCapability, context.pauseCapability); |
| 1170 exports._globalState.topEventLoop.enqueue(context, runStartFunction, 'st
art isolate'); | 1170 exports._globalState.topEventLoop.enqueue(context, runStartFunction, 'st
art isolate'); |
| 1171 } else { | 1171 } else { |
| 1172 runStartFunction(); | 1172 runStartFunction(); |
| 1173 } | 1173 } |
| 1174 } | 1174 } |
| 1175 static _spawnWorker(functionName, uri, args, message, isSpawnUri, startPause
d, replyPort, onError) { | 1175 static _spawnWorker(functionName, uri, args, message, isSpawnUri, startPause
d, replyPort, onError) { |
| 1176 if (uri == null) | 1176 if (uri == null) |
| 1177 uri = IsolateNatives.thisScript; | 1177 uri = IsolateNatives.thisScript; |
| 1178 let worker = new Worker(uri); | 1178 let worker = new Worker(uri); |
| 1179 let onerrorTrampoline = function(f, u, c) { | 1179 let onerrorTrampoline = (function(f, u, c) { |
| 1180 return function(e) { | 1180 return function(e) { |
| 1181 return f(e, u, c); | 1181 return f(e, u, c); |
| 1182 }; | 1182 }; |
| 1183 }(IsolateNatives.workerOnError, uri, onError); | 1183 })(IsolateNatives.workerOnError, uri, onError); |
| 1184 worker.onerror = onerrorTrampoline; | 1184 worker.onerror = onerrorTrampoline; |
| 1185 let processWorkerMessageTrampoline = function(f, a) { | 1185 let processWorkerMessageTrampoline = (function(f, a) { |
| 1186 return function(e) { | 1186 return function(e) { |
| 1187 e.onerror = null; | 1187 e.onerror = null; |
| 1188 return f(a, e); | 1188 return f(a, e); |
| 1189 }; | 1189 }; |
| 1190 }(IsolateNatives._processWorkerMessage, worker); | 1190 })(IsolateNatives._processWorkerMessage, worker); |
| 1191 worker.onmessage = processWorkerMessageTrampoline; | 1191 worker.onmessage = processWorkerMessageTrampoline; |
| 1192 let o = exports._globalState; | 1192 let o = exports._globalState; |
| 1193 let workerId = o.nextManagerId; | 1193 let workerId = o.nextManagerId; |
| 1194 o.nextManagerId = dart.notNull(workerId) + 1; | 1194 o.nextManagerId = dart.notNull(workerId) + 1; |
| 1195 IsolateNatives.workerIds.set(worker, workerId); | 1195 IsolateNatives.workerIds.set(worker, workerId); |
| 1196 exports._globalState.managers.set(workerId, worker); | 1196 exports._globalState.managers.set(workerId, worker); |
| 1197 worker.postMessage(_serializeMessage(dart.map({command: 'start', id: worke
rId, replyTo: _serializeMessage(replyPort), args: args, msg: _serializeMessage(m
essage), isSpawnUri: isSpawnUri, startPaused: startPaused, functionName: functio
nName}))); | 1197 worker.postMessage(_serializeMessage(dart.map({command: 'start', id: worke
rId, replyTo: _serializeMessage(replyPort), args: args, msg: _serializeMessage(m
essage), isSpawnUri: isSpawnUri, startPaused: startPaused, functionName: functio
nName}))); |
| 1198 } | 1198 } |
| 1199 static workerOnError(event, uri, onError) { | 1199 static workerOnError(event, uri, onError) { |
| 1200 event.preventDefault(); | 1200 event.preventDefault(); |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1436 }); | 1436 }); |
| 1437 let _once = Symbol('_once'); | 1437 let _once = Symbol('_once'); |
| 1438 let _inEventLoop = Symbol('_inEventLoop'); | 1438 let _inEventLoop = Symbol('_inEventLoop'); |
| 1439 let _handle = Symbol('_handle'); | 1439 let _handle = Symbol('_handle'); |
| 1440 class TimerImpl extends core.Object { | 1440 class TimerImpl extends core.Object { |
| 1441 TimerImpl(milliseconds, callback) { | 1441 TimerImpl(milliseconds, callback) { |
| 1442 this[_once] = true; | 1442 this[_once] = true; |
| 1443 this[_inEventLoop] = false; | 1443 this[_inEventLoop] = false; |
| 1444 this[_handle] = null; | 1444 this[_handle] = null; |
| 1445 if (milliseconds == 0 && (!dart.notNull(hasTimer()) || dart.notNull(export
s._globalState.isWorker))) { | 1445 if (milliseconds == 0 && (!dart.notNull(hasTimer()) || dart.notNull(export
s._globalState.isWorker))) { |
| 1446 let internalCallback = () => { | 1446 let internalCallback = (function() { |
| 1447 this[_handle] = null; | 1447 this[_handle] = null; |
| 1448 callback(); | 1448 callback(); |
| 1449 }; | 1449 }).bind(this); |
| 1450 dart.fn(internalCallback, dart.void, []); | 1450 dart.fn(internalCallback, dart.void, []); |
| 1451 this[_handle] = 1; | 1451 this[_handle] = 1; |
| 1452 exports._globalState.topEventLoop.enqueue(exports._globalState.currentCo
ntext, internalCallback, 'timer'); | 1452 exports._globalState.topEventLoop.enqueue(exports._globalState.currentCo
ntext, internalCallback, 'timer'); |
| 1453 this[_inEventLoop] = true; | 1453 this[_inEventLoop] = true; |
| 1454 } else if (dart.notNull(hasTimer())) { | 1454 } else if (dart.notNull(hasTimer())) { |
| 1455 let internalCallback = () => { | 1455 let internalCallback = (function() { |
| 1456 this[_handle] = null; | 1456 this[_handle] = null; |
| 1457 leaveJsAsync(); | 1457 leaveJsAsync(); |
| 1458 callback(); | 1458 callback(); |
| 1459 }; | 1459 }).bind(this); |
| 1460 dart.fn(internalCallback, dart.void, []); | 1460 dart.fn(internalCallback, dart.void, []); |
| 1461 enterJsAsync(); | 1461 enterJsAsync(); |
| 1462 this[_handle] = self.setTimeout(internalCallback, milliseconds); | 1462 this[_handle] = self.setTimeout(internalCallback, milliseconds); |
| 1463 } else { | 1463 } else { |
| 1464 dart.assert(dart.notNull(milliseconds) > 0); | 1464 dart.assert(dart.notNull(milliseconds) > 0); |
| 1465 throw new core.UnsupportedError("Timer greater than 0."); | 1465 throw new core.UnsupportedError("Timer greater than 0."); |
| 1466 } | 1466 } |
| 1467 } | 1467 } |
| 1468 periodic(milliseconds, callback) { | 1468 periodic(milliseconds, callback) { |
| 1469 this[_once] = false; | 1469 this[_once] = false; |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1554 exports.leaveJsAsync = leaveJsAsync; | 1554 exports.leaveJsAsync = leaveJsAsync; |
| 1555 exports.isWorker = isWorker; | 1555 exports.isWorker = isWorker; |
| 1556 exports.startRootIsolate = startRootIsolate; | 1556 exports.startRootIsolate = startRootIsolate; |
| 1557 exports.IsolateNatives = IsolateNatives; | 1557 exports.IsolateNatives = IsolateNatives; |
| 1558 exports.RawReceivePortImpl = RawReceivePortImpl; | 1558 exports.RawReceivePortImpl = RawReceivePortImpl; |
| 1559 exports.ReceivePortImpl = ReceivePortImpl; | 1559 exports.ReceivePortImpl = ReceivePortImpl; |
| 1560 exports.TimerImpl = TimerImpl; | 1560 exports.TimerImpl = TimerImpl; |
| 1561 exports.hasTimer = hasTimer; | 1561 exports.hasTimer = hasTimer; |
| 1562 exports.CapabilityImpl = CapabilityImpl; | 1562 exports.CapabilityImpl = CapabilityImpl; |
| 1563 }); | 1563 }); |
| OLD | NEW |