Allow setting debugger breakpoints on CompareNilICs
BUG=v8:2660 R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/14106011 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14487 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
9e2c046f5c
commit
d728493929
@ -224,6 +224,15 @@ void Debug::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
|
||||
}
|
||||
|
||||
|
||||
void Debug::GenerateCompareNilICDebugBreak(MacroAssembler* masm) {
|
||||
// Register state for CompareNil IC
|
||||
// ----------- S t a t e -------------
|
||||
// -- r0 : value
|
||||
// -----------------------------------
|
||||
Generate_DebugBreakCallHelper(masm, r0.bit(), 0);
|
||||
}
|
||||
|
||||
|
||||
void Debug::GenerateCallICDebugBreak(MacroAssembler* masm) {
|
||||
// Calling convention for IC call (from ic-arm.cc)
|
||||
// ----------- S t a t e -------------
|
||||
|
@ -1617,6 +1617,11 @@ static void Generate_KeyedStoreIC_DebugBreak(MacroAssembler* masm) {
|
||||
}
|
||||
|
||||
|
||||
static void Generate_CompareNilIC_DebugBreak(MacroAssembler* masm) {
|
||||
Debug::GenerateCompareNilICDebugBreak(masm);
|
||||
}
|
||||
|
||||
|
||||
static void Generate_Return_DebugBreak(MacroAssembler* masm) {
|
||||
Debug::GenerateReturnDebugBreak(masm);
|
||||
}
|
||||
|
@ -230,6 +230,8 @@ enum BuiltinExtraArguments {
|
||||
DEBUG_BREAK) \
|
||||
V(KeyedStoreIC_DebugBreak, KEYED_STORE_IC, DEBUG_STUB, \
|
||||
DEBUG_BREAK) \
|
||||
V(CompareNilIC_DebugBreak, COMPARE_NIL_IC, DEBUG_STUB, \
|
||||
DEBUG_BREAK) \
|
||||
V(Slot_DebugBreak, BUILTIN, DEBUG_STUB, \
|
||||
DEBUG_BREAK) \
|
||||
V(PlainReturn_LiveEdit, BUILTIN, DEBUG_STUB, \
|
||||
|
@ -1644,6 +1644,9 @@ Handle<Code> Debug::FindDebugBreak(Handle<Code> code, RelocInfo::Mode mode) {
|
||||
case Code::KEYED_STORE_IC:
|
||||
return isolate->builtins()->KeyedStoreIC_DebugBreak();
|
||||
|
||||
case Code::COMPARE_NIL_IC:
|
||||
return isolate->builtins()->CompareNilIC_DebugBreak();
|
||||
|
||||
default:
|
||||
UNREACHABLE();
|
||||
}
|
||||
|
@ -418,6 +418,7 @@ class Debug {
|
||||
static void GenerateStoreICDebugBreak(MacroAssembler* masm);
|
||||
static void GenerateKeyedLoadICDebugBreak(MacroAssembler* masm);
|
||||
static void GenerateKeyedStoreICDebugBreak(MacroAssembler* masm);
|
||||
static void GenerateCompareNilICDebugBreak(MacroAssembler* masm);
|
||||
static void GenerateReturnDebugBreak(MacroAssembler* masm);
|
||||
static void GenerateCallFunctionStubDebugBreak(MacroAssembler* masm);
|
||||
static void GenerateCallFunctionStubRecordDebugBreak(MacroAssembler* masm);
|
||||
|
@ -240,6 +240,15 @@ void Debug::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
|
||||
}
|
||||
|
||||
|
||||
void Debug::GenerateCompareNilICDebugBreak(MacroAssembler* masm) {
|
||||
// Register state for CompareNil IC
|
||||
// ----------- S t a t e -------------
|
||||
// -- eax : value
|
||||
// -----------------------------------
|
||||
Generate_DebugBreakCallHelper(masm, eax.bit(), 0, false);
|
||||
}
|
||||
|
||||
|
||||
void Debug::GenerateCallICDebugBreak(MacroAssembler* masm) {
|
||||
// Register state for keyed IC call call (from ic-ia32.cc)
|
||||
// ----------- S t a t e -------------
|
||||
|
@ -233,6 +233,15 @@ void Debug::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
|
||||
}
|
||||
|
||||
|
||||
void Debug::GenerateCompareNilICDebugBreak(MacroAssembler* masm) {
|
||||
// Register state for CompareNil IC
|
||||
// ----------- S t a t e -------------
|
||||
// -- rax : value
|
||||
// -----------------------------------
|
||||
Generate_DebugBreakCallHelper(masm, rax.bit(), 0, false);
|
||||
}
|
||||
|
||||
|
||||
void Debug::GenerateCallICDebugBreak(MacroAssembler* masm) {
|
||||
// Register state for IC call call (from ic-x64.cc)
|
||||
// ----------- S t a t e -------------
|
||||
|
@ -1090,6 +1090,15 @@ TEST(DebugStub) {
|
||||
Builtins::kKeyedLoadIC_DebugBreak));
|
||||
#endif
|
||||
|
||||
CheckDebugBreakFunction(
|
||||
&env,
|
||||
"function f6(a){return a==null;}",
|
||||
"f6",
|
||||
0,
|
||||
v8::internal::RelocInfo::CODE_TARGET,
|
||||
Isolate::Current()->builtins()->builtin(
|
||||
Builtins::kCompareNilIC_DebugBreak));
|
||||
|
||||
// Check the debug break code stubs for call ICs with different number of
|
||||
// parameters.
|
||||
Handle<Code> debug_break_0 = v8::internal::ComputeCallDebugBreak(0);
|
||||
|
Loading…
Reference in New Issue
Block a user