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

Side by Side Diff: compiler/lib/implementation/isolate.js

Issue 8370031: Fix for events fired on different isolates. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Remove Isolate.bind. Created 9 years, 2 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 var isolate$current = null; 5 var isolate$current = null;
6 var isolate$rootIsolate = null; // Will only be set in the main worker. 6 var isolate$rootIsolate = null; // Will only be set in the main worker.
7 var isolate$inits = []; 7 var isolate$inits = [];
8 var isolate$globalThis = this; 8 var isolate$globalThis = this;
9 9
10 // These declarations are needed to avoid errors from the Closure Compiler 10 // These declarations are needed to avoid errors from the Closure Compiler
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 function native_IsolateNatives__spawn(runnable, light, replyPort) { 294 function native_IsolateNatives__spawn(runnable, light, replyPort) {
295 // TODO(floitsch): throw exception if runnable's class doesn't have a 295 // TODO(floitsch): throw exception if runnable's class doesn't have a
296 // default constructor. 296 // default constructor.
297 if (isolate$useWorkers && !light) { 297 if (isolate$useWorkers && !light) {
298 isolate$startWorker(runnable, replyPort); 298 isolate$startWorker(runnable, replyPort);
299 } else { 299 } else {
300 isolate$startNonWorker(runnable, replyPort); 300 isolate$startNonWorker(runnable, replyPort);
301 } 301 }
302 } 302 }
303 303
304 function native_IsolateNatives_bind(fn) {
305 var isolate = isolate$current;
306 return function() {
307 var self = this;
308 var args = arguments;
309 isolate.run(function() {
310 fn.apply(self, args);
311 });
312 isolate$runEventLoop();
313 };
314 }
315
316 function isolate$startNonWorker(runnable, replyTo) { 304 function isolate$startNonWorker(runnable, replyTo) {
317 // Spawn a new isolate and create the receive port in it. 305 // Spawn a new isolate and create the receive port in it.
318 var spawned = new isolate$Isolate(); 306 var spawned = new isolate$Isolate();
319 307
320 // Instead of just running the provided runnable, we create a 308 // Instead of just running the provided runnable, we create a
321 // new cloned instance of it with a fresh state in the spawned 309 // new cloned instance of it with a fresh state in the spawned
322 // isolate. This way, we do not get cross-isolate references 310 // isolate. This way, we do not get cross-isolate references
323 // through the runnable. 311 // through the runnable.
324 var factory = runnable.getIsolateFactory(); 312 var factory = runnable.getIsolateFactory();
325 isolate$IsolateEvent.enqueue(spawned, function() { 313 isolate$IsolateEvent.enqueue(spawned, function() {
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 } 507 }
520 508
521 function isolate$deserializeMessage(message) { 509 function isolate$deserializeMessage(message) {
522 if (isolate$useWorkers || isolate$useWorkerSerializationProtocol) { 510 if (isolate$useWorkers || isolate$useWorkerSerializationProtocol) {
523 return native__IsolateJsUtil__deserializeMessage(message); 511 return native__IsolateJsUtil__deserializeMessage(message);
524 } else { 512 } else {
525 // Nothing more to do. 513 // Nothing more to do.
526 return message; 514 return message;
527 } 515 }
528 } 516 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698