зеркало из https://github.com/mozilla/gecko-dev.git
Bug 529849 - Assertion failed: _allocator.free & rmask(r) (../../../js/src/nanojit/Assembler.cpp:433). r=gal
--HG-- extra : convert_revision : 23ed78f42df2b7b1a590fc7e986e6d446ef4d3d4
This commit is contained in:
Родитель
391c15f438
Коммит
79857bda92
|
@ -61,7 +61,7 @@ namespace nanojit
|
|||
|
||||
const Register Assembler::argRegs[] = { I0, I1, I2, I3, I4, I5 };
|
||||
const Register Assembler::retRegs[] = { O0 };
|
||||
const Register Assembler::savedRegs[] = { I0, I1, I2, I3, I4, I5 };
|
||||
const Register Assembler::savedRegs[] = { L1 };
|
||||
|
||||
static const int kLinkageAreaSize = 68;
|
||||
static const int kcalleeAreaSize = 80; // The max size.
|
||||
|
@ -784,12 +784,7 @@ namespace nanojit
|
|||
{
|
||||
uint32_t a = ins->paramArg();
|
||||
uint32_t kind = ins->paramKind();
|
||||
// prepResultReg(ins, rmask(argRegs[a]));
|
||||
if (kind == 0) {
|
||||
prepResultReg(ins, rmask(argRegs[a]));
|
||||
} else {
|
||||
prepResultReg(ins, rmask(savedRegs[a]));
|
||||
}
|
||||
prepResultReg(ins, rmask(argRegs[a]));
|
||||
}
|
||||
|
||||
void Assembler::asm_int(LInsp ins)
|
||||
|
|
|
@ -173,7 +173,12 @@ namespace nanojit
|
|||
typedef int RegisterMask;
|
||||
#define _rmask_(r) (1<<(r))
|
||||
|
||||
static const int NumSavedRegs = 6;
|
||||
// Assembler::savedRegs[] is not needed for sparc because the
|
||||
// registers are already saved automatically by "save" instruction.
|
||||
// But NumSavedRegs is used as the length of savedRegs in LIR.h and Assembler.h.
|
||||
// NumSavedRegs to be zero will cause a zero length array.
|
||||
// So dummy L1 is added and NumSavedRegs is set to 1.
|
||||
static const int NumSavedRegs = 1;
|
||||
static const RegisterMask SavedRegs = 1<<L1 | 1<<L3 | 1<<L5 | 1<<L7 |
|
||||
1<<I0 | 1<<I1 | 1<<I2 | 1<<I3 |
|
||||
1<<I4 | 1<<I5;
|
||||
|
|
Загрузка…
Ссылка в новой задаче