mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-05 15:10:27 +02:00
Add code to calculate code buffer size based on devel time information.
* lib/jit_aarch64-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c, lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c, lib/jit_s390x-sz.c, lib/jit_size.c, lib/jit_sparc-sz.c, lib/jit_x86-sz.c: New files implementing static tables with longest known instructions length generated to match a lightning instruction. These tables should make it easier to make it very unlikely to ever miscalculate, or by too much, the size of a code buffer. * lib/jit_size.c: New file that aids to either collect jit code size information, or use the information depending on build options. * size.c: New helper file that parses input for, and create an initial jit_$arch-sz.c file, that needs some minor edit for arches with multiple configurations. * configure.ac, Makefile.am: Add the new, devel mode only --enable-devel-get-jit-size configure option, that sets compile time flags to collect jit code size information, that will be used as input for the "noinst size program". * lib/jit_aarch64.c, lib/jit_arm.c, lib/jit_disasm.c, lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_memory.c, lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c, lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c: Minor changes for the --enable-devel-get-jit-size build mode, as well as the "production build mode" with jit code size information.
This commit is contained in:
parent
95e3fbc8bc
commit
b768fab8b1
29 changed files with 5269 additions and 48 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -13,10 +13,12 @@ config.status
|
||||||
config.sub
|
config.sub
|
||||||
configure
|
configure
|
||||||
install-sh
|
install-sh
|
||||||
|
jit_*-sz.c
|
||||||
libtool
|
libtool
|
||||||
lightning-*.tar.*
|
lightning-*.tar.*
|
||||||
ltmain.sh
|
ltmain.sh
|
||||||
missing
|
missing
|
||||||
|
size
|
||||||
stamp-h1
|
stamp-h1
|
||||||
test-driver
|
test-driver
|
||||||
check/.deps
|
check/.deps
|
||||||
|
|
32
ChangeLog
32
ChangeLog
|
@ -1,3 +1,35 @@
|
||||||
|
2013-10-24 Paulo Andrade <pcpa@gnu.org>
|
||||||
|
|
||||||
|
* lib/jit_aarch64-sz.c, lib/jit_arm-sz.c, lib/jit_hppa-sz.c,
|
||||||
|
lib/jit_ia64-sz.c, lib/jit_mips-sz.c, lib/jit_ppc-sz.c,
|
||||||
|
lib/jit_s390x-sz.c, lib/jit_size.c, lib/jit_sparc-sz.c,
|
||||||
|
lib/jit_x86-sz.c: New files implementing static tables
|
||||||
|
with longest known instructions length generated to match
|
||||||
|
a lightning instruction. These tables should make it easier
|
||||||
|
to make it very unlikely to ever miscalculate, or by too
|
||||||
|
much, the size of a code buffer.
|
||||||
|
|
||||||
|
* lib/jit_size.c: New file that aids to either collect
|
||||||
|
jit code size information, or use the information depending
|
||||||
|
on build options.
|
||||||
|
|
||||||
|
* size.c: New helper file that parses input for, and create
|
||||||
|
an initial jit_$arch-sz.c file, that needs some minor edit
|
||||||
|
for arches with multiple configurations.
|
||||||
|
|
||||||
|
* configure.ac, Makefile.am: Add the new, devel mode only
|
||||||
|
--enable-devel-get-jit-size configure option, that sets
|
||||||
|
compile time flags to collect jit code size information,
|
||||||
|
that will be used as input for the "noinst size program".
|
||||||
|
|
||||||
|
* lib/jit_aarch64.c, lib/jit_arm.c, lib/jit_disasm.c,
|
||||||
|
lib/jit_hppa.c, lib/jit_ia64.c, lib/jit_memory.c,
|
||||||
|
lib/jit_mips.c, lib/jit_ppc.c, lib/jit_s390x.c,
|
||||||
|
lib/jit_sparc.c, lib/jit_x86.c, lib/lightning.c: Minor
|
||||||
|
changes for the --enable-devel-get-jit-size build mode,
|
||||||
|
as well as the "production build mode" with jit code
|
||||||
|
size information.
|
||||||
|
|
||||||
2013-10-14 Paulo Andrade <pcpa@gnu.org>
|
2013-10-14 Paulo Andrade <pcpa@gnu.org>
|
||||||
|
|
||||||
* include/lightning.h, lib/lightning.c: Add the new
|
* include/lightning.h, lib/lightning.c: Add the new
|
||||||
|
|
19
Makefile.am
19
Makefile.am
|
@ -21,3 +21,22 @@ SUBDIRS = \
|
||||||
doc \
|
doc \
|
||||||
include \
|
include \
|
||||||
lib
|
lib
|
||||||
|
|
||||||
|
if get_jit_size
|
||||||
|
JIT_SIZE_PATH = "$(top_builddir)/jit_$(cpu)-sz.c"
|
||||||
|
AM_CPPFLAGS=-DGET_JIT_SIZE=1 -DJIT_SIZE_PATH='$(JIT_SIZE_PATH)'
|
||||||
|
AM_CFLAGS = -I$(top_srcdir)/include -D_GNU_SOURCE $(LIGHTNING_CFLAGS)
|
||||||
|
|
||||||
|
noinst_PROGRAMS = size
|
||||||
|
size_LDADD = $(top_builddir)/lib/liblightning.la -lm $(SHLIB)
|
||||||
|
size_SOURCES = size.c
|
||||||
|
|
||||||
|
get_jit_size:: $(JIT_SIZE_PATH)
|
||||||
|
|
||||||
|
$(JIT_SIZE_PATH):
|
||||||
|
make clean
|
||||||
|
make CFLAGS='-O0 -g3' check
|
||||||
|
$(top_builddir)/size
|
||||||
|
|
||||||
|
CLEANFILES = $(JIT_SIZE_PATH)
|
||||||
|
endif
|
||||||
|
|
17
configure.ac
17
configure.ac
|
@ -27,13 +27,16 @@ case "$target_cpu" in
|
||||||
ia64)
|
ia64)
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
# Only supported mode
|
# Only supported mode
|
||||||
*hpux*) CFLAGS="$CFLAGS -mlp64" ;;
|
*hpux*)
|
||||||
|
LIGHTNING_CFLAGS="$LIGHTNING_CFLAGS -mlp64" ;;
|
||||||
*) ;;
|
*) ;;
|
||||||
esac ;;
|
esac ;;
|
||||||
*mips*)
|
*mips*)
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
# Extra flags to build with gcc 3.x
|
# (Hack) Flags to pass configure with gcc 3.x
|
||||||
*irix*) CFLAGS="$CFLAGS -D__c99 -Drestrict=" ;;
|
# Should not set LIGHTNINT_CFLAGS
|
||||||
|
*irix*)
|
||||||
|
CFLAGS="$CFLAGS -D__c99 -Drestrict=";;
|
||||||
*) ;;
|
*) ;;
|
||||||
esac ;;
|
esac ;;
|
||||||
*) ;;
|
*) ;;
|
||||||
|
@ -89,6 +92,13 @@ else
|
||||||
DEBUG=no
|
DEBUG=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# This option is only useful during development.
|
||||||
|
AC_ARG_ENABLE(devel-get-jit-size,
|
||||||
|
AS_HELP_STRING([--enable-devel-get-jit-size],
|
||||||
|
[Devel mode to regenerate jit size information]),
|
||||||
|
[GET_JIT_SIZE=$enableval], [GET_JIT_SIZE=no])
|
||||||
|
AM_CONDITIONAL(get_jit_size, [test $GET_JIT_SIZE = yes])
|
||||||
|
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
*bsd*) SHLIB="" ;;
|
*bsd*) SHLIB="" ;;
|
||||||
*hpux*) SHLIB="-ldld" ;;
|
*hpux*) SHLIB="-ldld" ;;
|
||||||
|
@ -213,6 +223,7 @@ if test $cpu=arm; then
|
||||||
AC_CHECK_LIB(m, sqrtf, ,
|
AC_CHECK_LIB(m, sqrtf, ,
|
||||||
[AC_MSG_ERROR([sqrtf required but not available])])
|
[AC_MSG_ERROR([sqrtf required but not available])])
|
||||||
fi
|
fi
|
||||||
|
AC_SUBST(cpu)
|
||||||
|
|
||||||
AC_SUBST([LIGHTNING_CFLAGS])
|
AC_SUBST([LIGHTNING_CFLAGS])
|
||||||
|
|
||||||
|
|
|
@ -432,8 +432,14 @@ struct jit_compiler {
|
||||||
} prolog;
|
} prolog;
|
||||||
jit_bool_t jump;
|
jit_bool_t jump;
|
||||||
#endif
|
#endif
|
||||||
/* global flag for code buffer heuristic size computation */
|
#if GET_JIT_SIZE
|
||||||
|
/* Temporary storage to calculate instructions length */
|
||||||
|
jit_word_t size;
|
||||||
|
/* Global flag for code buffer heuristic size computation */
|
||||||
jit_word_t mult;
|
jit_word_t mult;
|
||||||
|
/* Pointer to code to prevent miscalculation if reallocating buffer */
|
||||||
|
jit_uint8_t *cptr;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#define _jitc _jit->comp
|
#define _jitc _jit->comp
|
||||||
|
@ -557,13 +563,26 @@ extern void jit_alloc(jit_pointer_t*, jit_word_t);
|
||||||
extern void jit_realloc(jit_pointer_t*, jit_word_t, jit_word_t);
|
extern void jit_realloc(jit_pointer_t*, jit_word_t, jit_word_t);
|
||||||
void jit_free(jit_pointer_t*);
|
void jit_free(jit_pointer_t*);
|
||||||
|
|
||||||
#if HAVE_MREMAP
|
extern void jit_init_size(void);
|
||||||
# define jit_remap() _jit_remap(_jit)
|
extern void jit_finish_size(void);
|
||||||
extern jit_bool_t _jit_remap(jit_state_t*);
|
|
||||||
|
#if GET_JIT_SIZE
|
||||||
|
# define jit_size_prepare() _jit_size_prepare(_jit)
|
||||||
|
extern void
|
||||||
|
_jit_size_prepare(jit_state_t*);
|
||||||
|
|
||||||
|
# define jit_size_collect(node) _jit_size_collect(_jit, node)
|
||||||
|
extern void
|
||||||
|
_jit_size_collect(jit_state_t*, jit_node_t*);
|
||||||
#else
|
#else
|
||||||
# define jit_remap() 0
|
# define jit_get_size() _jit_get_size(_jit)
|
||||||
|
extern jit_word_t
|
||||||
|
_jit_get_size(jit_state_t*);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern jit_word_t
|
||||||
|
jit_get_max_instr(void);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Externs
|
* Externs
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -17,41 +17,56 @@
|
||||||
AM_CFLAGS = -I$(top_srcdir)/include -D_GNU_SOURCE $(LIGHTNING_CFLAGS)
|
AM_CFLAGS = -I$(top_srcdir)/include -D_GNU_SOURCE $(LIGHTNING_CFLAGS)
|
||||||
liblightning_LTLIBRARIES = liblightning.la
|
liblightning_LTLIBRARIES = liblightning.la
|
||||||
|
|
||||||
|
if get_jit_size
|
||||||
|
JIT_SIZE_PATH = "$(top_builddir)/jit_$(cpu)-sz.c"
|
||||||
|
AM_CPPFLAGS=-DGET_JIT_SIZE=1 -DJIT_SIZE_PATH='$(JIT_SIZE_PATH)'
|
||||||
|
endif
|
||||||
|
|
||||||
liblightningdir = $(libdir)
|
liblightningdir = $(libdir)
|
||||||
liblightning_la_SOURCES = \
|
liblightning_la_SOURCES = \
|
||||||
jit_disasm.c \
|
jit_disasm.c \
|
||||||
jit_memory.c \
|
jit_memory.c \
|
||||||
jit_note.c \
|
jit_note.c \
|
||||||
jit_print.c \
|
jit_print.c \
|
||||||
|
jit_size.c \
|
||||||
lightning.c
|
lightning.c
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
jit_aarch64.c \
|
jit_aarch64.c \
|
||||||
jit_aarch64-cpu.c \
|
jit_aarch64-cpu.c \
|
||||||
jit_aarch64-fpu.c \
|
jit_aarch64-fpu.c \
|
||||||
|
jit_aarch64-sz.c \
|
||||||
jit_arm.c \
|
jit_arm.c \
|
||||||
jit_arm-cpu.c \
|
jit_arm-cpu.c \
|
||||||
jit_arm-swf.c \
|
jit_arm-swf.c \
|
||||||
jit_arm-vfp.c \
|
jit_arm-vfp.c \
|
||||||
|
jit_arm-sz.c \
|
||||||
jit_hppa.c \
|
jit_hppa.c \
|
||||||
jit_hppa-cpu.c \
|
jit_hppa-cpu.c \
|
||||||
jit_hppa-fpu.c \
|
jit_hppa-fpu.c \
|
||||||
|
jit_hppa-sz.c \
|
||||||
jit_ia64.c \
|
jit_ia64.c \
|
||||||
jit_ia64-cpu.c \
|
jit_ia64-cpu.c \
|
||||||
jit_ia64-fpu.c \
|
jit_ia64-fpu.c \
|
||||||
|
jit_ia64-sz.c \
|
||||||
jit_mips.c \
|
jit_mips.c \
|
||||||
jit_mips-cpu.c \
|
jit_mips-cpu.c \
|
||||||
jit_mips-fpu.c \
|
jit_mips-fpu.c \
|
||||||
|
jit_mips-sz.c \
|
||||||
jit_ppc.c \
|
jit_ppc.c \
|
||||||
jit_ppc-cpu.c \
|
jit_ppc-cpu.c \
|
||||||
jit_ppc-fpu.c \
|
jit_ppc-fpu.c \
|
||||||
|
jit_ppc-sz.c \
|
||||||
jit_s390x.c \
|
jit_s390x.c \
|
||||||
jit_s390x-cpu.c \
|
jit_s390x-cpu.c \
|
||||||
jit_s390x-fpu.c \
|
jit_s390x-fpu.c \
|
||||||
|
jit_s390x-sz.c \
|
||||||
jit_sparc.c \
|
jit_sparc.c \
|
||||||
jit_sparc-cpu.c \
|
jit_sparc-cpu.c \
|
||||||
jit_sparc-fpu.c \
|
jit_sparc-fpu.c \
|
||||||
|
jit_sparc-sz.c \
|
||||||
jit_x86.c \
|
jit_x86.c \
|
||||||
jit_x86-cpu.c \
|
jit_x86-cpu.c \
|
||||||
jit_x86-sse.c \
|
jit_x86-sse.c \
|
||||||
jit_x86-x87.c
|
jit_x86-x87.c \
|
||||||
|
jit_x86-sz.c
|
||||||
|
|
350
lib/jit_aarch64-sz.c
Normal file
350
lib/jit_aarch64-sz.c
Normal file
|
@ -0,0 +1,350 @@
|
||||||
|
|
||||||
|
#if __WORDSIZE == 64
|
||||||
|
#define JIT_INSTR_MAX 64
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
64,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
64,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
20,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* __WORDSIZE */
|
|
@ -711,7 +711,7 @@ _emit_code(jit_state_t *_jit)
|
||||||
} \
|
} \
|
||||||
break
|
break
|
||||||
for (node = _jitc->head; node; node = node->next) {
|
for (node = _jitc->head; node; node = node->next) {
|
||||||
if (_jit->pc.uc >= _jitc->code.end && !jit_remap())
|
if (_jit->pc.uc >= _jitc->code.end)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
value = jit_classify(node->code);
|
value = jit_classify(node->code);
|
||||||
|
|
704
lib/jit_arm-sz.c
Normal file
704
lib/jit_arm-sz.c
Normal file
|
@ -0,0 +1,704 @@
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
#if defined(__ARM_PCS_VFP)
|
||||||
|
#define JIT_INSTR_MAX 44
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
26,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
32,
|
||||||
|
44,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
18,
|
||||||
|
22,
|
||||||
|
18,
|
||||||
|
22,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
20,
|
||||||
|
32,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
24,
|
||||||
|
36,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
24,
|
||||||
|
36,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
18,
|
||||||
|
30,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
20,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
32,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
20,
|
||||||
|
36,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
24,
|
||||||
|
40,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
24,
|
||||||
|
40,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
18,
|
||||||
|
34,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
20,
|
||||||
|
36,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
20,
|
||||||
|
36,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* __ARM_PCS_VFP */
|
||||||
|
#endif /* __WORDSIZE */
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
#if !defined(__ARM_PCS_VFP)
|
||||||
|
#define JIT_INSTR_MAX 74
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
32,
|
||||||
|
44,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
18,
|
||||||
|
22,
|
||||||
|
18,
|
||||||
|
22,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
14,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
22,
|
||||||
|
22,
|
||||||
|
22,
|
||||||
|
22,
|
||||||
|
22,
|
||||||
|
22,
|
||||||
|
22,
|
||||||
|
22,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
18,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
20,
|
||||||
|
32,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
24,
|
||||||
|
30,
|
||||||
|
50,
|
||||||
|
58,
|
||||||
|
50,
|
||||||
|
58,
|
||||||
|
50,
|
||||||
|
58,
|
||||||
|
50,
|
||||||
|
58,
|
||||||
|
50,
|
||||||
|
58,
|
||||||
|
54,
|
||||||
|
62,
|
||||||
|
24,
|
||||||
|
30,
|
||||||
|
50,
|
||||||
|
58,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
32,
|
||||||
|
22,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
24,
|
||||||
|
24,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
44,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
52,
|
||||||
|
60,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
52,
|
||||||
|
60,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
28,
|
||||||
|
0,
|
||||||
|
34,
|
||||||
|
36,
|
||||||
|
34,
|
||||||
|
36,
|
||||||
|
34,
|
||||||
|
36,
|
||||||
|
34,
|
||||||
|
36,
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
26,
|
||||||
|
28,
|
||||||
|
34,
|
||||||
|
28,
|
||||||
|
36,
|
||||||
|
28,
|
||||||
|
34,
|
||||||
|
28,
|
||||||
|
34,
|
||||||
|
28,
|
||||||
|
34,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
66,
|
||||||
|
70,
|
||||||
|
66,
|
||||||
|
70,
|
||||||
|
66,
|
||||||
|
70,
|
||||||
|
66,
|
||||||
|
70,
|
||||||
|
66,
|
||||||
|
70,
|
||||||
|
70,
|
||||||
|
74,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
66,
|
||||||
|
70,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
36,
|
||||||
|
22,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
32,
|
||||||
|
50,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
68,
|
||||||
|
72,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
68,
|
||||||
|
72,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
32,
|
||||||
|
34,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
6,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* __ARM_PCS_VFP */
|
||||||
|
#endif /* __WORDSIZE */
|
|
@ -1026,7 +1026,7 @@ _emit_code(jit_state_t *_jit)
|
||||||
} \
|
} \
|
||||||
break
|
break
|
||||||
for (node = _jitc->head; node; node = node->next) {
|
for (node = _jitc->head; node; node = node->next) {
|
||||||
if (_jit->pc.uc >= _jitc->code.end && !jit_remap())
|
if (_jit->pc.uc >= _jitc->code.end)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
value = jit_classify(node->code);
|
value = jit_classify(node->code);
|
||||||
|
|
|
@ -225,6 +225,7 @@ disasm_print_address(bfd_vma addr, struct disassemble_info *info)
|
||||||
(*info->fprintf_func)(info->stream, "0x%s", buffer);
|
(*info->fprintf_func)(info->stream, "0x%s", buffer);
|
||||||
|
|
||||||
# define _jit disasm_jit
|
# define _jit disasm_jit
|
||||||
|
# undef jit_pointer_p
|
||||||
# define jit_pointer_p(u) \
|
# define jit_pointer_p(u) \
|
||||||
((u) >= _jit->code.ptr && (u) < _jit->pc.uc)
|
((u) >= _jit->code.ptr && (u) < _jit->pc.uc)
|
||||||
if (jit_pointer_p((jit_uint8_t *)(jit_word_t)addr)) {
|
if (jit_pointer_p((jit_uint8_t *)(jit_word_t)addr)) {
|
||||||
|
|
350
lib/jit_hppa-sz.c
Normal file
350
lib/jit_hppa-sz.c
Normal file
|
@ -0,0 +1,350 @@
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
#define JIT_INSTR_MAX 64
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
64,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
28,
|
||||||
|
36,
|
||||||
|
40,
|
||||||
|
44,
|
||||||
|
32,
|
||||||
|
40,
|
||||||
|
36,
|
||||||
|
40,
|
||||||
|
36,
|
||||||
|
40,
|
||||||
|
40,
|
||||||
|
40,
|
||||||
|
40,
|
||||||
|
40,
|
||||||
|
36,
|
||||||
|
40,
|
||||||
|
36,
|
||||||
|
40,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
12,
|
||||||
|
40,
|
||||||
|
44,
|
||||||
|
64,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* __WORDSIZE */
|
|
@ -716,7 +716,7 @@ _emit_code(jit_state_t *_jit)
|
||||||
} \
|
} \
|
||||||
break
|
break
|
||||||
for (node = _jitc->head; node; node = node->next) {
|
for (node = _jitc->head; node; node = node->next) {
|
||||||
if (_jit->pc.uc >= _jitc->code.end && !jit_remap())
|
if (_jit->pc.uc >= _jitc->code.end)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
value = jit_classify(node->code);
|
value = jit_classify(node->code);
|
||||||
|
|
350
lib/jit_ia64-sz.c
Normal file
350
lib/jit_ia64-sz.c
Normal file
|
@ -0,0 +1,350 @@
|
||||||
|
|
||||||
|
#if __WORDSIZE == 64
|
||||||
|
#define JIT_INSTR_MAX 144
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
128,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
48,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
48,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
32,
|
||||||
|
48,
|
||||||
|
96,
|
||||||
|
80,
|
||||||
|
96,
|
||||||
|
80,
|
||||||
|
64,
|
||||||
|
80,
|
||||||
|
64,
|
||||||
|
80,
|
||||||
|
128,
|
||||||
|
112,
|
||||||
|
128,
|
||||||
|
112,
|
||||||
|
64,
|
||||||
|
80,
|
||||||
|
64,
|
||||||
|
80,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
0,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
0,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
32,
|
||||||
|
48,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
112,
|
||||||
|
112,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
112,
|
||||||
|
112,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
112,
|
||||||
|
112,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
112,
|
||||||
|
112,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
0,
|
||||||
|
48,
|
||||||
|
32,
|
||||||
|
64,
|
||||||
|
144,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
144,
|
||||||
|
144,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
80,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
48,
|
||||||
|
80,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
48,
|
||||||
|
80,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
96,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
32,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
112,
|
||||||
|
144,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
96,
|
||||||
|
128,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
32,
|
||||||
|
64,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
128,
|
||||||
|
144,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
80,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
48,
|
||||||
|
80,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
48,
|
||||||
|
80,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
48,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
64,
|
||||||
|
96,
|
||||||
|
48,
|
||||||
|
80,
|
||||||
|
32,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
112,
|
||||||
|
144,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
96,
|
||||||
|
128,
|
||||||
|
48,
|
||||||
|
64,
|
||||||
|
32,
|
||||||
|
64,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* __WORDSIZE */
|
|
@ -736,7 +736,6 @@ _jit_retval_d(jit_state_t *_jit, jit_int32_t r0)
|
||||||
jit_pointer_t
|
jit_pointer_t
|
||||||
_emit_code(jit_state_t *_jit)
|
_emit_code(jit_state_t *_jit)
|
||||||
{
|
{
|
||||||
jit_uint8_t *end;
|
|
||||||
jit_node_t *node;
|
jit_node_t *node;
|
||||||
jit_node_t *temp;
|
jit_node_t *temp;
|
||||||
jit_word_t word;
|
jit_word_t word;
|
||||||
|
@ -850,11 +849,13 @@ _emit_code(jit_state_t *_jit)
|
||||||
patch(word, node); \
|
patch(word, node); \
|
||||||
} \
|
} \
|
||||||
break
|
break
|
||||||
|
#if GET_JIT_SIZE
|
||||||
/* default of 64 bytes is too low for some possible
|
/* default of 64 bytes is too low for some possible
|
||||||
* quite long code generation sequences, e.g. qdivi */
|
* quite long code generation sequences, e.g. qdivi */
|
||||||
end = _jit->code.ptr + _jit->code.length - 4096;
|
_jitc->code.end = _jit->code.ptr + _jit->code.length - 4096;
|
||||||
|
#endif
|
||||||
for (node = _jitc->head; node; node = node->next) {
|
for (node = _jitc->head; node; node = node->next) {
|
||||||
if (_jit->pc.uc >= end && !jit_remap())
|
if (_jit->pc.uc >= _jitc->code.end)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
value = jit_classify(node->code);
|
value = jit_classify(node->code);
|
||||||
|
|
|
@ -86,29 +86,6 @@ jit_free(jit_pointer_t *ptr)
|
||||||
*ptr = NULL;
|
*ptr = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if HAVE_MREMAP
|
|
||||||
jit_bool_t
|
|
||||||
_jit_remap(jit_state_t *_jit)
|
|
||||||
{
|
|
||||||
jit_uint8_t *code;
|
|
||||||
jit_word_t length;
|
|
||||||
|
|
||||||
length = _jitc->pool.length * 1024 * (_jitc->mult + 1);
|
|
||||||
|
|
||||||
code = mremap(_jit->code.ptr, _jit->code.length, length, 0, NULL);
|
|
||||||
if (code != MAP_FAILED) {
|
|
||||||
assert(code == _jit->code.ptr);
|
|
||||||
++_jitc->mult;
|
|
||||||
_jit->code.length = length;
|
|
||||||
_jitc->code.end = _jit->code.ptr + _jit->code.length - 64;
|
|
||||||
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (0);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
jit_default_alloc_func(size_t size)
|
jit_default_alloc_func(size_t size)
|
||||||
{
|
{
|
||||||
|
|
704
lib/jit_mips-sz.c
Normal file
704
lib/jit_mips-sz.c
Normal file
|
@ -0,0 +1,704 @@
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
#if defined(_ABIN32)
|
||||||
|
#define JIT_INSTR_MAX 44
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
44,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
44,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* _ABIN32 */
|
||||||
|
#endif /* __WORDSIZE */
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
#if !defined(_ABIN32)
|
||||||
|
#define JIT_INSTR_MAX 96
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
96,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
56,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
96,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
20,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
16,
|
||||||
|
40,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
36,
|
||||||
|
12,
|
||||||
|
36,
|
||||||
|
12,
|
||||||
|
36,
|
||||||
|
12,
|
||||||
|
36,
|
||||||
|
12,
|
||||||
|
36,
|
||||||
|
12,
|
||||||
|
36,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
36,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* _ABIN32 */
|
||||||
|
#endif /* __WORDSIZE */
|
|
@ -972,7 +972,7 @@ _emit_code(jit_state_t *_jit)
|
||||||
} \
|
} \
|
||||||
break
|
break
|
||||||
for (node = _jitc->head; node; node = node->next) {
|
for (node = _jitc->head; node; node = node->next) {
|
||||||
if (_jit->pc.uc >= _jitc->code.end && !jit_remap())
|
if (_jit->pc.uc >= _jitc->code.end)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
value = jit_classify(node->code);
|
value = jit_classify(node->code);
|
||||||
|
|
1056
lib/jit_ppc-sz.c
Normal file
1056
lib/jit_ppc-sz.c
Normal file
File diff suppressed because it is too large
Load diff
|
@ -869,7 +869,7 @@ _emit_code(jit_state_t *_jit)
|
||||||
} \
|
} \
|
||||||
break
|
break
|
||||||
for (node = _jitc->head; node; node = node->next) {
|
for (node = _jitc->head; node; node = node->next) {
|
||||||
if (_jit->pc.uc >= _jitc->code.end && !jit_remap())
|
if (_jit->pc.uc >= _jitc->code.end)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
value = jit_classify(node->code);
|
value = jit_classify(node->code);
|
||||||
|
|
350
lib/jit_s390x-sz.c
Normal file
350
lib/jit_s390x-sz.c
Normal file
|
@ -0,0 +1,350 @@
|
||||||
|
|
||||||
|
#if __WORDSIZE == 64
|
||||||
|
#define JIT_INSTR_MAX 68
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
2,
|
||||||
|
38,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
24,
|
||||||
|
8,
|
||||||
|
20,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
24,
|
||||||
|
60,
|
||||||
|
68,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
16,
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
32,
|
||||||
|
8,
|
||||||
|
20,
|
||||||
|
8,
|
||||||
|
20,
|
||||||
|
8,
|
||||||
|
24,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
24,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
18,
|
||||||
|
6,
|
||||||
|
18,
|
||||||
|
6,
|
||||||
|
18,
|
||||||
|
6,
|
||||||
|
18,
|
||||||
|
6,
|
||||||
|
18,
|
||||||
|
6,
|
||||||
|
18,
|
||||||
|
6,
|
||||||
|
18,
|
||||||
|
14,
|
||||||
|
6,
|
||||||
|
14,
|
||||||
|
6,
|
||||||
|
14,
|
||||||
|
6,
|
||||||
|
14,
|
||||||
|
6,
|
||||||
|
14,
|
||||||
|
6,
|
||||||
|
14,
|
||||||
|
6,
|
||||||
|
14,
|
||||||
|
6,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
6,
|
||||||
|
18,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
6,
|
||||||
|
14,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
26,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
26,
|
||||||
|
18,
|
||||||
|
18,
|
||||||
|
18,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
0,
|
||||||
|
18,
|
||||||
|
2,
|
||||||
|
18,
|
||||||
|
36,
|
||||||
|
0,
|
||||||
|
6,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
6,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
2,
|
||||||
|
10,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
18,
|
||||||
|
28,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
18,
|
||||||
|
28,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
6,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
6,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
26,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
2,
|
||||||
|
10,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
18,
|
||||||
|
28,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
18,
|
||||||
|
28,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* __WORDSIZE */
|
|
@ -701,7 +701,7 @@ _emit_code(jit_state_t *_jit)
|
||||||
} \
|
} \
|
||||||
break
|
break
|
||||||
for (node = _jitc->head; node; node = node->next) {
|
for (node = _jitc->head; node; node = node->next) {
|
||||||
if (_jit->pc.uc >= _jitc->code.end && !jit_remap())
|
if (_jit->pc.uc >= _jitc->code.end)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
value = jit_classify(node->code);
|
value = jit_classify(node->code);
|
||||||
|
|
128
lib/jit_size.c
Normal file
128
lib/jit_size.c
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* This file is part of GNU lightning.
|
||||||
|
*
|
||||||
|
* GNU lightning is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* GNU lightning is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Paulo Cesar Pereira de Andrade
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <lightning.h>
|
||||||
|
#include <lightning/jit_private.h>
|
||||||
|
#if GET_JIT_SIZE
|
||||||
|
# include <stdio.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Initialization
|
||||||
|
*/
|
||||||
|
static jit_int16_t _szs[jit_code_x86_retval_d + 1] = {
|
||||||
|
#if GET_JIT_SIZE
|
||||||
|
# define JIT_INSTR_MAX 256
|
||||||
|
#else
|
||||||
|
# if defined(__i386__) || defined(__x86_64__)
|
||||||
|
# include "jit_x86-sz.c"
|
||||||
|
# elif defined(__mips__)
|
||||||
|
# include "jit_mips-sz.c"
|
||||||
|
# elif defined(__arm__)
|
||||||
|
# include "jit_arm-sz.c"
|
||||||
|
# elif defined(__ppc__) || defined(__powerpc__)
|
||||||
|
# include "jit_ppc-sz.c"
|
||||||
|
# elif defined(__sparc__)
|
||||||
|
# include "jit_sparc-sz.c"
|
||||||
|
# elif defined(__ia64__)
|
||||||
|
# include "jit_ia64-sz.c"
|
||||||
|
# elif defined(__hppa__)
|
||||||
|
# include "jit_hppa-sz.c"
|
||||||
|
# elif defined(__aarch64__)
|
||||||
|
# include "jit_aarch64-sz.c"
|
||||||
|
# elif defined(__s390x__)
|
||||||
|
# include "jit_s390x-sz.c"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Implementation
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
jit_init_size(void)
|
||||||
|
{
|
||||||
|
#if DEBUG
|
||||||
|
# if !GET_JIT_SIZE
|
||||||
|
jit_word_t offset;
|
||||||
|
|
||||||
|
for (offset = 0; offset < jit_size(_szs); offset++)
|
||||||
|
if (_szs[offset] != 0)
|
||||||
|
return;
|
||||||
|
/* Ensure data was collected */
|
||||||
|
abort();
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#if GET_JIT_SIZE
|
||||||
|
void
|
||||||
|
_jit_size_prepare(jit_state_t *_jit)
|
||||||
|
{
|
||||||
|
_jitc->cptr = _jit->code.ptr;
|
||||||
|
_jitc->size = _jit->pc.w;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_jit_size_collect(jit_state_t *_jit, jit_node_t *node)
|
||||||
|
{
|
||||||
|
jit_word_t length;
|
||||||
|
|
||||||
|
if (_jitc->cptr == _jit->code.ptr) {
|
||||||
|
length = _jit->pc.w - _jitc->size;
|
||||||
|
if (_szs[node->code] < length)
|
||||||
|
_szs[node->code] = length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
jit_word_t
|
||||||
|
_jit_get_size(jit_state_t *_jit)
|
||||||
|
{
|
||||||
|
jit_word_t size;
|
||||||
|
jit_node_t *node;
|
||||||
|
|
||||||
|
for (size = 0, node = _jitc->head; node; node = node->next)
|
||||||
|
size += _szs[node->code];
|
||||||
|
|
||||||
|
return ((size + 4095) & -4096);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
jit_word_t
|
||||||
|
jit_get_max_instr(void)
|
||||||
|
{
|
||||||
|
return (JIT_INSTR_MAX);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
jit_finish_size(void)
|
||||||
|
{
|
||||||
|
#if GET_JIT_SIZE
|
||||||
|
FILE *fp;
|
||||||
|
jit_word_t offset;
|
||||||
|
|
||||||
|
/* Define a single path */
|
||||||
|
fp = fopen(JIT_SIZE_PATH, "a");
|
||||||
|
assert(fp);
|
||||||
|
for (offset = 0; offset < jit_size(_szs); offset++)
|
||||||
|
fprintf(fp, "%d %d\n", offset, _szs[offset]);
|
||||||
|
fclose(fp);
|
||||||
|
#endif
|
||||||
|
}
|
350
lib/jit_sparc-sz.c
Normal file
350
lib/jit_sparc-sz.c
Normal file
|
@ -0,0 +1,350 @@
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
#define JIT_INSTR_MAX 28
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
24,
|
||||||
|
24,
|
||||||
|
20,
|
||||||
|
20,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
24,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
16,
|
||||||
|
28,
|
||||||
|
12,
|
||||||
|
0,
|
||||||
|
16,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
12,
|
||||||
|
24,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* __WORDSIZE */
|
|
@ -702,7 +702,7 @@ _emit_code(jit_state_t *_jit)
|
||||||
} \
|
} \
|
||||||
break
|
break
|
||||||
for (node = _jitc->head; node; node = node->next) {
|
for (node = _jitc->head; node; node = node->next) {
|
||||||
if (_jit->pc.uc >= _jitc->code.end && !jit_remap())
|
if (_jit->pc.uc >= _jitc->code.end)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
value = jit_classify(node->code);
|
value = jit_classify(node->code);
|
||||||
|
|
700
lib/jit_x86-sz.c
Normal file
700
lib/jit_x86-sz.c
Normal file
|
@ -0,0 +1,700 @@
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
#define JIT_INSTR_MAX 26
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
26,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
6,
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
6,
|
||||||
|
6,
|
||||||
|
6,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
7,
|
||||||
|
20,
|
||||||
|
23,
|
||||||
|
20,
|
||||||
|
23,
|
||||||
|
21,
|
||||||
|
24,
|
||||||
|
22,
|
||||||
|
25,
|
||||||
|
23,
|
||||||
|
24,
|
||||||
|
24,
|
||||||
|
25,
|
||||||
|
21,
|
||||||
|
24,
|
||||||
|
22,
|
||||||
|
25,
|
||||||
|
4,
|
||||||
|
7,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
7,
|
||||||
|
16,
|
||||||
|
5,
|
||||||
|
16,
|
||||||
|
5,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
15,
|
||||||
|
16,
|
||||||
|
2,
|
||||||
|
5,
|
||||||
|
11,
|
||||||
|
11,
|
||||||
|
3,
|
||||||
|
3,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
3,
|
||||||
|
7,
|
||||||
|
3,
|
||||||
|
7,
|
||||||
|
3,
|
||||||
|
7,
|
||||||
|
3,
|
||||||
|
7,
|
||||||
|
2,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
3,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
3,
|
||||||
|
7,
|
||||||
|
2,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
11,
|
||||||
|
11,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
3,
|
||||||
|
6,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
12,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
0,
|
||||||
|
5,
|
||||||
|
2,
|
||||||
|
5,
|
||||||
|
24,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
12,
|
||||||
|
6,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
15,
|
||||||
|
22,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
18,
|
||||||
|
25,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
20,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
20,
|
||||||
|
13,
|
||||||
|
20,
|
||||||
|
13,
|
||||||
|
20,
|
||||||
|
7,
|
||||||
|
0,
|
||||||
|
7,
|
||||||
|
4,
|
||||||
|
10,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
7,
|
||||||
|
7,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
17,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
0,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
8,
|
||||||
|
16,
|
||||||
|
12,
|
||||||
|
16,
|
||||||
|
18,
|
||||||
|
13,
|
||||||
|
6,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
15,
|
||||||
|
23,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
18,
|
||||||
|
26,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
7,
|
||||||
|
0,
|
||||||
|
7,
|
||||||
|
4,
|
||||||
|
10,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
5,
|
||||||
|
8,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
7,
|
||||||
|
7,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
12,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
13,
|
||||||
|
21,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
10,
|
||||||
|
18,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
14,
|
||||||
|
10,
|
||||||
|
#endif /* __WORDSIZE */
|
||||||
|
|
||||||
|
#if __WORDSIZE == 64
|
||||||
|
#define JIT_INSTR_MAX 43
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
7,
|
||||||
|
43,
|
||||||
|
0,
|
||||||
|
5,
|
||||||
|
13,
|
||||||
|
6,
|
||||||
|
13,
|
||||||
|
6,
|
||||||
|
7,
|
||||||
|
6,
|
||||||
|
13,
|
||||||
|
9,
|
||||||
|
13,
|
||||||
|
9,
|
||||||
|
7,
|
||||||
|
7,
|
||||||
|
14,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
20,
|
||||||
|
30,
|
||||||
|
22,
|
||||||
|
29,
|
||||||
|
23,
|
||||||
|
30,
|
||||||
|
25,
|
||||||
|
32,
|
||||||
|
26,
|
||||||
|
33,
|
||||||
|
22,
|
||||||
|
29,
|
||||||
|
23,
|
||||||
|
30,
|
||||||
|
6,
|
||||||
|
13,
|
||||||
|
6,
|
||||||
|
13,
|
||||||
|
6,
|
||||||
|
13,
|
||||||
|
9,
|
||||||
|
8,
|
||||||
|
9,
|
||||||
|
7,
|
||||||
|
9,
|
||||||
|
7,
|
||||||
|
6,
|
||||||
|
6,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
13,
|
||||||
|
14,
|
||||||
|
3,
|
||||||
|
10,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
4,
|
||||||
|
3,
|
||||||
|
3,
|
||||||
|
6,
|
||||||
|
5,
|
||||||
|
9,
|
||||||
|
5,
|
||||||
|
9,
|
||||||
|
5,
|
||||||
|
9,
|
||||||
|
5,
|
||||||
|
9,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
6,
|
||||||
|
5,
|
||||||
|
6,
|
||||||
|
5,
|
||||||
|
6,
|
||||||
|
5,
|
||||||
|
6,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
7,
|
||||||
|
5,
|
||||||
|
4,
|
||||||
|
5,
|
||||||
|
7,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
5,
|
||||||
|
9,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
4,
|
||||||
|
8,
|
||||||
|
5,
|
||||||
|
4,
|
||||||
|
6,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
6,
|
||||||
|
5,
|
||||||
|
7,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
13,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
19,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
19,
|
||||||
|
9,
|
||||||
|
13,
|
||||||
|
9,
|
||||||
|
13,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
9,
|
||||||
|
10,
|
||||||
|
0,
|
||||||
|
5,
|
||||||
|
3,
|
||||||
|
13,
|
||||||
|
37,
|
||||||
|
0,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
15,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
15,
|
||||||
|
20,
|
||||||
|
14,
|
||||||
|
15,
|
||||||
|
5,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
13,
|
||||||
|
28,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
16,
|
||||||
|
31,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
15,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
7,
|
||||||
|
6,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
7,
|
||||||
|
7,
|
||||||
|
10,
|
||||||
|
20,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
13,
|
||||||
|
28,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
0,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
15,
|
||||||
|
25,
|
||||||
|
10,
|
||||||
|
25,
|
||||||
|
15,
|
||||||
|
25,
|
||||||
|
21,
|
||||||
|
16,
|
||||||
|
5,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
14,
|
||||||
|
29,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
17,
|
||||||
|
32,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
12,
|
||||||
|
27,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
5,
|
||||||
|
15,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
7,
|
||||||
|
6,
|
||||||
|
6,
|
||||||
|
10,
|
||||||
|
7,
|
||||||
|
7,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
13,
|
||||||
|
28,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
14,
|
||||||
|
29,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
11,
|
||||||
|
26,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
#endif /* __WORDSIZE */
|
|
@ -1127,7 +1127,7 @@ _emit_code(jit_state_t *_jit)
|
||||||
} \
|
} \
|
||||||
break
|
break
|
||||||
for (node = _jitc->head; node; node = node->next) {
|
for (node = _jitc->head; node; node = node->next) {
|
||||||
if (_jit->pc.uc >= _jitc->code.end && !jit_remap())
|
if (_jit->pc.uc >= _jitc->code.end)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
|
|
||||||
value = jit_classify(node->code);
|
value = jit_classify(node->code);
|
||||||
|
|
|
@ -180,12 +180,14 @@ init_jit(char *progname)
|
||||||
jit_progname = progname;
|
jit_progname = progname;
|
||||||
jit_get_cpu();
|
jit_get_cpu();
|
||||||
jit_init_debug();
|
jit_init_debug();
|
||||||
|
jit_init_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
finish_jit(void)
|
finish_jit(void)
|
||||||
{
|
{
|
||||||
jit_finish_debug();
|
jit_finish_debug();
|
||||||
|
jit_finish_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
jit_int32_t
|
jit_int32_t
|
||||||
|
@ -1644,6 +1646,9 @@ _jit_reglive(jit_state_t *_jit, jit_node_t *node)
|
||||||
void
|
void
|
||||||
_jit_regarg_set(jit_state_t *_jit, jit_node_t *node, jit_int32_t value)
|
_jit_regarg_set(jit_state_t *_jit, jit_node_t *node, jit_int32_t value)
|
||||||
{
|
{
|
||||||
|
#if GET_JIT_SIZE
|
||||||
|
jit_size_prepare();
|
||||||
|
#endif
|
||||||
if (value & jit_cc_a0_reg) {
|
if (value & jit_cc_a0_reg) {
|
||||||
if (value & jit_cc_a0_rlh) {
|
if (value & jit_cc_a0_rlh) {
|
||||||
jit_regset_setbit(&_jitc->regarg, jit_regno(node->u.q.l));
|
jit_regset_setbit(&_jitc->regarg, jit_regno(node->u.q.l));
|
||||||
|
@ -1661,6 +1666,9 @@ _jit_regarg_set(jit_state_t *_jit, jit_node_t *node, jit_int32_t value)
|
||||||
void
|
void
|
||||||
_jit_regarg_clr(jit_state_t *_jit, jit_node_t *node, jit_int32_t value)
|
_jit_regarg_clr(jit_state_t *_jit, jit_node_t *node, jit_int32_t value)
|
||||||
{
|
{
|
||||||
|
#if GET_JIT_SIZE
|
||||||
|
jit_size_collect(node);
|
||||||
|
#endif
|
||||||
if (value & jit_cc_a0_reg) {
|
if (value & jit_cc_a0_reg) {
|
||||||
if (value & jit_cc_a0_rlh) {
|
if (value & jit_cc_a0_rlh) {
|
||||||
jit_regset_clrbit(&_jitc->regarg, jit_regno(node->u.q.l));
|
jit_regset_clrbit(&_jitc->regarg, jit_regno(node->u.q.l));
|
||||||
|
@ -1690,12 +1698,15 @@ _jit_emit(jit_state_t *_jit)
|
||||||
jit_epilog();
|
jit_epilog();
|
||||||
jit_optimize();
|
jit_optimize();
|
||||||
|
|
||||||
/* Heuristic to guess code buffer size */
|
|
||||||
_jitc->mult = 4;
|
|
||||||
|
|
||||||
_jitc->emit = 1;
|
_jitc->emit = 1;
|
||||||
|
|
||||||
|
#if GET_JIT_SIZE
|
||||||
|
/* Heuristic to guess code buffer size */
|
||||||
|
_jitc->mult = 4;
|
||||||
_jit->code.length = _jitc->pool.length * 1024 * _jitc->mult;
|
_jit->code.length = _jitc->pool.length * 1024 * _jitc->mult;
|
||||||
|
#else
|
||||||
|
_jit->code.length = jit_get_size();
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(__sgi)
|
#if defined(__sgi)
|
||||||
mmap_fd = open("/dev/zero", O_RDWR);
|
mmap_fd = open("/dev/zero", O_RDWR);
|
||||||
|
@ -1704,7 +1715,8 @@ _jit_emit(jit_state_t *_jit)
|
||||||
PROT_EXEC | PROT_READ | PROT_WRITE,
|
PROT_EXEC | PROT_READ | PROT_WRITE,
|
||||||
MAP_PRIVATE | MAP_ANON, mmap_fd, 0);
|
MAP_PRIVATE | MAP_ANON, mmap_fd, 0);
|
||||||
assert(_jit->code.ptr != MAP_FAILED);
|
assert(_jit->code.ptr != MAP_FAILED);
|
||||||
_jitc->code.end = _jit->code.ptr + _jit->code.length - 64;
|
_jitc->code.end = _jit->code.ptr + _jit->code.length -
|
||||||
|
jit_get_max_instr();
|
||||||
_jit->pc.uc = _jit->code.ptr;
|
_jit->pc.uc = _jit->code.ptr;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
|
@ -1715,8 +1727,13 @@ _jit_emit(jit_state_t *_jit)
|
||||||
node->code == jit_code_epilog))
|
node->code == jit_code_epilog))
|
||||||
node->flag &= ~jit_flag_patch;
|
node->flag &= ~jit_flag_patch;
|
||||||
}
|
}
|
||||||
|
#if GET_JIT_SIZE
|
||||||
++_jitc->mult;
|
++_jitc->mult;
|
||||||
length = _jitc->pool.length * 1024 * _jitc->mult;
|
length = _jitc->pool.length * 1024 * _jitc->mult;
|
||||||
|
#else
|
||||||
|
/* Should only happen on very special cases */
|
||||||
|
length = _jit->code.length + 4096;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !HAVE_MREMAP
|
#if !HAVE_MREMAP
|
||||||
munmap(_jit->code.ptr, _jit->code.length);
|
munmap(_jit->code.ptr, _jit->code.length);
|
||||||
|
@ -1738,7 +1755,8 @@ _jit_emit(jit_state_t *_jit)
|
||||||
|
|
||||||
assert(_jit->code.ptr != MAP_FAILED);
|
assert(_jit->code.ptr != MAP_FAILED);
|
||||||
_jit->code.length = length;
|
_jit->code.length = length;
|
||||||
_jitc->code.end = _jit->code.ptr + _jit->code.length - 64;
|
_jitc->code.end = _jit->code.ptr + _jit->code.length -
|
||||||
|
jit_get_max_instr();
|
||||||
_jit->pc.uc = _jit->code.ptr;
|
_jit->pc.uc = _jit->code.ptr;
|
||||||
_jitc->patches.offset = 0;
|
_jitc->patches.offset = 0;
|
||||||
}
|
}
|
||||||
|
|
84
size.c
Normal file
84
size.c
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2013 Free Software Foundation, Inc.
|
||||||
|
*
|
||||||
|
* This file is part of GNU lightning.
|
||||||
|
*
|
||||||
|
* GNU lightning is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU Lesser General Public License as published
|
||||||
|
* by the Free Software Foundation; either version 3, or (at your option)
|
||||||
|
* any later version.
|
||||||
|
*
|
||||||
|
* GNU lightning is distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Paulo Cesar Pereira de Andrade
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <lightning.h>
|
||||||
|
#include <lightning/jit_private.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
jit_int16_t _szs[jit_code_x86_retval_d + 1];
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
FILE *fp;
|
||||||
|
jit_word_t offset;
|
||||||
|
int code, size, max;
|
||||||
|
|
||||||
|
if ((fp = fopen(JIT_SIZE_PATH, "r")) == NULL)
|
||||||
|
exit(-1);
|
||||||
|
while (fscanf(fp, "%d %d\n", &code, &size) == 2) {
|
||||||
|
if (_szs[code] < size)
|
||||||
|
_szs[code] = size;
|
||||||
|
}
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
max = 0;
|
||||||
|
for (offset = 0; offset <= jit_code_x86_retval_d; offset++)
|
||||||
|
if (max < _szs[offset])
|
||||||
|
max = _szs[offset];
|
||||||
|
|
||||||
|
if ((fp = fopen(JIT_SIZE_PATH, "w")) == NULL)
|
||||||
|
exit(-1);
|
||||||
|
|
||||||
|
|
||||||
|
fprintf(fp, "#if __WORDSIZE == %d\n", __WORDSIZE);
|
||||||
|
#if defined(__arm__)
|
||||||
|
# if defined(__ARM_PCS_VFP)
|
||||||
|
fprintf(fp, "#if defined(__ARM_PCS_VFP)\n");
|
||||||
|
# else
|
||||||
|
fprintf(fp, "#if !defined(__ARM_PCS_VFP)\n");
|
||||||
|
# endif
|
||||||
|
#elif defined(__mips__)
|
||||||
|
# if defined(_ABIN32)
|
||||||
|
fprintf(fp, "#if defined(_ABIN32)\n");
|
||||||
|
# else
|
||||||
|
fprintf(fp, "#if !defined(_ABIN32)\n");
|
||||||
|
# endif
|
||||||
|
#elif defined(__ppc__)
|
||||||
|
fprintf(fp, "#if defined(__ppc__)\n");
|
||||||
|
#elif defined(__powerpc__)
|
||||||
|
fprintf(fp, "#if defined(__powerpc__)\n");
|
||||||
|
#endif
|
||||||
|
fprintf(fp, "#define JIT_INSTR_MAX %d\n", max);
|
||||||
|
for (offset = 0; offset <= jit_code_x86_retval_d; offset++)
|
||||||
|
fprintf(fp, " %d,\n", _szs[offset]);
|
||||||
|
#if defined(__arm__)
|
||||||
|
fprintf(fp, "#undef /* __ARM_PCS_VFP */\n");
|
||||||
|
#elif defined(__mips__)
|
||||||
|
fprintf(fp, "#endif /* _ABIN32 */\n");
|
||||||
|
#elif defined(__ppc__)
|
||||||
|
fprintf(fp, "#endif /* __ppc__ */\n");
|
||||||
|
#elif defined(__powerpc__)
|
||||||
|
fprintf(fp, "#endif /* __powerpc__ */\n");
|
||||||
|
#endif
|
||||||
|
fprintf(fp, "#endif /* __WORDSIZE */\n");
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
return (0);
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue