Bug 944278 - OdinMonkey: Fix stack alignment, r=luke

This commit is contained in:
Hannes Verschore 2013-12-07 15:45:06 +01:00
parent 8c9014b01a
commit f279594d37

View File

@ -5962,7 +5962,6 @@ GenerateOOLConvert(ModuleCompiler &m, RetType retType, Label *throwLabel)
// passed to this FFI call.
unsigned arraySize = sizeof(Value);
unsigned stackDec = StackDecrementForCall(masm, callArgTypes, arraySize);
masm.setFramePushed(0);
masm.reserveStack(stackDec);
// Store value
@ -5996,6 +5995,7 @@ GenerateOOLConvert(ModuleCompiler &m, RetType retType, Label *throwLabel)
JS_ASSERT(i.done());
// Call
AssertStackAlignment(masm);
switch (retType.which()) {
case RetType::Signed:
masm.call(AsmJSImm_CoerceInPlace_ToInt32);
@ -6138,6 +6138,7 @@ GenerateFFIIonExit(ModuleCompiler &m, const ModuleCompiler::ExitDescriptor &exit
masm.branchTestMagic(Assembler::Equal, JSReturnOperand, throwLabel);
#endif
uint32_t oolConvertFramePushed = masm.framePushed();
switch (exit.sig().retType().which()) {
case RetType::Void:
break;
@ -6160,7 +6161,9 @@ GenerateFFIIonExit(ModuleCompiler &m, const ModuleCompiler::ExitDescriptor &exit
// oolConvert
if (oolConvert.used()) {
masm.bind(&oolConvert);
masm.setFramePushed(oolConvertFramePushed);
GenerateOOLConvert(m, exit.sig().retType(), throwLabel);
masm.setFramePushed(0);
masm.jump(&done);
}