Chromium Code Reviews| 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); |
| +} |