| Index: src/debug.cc
|
| ===================================================================
|
| --- src/debug.cc (revision 3980)
|
| +++ src/debug.cc (working copy)
|
| @@ -123,7 +123,9 @@
|
| if (RelocInfo::IsCodeTarget(rmode())) {
|
| Address target = original_rinfo()->target_address();
|
| Code* code = Code::GetCodeFromTargetAddress(target);
|
| - if (code->is_inline_cache_stub() || RelocInfo::IsConstructCall(rmode())) {
|
| + if ((code->is_inline_cache_stub() &&
|
| + code->kind() != Code::BINARY_OP_IC) ||
|
| + RelocInfo::IsConstructCall(rmode())) {
|
| break_point_++;
|
| return;
|
| }
|
| @@ -1337,25 +1339,27 @@
|
| // Find the builtin debug break function matching the calling convention
|
| // used by the call site.
|
| if (code->is_inline_cache_stub()) {
|
| - if (code->is_call_stub()) {
|
| - return ComputeCallDebugBreak(code->arguments_count());
|
| + switch (code->kind()) {
|
| + case Code::CALL_IC:
|
| + return ComputeCallDebugBreak(code->arguments_count());
|
| +
|
| + case Code::LOAD_IC:
|
| + return Handle<Code>(Builtins::builtin(Builtins::LoadIC_DebugBreak));
|
| +
|
| + case Code::STORE_IC:
|
| + return Handle<Code>(Builtins::builtin(Builtins::StoreIC_DebugBreak));
|
| +
|
| + case Code::KEYED_LOAD_IC:
|
| + return Handle<Code>(
|
| + Builtins::builtin(Builtins::KeyedLoadIC_DebugBreak));
|
| +
|
| + case Code::KEYED_STORE_IC:
|
| + return Handle<Code>(
|
| + Builtins::builtin(Builtins::KeyedStoreIC_DebugBreak));
|
| +
|
| + default:
|
| + UNREACHABLE();
|
| }
|
| - if (code->is_load_stub()) {
|
| - return Handle<Code>(Builtins::builtin(Builtins::LoadIC_DebugBreak));
|
| - }
|
| - if (code->is_store_stub()) {
|
| - return Handle<Code>(Builtins::builtin(Builtins::StoreIC_DebugBreak));
|
| - }
|
| - if (code->is_keyed_load_stub()) {
|
| - Handle<Code> result =
|
| - Handle<Code>(Builtins::builtin(Builtins::KeyedLoadIC_DebugBreak));
|
| - return result;
|
| - }
|
| - if (code->is_keyed_store_stub()) {
|
| - Handle<Code> result =
|
| - Handle<Code>(Builtins::builtin(Builtins::KeyedStoreIC_DebugBreak));
|
| - return result;
|
| - }
|
| }
|
| if (RelocInfo::IsConstructCall(mode)) {
|
| Handle<Code> result =
|
|
|