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

Side by Side Diff: test/codegen/expect/_isolate_helper/_isolate_helper.js

Issue 967713002: fixes #69, avoid module name inside module scope (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(_isolate_helper) { 2 (function(exports) {
3 'use strict'; 3 'use strict';
4 // Function _callInIsolate: (_IsolateContext, Function) → dynamic 4 // Function _callInIsolate: (_IsolateContext, Function) → dynamic
5 function _callInIsolate(isolate, function) { 5 function _callInIsolate(isolate, function) {
6 let result = isolate.eval(function); 6 let result = isolate.eval(function);
7 _isolate_helper._globalState.topEventLoop.run(); 7 exports._globalState.topEventLoop.run();
8 return result; 8 return result;
9 } 9 }
10 // Function enterJsAsync: () → dynamic 10 // Function enterJsAsync: () → dynamic
11 function enterJsAsync() { 11 function enterJsAsync() {
12 _isolate_helper._globalState.topEventLoop._activeJsAsyncCount++; 12 exports._globalState.topEventLoop._activeJsAsyncCount++;
13 } 13 }
14 // Function leaveJsAsync: () → dynamic 14 // Function leaveJsAsync: () → dynamic
15 function leaveJsAsync() { 15 function leaveJsAsync() {
16 _isolate_helper._globalState.topEventLoop._activeJsAsyncCount--; 16 exports._globalState.topEventLoop._activeJsAsyncCount--;
17 dart.assert(_isolate_helper._globalState.topEventLoop._activeJsAsyncCount >= 0); 17 dart.assert(exports._globalState.topEventLoop._activeJsAsyncCount >= 0);
18 } 18 }
19 // Function isWorker: () → bool 19 // Function isWorker: () → bool
20 function isWorker() { 20 function isWorker() {
21 return _isolate_helper._globalState.isWorker; 21 return exports._globalState.isWorker;
22 } 22 }
23 // Function _currentIsolate: () → _IsolateContext 23 // Function _currentIsolate: () → _IsolateContext
24 function _currentIsolate() { 24 function _currentIsolate() {
25 return _isolate_helper._globalState.currentContext; 25 return exports._globalState.currentContext;
26 } 26 }
27 // Function startRootIsolate: (dynamic, dynamic) → void 27 // Function startRootIsolate: (dynamic, dynamic) → void
28 function startRootIsolate(entry, args) { 28 function startRootIsolate(entry, args) {
29 args = args; 29 args = args;
30 if (args === null) 30 if (args === null)
31 args = new List.from([]); 31 args = new List.from([]);
32 if (!dart.is(args, core.List)) { 32 if (!dart.is(args, core.List)) {
33 throw new core.ArgumentError(`Arguments to main must be a List: ${args}`); 33 throw new core.ArgumentError(`Arguments to main must be a List: ${args}`);
34 } 34 }
35 _isolate_helper._globalState = new _Manager(dart.as(entry, core.Function)); 35 exports._globalState = new _Manager(dart.as(entry, core.Function));
36 if (_isolate_helper._globalState.isWorker) 36 if (exports._globalState.isWorker)
37 return; 37 return;
38 let rootContext = new _IsolateContext(); 38 let rootContext = new _IsolateContext();
39 _isolate_helper._globalState.rootContext = rootContext; 39 exports._globalState.rootContext = rootContext;
40 _isolate_helper._globalState.currentContext = rootContext; 40 exports._globalState.currentContext = rootContext;
41 if (dart.is(entry, _MainFunctionArgs)) { 41 if (dart.is(entry, _MainFunctionArgs)) {
42 rootContext.eval(() => { 42 rootContext.eval(() => {
43 dart.dinvokef(entry, args); 43 dart.dinvokef(entry, args);
44 }); 44 });
45 } else if (dart.is(entry, _MainFunctionArgsMessage)) { 45 } else if (dart.is(entry, _MainFunctionArgsMessage)) {
46 rootContext.eval(() => { 46 rootContext.eval(() => {
47 dart.dinvokef(entry, args, null); 47 dart.dinvokef(entry, args, null);
48 }); 48 });
49 } else { 49 } else {
50 rootContext.eval(dart.as(entry, core.Function)); 50 rootContext.eval(dart.as(entry, core.Function));
51 } 51 }
52 _isolate_helper._globalState.topEventLoop.run(); 52 exports._globalState.topEventLoop.run();
53 } 53 }
54 dart.copyProperties(_isolate_helper, { 54 dart.copyProperties(exports, {
55 get _globalState() { 55 get _globalState() {
56 return dart.as(init.globalState, _Manager); 56 return dart.as(init.globalState, _Manager);
57 }, 57 },
58 set _globalState(val) { 58 set _globalState(val) {
59 init.globalState = val; 59 init.globalState = val;
60 } 60 }
61 }); 61 });
62 class _Manager extends dart.Object { 62 class _Manager extends dart.Object {
63 get useWorkers() { 63 get useWorkers() {
64 return this.supportsWorkers; 64 return this.supportsWorkers;
(...skipping 15 matching lines...) Expand all
80 this._nativeDetectEnvironment(); 80 this._nativeDetectEnvironment();
81 this.topEventLoop = new _EventLoop(); 81 this.topEventLoop = new _EventLoop();
82 this.isolates = new core.Map(); 82 this.isolates = new core.Map();
83 this.managers = new core.Map(); 83 this.managers = new core.Map();
84 if (this.isWorker) { 84 if (this.isWorker) {
85 this.mainManager = new _MainManagerStub(); 85 this.mainManager = new _MainManagerStub();
86 this._nativeInitWorkerMessageHandler(); 86 this._nativeInitWorkerMessageHandler();
87 } 87 }
88 } 88 }
89 _nativeDetectEnvironment() { 89 _nativeDetectEnvironment() {
90 let isWindowDefined = _isolate_helper.globalWindow !== null; 90 let isWindowDefined = exports.globalWindow !== null;
91 let isWorkerDefined = _isolate_helper.globalWorker !== null; 91 let isWorkerDefined = exports.globalWorker !== null;
92 this.isWorker = dart.notNull(!dart.notNull(isWindowDefined)) && dart.notNu ll(_isolate_helper.globalPostMessageDefined); 92 this.isWorker = dart.notNull(!dart.notNull(isWindowDefined)) && dart.notNu ll(exports.globalPostMessageDefined);
93 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(dart.no tNull(isWorkerDefined) && dart.notNull(IsolateNatives.thisScript !== null)); 93 this.supportsWorkers = dart.notNull(this.isWorker) || dart.notNull(dart.no tNull(isWorkerDefined) && dart.notNull(IsolateNatives.thisScript !== null));
94 this.fromCommandLine = dart.notNull(!dart.notNull(isWindowDefined)) && dar t.notNull(!dart.notNull(this.isWorker)); 94 this.fromCommandLine = dart.notNull(!dart.notNull(isWindowDefined)) && dar t.notNull(!dart.notNull(this.isWorker));
95 } 95 }
96 _nativeInitWorkerMessageHandler() { 96 _nativeInitWorkerMessageHandler() {
97 let function = function(f, a) { 97 let function = function(f, a) {
98 return function(e) { 98 return function(e) {
99 f(a, e); 99 f(a, e);
100 }; 100 };
101 }(_foreign_helper.DART_CLOSURE_TO_JS(IsolateNatives._processWorkerMessage) , this.mainManager); 101 }(_foreign_helper.DART_CLOSURE_TO_JS(IsolateNatives._processWorkerMessage) , this.mainManager);
102 self.onmessage = function; 102 self.onmessage = function;
(...skipping 11 matching lines...) Expand all
114 return _serializeMessage(dart.map({command: "print", msg: object})); 114 return _serializeMessage(dart.map({command: "print", msg: object}));
115 } 115 }
116 maybeCloseWorker() { 116 maybeCloseWorker() {
117 if (dart.notNull(dart.notNull(this.isWorker) && dart.notNull(this.isolates .isEmpty)) && dart.notNull(this.topEventLoop._activeJsAsyncCount === 0)) { 117 if (dart.notNull(dart.notNull(this.isWorker) && dart.notNull(this.isolates .isEmpty)) && dart.notNull(this.topEventLoop._activeJsAsyncCount === 0)) {
118 this.mainManager.postMessage(_serializeMessage(dart.map({command: 'close '}))); 118 this.mainManager.postMessage(_serializeMessage(dart.map({command: 'close '})));
119 } 119 }
120 } 120 }
121 } 121 }
122 class _IsolateContext extends dart.Object { 122 class _IsolateContext extends dart.Object {
123 _IsolateContext() { 123 _IsolateContext() {
124 this.id = _isolate_helper._globalState.nextIsolateId++; 124 this.id = exports._globalState.nextIsolateId++;
125 this.ports = new core.Map(); 125 this.ports = new core.Map();
126 this.weakPorts = new core.Set(); 126 this.weakPorts = new core.Set();
127 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE(); 127 this.isolateStatics = _foreign_helper.JS_CREATE_ISOLATE();
128 this.controlPort = new RawReceivePortImpl._controlPort(); 128 this.controlPort = new RawReceivePortImpl._controlPort();
129 this.pauseCapability = new isolate.Capability(); 129 this.pauseCapability = new isolate.Capability();
130 this.terminateCapability = new isolate.Capability(); 130 this.terminateCapability = new isolate.Capability();
131 this.delayedEvents = dart.as(new List.from([]), core.List$(_IsolateEvent)) ; 131 this.delayedEvents = dart.as(new List.from([]), core.List$(_IsolateEvent)) ;
132 this.pauseTokens = dart.as(new core.Set(), core.Set$(isolate.Capability)); 132 this.pauseTokens = dart.as(new core.Set(), core.Set$(isolate.Capability));
133 this.errorPorts = dart.as(new core.Set(), core.Set$(isolate.SendPort)); 133 this.errorPorts = dart.as(new core.Set(), core.Set$(isolate.SendPort));
134 this.initialized = false; 134 this.initialized = false;
(...skipping 12 matching lines...) Expand all
147 } 147 }
148 this._updateGlobalState(); 148 this._updateGlobalState();
149 } 149 }
150 removePause(resume) { 150 removePause(resume) {
151 if (!dart.notNull(this.isPaused)) 151 if (!dart.notNull(this.isPaused))
152 return; 152 return;
153 this.pauseTokens.remove(resume); 153 this.pauseTokens.remove(resume);
154 if (this.pauseTokens.isEmpty) { 154 if (this.pauseTokens.isEmpty) {
155 while (this.delayedEvents.isNotEmpty) { 155 while (this.delayedEvents.isNotEmpty) {
156 let event = this.delayedEvents.removeLast(); 156 let event = this.delayedEvents.removeLast();
157 _isolate_helper._globalState.topEventLoop.prequeue(event); 157 exports._globalState.topEventLoop.prequeue(event);
158 } 158 }
159 this.isPaused = false; 159 this.isPaused = false;
160 } 160 }
161 this._updateGlobalState(); 161 this._updateGlobalState();
162 } 162 }
163 addDoneListener(responsePort) { 163 addDoneListener(responsePort) {
164 if (this.doneHandlers === null) { 164 if (this.doneHandlers === null) {
165 this.doneHandlers = new List.from([]); 165 this.doneHandlers = new List.from([]);
166 } 166 }
167 if (dart.dinvoke(this.doneHandlers, 'contains', responsePort)) 167 if (dart.dinvoke(this.doneHandlers, 'contains', responsePort))
(...skipping 13 matching lines...) Expand all
181 handlePing(responsePort, pingType) { 181 handlePing(responsePort, pingType) {
182 if (dart.notNull(pingType === isolate.Isolate.IMMEDIATE) || dart.notNull(d art.notNull(pingType === isolate.Isolate.BEFORE_NEXT_EVENT) && dart.notNull(!dar t.notNull(this._isExecutingEvent)))) { 182 if (dart.notNull(pingType === isolate.Isolate.IMMEDIATE) || dart.notNull(d art.notNull(pingType === isolate.Isolate.BEFORE_NEXT_EVENT) && dart.notNull(!dar t.notNull(this._isExecutingEvent)))) {
183 responsePort.send(null); 183 responsePort.send(null);
184 return; 184 return;
185 } 185 }
186 // Function respond: () → void 186 // Function respond: () → void
187 function respond() { 187 function respond() {
188 responsePort.send(null); 188 responsePort.send(null);
189 } 189 }
190 if (pingType === isolate.Isolate.AS_EVENT) { 190 if (pingType === isolate.Isolate.AS_EVENT) {
191 _isolate_helper._globalState.topEventLoop.enqueue(this, respond, "ping") ; 191 exports._globalState.topEventLoop.enqueue(this, respond, "ping");
192 return; 192 return;
193 } 193 }
194 dart.assert(pingType === isolate.Isolate.BEFORE_NEXT_EVENT); 194 dart.assert(pingType === isolate.Isolate.BEFORE_NEXT_EVENT);
195 if (this._scheduledControlEvents === null) { 195 if (this._scheduledControlEvents === null) {
196 this._scheduledControlEvents = new collection.Queue(); 196 this._scheduledControlEvents = new collection.Queue();
197 } 197 }
198 dart.dinvoke(this._scheduledControlEvents, 'addLast', respond); 198 dart.dinvoke(this._scheduledControlEvents, 'addLast', respond);
199 } 199 }
200 handleKill(authentification, priority) { 200 handleKill(authentification, priority) {
201 if (!dart.equals(this.terminateCapability, authentification)) 201 if (!dart.equals(this.terminateCapability, authentification))
202 return; 202 return;
203 if (dart.notNull(priority === isolate.Isolate.IMMEDIATE) || dart.notNull(d art.notNull(priority === isolate.Isolate.BEFORE_NEXT_EVENT) && dart.notNull(!dar t.notNull(this._isExecutingEvent)))) { 203 if (dart.notNull(priority === isolate.Isolate.IMMEDIATE) || dart.notNull(d art.notNull(priority === isolate.Isolate.BEFORE_NEXT_EVENT) && dart.notNull(!dar t.notNull(this._isExecutingEvent)))) {
204 this.kill(); 204 this.kill();
205 return; 205 return;
206 } 206 }
207 if (priority === isolate.Isolate.AS_EVENT) { 207 if (priority === isolate.Isolate.AS_EVENT) {
208 _isolate_helper._globalState.topEventLoop.enqueue(this, this.kill, "kill "); 208 exports._globalState.topEventLoop.enqueue(this, this.kill, "kill");
209 return; 209 return;
210 } 210 }
211 dart.assert(priority === isolate.Isolate.BEFORE_NEXT_EVENT); 211 dart.assert(priority === isolate.Isolate.BEFORE_NEXT_EVENT);
212 if (this._scheduledControlEvents === null) { 212 if (this._scheduledControlEvents === null) {
213 this._scheduledControlEvents = new collection.Queue(); 213 this._scheduledControlEvents = new collection.Queue();
214 } 214 }
215 dart.dinvoke(this._scheduledControlEvents, 'addLast', this.kill); 215 dart.dinvoke(this._scheduledControlEvents, 'addLast', this.kill);
216 } 216 }
217 addErrorListener(port) { 217 addErrorListener(port) {
218 this.errorPorts.add(port); 218 this.errorPorts.add(port);
219 } 219 }
220 removeErrorListener(port) { 220 removeErrorListener(port) {
221 this.errorPorts.remove(port); 221 this.errorPorts.remove(port);
222 } 222 }
223 handleUncaughtError(error, stackTrace) { 223 handleUncaughtError(error, stackTrace) {
224 if (this.errorPorts.isEmpty) { 224 if (this.errorPorts.isEmpty) {
225 if (dart.notNull(this.errorsAreFatal) && dart.notNull(core.identical(thi s, _isolate_helper._globalState.rootContext))) { 225 if (dart.notNull(this.errorsAreFatal) && dart.notNull(core.identical(thi s, exports._globalState.rootContext))) {
226 return; 226 return;
227 } 227 }
228 if (self.console && self.console.error) { 228 if (self.console && self.console.error) {
229 self.console.error(error, stackTrace); 229 self.console.error(error, stackTrace);
230 } else { 230 } else {
231 core.print(error); 231 core.print(error);
232 if (stackTrace !== null) 232 if (stackTrace !== null)
233 core.print(stackTrace); 233 core.print(stackTrace);
234 } 234 }
235 return; 235 return;
236 } 236 }
237 let message = new core.List(2); 237 let message = new core.List(2);
238 message.set(0, dart.dinvoke(error, 'toString')); 238 message.set(0, dart.dinvoke(error, 'toString'));
239 message.set(1, stackTrace === null ? null : stackTrace.toString()); 239 message.set(1, stackTrace === null ? null : stackTrace.toString());
240 for (let port of this.errorPorts) 240 for (let port of this.errorPorts)
241 port.send(message); 241 port.send(message);
242 } 242 }
243 eval(code) { 243 eval(code) {
244 let old = _isolate_helper._globalState.currentContext; 244 let old = exports._globalState.currentContext;
245 _isolate_helper._globalState.currentContext = this; 245 exports._globalState.currentContext = this;
246 this._setGlobals(); 246 this._setGlobals();
247 let result = null; 247 let result = null;
248 this._isExecutingEvent = true; 248 this._isExecutingEvent = true;
249 try { 249 try {
250 result = dart.dinvokef(code); 250 result = dart.dinvokef(code);
251 } catch (e) { 251 } catch (e) {
252 let s = dart.stackTrace(e); 252 let s = dart.stackTrace(e);
253 this.handleUncaughtError(e, s); 253 this.handleUncaughtError(e, s);
254 if (this.errorsAreFatal) { 254 if (this.errorsAreFatal) {
255 this.kill(); 255 this.kill();
256 if (core.identical(this, _isolate_helper._globalState.rootContext)) { 256 if (core.identical(this, exports._globalState.rootContext)) {
257 dart.throw_("Unimplemented RethrowExpression: rethrow"); 257 dart.throw_("Unimplemented RethrowExpression: rethrow");
258 } 258 }
259 } 259 }
260 } 260 }
261 finally { 261 finally {
262 this._isExecutingEvent = false; 262 this._isExecutingEvent = false;
263 _isolate_helper._globalState.currentContext = old; 263 exports._globalState.currentContext = old;
264 if (old !== null) 264 if (old !== null)
265 old._setGlobals(); 265 old._setGlobals();
266 if (this._scheduledControlEvents !== null) { 266 if (this._scheduledControlEvents !== null) {
267 while (dart.dload(this._scheduledControlEvents, 'isNotEmpty')) { 267 while (dart.dload(this._scheduledControlEvents, 'isNotEmpty')) {
268 dart.dinvokef(dart.dinvoke(this._scheduledControlEvents, 'removeFirs t')); 268 dart.dinvokef(dart.dinvoke(this._scheduledControlEvents, 'removeFirs t'));
269 } 269 }
270 } 270 }
271 } 271 }
272 return result; 272 return result;
273 } 273 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 register(portId, port) { 318 register(portId, port) {
319 this._addRegistration(portId, port); 319 this._addRegistration(portId, port);
320 this._updateGlobalState(); 320 this._updateGlobalState();
321 } 321 }
322 registerWeak(portId, port) { 322 registerWeak(portId, port) {
323 this.weakPorts.add(portId); 323 this.weakPorts.add(portId);
324 this._addRegistration(portId, port); 324 this._addRegistration(portId, port);
325 } 325 }
326 _updateGlobalState() { 326 _updateGlobalState() {
327 if (dart.notNull(dart.notNull(this.ports.length - this.weakPorts.length > 0) || dart.notNull(this.isPaused)) || dart.notNull(!dart.notNull(this.initialize d))) { 327 if (dart.notNull(dart.notNull(this.ports.length - this.weakPorts.length > 0) || dart.notNull(this.isPaused)) || dart.notNull(!dart.notNull(this.initialize d))) {
328 _isolate_helper._globalState.isolates.set(this.id, this); 328 exports._globalState.isolates.set(this.id, this);
329 } else { 329 } else {
330 this.kill(); 330 this.kill();
331 } 331 }
332 } 332 }
333 kill() { 333 kill() {
334 if (this._scheduledControlEvents !== null) { 334 if (this._scheduledControlEvents !== null) {
335 dart.dinvoke(this._scheduledControlEvents, 'clear'); 335 dart.dinvoke(this._scheduledControlEvents, 'clear');
336 } 336 }
337 for (let port of this.ports.values) { 337 for (let port of this.ports.values) {
338 dart.dinvoke(port, '_close'); 338 dart.dinvoke(port, '_close');
339 } 339 }
340 this.ports.clear(); 340 this.ports.clear();
341 this.weakPorts.clear(); 341 this.weakPorts.clear();
342 _isolate_helper._globalState.isolates.remove(this.id); 342 exports._globalState.isolates.remove(this.id);
343 this.errorPorts.clear(); 343 this.errorPorts.clear();
344 if (this.doneHandlers !== null) { 344 if (this.doneHandlers !== null) {
345 for (let port of this.doneHandlers) { 345 for (let port of this.doneHandlers) {
346 port.send(null); 346 port.send(null);
347 } 347 }
348 this.doneHandlers = null; 348 this.doneHandlers = null;
349 } 349 }
350 } 350 }
351 unregister(portId) { 351 unregister(portId) {
352 this.ports.remove(portId); 352 this.ports.remove(portId);
(...skipping 11 matching lines...) Expand all
364 } 364 }
365 prequeue(event) { 365 prequeue(event) {
366 this.events.addFirst(event); 366 this.events.addFirst(event);
367 } 367 }
368 dequeue() { 368 dequeue() {
369 if (this.events.isEmpty) 369 if (this.events.isEmpty)
370 return null; 370 return null;
371 return this.events.removeFirst(); 371 return this.events.removeFirst();
372 } 372 }
373 checkOpenReceivePortsFromCommandLine() { 373 checkOpenReceivePortsFromCommandLine() {
374 if (dart.notNull(dart.notNull(dart.notNull(_isolate_helper._globalState.ro otContext !== null) && dart.notNull(_isolate_helper._globalState.isolates.contai nsKey(_isolate_helper._globalState.rootContext.id))) && dart.notNull(_isolate_he lper._globalState.fromCommandLine)) && dart.notNull(_isolate_helper._globalState .rootContext.ports.isEmpty)) { 374 if (dart.notNull(dart.notNull(dart.notNull(exports._globalState.rootContex t !== null) && dart.notNull(exports._globalState.isolates.containsKey(exports._g lobalState.rootContext.id))) && dart.notNull(exports._globalState.fromCommandLin e)) && dart.notNull(exports._globalState.rootContext.ports.isEmpty)) {
375 throw new core.Exception("Program exited with open ReceivePorts."); 375 throw new core.Exception("Program exited with open ReceivePorts.");
376 } 376 }
377 } 377 }
378 runIteration() { 378 runIteration() {
379 let event = this.dequeue(); 379 let event = this.dequeue();
380 if (event === null) { 380 if (event === null) {
381 this.checkOpenReceivePortsFromCommandLine(); 381 this.checkOpenReceivePortsFromCommandLine();
382 _isolate_helper._globalState.maybeCloseWorker(); 382 exports._globalState.maybeCloseWorker();
383 return false; 383 return false;
384 } 384 }
385 event.process(); 385 event.process();
386 return true; 386 return true;
387 } 387 }
388 _runHelper() { 388 _runHelper() {
389 if (_isolate_helper.globalWindow !== null) { 389 if (exports.globalWindow !== null) {
390 // Function next: () → void 390 // Function next: () → void
391 function next() { 391 function next() {
392 if (!dart.notNull(this.runIteration())) 392 if (!dart.notNull(this.runIteration()))
393 return; 393 return;
394 async.Timer.run(next); 394 async.Timer.run(next);
395 } 395 }
396 next(); 396 next();
397 } else { 397 } else {
398 while (this.runIteration()) { 398 while (this.runIteration()) {
399 } 399 }
400 } 400 }
401 } 401 }
402 run() { 402 run() {
403 if (!dart.notNull(_isolate_helper._globalState.isWorker)) { 403 if (!dart.notNull(exports._globalState.isWorker)) {
404 this._runHelper(); 404 this._runHelper();
405 } else { 405 } else {
406 try { 406 try {
407 this._runHelper(); 407 this._runHelper();
408 } catch (e) { 408 } catch (e) {
409 let trace = dart.stackTrace(e); 409 let trace = dart.stackTrace(e);
410 _isolate_helper._globalState.mainManager.postMessage(_serializeMessage (dart.map({command: 'error', msg: `${e}\n${trace}`}))); 410 exports._globalState.mainManager.postMessage(_serializeMessage(dart.ma p({command: 'error', msg: `${e}\n${trace}`})));
411 } 411 }
412 412
413 } 413 }
414 } 414 }
415 } 415 }
416 class _IsolateEvent extends dart.Object { 416 class _IsolateEvent extends dart.Object {
417 _IsolateEvent(isolate, fn, message) { 417 _IsolateEvent(isolate, fn, message) {
418 this.isolate = isolate; 418 this.isolate = isolate;
419 this.fn = fn; 419 this.fn = fn;
420 this.message = message; 420 this.message = message;
421 } 421 }
422 process() { 422 process() {
423 if (this.isolate.isPaused) { 423 if (this.isolate.isPaused) {
424 this.isolate.delayedEvents.add(this); 424 this.isolate.delayedEvents.add(this);
425 return; 425 return;
426 } 426 }
427 this.isolate.eval(this.fn); 427 this.isolate.eval(this.fn);
428 } 428 }
429 } 429 }
430 class _MainManagerStub extends dart.Object { 430 class _MainManagerStub extends dart.Object {
431 postMessage(msg) { 431 postMessage(msg) {
432 _js_helper.requiresPreamble(); 432 _js_helper.requiresPreamble();
433 self.postMessage(msg); 433 self.postMessage(msg);
434 } 434 }
435 } 435 }
436 let _SPAWNED_SIGNAL = "spawned"; 436 let _SPAWNED_SIGNAL = "spawned";
437 let _SPAWN_FAILED_SIGNAL = "spawn failed"; 437 let _SPAWN_FAILED_SIGNAL = "spawn failed";
438 dart.copyProperties(_isolate_helper, { 438 dart.copyProperties(exports, {
439 get globalWindow() { 439 get globalWindow() {
440 _js_helper.requiresPreamble(); 440 _js_helper.requiresPreamble();
441 return self.window; 441 return self.window;
442 }, 442 },
443 get globalWorker() { 443 get globalWorker() {
444 _js_helper.requiresPreamble(); 444 _js_helper.requiresPreamble();
445 return self.Worker; 445 return self.Worker;
446 }, 446 },
447 get globalPostMessageDefined() { 447 get globalPostMessageDefined() {
448 _js_helper.requiresPreamble(); 448 _js_helper.requiresPreamble();
449 return !!self.postMessage; 449 return !!self.postMessage;
450 } 450 }
451 }); 451 });
452 class IsolateNatives extends dart.Object { 452 class IsolateNatives extends dart.Object {
453 static computeThisScript() { 453 static computeThisScript() {
454 let currentScript = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_js_emb edded_names.CURRENT_SCRIPT, core.String)); 454 let currentScript = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_js_emb edded_names.CURRENT_SCRIPT, core.String));
455 if (currentScript !== null) { 455 if (currentScript !== null) {
456 return String(currentScript.src); 456 return String(currentScript.src);
457 } 457 }
458 if (_js_helper.Primitives.isD8) 458 if (_js_helper.Primitives.isD8)
459 return computeThisScriptD8(); 459 return computeThisScriptD8();
460 if (_js_helper.Primitives.isJsshell) 460 if (_js_helper.Primitives.isJsshell)
461 return computeThisScriptJsshell(); 461 return computeThisScriptJsshell();
462 if (_isolate_helper._globalState.isWorker) 462 if (exports._globalState.isWorker)
463 return computeThisScriptFromTrace(); 463 return computeThisScriptFromTrace();
464 return null; 464 return null;
465 } 465 }
466 static computeThisScriptJsshell() { 466 static computeThisScriptJsshell() {
467 return dart.as(thisFilename(), core.String); 467 return dart.as(thisFilename(), core.String);
468 } 468 }
469 static computeThisScriptD8() { 469 static computeThisScriptD8() {
470 return computeThisScriptFromTrace(); 470 return computeThisScriptFromTrace();
471 } 471 }
472 static computeThisScriptFromTrace() { 472 static computeThisScriptFromTrace() {
(...skipping 21 matching lines...) Expand all
494 return matches[1]; 494 return matches[1];
495 throw new core.UnsupportedError(`Cannot extract URI from "${stack}"`); 495 throw new core.UnsupportedError(`Cannot extract URI from "${stack}"`);
496 } 496 }
497 static _getEventData(e) { 497 static _getEventData(e) {
498 return e.data; 498 return e.data;
499 } 499 }
500 static _processWorkerMessage(sender, e) { 500 static _processWorkerMessage(sender, e) {
501 let msg = _deserializeMessage(_getEventData(e)); 501 let msg = _deserializeMessage(_getEventData(e));
502 switch (dart.dindex(msg, 'command')) { 502 switch (dart.dindex(msg, 'command')) {
503 case 'start': 503 case 'start':
504 _isolate_helper._globalState.currentManagerId = dart.as(dart.dindex(ms g, 'id'), core.int); 504 exports._globalState.currentManagerId = dart.as(dart.dindex(msg, 'id') , core.int);
505 let functionName = dart.as(dart.dindex(msg, 'functionName'), core.Stri ng); 505 let functionName = dart.as(dart.dindex(msg, 'functionName'), core.Stri ng);
506 let entryPoint = dart.as(functionName === null ? _isolate_helper._glob alState.entry : _getJSFunctionFromName(functionName), core.Function); 506 let entryPoint = dart.as(functionName === null ? exports._globalState. entry : _getJSFunctionFromName(functionName), core.Function);
507 let args = dart.dindex(msg, 'args'); 507 let args = dart.dindex(msg, 'args');
508 let message = _deserializeMessage(dart.dindex(msg, 'msg')); 508 let message = _deserializeMessage(dart.dindex(msg, 'msg'));
509 let isSpawnUri = dart.dindex(msg, 'isSpawnUri'); 509 let isSpawnUri = dart.dindex(msg, 'isSpawnUri');
510 let startPaused = dart.dindex(msg, 'startPaused'); 510 let startPaused = dart.dindex(msg, 'startPaused');
511 let replyTo = _deserializeMessage(dart.dindex(msg, 'replyTo')); 511 let replyTo = _deserializeMessage(dart.dindex(msg, 'replyTo'));
512 let context = new _IsolateContext(); 512 let context = new _IsolateContext();
513 _isolate_helper._globalState.topEventLoop.enqueue(context, () => { 513 exports._globalState.topEventLoop.enqueue(context, () => {
514 _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)); 514 _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));
515 }, 'worker-start'); 515 }, 'worker-start');
516 _isolate_helper._globalState.currentContext = context; 516 exports._globalState.currentContext = context;
517 _isolate_helper._globalState.topEventLoop.run(); 517 exports._globalState.topEventLoop.run();
518 break; 518 break;
519 case 'spawn-worker': 519 case 'spawn-worker':
520 if (enableSpawnWorker !== null) 520 if (enableSpawnWorker !== null)
521 handleSpawnWorkerRequest(msg); 521 handleSpawnWorkerRequest(msg);
522 break; 522 break;
523 case 'message': 523 case 'message':
524 let port = dart.as(dart.dindex(msg, 'port'), isolate.SendPort); 524 let port = dart.as(dart.dindex(msg, 'port'), isolate.SendPort);
525 if (port !== null) { 525 if (port !== null) {
526 dart.dinvoke(dart.dindex(msg, 'port'), 'send', dart.dindex(msg, 'msg ')); 526 dart.dinvoke(dart.dindex(msg, 'port'), 'send', dart.dindex(msg, 'msg '));
527 } 527 }
528 _isolate_helper._globalState.topEventLoop.run(); 528 exports._globalState.topEventLoop.run();
529 break; 529 break;
530 case 'close': 530 case 'close':
531 _isolate_helper._globalState.managers.remove(workerIds.get(sender)); 531 exports._globalState.managers.remove(workerIds.get(sender));
532 sender.terminate(); 532 sender.terminate();
533 _isolate_helper._globalState.topEventLoop.run(); 533 exports._globalState.topEventLoop.run();
534 break; 534 break;
535 case 'log': 535 case 'log':
536 _log(dart.dindex(msg, 'msg')); 536 _log(dart.dindex(msg, 'msg'));
537 break; 537 break;
538 case 'print': 538 case 'print':
539 if (_isolate_helper._globalState.isWorker) { 539 if (exports._globalState.isWorker) {
540 _isolate_helper._globalState.mainManager.postMessage(_serializeMessa ge(dart.map({command: 'print', msg: msg}))); 540 exports._globalState.mainManager.postMessage(_serializeMessage(dart. map({command: 'print', msg: msg})));
541 } else { 541 } else {
542 core.print(dart.dindex(msg, 'msg')); 542 core.print(dart.dindex(msg, 'msg'));
543 } 543 }
544 break; 544 break;
545 case 'error': 545 case 'error':
546 throw dart.dindex(msg, 'msg'); 546 throw dart.dindex(msg, 'msg');
547 } 547 }
548 } 548 }
549 static handleSpawnWorkerRequest(msg) { 549 static handleSpawnWorkerRequest(msg) {
550 let replyPort = dart.dindex(msg, 'replyPort'); 550 let replyPort = dart.dindex(msg, 'replyPort');
551 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((ms g) => { 551 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((ms g) => {
552 dart.dinvoke(replyPort, 'send', msg); 552 dart.dinvoke(replyPort, 'send', msg);
553 }, { 553 }, {
554 onError: (errorMessage) => { 554 onError: (errorMessage) => {
555 dart.dinvoke(replyPort, 'send', new List.from([_SPAWN_FAILED_SIGNAL, e rrorMessage])); 555 dart.dinvoke(replyPort, 'send', new List.from([_SPAWN_FAILED_SIGNAL, e rrorMessage]));
556 } 556 }
557 }); 557 });
558 } 558 }
559 static _log(msg) { 559 static _log(msg) {
560 if (_isolate_helper._globalState.isWorker) { 560 if (exports._globalState.isWorker) {
561 _isolate_helper._globalState.mainManager.postMessage(_serializeMessage(d art.map({command: 'log', msg: msg}))); 561 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'log', msg: msg})));
562 } else { 562 } else {
563 try { 563 try {
564 _consoleLog(msg); 564 _consoleLog(msg);
565 } catch (e) { 565 } catch (e) {
566 let trace = dart.stackTrace(e); 566 let trace = dart.stackTrace(e);
567 throw new core.Exception(trace); 567 throw new core.Exception(trace);
568 } 568 }
569 569
570 } 570 }
571 } 571 }
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 let completer = dart.as(new async.Completer(), async.Completer$(core.List) ); 606 let completer = dart.as(new async.Completer(), async.Completer$(core.List) );
607 port.first.then(((msg) => { 607 port.first.then(((msg) => {
608 if (dart.equals(dart.dindex(msg, 0), _SPAWNED_SIGNAL)) { 608 if (dart.equals(dart.dindex(msg, 0), _SPAWNED_SIGNAL)) {
609 completer.complete(msg); 609 completer.complete(msg);
610 } else { 610 } else {
611 dart.assert(dart.equals(dart.dindex(msg, 0), _SPAWN_FAILED_SIGNAL)); 611 dart.assert(dart.equals(dart.dindex(msg, 0), _SPAWN_FAILED_SIGNAL));
612 completer.completeError(dart.dindex(msg, 1)); 612 completer.completeError(dart.dindex(msg, 1));
613 } 613 }
614 }).bind(this)); 614 }).bind(this));
615 let signalReply = port.sendPort; 615 let signalReply = port.sendPort;
616 if (dart.notNull(_isolate_helper._globalState.useWorkers) && dart.notNull( !dart.notNull(isLight))) { 616 if (dart.notNull(exports._globalState.useWorkers) && dart.notNull(!dart.no tNull(isLight))) {
617 _startWorker(functionName, uri, args, message, isSpawnUri, startPaused, signalReply, ((message) => completer.completeError(message)).bind(this)); 617 _startWorker(functionName, uri, args, message, isSpawnUri, startPaused, signalReply, ((message) => completer.completeError(message)).bind(this));
618 } else { 618 } else {
619 _startNonWorker(functionName, uri, args, message, isSpawnUri, startPause d, signalReply); 619 _startNonWorker(functionName, uri, args, message, isSpawnUri, startPause d, signalReply);
620 } 620 }
621 return completer.future; 621 return completer.future;
622 } 622 }
623 static _startWorker(functionName, uri, args, message, isSpawnUri, startPause d, replyPort, onError) { 623 static _startWorker(functionName, uri, args, message, isSpawnUri, startPause d, replyPort, onError) {
624 if (args !== null) 624 if (args !== null)
625 args = new core.List.from(args); 625 args = new core.List.from(args);
626 if (_isolate_helper._globalState.isWorker) { 626 if (exports._globalState.isWorker) {
627 _isolate_helper._globalState.mainManager.postMessage(_serializeMessage(d art.map({command: 'spawn-worker', functionName: functionName, args: args, msg: m essage, uri: uri, isSpawnUri: isSpawnUri, startPaused: startPaused, replyPort: r eplyPort}))); 627 exports._globalState.mainManager.postMessage(_serializeMessage(dart.map( {command: 'spawn-worker', functionName: functionName, args: args, msg: message, uri: uri, isSpawnUri: isSpawnUri, startPaused: startPaused, replyPort: replyPort })));
628 } else { 628 } else {
629 _spawnWorker(functionName, uri, args, message, isSpawnUri, startPaused, replyPort, onError); 629 _spawnWorker(functionName, uri, args, message, isSpawnUri, startPaused, replyPort, onError);
630 } 630 }
631 } 631 }
632 static _startNonWorker(functionName, uri, args, message, isSpawnUri, startPa used, replyPort) { 632 static _startNonWorker(functionName, uri, args, message, isSpawnUri, startPa used, replyPort) {
633 if (uri !== null) { 633 if (uri !== null) {
634 throw new core.UnsupportedError("Currently spawnUri is not supported wit hout web workers."); 634 throw new core.UnsupportedError("Currently spawnUri is not supported wit hout web workers.");
635 } 635 }
636 message = _clone(message); 636 message = _clone(message);
637 if (args !== null) 637 if (args !== null)
638 args = new core.List.from(args); 638 args = new core.List.from(args);
639 _isolate_helper._globalState.topEventLoop.enqueue(new _IsolateContext(), ( ) => { 639 exports._globalState.topEventLoop.enqueue(new _IsolateContext(), () => {
640 let func = _getJSFunctionFromName(functionName); 640 let func = _getJSFunctionFromName(functionName);
641 _startIsolate(dart.as(func, core.Function), args, message, isSpawnUri, s tartPaused, replyPort); 641 _startIsolate(dart.as(func, core.Function), args, message, isSpawnUri, s tartPaused, replyPort);
642 }, 'nonworker start'); 642 }, 'nonworker start');
643 } 643 }
644 static get currentIsolate() { 644 static get currentIsolate() {
645 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext); 645 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext);
646 return new isolate.Isolate(context.controlPort.sendPort, {pauseCapability: context.pauseCapability, terminateCapability: context.terminateCapability}); 646 return new isolate.Isolate(context.controlPort.sendPort, {pauseCapability: context.pauseCapability, terminateCapability: context.terminateCapability});
647 } 647 }
648 static _startIsolate(topLevel, args, message, isSpawnUri, startPaused, reply To) { 648 static _startIsolate(topLevel, args, message, isSpawnUri, startPaused, reply To) {
649 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext); 649 let context = dart.as(_foreign_helper.JS_CURRENT_ISOLATE_CONTEXT(), _Isola teContext);
650 _js_helper.Primitives.initializeStatics(context.id); 650 _js_helper.Primitives.initializeStatics(context.id);
651 replyTo.send(new List.from([_SPAWNED_SIGNAL, context.controlPort.sendPort, context.pauseCapability, context.terminateCapability])); 651 replyTo.send(new List.from([_SPAWNED_SIGNAL, context.controlPort.sendPort, context.pauseCapability, context.terminateCapability]));
652 // Function runStartFunction: () → void 652 // Function runStartFunction: () → void
653 function runStartFunction() { 653 function runStartFunction() {
654 context.initialized = true; 654 context.initialized = true;
655 if (!dart.notNull(isSpawnUri)) { 655 if (!dart.notNull(isSpawnUri)) {
656 dart.dinvokef(topLevel, message); 656 dart.dinvokef(topLevel, message);
657 } else if (dart.is(topLevel, _MainFunctionArgsMessage)) { 657 } else if (dart.is(topLevel, _MainFunctionArgsMessage)) {
658 dart.dinvokef(topLevel, args, message); 658 dart.dinvokef(topLevel, args, message);
659 } else if (dart.is(topLevel, _MainFunctionArgs)) { 659 } else if (dart.is(topLevel, _MainFunctionArgs)) {
660 dart.dinvokef(topLevel, args); 660 dart.dinvokef(topLevel, args);
661 } else { 661 } else {
662 dart.dinvokef(topLevel); 662 dart.dinvokef(topLevel);
663 } 663 }
664 } 664 }
665 if (startPaused) { 665 if (startPaused) {
666 context.addPause(context.pauseCapability, context.pauseCapability); 666 context.addPause(context.pauseCapability, context.pauseCapability);
667 _isolate_helper._globalState.topEventLoop.enqueue(context, runStartFunct ion, 'start isolate'); 667 exports._globalState.topEventLoop.enqueue(context, runStartFunction, 'st art isolate');
668 } else { 668 } else {
669 runStartFunction(); 669 runStartFunction();
670 } 670 }
671 } 671 }
672 static _spawnWorker(functionName, uri, args, message, isSpawnUri, startPause d, replyPort, onError) { 672 static _spawnWorker(functionName, uri, args, message, isSpawnUri, startPause d, replyPort, onError) {
673 if (uri === null) 673 if (uri === null)
674 uri = thisScript; 674 uri = thisScript;
675 let worker = new Worker(uri); 675 let worker = new Worker(uri);
676 let onerrorTrampoline = function(f, u, c) { 676 let onerrorTrampoline = function(f, u, c) {
677 return function(e) { 677 return function(e) {
678 return f(e, u, c); 678 return f(e, u, c);
679 }; 679 };
680 }(_foreign_helper.DART_CLOSURE_TO_JS(workerOnError), uri, onError); 680 }(_foreign_helper.DART_CLOSURE_TO_JS(workerOnError), uri, onError);
681 worker.onerror = onerrorTrampoline; 681 worker.onerror = onerrorTrampoline;
682 let processWorkerMessageTrampoline = function(f, a) { 682 let processWorkerMessageTrampoline = function(f, a) {
683 return function(e) { 683 return function(e) {
684 e.onerror = null; 684 e.onerror = null;
685 return f(a, e); 685 return f(a, e);
686 }; 686 };
687 }(_foreign_helper.DART_CLOSURE_TO_JS(_processWorkerMessage), worker); 687 }(_foreign_helper.DART_CLOSURE_TO_JS(_processWorkerMessage), worker);
688 worker.onmessage = processWorkerMessageTrampoline; 688 worker.onmessage = processWorkerMessageTrampoline;
689 let workerId = _isolate_helper._globalState.nextManagerId++; 689 let workerId = exports._globalState.nextManagerId++;
690 workerIds.set(worker, workerId); 690 workerIds.set(worker, workerId);
691 _isolate_helper._globalState.managers.set(workerId, worker); 691 exports._globalState.managers.set(workerId, worker);
692 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}))); 692 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})));
693 } 693 }
694 static workerOnError(event, uri, onError) { 694 static workerOnError(event, uri, onError) {
695 event.preventDefault(); 695 event.preventDefault();
696 let message = dart.as(event.message, core.String); 696 let message = dart.as(event.message, core.String);
697 if (message === null) { 697 if (message === null) {
698 message = `Error spawning worker for ${uri}`; 698 message = `Error spawning worker for ${uri}`;
699 } else { 699 } else {
700 message = `Error spawning worker for ${uri} (${message})`; 700 message = `Error spawning worker for ${uri} (${message})`;
701 } 701 }
(...skipping 20 matching lines...) Expand all
722 throw new core.Exception("SendPort.send: Illegal replyTo port type"); 722 throw new core.Exception("SendPort.send: Illegal replyTo port type");
723 } 723 }
724 } 724 }
725 } 725 }
726 class _NativeJsSendPort extends _BaseSendPort { 726 class _NativeJsSendPort extends _BaseSendPort {
727 _NativeJsSendPort(_receivePort, isolateId) { 727 _NativeJsSendPort(_receivePort, isolateId) {
728 this._receivePort = _receivePort; 728 this._receivePort = _receivePort;
729 super._BaseSendPort(isolateId); 729 super._BaseSendPort(isolateId);
730 } 730 }
731 send(message) { 731 send(message) {
732 let isolate = _isolate_helper._globalState.isolates.get(this._isolateId); 732 let isolate = exports._globalState.isolates.get(this._isolateId);
733 if (isolate === null) 733 if (isolate === null)
734 return; 734 return;
735 if (this._receivePort._isClosed) 735 if (this._receivePort._isClosed)
736 return; 736 return;
737 let msg = _clone(message); 737 let msg = _clone(message);
738 if (dart.equals(isolate.controlPort, this._receivePort)) { 738 if (dart.equals(isolate.controlPort, this._receivePort)) {
739 isolate.handleControlMessage(msg); 739 isolate.handleControlMessage(msg);
740 return; 740 return;
741 } 741 }
742 _isolate_helper._globalState.topEventLoop.enqueue(isolate, (() => { 742 exports._globalState.topEventLoop.enqueue(isolate, (() => {
743 if (!dart.notNull(this._receivePort._isClosed)) { 743 if (!dart.notNull(this._receivePort._isClosed)) {
744 this._receivePort._add(msg); 744 this._receivePort._add(msg);
745 } 745 }
746 }).bind(this), `receive ${message}`); 746 }).bind(this), `receive ${message}`);
747 } 747 }
748 ['=='](other) { 748 ['=='](other) {
749 return dart.notNull(dart.is(other, _NativeJsSendPort)) && dart.notNull(dar t.equals(this._receivePort, dart.dload(other, '_receivePort'))); 749 return dart.notNull(dart.is(other, _NativeJsSendPort)) && dart.notNull(dar t.equals(this._receivePort, dart.dload(other, '_receivePort')));
750 } 750 }
751 get hashCode() { 751 get hashCode() {
752 return this._receivePort._id; 752 return this._receivePort._id;
753 } 753 }
754 } 754 }
755 class _WorkerSendPort extends _BaseSendPort { 755 class _WorkerSendPort extends _BaseSendPort {
756 _WorkerSendPort(_workerId, isolateId, _receivePortId) { 756 _WorkerSendPort(_workerId, isolateId, _receivePortId) {
757 this._workerId = _workerId; 757 this._workerId = _workerId;
758 this._receivePortId = _receivePortId; 758 this._receivePortId = _receivePortId;
759 super._BaseSendPort(isolateId); 759 super._BaseSendPort(isolateId);
760 } 760 }
761 send(message) { 761 send(message) {
762 let workerMessage = _serializeMessage(dart.map({command: 'message', port: this, msg: message})); 762 let workerMessage = _serializeMessage(dart.map({command: 'message', port: this, msg: message}));
763 if (_isolate_helper._globalState.isWorker) { 763 if (exports._globalState.isWorker) {
764 _isolate_helper._globalState.mainManager.postMessage(workerMessage); 764 exports._globalState.mainManager.postMessage(workerMessage);
765 } else { 765 } else {
766 let manager = _isolate_helper._globalState.managers.get(this._workerId); 766 let manager = exports._globalState.managers.get(this._workerId);
767 if (manager !== null) { 767 if (manager !== null) {
768 manager.postMessage(workerMessage); 768 manager.postMessage(workerMessage);
769 } 769 }
770 } 770 }
771 } 771 }
772 ['=='](other) { 772 ['=='](other) {
773 return dart.notNull(dart.notNull(dart.notNull(dart.is(other, _WorkerSendPo rt)) && dart.notNull(this._workerId === dart.dload(other, '_workerId'))) && dart .notNull(this._isolateId === dart.dload(other, '_isolateId'))) && dart.notNull(t his._receivePortId === dart.dload(other, '_receivePortId')); 773 return dart.notNull(dart.notNull(dart.notNull(dart.is(other, _WorkerSendPo rt)) && dart.notNull(this._workerId === dart.dload(other, '_workerId'))) && dart .notNull(this._isolateId === dart.dload(other, '_isolateId'))) && dart.notNull(t his._receivePortId === dart.dload(other, '_receivePortId'));
774 } 774 }
775 get hashCode() { 775 get hashCode() {
776 return this._workerId << 16 ^ this._isolateId << 8 ^ this._receivePortId; 776 return this._workerId << 16 ^ this._isolateId << 8 ^ this._receivePortId;
777 } 777 }
778 } 778 }
779 class RawReceivePortImpl extends dart.Object { 779 class RawReceivePortImpl extends dart.Object {
780 RawReceivePortImpl(_handler) { 780 RawReceivePortImpl(_handler) {
781 this._handler = _handler; 781 this._handler = _handler;
782 this._id = _nextFreeId++; 782 this._id = _nextFreeId++;
783 this._isClosed = false; 783 this._isClosed = false;
784 _isolate_helper._globalState.currentContext.register(this._id, this); 784 exports._globalState.currentContext.register(this._id, this);
785 } 785 }
786 RawReceivePortImpl$weak(_handler) { 786 RawReceivePortImpl$weak(_handler) {
787 this._handler = _handler; 787 this._handler = _handler;
788 this._id = _nextFreeId++; 788 this._id = _nextFreeId++;
789 this._isClosed = false; 789 this._isClosed = false;
790 _isolate_helper._globalState.currentContext.registerWeak(this._id, this); 790 exports._globalState.currentContext.registerWeak(this._id, this);
791 } 791 }
792 RawReceivePortImpl$_controlPort() { 792 RawReceivePortImpl$_controlPort() {
793 this._handler = null; 793 this._handler = null;
794 this._id = 0; 794 this._id = 0;
795 this._isClosed = false; 795 this._isClosed = false;
796 } 796 }
797 set handler(newHandler) { 797 set handler(newHandler) {
798 this._handler = newHandler; 798 this._handler = newHandler;
799 } 799 }
800 _close() { 800 _close() {
801 this._isClosed = true; 801 this._isClosed = true;
802 this._handler = null; 802 this._handler = null;
803 } 803 }
804 close() { 804 close() {
805 if (this._isClosed) 805 if (this._isClosed)
806 return; 806 return;
807 this._isClosed = true; 807 this._isClosed = true;
808 this._handler = null; 808 this._handler = null;
809 _isolate_helper._globalState.currentContext.unregister(this._id); 809 exports._globalState.currentContext.unregister(this._id);
810 } 810 }
811 _add(dataEvent) { 811 _add(dataEvent) {
812 if (this._isClosed) 812 if (this._isClosed)
813 return; 813 return;
814 dart.dinvokef(this._handler, dataEvent); 814 dart.dinvokef(this._handler, dataEvent);
815 } 815 }
816 get sendPort() { 816 get sendPort() {
817 return new _NativeJsSendPort(this, _isolate_helper._globalState.currentCon text.id); 817 return new _NativeJsSendPort(this, exports._globalState.currentContext.id) ;
818 } 818 }
819 } 819 }
820 dart.defineNamedConstructor(RawReceivePortImpl, 'weak'); 820 dart.defineNamedConstructor(RawReceivePortImpl, 'weak');
821 dart.defineNamedConstructor(RawReceivePortImpl, '_controlPort'); 821 dart.defineNamedConstructor(RawReceivePortImpl, '_controlPort');
822 RawReceivePortImpl._nextFreeId = 1; 822 RawReceivePortImpl._nextFreeId = 1;
823 class ReceivePortImpl extends async.Stream { 823 class ReceivePortImpl extends async.Stream {
824 ReceivePortImpl() { 824 ReceivePortImpl() {
825 this.ReceivePortImpl$fromRawReceivePort(new RawReceivePortImpl(null)); 825 this.ReceivePortImpl$fromRawReceivePort(new RawReceivePortImpl(null));
826 } 826 }
827 ReceivePortImpl$weak() { 827 ReceivePortImpl$weak() {
(...skipping 20 matching lines...) Expand all
848 return this._rawPort.sendPort; 848 return this._rawPort.sendPort;
849 } 849 }
850 } 850 }
851 dart.defineNamedConstructor(ReceivePortImpl, 'weak'); 851 dart.defineNamedConstructor(ReceivePortImpl, 'weak');
852 dart.defineNamedConstructor(ReceivePortImpl, 'fromRawReceivePort'); 852 dart.defineNamedConstructor(ReceivePortImpl, 'fromRawReceivePort');
853 class TimerImpl extends dart.Object { 853 class TimerImpl extends dart.Object {
854 TimerImpl(milliseconds, callback) { 854 TimerImpl(milliseconds, callback) {
855 this._once = true; 855 this._once = true;
856 this._inEventLoop = false; 856 this._inEventLoop = false;
857 this._handle = dart.as(null, core.int); 857 this._handle = dart.as(null, core.int);
858 if (dart.notNull(milliseconds === 0) && dart.notNull(dart.notNull(!dart.no tNull(hasTimer())) || dart.notNull(_isolate_helper._globalState.isWorker))) { 858 if (dart.notNull(milliseconds === 0) && dart.notNull(dart.notNull(!dart.no tNull(hasTimer())) || dart.notNull(exports._globalState.isWorker))) {
859 // Function internalCallback: () → void 859 // Function internalCallback: () → void
860 function internalCallback() { 860 function internalCallback() {
861 this._handle = dart.as(null, core.int); 861 this._handle = dart.as(null, core.int);
862 callback(); 862 callback();
863 } 863 }
864 this._handle = 1; 864 this._handle = 1;
865 _isolate_helper._globalState.topEventLoop.enqueue(_isolate_helper._globa lState.currentContext, internalCallback, 'timer'); 865 exports._globalState.topEventLoop.enqueue(exports._globalState.currentCo ntext, internalCallback, 'timer');
866 this._inEventLoop = true; 866 this._inEventLoop = true;
867 } else if (hasTimer()) { 867 } else if (hasTimer()) {
868 // Function internalCallback: () → void 868 // Function internalCallback: () → void
869 function internalCallback() { 869 function internalCallback() {
870 this._handle = dart.as(null, core.int); 870 this._handle = dart.as(null, core.int);
871 leaveJsAsync(); 871 leaveJsAsync();
872 callback(); 872 callback();
873 } 873 }
874 enterJsAsync(); 874 enterJsAsync();
875 this._handle = self.setTimeout(_js_helper.convertDartClosureToJS(interna lCallback, 0), milliseconds); 875 this._handle = self.setTimeout(_js_helper.convertDartClosureToJS(interna lCallback, 0), milliseconds);
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
1065 return new List.from(['js-object', keys, values]); 1065 return new List.from(['js-object', keys, values]);
1066 } 1066 }
1067 serializeWorkerSendPort(x) { 1067 serializeWorkerSendPort(x) {
1068 if (this._serializeSendPorts) { 1068 if (this._serializeSendPorts) {
1069 return new List.from(['sendport', x._workerId, x._isolateId, x._receiveP ortId]); 1069 return new List.from(['sendport', x._workerId, x._isolateId, x._receiveP ortId]);
1070 } 1070 }
1071 return new List.from(['raw sendport', x]); 1071 return new List.from(['raw sendport', x]);
1072 } 1072 }
1073 serializeJsSendPort(x) { 1073 serializeJsSendPort(x) {
1074 if (this._serializeSendPorts) { 1074 if (this._serializeSendPorts) {
1075 let workerId = _isolate_helper._globalState.currentManagerId; 1075 let workerId = exports._globalState.currentManagerId;
1076 return new List.from(['sendport', workerId, x._isolateId, x._receivePort ._id]); 1076 return new List.from(['sendport', workerId, x._isolateId, x._receivePort ._id]);
1077 } 1077 }
1078 return new List.from(['raw sendport', x]); 1078 return new List.from(['raw sendport', x]);
1079 } 1079 }
1080 serializeCapability(x) { 1080 serializeCapability(x) {
1081 return new List.from(['capability', x._id]); 1081 return new List.from(['capability', x._id]);
1082 } 1082 }
1083 serializeClosure(x) { 1083 serializeClosure(x) {
1084 let name = IsolateNatives._getJSFunctionName(x); 1084 let name = IsolateNatives._getJSFunctionName(x);
1085 if (name === null) { 1085 if (name === null) {
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1201 result.set(keys.get(i), this.deserialize(values.get(i))); 1201 result.set(keys.get(i), this.deserialize(values.get(i)));
1202 } 1202 }
1203 return result; 1203 return result;
1204 } 1204 }
1205 deserializeSendPort(x) { 1205 deserializeSendPort(x) {
1206 dart.assert(dart.equals(dart.dindex(x, 0), 'sendport')); 1206 dart.assert(dart.equals(dart.dindex(x, 0), 'sendport'));
1207 let managerId = dart.as(dart.dindex(x, 1), core.int); 1207 let managerId = dart.as(dart.dindex(x, 1), core.int);
1208 let isolateId = dart.as(dart.dindex(x, 2), core.int); 1208 let isolateId = dart.as(dart.dindex(x, 2), core.int);
1209 let receivePortId = dart.as(dart.dindex(x, 3), core.int); 1209 let receivePortId = dart.as(dart.dindex(x, 3), core.int);
1210 let result = null; 1210 let result = null;
1211 if (managerId === _isolate_helper._globalState.currentManagerId) { 1211 if (managerId === exports._globalState.currentManagerId) {
1212 let isolate = _isolate_helper._globalState.isolates.get(isolateId); 1212 let isolate = exports._globalState.isolates.get(isolateId);
1213 if (isolate === null) 1213 if (isolate === null)
1214 return null; 1214 return null;
1215 let receivePort = isolate.lookup(receivePortId); 1215 let receivePort = isolate.lookup(receivePortId);
1216 if (receivePort === null) 1216 if (receivePort === null)
1217 return null; 1217 return null;
1218 result = new _NativeJsSendPort(receivePort, isolateId); 1218 result = new _NativeJsSendPort(receivePort, isolateId);
1219 } else { 1219 } else {
1220 result = new _WorkerSendPort(managerId, isolateId, receivePortId); 1220 result = new _WorkerSendPort(managerId, isolateId, receivePortId);
1221 } 1221 }
1222 this.deserializedObjects.add(result); 1222 this.deserializedObjects.add(result);
(...skipping 29 matching lines...) Expand all
1252 let fields = dart.as(dart.dindex(x, 2), core.List); 1252 let fields = dart.as(dart.dindex(x, 2), core.List);
1253 let instanceFromClassId = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_ js_embedded_names.INSTANCE_FROM_CLASS_ID, core.String)); 1253 let instanceFromClassId = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_ js_embedded_names.INSTANCE_FROM_CLASS_ID, core.String));
1254 let initializeObject = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_js_ embedded_names.INITIALIZE_EMPTY_INSTANCE, core.String)); 1254 let initializeObject = _foreign_helper.JS_EMBEDDED_GLOBAL('', dart.as(_js_ embedded_names.INITIALIZE_EMPTY_INSTANCE, core.String));
1255 let emptyInstance = instanceFromClassId(classId); 1255 let emptyInstance = instanceFromClassId(classId);
1256 this.deserializedObjects.add(emptyInstance); 1256 this.deserializedObjects.add(emptyInstance);
1257 this.deserializeArrayInPlace(dart.as(fields, _interceptors.JSArray)); 1257 this.deserializeArrayInPlace(dart.as(fields, _interceptors.JSArray));
1258 return initializeObject(classId, emptyInstance, fields); 1258 return initializeObject(classId, emptyInstance, fields);
1259 } 1259 }
1260 } 1260 }
1261 // Exports: 1261 // Exports:
1262 _isolate_helper.enterJsAsync = enterJsAsync; 1262 exports.enterJsAsync = enterJsAsync;
1263 _isolate_helper.leaveJsAsync = leaveJsAsync; 1263 exports.leaveJsAsync = leaveJsAsync;
1264 _isolate_helper.isWorker = isWorker; 1264 exports.isWorker = isWorker;
1265 _isolate_helper.startRootIsolate = startRootIsolate; 1265 exports.startRootIsolate = startRootIsolate;
1266 _isolate_helper.globalWindow = globalWindow; 1266 exports.globalWindow = globalWindow;
1267 _isolate_helper.globalWorker = globalWorker; 1267 exports.globalWorker = globalWorker;
1268 _isolate_helper.globalPostMessageDefined = globalPostMessageDefined; 1268 exports.globalPostMessageDefined = globalPostMessageDefined;
1269 _isolate_helper.IsolateNatives = IsolateNatives; 1269 exports.IsolateNatives = IsolateNatives;
1270 _isolate_helper.RawReceivePortImpl = RawReceivePortImpl; 1270 exports.RawReceivePortImpl = RawReceivePortImpl;
1271 _isolate_helper.ReceivePortImpl = ReceivePortImpl; 1271 exports.ReceivePortImpl = ReceivePortImpl;
1272 _isolate_helper.TimerImpl = TimerImpl; 1272 exports.TimerImpl = TimerImpl;
1273 _isolate_helper.hasTimer = hasTimer; 1273 exports.hasTimer = hasTimer;
1274 _isolate_helper.CapabilityImpl = CapabilityImpl; 1274 exports.CapabilityImpl = CapabilityImpl;
1275 })(_isolate_helper || (_isolate_helper = {})); 1275 })(_isolate_helper || (_isolate_helper = {}));
OLDNEW
« no previous file with comments | « test/codegen/expect/_internal/_internal.js ('k') | test/codegen/expect/_js_embedded_names/_js_embedded_names.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698