| Index: src/debug.cc
|
| ===================================================================
|
| --- src/debug.cc (revision 4791)
|
| +++ src/debug.cc (working copy)
|
| @@ -62,13 +62,14 @@
|
| }
|
|
|
|
|
| -static Handle<Code> ComputeCallDebugBreak(int argc) {
|
| - CALL_HEAP_FUNCTION(StubCache::ComputeCallDebugBreak(argc), Code);
|
| +static Handle<Code> ComputeCallDebugBreak(int argc, Code::Kind kind) {
|
| + CALL_HEAP_FUNCTION(StubCache::ComputeCallDebugBreak(argc, kind), Code);
|
| }
|
|
|
|
|
| -static Handle<Code> ComputeCallDebugPrepareStepIn(int argc) {
|
| - CALL_HEAP_FUNCTION(StubCache::ComputeCallDebugPrepareStepIn(argc), Code);
|
| +static Handle<Code> ComputeCallDebugPrepareStepIn(int argc, Code::Kind kind) {
|
| + CALL_HEAP_FUNCTION(
|
| + StubCache::ComputeCallDebugPrepareStepIn(argc, kind), Code);
|
| }
|
|
|
|
|
| @@ -360,13 +361,14 @@
|
| // construct call or CallFunction stub call.
|
| Address target = rinfo()->target_address();
|
| Handle<Code> code(Code::GetCodeFromTargetAddress(target));
|
| - if (code->is_call_stub()) {
|
| + if (code->is_call_stub() || code->is_keyed_call_stub()) {
|
| // Step in through IC call is handled by the runtime system. Therefore make
|
| // sure that the any current IC is cleared and the runtime system is
|
| // called. If the executing code has a debug break at the location change
|
| // the call in the original code as it is the code there that will be
|
| // executed in place of the debug break call.
|
| - Handle<Code> stub = ComputeCallDebugPrepareStepIn(code->arguments_count());
|
| + Handle<Code> stub = ComputeCallDebugPrepareStepIn(code->arguments_count(),
|
| + code->kind());
|
| if (IsDebugBreak()) {
|
| original_rinfo()->set_target_address(stub->entry());
|
| } else {
|
| @@ -1187,7 +1189,7 @@
|
| if (RelocInfo::IsCodeTarget(it.rinfo()->rmode())) {
|
| Address target = it.rinfo()->target_address();
|
| Code* code = Code::GetCodeFromTargetAddress(target);
|
| - if (code->is_call_stub()) {
|
| + if (code->is_call_stub() || code->is_keyed_call_stub()) {
|
| is_call_target = true;
|
| }
|
| if (code->is_inline_cache_stub()) {
|
| @@ -1373,7 +1375,8 @@
|
| if (code->is_inline_cache_stub()) {
|
| switch (code->kind()) {
|
| case Code::CALL_IC:
|
| - return ComputeCallDebugBreak(code->arguments_count());
|
| + case Code::KEYED_CALL_IC:
|
| + return ComputeCallDebugBreak(code->arguments_count(), code->kind());
|
|
|
| case Code::LOAD_IC:
|
| return Handle<Code>(Builtins::builtin(Builtins::LoadIC_DebugBreak));
|
|
|