Index: lib/isolate/frog/natives.js |
diff --git a/lib/isolate/frog/natives.js b/lib/isolate/frog/natives.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..777255022ed5946876fb084cbf6f71cb1b03e38c |
--- /dev/null |
+++ b/lib/isolate/frog/natives.js |
@@ -0,0 +1,37 @@ |
+// 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. |
+ |
+// Top-level native code needed by the frog compiler |
+ |
+var $globalThis = this; |
+var $globals = null; |
+var $globalState = null; |
+ |
+// Wrap a 0-arg dom-callback to bind it with the current isolate: |
+function $wrap_call$0(fn) { return fn && fn.wrap$call$0(); } |
+ |
+Function.prototype.wrap$call$0 = function() { |
+ var isolateContext = $globalState.currentContext; |
+ var self = this; |
+ this.wrap$0 = function() { |
+ isolateContext.eval(self); |
+ $globalState.topEventLoop.run(); |
+ }; |
+ this.wrap$call$0 = function() { return this.wrap$0; }; |
+ return this.wrap$0; |
+}; |
+ |
+// Wrap a 1-arg dom-callback to bind it with the current isolate: |
+function $wrap_call$1(fn) { return fn && fn.wrap$call$1(); } |
+ |
+Function.prototype.wrap$call$1 = function() { |
+ var isolateContext = $globalState.currentContext; |
+ var self = this; |
+ this.wrap$1 = function(arg) { |
+ isolateContext.eval(function() { self(arg); }); |
+ $globalState.topEventLoop.run(); |
+ }; |
+ this.wrap$call$1 = function() { return this.wrap$1; }; |
+ return this.wrap$1; |
+}; |