Reviewers: danno, Paul Lind, palfia, kisg,
Description:
MIPS: Fix register usage in ProfileEntryHookStub
Different register must be used to pass the test on target hardware.
BUG=
TEST=cctest/test-api/SetFunctionEntryHook
Please review this at https://codereview.chromium.org/18368002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/mips/code-stubs-mips.cc
Index: src/mips/code-stubs-mips.cc
diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc
index
56699a50304ab8f72102b3871257eb0e037eb058..ad3b1644e7acc4bfab6f0e1c636914caedb5339d
100644
--- a/src/mips/code-stubs-mips.cc
+++ b/src/mips/code-stubs-mips.cc
@@ -7530,12 +7530,16 @@ void ProfileEntryHookStub::Generate(MacroAssembler*
masm) {
const int32_t kReturnAddressDistanceFromFunctionStart =
Assembler::kCallTargetAddressOffset + (2 * Assembler::kInstrSize);
- // Save live volatile registers.
+ // This should contain all kCallerSaved registers.
+ const RegList kSavedRegs =
+ kJSCallerSaved | // Caller saved registers.
+ s5.bit(); // Saved stack pointer.
+
// We also save ra, so the count here is one higher than the mask
indicates.
- const int32_t kNumSavedRegs = kNumJSCallerSaved + 1;
+ const int32_t kNumSavedRegs = kNumJSCallerSaved + 2;
// Save all caller-save registers as this may be called from anywhere.
- __ MultiPush(kJSCallerSaved | ra.bit());
+ __ MultiPush(kSavedRegs | ra.bit());
// Compute the function's address for the first argument.
__ Subu(a0, ra, Operand(kReturnAddressDistanceFromFunctionStart));
@@ -7547,7 +7551,7 @@ void ProfileEntryHookStub::Generate(MacroAssembler*
masm) {
// Align the stack if necessary.
int frame_alignment = masm->ActivationFrameAlignment();
if (frame_alignment > kPointerSize) {
- __ mov(t1, sp);
+ __ mov(s5, sp);
ASSERT(IsPowerOf2(frame_alignment));
__ And(sp, sp, Operand(-frame_alignment));
}
@@ -7568,11 +7572,11 @@ void ProfileEntryHookStub::Generate(MacroAssembler*
masm) {
// Restore the stack pointer if needed.
if (frame_alignment > kPointerSize) {
- __ mov(sp, t1);
+ __ mov(sp, s5);
}
// Also pop ra to get Ret(0).
- __ MultiPop(kJSCallerSaved | ra.bit());
+ __ MultiPop(kSavedRegs | ra.bit());
__ Ret();
}
--
--
v8-dev mailing list
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.