Index: src/runtime/runtime-debug.cc |
diff --git a/src/runtime/runtime-debug.cc b/src/runtime/runtime-debug.cc |
index 281ba29695d54ebd8d26aba7376706641180dbc9..5b9ebe537af2d35bd7e3230e34e3bf2851f09d27 100644 |
--- a/src/runtime/runtime-debug.cc |
+++ b/src/runtime/runtime-debug.cc |
@@ -5,6 +5,7 @@ |
#include "src/runtime/runtime-utils.h" |
#include "src/arguments.h" |
+#include "src/compiler.h" |
#include "src/debug/debug-evaluate.h" |
#include "src/debug/debug-frames.h" |
#include "src/debug/debug-scopes.h" |
@@ -1857,6 +1858,21 @@ RUNTIME_FUNCTION(Runtime_DebugPrepareStepInIfStepping) { |
return isolate->heap()->undefined_value(); |
} |
+// Perform %DebugPrepareStepInIfStepping and a read-only check. |
+RUNTIME_FUNCTION(Runtime_DebugOnFunctionCall) { |
+ HandleScope scope(isolate); |
+ DCHECK_EQ(1, args.length()); |
+ CONVERT_ARG_HANDLE_CHECKED(JSFunction, fun, 0); |
+ if (isolate->debug()->last_step_action() >= StepIn) { |
jgruber
2017/01/10 12:46:38
Maybe we should refactor these '>= StepIn' checks
Yang
2017/01/10 14:14:07
We do have static asserts in many places to guard
|
+ isolate->debug()->PrepareStepIn(fun); |
+ } |
+ if (isolate->debug()->needs_readonly_check() && |
+ !isolate->debug()->PerformReadOnlyCheck(fun)) { |
+ return isolate->heap()->exception(); |
+ } |
+ return isolate->heap()->undefined_value(); |
+} |
+ |
// Set one shot breakpoints for the suspended generator object. |
RUNTIME_FUNCTION(Runtime_DebugPrepareStepInSuspendedGenerator) { |
HandleScope scope(isolate); |