Index: sdk/lib/_internal/compiler/js_lib/debugger_patch.dart |
diff --git a/sdk/lib/_internal/compiler/js_lib/debugger_patch.dart b/sdk/lib/_internal/compiler/js_lib/debugger_patch.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..cde47c4d3d7a7fa93febcc6217b4998da0572a20 |
--- /dev/null |
+++ b/sdk/lib/_internal/compiler/js_lib/debugger_patch.dart |
@@ -0,0 +1,32 @@ |
+// Copyright (c) 2015, 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. |
+ |
+// Patch file for dart:debugger library. |
+ |
+import 'dart:_js_helper' show patch; |
+import 'dart:_foreign_helper' show JS; |
+ |
+@patch class Debugger { |
+ /// Stop the program as if a breakpoint where hit at the following statement. |
+ /// NOTE: When invoked, the isolate will not return until a debugger |
+ /// continues execution. When running in the Dart VM the behaviour is the same |
+ /// regardless of whether or not a debugger is connected. When compiled to |
+ /// JavaScript, this uses the "debugger" statement, and behaves exactly as |
+ /// that does. |
+ @patch |
+ @ForceInline() |
+ static void breakHere() { |
+ JS('', 'debugger'); |
+ } |
+ |
+ /// If [expr] is true, stop the program as if a breakpoint where hit at the |
+ /// following statement. See [breakHere]. |
+ @patch |
+ @ForceInline() |
+ static void breakHereIf(bool expr) { |
+ if (expr) { |
+ breakHere(); |
+ } |
+ } |
+} |