Files
sdk/lib/isolate/frog/compiler_hooks.dart
T
eub@google.com d45d042345 Refactor, rename, and generally rationalize code in the Frog isolates library,
in particular de-overloading the word "worker", in preparation for adding
iframe-based isolate managers.
Review URL: https://chromiumcodereview.appspot.com//9662024

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@6004 260f80e4-7a28-3924-810f-c04153c831b5
2012-03-29 22:02:38 +00:00

32 lines
1.3 KiB
Dart

// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// This file contains functions that are used in the code generated by the frog
// compiler.
/**
* Wrapper that takes the dart entry point and runs it within an isolate. The
* frog compiler will inject a call of the form [: startRootIsolate(main); :]
* when it determines that this wrapping is needed. For single-isolate
* applications (e.g. hello world), this call is not emitted.
*/
void startRootIsolate(entry) {
_globalState = new _Manager();
// Don't start the main loop again, if we are in a worker.
if (_globalState.isWorker) return;
final rootContext = new _IsolateContext();
_globalState.rootContext = rootContext;
_fillStatics(rootContext);
// BUG(5151491): Setting currentContext should not be necessary, but
// because closures passed to the DOM as event handlers do not bind their
// isolate automatically we try to give them a reasonable context to live in
// by having a "default" isolate (the first one created).
_globalState.currentContext = rootContext;
rootContext.eval(entry);
_globalState.topEventLoop.run();
}