| Index: src/runtime/runtime-debug.cc
|
| diff --git a/src/runtime/runtime-debug.cc b/src/runtime/runtime-debug.cc
|
| index 844c64bbe617b7b5f00f5040c15b4157e752698d..0615c79eb51fa31ae2a4c92fd61cb13fbfc910a9 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"
|
| @@ -1845,14 +1846,19 @@ RUNTIME_FUNCTION(Runtime_ScriptSourceLine) {
|
| return *str;
|
| }
|
|
|
| -// Set one shot breakpoints for the callback function that is passed to a
|
| -// built-in function such as Array.forEach to enable stepping into the callback,
|
| -// if we are indeed stepping and the callback is subject to debugging.
|
| -RUNTIME_FUNCTION(Runtime_DebugPrepareStepInIfStepping) {
|
| +// On function call, depending on circumstances, prepare for stepping in,
|
| +// or perform a side effect check.
|
| +RUNTIME_FUNCTION(Runtime_DebugOnFunctionCall) {
|
| HandleScope scope(isolate);
|
| DCHECK_EQ(1, args.length());
|
| CONVERT_ARG_HANDLE_CHECKED(JSFunction, fun, 0);
|
| - isolate->debug()->PrepareStepIn(fun);
|
| + if (isolate->debug()->last_step_action() >= StepIn) {
|
| + isolate->debug()->PrepareStepIn(fun);
|
| + }
|
| + if (isolate->needs_side_effect_check() &&
|
| + !isolate->debug()->PerformSideEffectCheck(fun)) {
|
| + return isolate->heap()->exception();
|
| + }
|
| return isolate->heap()->undefined_value();
|
| }
|
|
|
|
|