d45d042345
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
32 lines
1.3 KiB
Dart
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();
|
|
}
|