On 09/18/2015 06:08 AM, Peter Maydell wrote:
On 18 September 2015 at 05:55, Richard Henderson <r...@twiddle.net> wrote:
We can now restore state without retranslation.

Signed-off-by: Richard Henderson <r...@twiddle.net>
---
+/* Encode the data collected about the instructions while compiling TB.
+   Place the data at BLOCK, and return the number of bytes consumed.
+
+   The logical table consisits of TARGET_INSN_START_WORDS target_ulong's,

"consists". No apostrophe in 'target_ulongs'.

+   which come from the target's insn_start data, followed by a uintptr_t
+   which comes from the host pc of the end of the code implementing the insn.
+
+   Each line of the table is encoded as sleb128 deltas from the previous
+   line.  The seed for the first line is { tb->pc, 0..., tb->tc_ptr }.
+   That is, the first column is seeded with the guest pc, the last column
+   with the host pc, and the middle columns with zeros.  */

You're still not allowing for your worst-case datatable size when we
calculate tcg_ctx.code_gen_buffer_max_size.

I'll note that the current worst-case estimate is way too big: 122kB.

Which honestly means we're wasting a ton of space at the end of the code_gen_buffer. While down-thread we talk about guard pages and sigsegv handlers etc, I now believe this shouldn't be a blocker for this patch set.

(And in particular, setting up a SEH handler for Win32 to act as a sigsegv handler is just too annoyingly difficult. It'd be one thing if we only targeted VC++, but doing SEH in GCC at present is just Too Ugly. So we'd have two different schemes for win32 and posix, which doesn't seem to be the best of ideas.)


r~

Reply via email to