Fixed incorrect assumption in HASHJMP that the base table for a mode

will always be allocated when a fixed mode is first used.
This commit is contained in:
Aaron Giles 2008-07-01 04:40:25 +00:00
parent 58c7f26d33
commit 10bca54ab0
2 changed files with 2 additions and 2 deletions

View File

@ -3165,7 +3165,7 @@ static x86code *op_hashjmp(drcbe_state *drcbe, x86code *dst, const drcuml_instru
emit_mov_r64_m64(&dst, REG_RSP, MABS(drcbe, &drcbe->hashstacksave)); // mov rsp,[hashstacksave]
/* fixed mode cases */
if (modep.type == DRCUML_PTYPE_IMMEDIATE)
if (modep.type == DRCUML_PTYPE_IMMEDIATE && drcbe->hash->base[modep.value] != drcbe->hash->emptyl1)
{
/* a straight immediate jump is direct, though we need the PC in EAX in case of failure */
if (pcp.type == DRCUML_PTYPE_IMMEDIATE)

View File

@ -3290,7 +3290,7 @@ static x86code *op_hashjmp(drcbe_state *drcbe, x86code *dst, const drcuml_instru
emit_mov_r32_m32(&dst, REG_ESP, MABS(&drcbe->hashstacksave)); // mov esp,[hashstacksave]
/* fixed mode cases */
if (modep.type == DRCUML_PTYPE_IMMEDIATE)
if (modep.type == DRCUML_PTYPE_IMMEDIATE && drcbe->hash->base[modep.value] != drcbe->hash->emptyl1)
{
/* a straight immediate jump is direct, though we need the PC in EAX in case of failure */
if (pcp.type == DRCUML_PTYPE_IMMEDIATE)