Reviewers: Jakob,
Message:
Hi Jakob,
This helps in passing debugger tests :),
--Michael
Description:
Vector ICs: debugger should save registers for vector store ics.
BUG=
R=jkumme...@chromium.org
Please review this at https://codereview.chromium.org/1154303008/
Base URL: https://chromium.googlesource.com/v8/v8.git@master
Affected files (+36, -42 lines):
M src/arm/debug-arm.cc
M src/arm64/debug-arm64.cc
M src/ia32/debug-ia32.cc
M src/mips/debug-mips.cc
M src/mips64/debug-mips64.cc
M src/x64/debug-x64.cc
Index: src/arm/debug-arm.cc
diff --git a/src/arm/debug-arm.cc b/src/arm/debug-arm.cc
index
e1af27de02f8bcc1819911487118685b90185064..10bd43564ae03fb4e299d89be85ef8540021587b
100644
--- a/src/arm/debug-arm.cc
+++ b/src/arm/debug-arm.cc
@@ -155,8 +155,11 @@ void
DebugCodegen::GenerateStoreICDebugBreak(MacroAssembler* masm) {
Register receiver = StoreDescriptor::ReceiverRegister();
Register name = StoreDescriptor::NameRegister();
Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0);
+ RegList regs = receiver.bit() | name.bit() | value.bit();
+ if (FLAG_vector_stores) {
+ regs |= VectorStoreICDescriptor::SlotRegister().bit();
+ }
+ Generate_DebugBreakCallHelper(masm, regs, 0);
}
@@ -168,11 +171,7 @@ void
DebugCodegen::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
void DebugCodegen::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
// Calling convention for IC keyed store call (from ic-arm.cc).
- Register receiver = StoreDescriptor::ReceiverRegister();
- Register name = StoreDescriptor::NameRegister();
- Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0);
+ GenerateStoreICDebugBreak(masm);
}
Index: src/arm64/debug-arm64.cc
diff --git a/src/arm64/debug-arm64.cc b/src/arm64/debug-arm64.cc
index
59b2d1cfe32899b3f1674d1b2b62ae3c9206883c..ad9e42ae7ecc4d0b5e6d287852b1290e2ebf02cf
100644
--- a/src/arm64/debug-arm64.cc
+++ b/src/arm64/debug-arm64.cc
@@ -218,8 +218,11 @@ void
DebugCodegen::GenerateStoreICDebugBreak(MacroAssembler* masm) {
Register receiver = StoreDescriptor::ReceiverRegister();
Register name = StoreDescriptor::NameRegister();
Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.Bit() | name.Bit() | value.Bit(), 0, x10);
+ RegList regs = receiver.Bit() | name.Bit() | value.Bit();
+ if (FLAG_vector_stores) {
+ regs |= VectorStoreICDescriptor::SlotRegister().Bit();
+ }
+ Generate_DebugBreakCallHelper(masm, regs, 0, x10);
}
@@ -231,11 +234,7 @@ void
DebugCodegen::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
void DebugCodegen::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
// Calling convention for IC keyed store call (from ic-arm64.cc).
- Register receiver = StoreDescriptor::ReceiverRegister();
- Register name = StoreDescriptor::NameRegister();
- Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.Bit() | name.Bit() | value.Bit(), 0, x10);
+ GenerateStoreICDebugBreak(masm);
}
Index: src/ia32/debug-ia32.cc
diff --git a/src/ia32/debug-ia32.cc b/src/ia32/debug-ia32.cc
index
957a75ad513434b1735dfbabc97c443a2d3f2ace..a2d75d76184fdb796113bb7bcf2e780ef0a5f8ab
100644
--- a/src/ia32/debug-ia32.cc
+++ b/src/ia32/debug-ia32.cc
@@ -194,8 +194,11 @@ void
DebugCodegen::GenerateStoreICDebugBreak(MacroAssembler* masm) {
Register receiver = StoreDescriptor::ReceiverRegister();
Register name = StoreDescriptor::NameRegister();
Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0, false);
+ RegList regs = receiver.bit() | name.bit() | value.bit();
+ if (FLAG_vector_stores) {
+ regs |= VectorStoreICDescriptor::SlotRegister().bit();
+ }
+ Generate_DebugBreakCallHelper(masm, regs, 0, false);
}
@@ -207,11 +210,7 @@ void
DebugCodegen::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
void DebugCodegen::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
// Register state for keyed IC store call (from ic-ia32.cc).
- Register receiver = StoreDescriptor::ReceiverRegister();
- Register name = StoreDescriptor::NameRegister();
- Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0, false);
+ GenerateStoreICDebugBreak(masm);
}
Index: src/mips/debug-mips.cc
diff --git a/src/mips/debug-mips.cc b/src/mips/debug-mips.cc
index
81e69ed1b0eb7ac18ed1973d56edfdc89131d563..eeb6377f6440af9621374ca680d0f9c41b77283e
100644
--- a/src/mips/debug-mips.cc
+++ b/src/mips/debug-mips.cc
@@ -164,8 +164,11 @@ void
DebugCodegen::GenerateStoreICDebugBreak(MacroAssembler* masm) {
Register receiver = StoreDescriptor::ReceiverRegister();
Register name = StoreDescriptor::NameRegister();
Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0);
+ RegList regs = receiver.bit() | name.bit() | value.bit();
+ if (FLAG_vector_stores) {
+ regs |= VectorStoreICDescriptor::SlotRegister().bit();
+ }
+ Generate_DebugBreakCallHelper(masm, regs, 0);
}
@@ -177,11 +180,7 @@ void
DebugCodegen::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
void DebugCodegen::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
// Calling convention for IC keyed store call (from ic-mips.cc).
- Register receiver = StoreDescriptor::ReceiverRegister();
- Register name = StoreDescriptor::NameRegister();
- Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0);
+ GenerateStoreICDebugBreak(masm);
}
Index: src/mips64/debug-mips64.cc
diff --git a/src/mips64/debug-mips64.cc b/src/mips64/debug-mips64.cc
index
402de78a993223be1bced88fb03d9a471a6be437..ae506e1dc95e84311557691b5c317d861e3e9cc0
100644
--- a/src/mips64/debug-mips64.cc
+++ b/src/mips64/debug-mips64.cc
@@ -166,8 +166,11 @@ void
DebugCodegen::GenerateStoreICDebugBreak(MacroAssembler* masm) {
Register receiver = StoreDescriptor::ReceiverRegister();
Register name = StoreDescriptor::NameRegister();
Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0);
+ RegList regs = receiver.bit() | name.bit() | value.bit();
+ if (FLAG_vector_stores) {
+ regs |= VectorStoreICDescriptor::SlotRegister().bit();
+ }
+ Generate_DebugBreakCallHelper(masm, regs, 0);
}
@@ -179,11 +182,7 @@ void
DebugCodegen::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
void DebugCodegen::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
// Calling convention for IC keyed store call (from ic-mips64.cc).
- Register receiver = StoreDescriptor::ReceiverRegister();
- Register name = StoreDescriptor::NameRegister();
- Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0);
+ GenerateStoreICDebugBreak(masm);
}
Index: src/x64/debug-x64.cc
diff --git a/src/x64/debug-x64.cc b/src/x64/debug-x64.cc
index
f0aa192476d848e1a663efce81e73639b3bae180..df821ee835275ddf2196ded3ca55cf0d3fc9dd6a
100644
--- a/src/x64/debug-x64.cc
+++ b/src/x64/debug-x64.cc
@@ -174,8 +174,11 @@ void
DebugCodegen::GenerateStoreICDebugBreak(MacroAssembler* masm) {
Register receiver = StoreDescriptor::ReceiverRegister();
Register name = StoreDescriptor::NameRegister();
Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0, false);
+ RegList regs = receiver.bit() | name.bit() | value.bit();
+ if (FLAG_vector_stores) {
+ regs |= VectorStoreICDescriptor::SlotRegister().bit();
+ }
+ Generate_DebugBreakCallHelper(masm, regs, 0, false);
}
@@ -187,11 +190,7 @@ void
DebugCodegen::GenerateKeyedLoadICDebugBreak(MacroAssembler* masm) {
void DebugCodegen::GenerateKeyedStoreICDebugBreak(MacroAssembler* masm) {
// Register state for keyed IC store call (from ic-x64.cc).
- Register receiver = StoreDescriptor::ReceiverRegister();
- Register name = StoreDescriptor::NameRegister();
- Register value = StoreDescriptor::ValueRegister();
- Generate_DebugBreakCallHelper(
- masm, receiver.bit() | name.bit() | value.bit(), 0, false);
+ GenerateStoreICDebugBreak(masm);
}
--
--
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.