We have several statically sized arrays attached to the TCGContext structure. For the most part, these arrays are sized unreasonably large -- there are rarely more than 3 labels in a TB, or more than a few dozen memory operations.
We already have tcg_malloc, which manages a pooled allocator attached to the TCGContext. We can easily use this to dynamically allocate both of the structures mentioned above. This both minimizes the memory that we do use, and also eliminates some arbitrary limits. In order to convert TCGLabel, we need to stop referencing them via indicies in an array and instead manipulate them via pointers. This is mechanical but pervasive, touching all front ends and all back ends. r~ Richard Henderson (5): tcg: Use tcg_malloc to allocate TCGLabelQemuLdst tcg-ia64: Use tcg_malloc to allocate TCGLabelQemuLdst tcg: Change translator-side labels to a pointer tcg: Change generator-side labels to a pointer tcg: Use tcg_malloc to allocate TCGLabel include/exec/gen-icount.h | 4 +- target-alpha/translate.c | 4 +- target-arm/translate-a64.c | 26 ++++----- target-arm/translate.c | 8 +-- target-arm/translate.h | 4 +- target-cris/translate.c | 23 +++----- target-cris/translate_v10.c | 6 +-- target-i386/translate.c | 33 ++++++------ target-lm32/translate.c | 20 ++++--- target-m68k/translate.c | 8 +-- target-microblaze/translate.c | 12 ++--- target-mips/translate.c | 94 ++++++++++++++++---------------- target-moxie/translate.c | 2 +- target-openrisc/translate.c | 34 ++++++------ target-ppc/translate.c | 123 ++++++++++++++++++++---------------------- target-s390x/translate.c | 7 +-- target-sh4/translate.c | 22 ++++---- target-sparc/translate.c | 11 ++-- target-tricore/translate.c | 6 +-- target-unicore32/translate.c | 6 +-- target-xtensa/translate.c | 18 +++---- tcg/aarch64/tcg-target.c | 15 +++--- tcg/arm/tcg-target.c | 14 ++--- tcg/i386/tcg-target.c | 72 ++++++++++++------------- tcg/ia64/tcg-target.c | 35 ++++++------ tcg/mips/tcg-target.c | 17 +++--- tcg/ppc/tcg-target.c | 20 ++++--- tcg/s390/tcg-target.c | 31 +++++------ tcg/sparc/tcg-target.c | 22 ++++---- tcg/tcg-be-ldst.h | 26 +++++---- tcg/tcg-op.c | 25 ++++----- tcg/tcg-op.h | 19 +++---- tcg/tcg.c | 45 ++++++++-------- tcg/tcg.h | 34 ++++++++++-- tcg/tci/tcg-target.c | 13 +++-- 35 files changed, 417 insertions(+), 442 deletions(-) -- 2.1.0