Index: src/ppc/deoptimizer-ppc.cc |
diff --git a/src/ppc/deoptimizer-ppc.cc b/src/ppc/deoptimizer-ppc.cc |
index 58e9e939f561b3f875ff238b897ace00add2ecac..ac1504c0202a5b3bb9a1213217720993a1f2f628 100644 |
--- a/src/ppc/deoptimizer-ppc.cc |
+++ b/src/ppc/deoptimizer-ppc.cc |
@@ -25,6 +25,12 @@ int Deoptimizer::patch_size() { |
} |
+void Deoptimizer::EnsureRelocSpaceForLazyDeoptimization(Handle<Code> code) { |
+ // Empty because there is no need for relocation information for the code |
+ // patching in Deoptimizer::PatchCodeForDeoptimization below. |
+} |
+ |
+ |
void Deoptimizer::PatchCodeForDeoptimization(Isolate* isolate, Code* code) { |
Address code_start_address = code->instruction_start(); |
@@ -86,9 +92,12 @@ void Deoptimizer::FillInputFrame(Address tos, JavaScriptFrame* frame) { |
// Set the register values. The values are not important as there are no |
// callee saved registers in JavaScript frames, so all registers are |
// spilled. Registers fp and sp are set to the correct values though. |
+ // We ensure the values are Smis to avoid confusing the garbage |
+ // collector in the event that any values are retreived and stored |
+ // elsewhere. |
for (int i = 0; i < Register::kNumRegisters; i++) { |
- input_->SetRegister(i, i * 4); |
+ input_->SetRegister(i, reinterpret_cast<intptr_t>(Smi::FromInt(i))); |
} |
input_->SetRegister(sp.code(), reinterpret_cast<intptr_t>(frame->sp())); |
input_->SetRegister(fp.code(), reinterpret_cast<intptr_t>(frame->fp())); |