Index: tool/input_sdk/patch/async_patch.dart |
diff --git a/tool/input_sdk/patch/async_patch.dart b/tool/input_sdk/patch/async_patch.dart |
index eefc637dcc64de2a47110375ef761a2bcd2e7bfd..f5890731da1c2a105ea09b3b49bc0353eabcc57d 100644 |
--- a/tool/input_sdk/patch/async_patch.dart |
+++ b/tool/input_sdk/patch/async_patch.dart |
@@ -6,7 +6,8 @@ |
import 'dart:_js_helper' show |
patch, |
- Primitives; |
+ Primitives, |
+ convertDartClosureToJS; |
vsm
2016/05/05 21:23:40
Note - this is just identity on the first arg in D
Bob Nystrom
2016/05/05 22:03:46
Done.
|
import 'dart:_isolate_helper' show |
IsolateNatives, |
TimerImpl, |
@@ -20,14 +21,16 @@ import 'dart:_foreign_helper' show JS; |
class _AsyncRun { |
@patch |
static void _scheduleImmediate(void callback()) { |
- scheduleImmediateClosure(callback); |
+ _scheduleImmediateClosure(callback); |
} |
// Lazily initialized. |
- static final Function scheduleImmediateClosure = |
+ static final Function _scheduleImmediateClosure = |
_initializeScheduleImmediate(); |
static Function _initializeScheduleImmediate() { |
+ // TODO(rnystrom): Not needed by dev_compiler. |
+ // requiresPreamble(); |
if (JS('', 'self.scheduleImmediate') != null) { |
return _scheduleImmediateJsOverride; |
} |
@@ -45,7 +48,8 @@ class _AsyncRun { |
f(); |
}; |
- var observer = JS('', 'new self.MutationObserver(#)', internalCallback); |
+ var observer = JS('', 'new self.MutationObserver(#)', |
+ convertDartClosureToJS(internalCallback, 1)); |
JS('', '#.observe(#, { childList: true })', |
observer, div); |
@@ -72,7 +76,8 @@ class _AsyncRun { |
callback(); |
}; |
enterJsAsync(); |
- JS('void', 'self.scheduleImmediate(#)', internalCallback); |
+ JS('void', 'self.scheduleImmediate(#)', |
+ convertDartClosureToJS(internalCallback, 0)); |
} |
static void _scheduleImmediateWithSetImmediate(void callback()) { |
@@ -81,7 +86,8 @@ class _AsyncRun { |
callback(); |
}; |
enterJsAsync(); |
- JS('void', 'self.setImmediate(#)', internalCallback); |
+ JS('void', 'self.setImmediate(#)', |
+ convertDartClosureToJS(internalCallback, 0)); |
} |
static void _scheduleImmediateWithTimer(void callback()) { |
@@ -116,4 +122,10 @@ class Timer { |
} |
} |
-bool get _hasDocument => JS('String', 'typeof document') == 'object'; |
+@patch |
+void _rethrow(Object error, StackTrace stackTrace) { |
+ // TODO(rnystrom): Not needed by dev_compiler. |
+ // error = wrapException(error); |
+ JS("void", "#.stack = #", error, stackTrace.toString()); |
+ JS("void", "throw #", error); |
+} |