Avoid heap corruption on android
No idea why this happens. Avoiding malloc/free during compile seems to help.
This commit is contained in:
parent
5d8d1bd107
commit
7b596bd388
|
@ -1096,19 +1096,19 @@ void StoreReg(eReg rd,u32 regn,ConditionCode cc=CC_AL)
|
||||||
}
|
}
|
||||||
|
|
||||||
//very quick-and-dirty register rename based virtualisation
|
//very quick-and-dirty register rename based virtualisation
|
||||||
map<u32,u32> renamed_regs;
|
u32 renamed_regs[16];
|
||||||
u32 rename_reg_base;
|
u32 rename_reg_base;
|
||||||
|
|
||||||
void RenameRegReset()
|
void RenameRegReset()
|
||||||
{
|
{
|
||||||
rename_reg_base=r1;
|
rename_reg_base=r1;
|
||||||
renamed_regs.clear();
|
memset(renamed_regs, 0, sizeof(renamed_regs));
|
||||||
}
|
}
|
||||||
|
|
||||||
//returns new reg #. didrn is true if a rename mapping was added
|
//returns new reg #. didrn is true if a rename mapping was added
|
||||||
u32 RenameReg(u32 reg, bool& didrn)
|
u32 RenameReg(u32 reg, bool& didrn)
|
||||||
{
|
{
|
||||||
if (renamed_regs.find(reg)==renamed_regs.end())
|
if (renamed_regs[reg] == 0)
|
||||||
{
|
{
|
||||||
renamed_regs[reg]=rename_reg_base;
|
renamed_regs[reg]=rename_reg_base;
|
||||||
rename_reg_base++;
|
rename_reg_base++;
|
||||||
|
@ -1209,7 +1209,7 @@ void VirtualizeOpcode(u32 opcd,u32 flag,u32 pc)
|
||||||
StoreAndRename(orig,16);
|
StoreAndRename(orig,16);
|
||||||
|
|
||||||
//Sanity check ..
|
//Sanity check ..
|
||||||
if (renamed_regs.find(15)!=renamed_regs.end())
|
if (renamed_regs[15] != 0)
|
||||||
{
|
{
|
||||||
verify(flag&OP_READS_PC || (flag&OP_SETS_PC && !(flag&OP_IS_COND)));
|
verify(flag&OP_READS_PC || (flag&OP_SETS_PC && !(flag&OP_IS_COND)));
|
||||||
}
|
}
|
||||||
|
@ -1533,7 +1533,7 @@ void armv_MOV32(eReg regn, u32 imm)
|
||||||
No sanity checks on arm ..
|
No sanity checks on arm ..
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#endif // HOST_CPU
|
#endif // HOST_CPU == CPU_ARM
|
||||||
|
|
||||||
//Run a timeslice for ARMREC
|
//Run a timeslice for ARMREC
|
||||||
//CycleCount is pretty much fixed to (512*32) for now (might change to a diff constant, but will be constant)
|
//CycleCount is pretty much fixed to (512*32) for now (might change to a diff constant, but will be constant)
|
||||||
|
@ -1690,8 +1690,8 @@ extern "C" void CompileCode()
|
||||||
armv_imm_to_reg(15,pc+8);
|
armv_imm_to_reg(15,pc+8);
|
||||||
|
|
||||||
else*/
|
else*/
|
||||||
#if HOST_CPU==CPU_X86
|
#if HOST_CPU==CPU_X86
|
||||||
armv_imm_to_reg(15,rand());
|
armv_imm_to_reg(15,rand());
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VirtualizeOpcode(opcd,op_flags,pc);
|
VirtualizeOpcode(opcd,op_flags,pc);
|
||||||
|
|
Loading…
Reference in New Issue