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:
Leon Sha 2009-11-25 15:24:23 +08:00
Родитель 391c15f438
Коммит 79857bda92
2 изменённых файлов: 8 добавлений и 8 удалений

Просмотреть файл

@ -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;