diff options
Diffstat (limited to 'deps/v8/src/debug.cc')
-rw-r--r-- | deps/v8/src/debug.cc | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/deps/v8/src/debug.cc b/deps/v8/src/debug.cc index 0496b8cb00..35970e5ee9 100644 --- a/deps/v8/src/debug.cc +++ b/deps/v8/src/debug.cc @@ -1793,10 +1793,14 @@ void Debug::HandleStepIn(Handle<JSFunction> function, // function to be called and not the code for Builtins::FunctionApply or // Builtins::FunctionCall. The receiver of call/apply is the target // function. - if (!holder.is_null() && holder->IsJSFunction() && - !JSFunction::cast(*holder)->IsBuiltin()) { + if (!holder.is_null() && holder->IsJSFunction()) { Handle<JSFunction> js_function = Handle<JSFunction>::cast(holder); - Debug::FloodWithOneShot(js_function); + if (!js_function->IsBuiltin()) { + Debug::FloodWithOneShot(js_function); + } else if (js_function->shared()->bound()) { + // Handle Function.prototype.bind + Debug::FloodBoundFunctionWithOneShot(js_function); + } } } else { Debug::FloodWithOneShot(function); @@ -2102,6 +2106,7 @@ void Debug::PrepareForBreakPoints() { if (!shared->allows_lazy_compilation()) continue; if (!shared->script()->IsScript()) continue; + if (function->IsBuiltin()) continue; if (shared->code()->gc_metadata() == active_code_marker) continue; Code::Kind kind = function->code()->kind(); @@ -3131,8 +3136,7 @@ void Debugger::NotifyMessageHandler(v8::DebugEvent event, v8::Local<v8::Function> fun = v8::Local<v8::Function>::Cast(api_exec_state->Get(fun_name)); - v8::Handle<v8::Boolean> running = - auto_continue ? v8::True() : v8::False(); + v8::Handle<v8::Boolean> running = v8::Boolean::New(auto_continue); static const int kArgc = 1; v8::Handle<Value> argv[kArgc] = { running }; cmd_processor = v8::Local<v8::Object>::Cast( |