mirror of https://github.com/xemu-project/xemu.git
tcg: Split out tcg_raise_tb_overflow
Allow other places in tcg to restart with a smaller tb. Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
dc09f047ed
commit
db6b7d0c69
|
@ -346,6 +346,12 @@ static void set_jmp_reset_offset(TCGContext *s, int which)
|
||||||
s->tb_jmp_reset_offset[which] = tcg_current_code_size(s);
|
s->tb_jmp_reset_offset[which] = tcg_current_code_size(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Signal overflow, starting over with fewer guest insns. */
|
||||||
|
static void QEMU_NORETURN tcg_raise_tb_overflow(TCGContext *s)
|
||||||
|
{
|
||||||
|
siglongjmp(s->jmp_trans, -2);
|
||||||
|
}
|
||||||
|
|
||||||
#define C_PFX1(P, A) P##A
|
#define C_PFX1(P, A) P##A
|
||||||
#define C_PFX2(P, A, B) P##A##_##B
|
#define C_PFX2(P, A, B) P##A##_##B
|
||||||
#define C_PFX3(P, A, B, C) P##A##_##B##_##C
|
#define C_PFX3(P, A, B, C) P##A##_##B##_##C
|
||||||
|
@ -1310,8 +1316,7 @@ static TCGTemp *tcg_temp_alloc(TCGContext *s)
|
||||||
int n = s->nb_temps++;
|
int n = s->nb_temps++;
|
||||||
|
|
||||||
if (n >= TCG_MAX_TEMPS) {
|
if (n >= TCG_MAX_TEMPS) {
|
||||||
/* Signal overflow, starting over with fewer guest insns. */
|
tcg_raise_tb_overflow(s);
|
||||||
siglongjmp(s->jmp_trans, -2);
|
|
||||||
}
|
}
|
||||||
return memset(&s->temps[n], 0, sizeof(TCGTemp));
|
return memset(&s->temps[n], 0, sizeof(TCGTemp));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue