summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2015-12-01 08:10:28 -0800
committerRichard Henderson <rth@twiddle.net>2015-12-01 14:36:32 -0800
commitb17a6d3390f87620735f7efb03bb1c96682ff449 (patch)
treefa528a68581ad3d8775a1ce86c65dc00189b47a1
parenta2485925f76d01795f041fd63663d8582139fda4 (diff)
downloadhqemu-b17a6d3390f87620735f7efb03bb1c96682ff449.zip
hqemu-b17a6d3390f87620735f7efb03bb1c96682ff449.tar.gz
tcg: Increase the highwater reservation
If there are a lot of guest memory ops in the TB, the amount of code generated by tcg_out_tb_finalize could be well more than 1k. In the short term, increase the reservation larger than any TB seen in practice. Reported-by: Aurelien Jarno <aurelien@aurel32.net> Reviewed-by: Aurelien Jarno <aurelien@aurel32.net> Tested-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Richard Henderson <rth@twiddle.net>
-rw-r--r--tcg/tcg.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/tcg/tcg.c b/tcg/tcg.c
index b20ed19..a163541 100644
--- a/tcg/tcg.c
+++ b/tcg/tcg.c
@@ -388,7 +388,11 @@ void tcg_prologue_init(TCGContext *s)
/* Compute a high-water mark, at which we voluntarily flush the buffer
and start over. The size here is arbitrary, significantly larger
than we expect the code generation for any one opcode to require. */
- s->code_gen_highwater = s->code_gen_buffer + (total_size - 1024);
+ /* ??? We currently have no good estimate for, or checks in,
+ tcg_out_tb_finalize. If there are quite a lot of guest memory ops,
+ the number of out-of-line fragments could be quite high. In the
+ short-term, increase the highwater buffer. */
+ s->code_gen_highwater = s->code_gen_buffer + (total_size - 64*1024);
tcg_register_jit(s->code_gen_buffer, total_size);
OpenPOWER on IntegriCloud