Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/external/bsd/sljit/dist Import sljit 0.91 (svn r257).



details:   https://anonhg.NetBSD.org/src/rev/8892665bb8e5
branches:  trunk
changeset: 330012:8892665bb8e5
user:      alnsn <alnsn%NetBSD.org@localhost>
date:      Tue Jun 17 15:37:40 2014 +0000

description:
Import sljit 0.91 (svn r257).

The changes since the last import are:

r257: Add missing ADJUST_LOCAL_OFFSET for ARM64.
r256: Move incorrectly placed array definitions.
r255: More work on testing environment.
r254: Refactor test default output.
r253: Pass entry adress in r12 on PPC-LE.
r252: Optimize calls on MIPS-64.
r251: Several minor fixes.
r250: Add missing SLJIT_IS_FPU_AVAILABLE checks and reorder U and S flags.
r249: Optimize jumps on ARM-64.
r248: Optimize jumps on PowerPC.
r247: MIPS64 support is mostly finished.
r246: MIPS arithmetic.
r245: Start working on MIPS64.
r244: Uniform names for TILE-Gx.
r243: Uniform the names of ARM compilers.
r242: Change ll to l on x86 and rename some instructions on ARM-64.
r241: Improved memory access in PPC and reordering the parameter type flags.
r240: Prepare for more registers on ARM-Thumb2 and renaming TMP_REGISTER to TMP_REG1 on x86.
r239: Prepare for more registers on ARMv5.
r238: Prepare for more registers on TILE-Gx.
r237: Prepare for more registers on MIPS and SPARC.
r236: Prepare for more registers on PPC.
r235: Prepare for more registers on x86.
r234: Most tests are pass on ARM-64 now.
r233: Around 25 test cases are now pass on ARM-64.
r232: More progress on ARM-64 and Thumb2 refactoring.
r231: Some progress an ARM-64 and ARM-T2 refactoring.
r230: Thumb2 code refactoring.
r229: Start working on ARM-64.
r228: Little endian PowerPC systems are supported now by the JIT compiler.
r227: TileGX architecture is now supported. Patch made by Jiong Wang.
r226: Cache flush for android. Patch by  Giuseppe D'Angelo.
r225: Add support for forcibly freeing unused executable memory. Inspired by Carsten Klein.
r224: Few typo fixes.
r223: Reorder madvise and posix_madvise.
r222: The missing sljit_get_float_register_index function is added.
r221: Remove an invalid shift on ARM.
r220: JIT compiler now supports 32 bit Macs thanks to Lawrence Velazquez.
r219: Better code size statistics.
r218: Improvements for x86 and LIR dump.
r217: ICC and SunPro C fixes
r216: A new file for tracking internal changes are added.
r215: Less GNU dependnet Makefile and Intel style assemby for x86-64 systems.
r214: Switch from stdcall to cdecl in x86-32.
r213: Upstreaming minor fixes. Thanks for Daniel Richard G.
r212: Documentation update and a fix for a locking issue.
r211: Renaming temporaries to scratches to match the new name of the register. Does not affect compatibility.
r210: Improving assertions.
r209: Port sljit to SunPro C compiler. Patch by Daniel Richard G.
r208: SLJIT_TEMPORARY_REGx registers are renamed to SLJIT_SCRATCH_REGx.
r207: Removing unused checks.
r206: Optimizations for arm.
r205: Some optimizations on powerpc, mips and sparc.
r204: Rename sljit_emit_cond_value to sljit_emit_op_flags.
r203: Small x86 optimization.
r202: Finish cond_value with AND and INT_OP.
r201: More x86 fixes and improvements.
r200: Rename buf and code to inst.
r199: Replacing constants with instruction names in x86. Greatly improves maintainability.
r198: Only xmm0-xmm5 is volatile on Win64, so xmm6 must be saved.
r197: PowerPC shift right always modifies the carry flag. We may need to restore it.
r196: Rename SLJIT_F* functions to SLJIT_*D
r195: SLJIT_INT_OP works in the same way as SLJIT_SINGLE_OP: the input register arguments must be generated by the output of another instruction with SLJIT_INT_OP flag
r194: Renaming sljit_w to sljit_sw, sljit_i to sljit_si, sljit_h to sljit_sh, and sljit_b to sljit_sb.
r193: ARM single precision support.
r192: Single precision support added for ppc, mips and sparc.
r191: Add single precision support. Only works on x86 now.
r190: Relace C types with sljit types. No functionality change.
r189: Change 0 to NULL for mmap.
r188: Support environments where MAP_ANON is not available.
r187: Adding type descriptors for pointers and doubles (preparing for x32 ABIs and single precision support).

diffstat:

 sys/external/bsd/sljit/dist/API_CHANGES                           |     53 +
 sys/external/bsd/sljit/dist/INTERNAL_CHANGES                      |      8 +
 sys/external/bsd/sljit/dist/Makefile                              |     49 +-
 sys/external/bsd/sljit/dist/README                                |     17 +-
 sys/external/bsd/sljit/dist/regex_src/regexJIT.c                  |    154 +-
 sys/external/bsd/sljit/dist/regex_src/regexMain.c                 |     51 +-
 sys/external/bsd/sljit/dist/sljit_src/sljitLir.h                  |    630 +-
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeARM_32.c         |   2524 ++
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeARM_64.c         |   1902 +
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeARM_T2_32.c      |   2007 +
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeMIPS_32.c        |    133 +-
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeMIPS_64.c        |    469 +
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeMIPS_common.c    |    750 +-
 sys/external/bsd/sljit/dist/sljit_src/sljitNativePPC_32.c         |     25 +-
 sys/external/bsd/sljit/dist/sljit_src/sljitNativePPC_64.c         |     39 +-
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeSPARC_32.c       |     11 +-
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeSPARC_common.c   |    449 +-
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeTILEGX-encoder.c |  10159 ++++++++++
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeTILEGX_64.c      |   2580 ++
 sys/external/bsd/sljit/dist/sljit_src/sljitNativeX86_64.c         |    537 +-
 20 files changed, 21339 insertions(+), 1208 deletions(-)

diffs (truncated from 25547 to 300 lines):

diff -r d149b34b8fd6 -r 8892665bb8e5 sys/external/bsd/sljit/dist/API_CHANGES
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/sljit/dist/API_CHANGES   Tue Jun 17 15:37:40 2014 +0000
@@ -0,0 +1,53 @@
+This file is the short summary of the API changes:
+
+05.03.2014 - Backward compatible
+    The sljit_set_target now supports those jumps, which
+    does not created with SLJIT_REWRITABLE_JUMP flag.
+    Reason: sljit_emit_ijump does not support conditional
+    jumps.
+
+03.03.2014 - Non-backward compatible
+    SLJIT_MOV_UI cannot be combined with SLJIT_INT_OP.
+    Reason: SLJIT_INT_OP flag is not recommended to use
+    directly, and SLJIT_IMOV has no sign bit.
+
+29.01.2014 - Backward compatible
+    Bits assigned to SLJIT_MEM and SLJIT_IMM flags are changed.
+    Reason: the most common cases are fits into one byte now,
+    and more registers can be supported in the future.
+
+08.11.2012 - Non-backward compatible
+    SLJIT_TEMPORARY_REGx registers are renamed to SLJIT_SCRATCH_REGx.
+
+07.11.2012 - Non-backward compatible
+    sljit_emit_cond_value is renamed to sljit_emit_op_flags. An
+    extra source argument is added which will be used in the future.
+
+05.11.2012 - Backward compatible
+    sljit_emit_cond_value now supports SLJIT_AND and SLJIT_INT_OP
+    flags, which makes this function complete.
+
+01.11.2012 - Non-backward compatible
+    SLJIT_F* opcodes are renamed to SLJIT_*D to show that
+    they are double precision operators. Furthermore
+    SLJIT_*S single precision opcodes are added.
+
+01.11.2012 - Non-backward compatible
+    Register arguments of operations with SLJIT_INT_OP flag
+    must be computed by another operation with SLJIT_INT_OP flag.
+    The same way as SLJIT_SINGLE_OP flag works with floating point
+    numbers. See the description of SLJIT_INT_OP.
+
+01.11.2012 - Backward compatible
+    All operations whose support the SLJIT_INT_OP flag, have an
+    alternate name now, which includes the SLJIT_INT_OP. These
+    names starting with I.
+
+31.10.2012 - Non-backward compatible
+    Renaming sljit_w to sljit_sw, sljit_i to sljit_si, sljit_h
+    to sljit_sh, and sljit_b to sljit_sb. Reason: their sign
+    bit is part of the type now.
+
+20.10.2012 - Non-backward compatible
+    Renaming SLJIT_C_FLOAT_NAN to SLJIT_C_FLOAT_UNORDERED.
+    Reason: all architectures call these unordered comparions.
diff -r d149b34b8fd6 -r 8892665bb8e5 sys/external/bsd/sljit/dist/INTERNAL_CHANGES
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/external/bsd/sljit/dist/INTERNAL_CHANGES      Tue Jun 17 15:37:40 2014 +0000
@@ -0,0 +1,8 @@
+This file is the short summary of the internal changes:
+
+18.11.2012
+    Switching from stdcall to cdecl on x86-32. Fastcall is still the default
+    on GCC and MSVC. Now Intel C compilers are supported.
+
+20.10.2012
+    Supporting Sparc-32 CPUs.
diff -r d149b34b8fd6 -r 8892665bb8e5 sys/external/bsd/sljit/dist/Makefile
--- a/sys/external/bsd/sljit/dist/Makefile      Tue Jun 17 14:25:17 2014 +0000
+++ b/sys/external/bsd/sljit/dist/Makefile      Tue Jun 17 15:37:40 2014 +0000
@@ -1,17 +1,22 @@
+ifndef CROSS_COMPILER
 # default compier
 CC = gcc
+else
+CC = $(CROSS_COMPILER)
+endif
 
-# Cross compiler for ARM
-#CC = arm-linux-gcc
+ifndef EXTRA_CPPFLAGS
+EXTRA_CPPFLAGS=
+endif
 
-# Cross compiler for PPC
-#CC = powerpc-linux-gnu-gcc
+ifndef EXTRA_LDFLAGS
+EXTRA_LDFLAGS=
+endif
 
-# Cross compiler for PPC-64
-#CC = powerpc64-unknown-linux-gnu-gcc
-
-CFLAGS = -O2 -Wall -DSLJIT_CONFIG_AUTO=1
-LDFLAGS=
+CPPFLAGS = $(EXTRA_CPPFLAGS) -DSLJIT_CONFIG_AUTO=1 -Isljit_src
+CFLAGS = -O2 -Wall
+REGEX_CFLAGS = -fshort-wchar
+LDFLAGS = $(EXTRA_LDFLAGS)
 
 TARGET = sljit_test regex_test
 
@@ -20,17 +25,15 @@
 TESTDIR = test_src
 REGEXDIR = regex_src
 
-CFLAGS += -Isljit_src
-REGEX_CFLAGS = -fshort-wchar
-
 SLJIT_HEADERS = $(SRCDIR)/sljitLir.h $(SRCDIR)/sljitConfig.h $(SRCDIR)/sljitConfigInternal.h
 
 SLJIT_LIR_FILES = $(SRCDIR)/sljitLir.c $(SRCDIR)/sljitExecAllocator.c $(SRCDIR)/sljitUtils.c \
-       $(SRCDIR)/sljitNativeX86_common.c $(SRCDIR)/sljitNativeX86_32.c $(SRCDIR)/sljitNativeX86_64.c \
-       $(SRCDIR)/sljitNativeARM_v5.c $(SRCDIR)/sljitNativeARM_Thumb2.c \
+       $(SRCDIR)/sljitNativeARM_32.c $(SRCDIR)/sljitNativeARM_T2_32.c $(SRCDIR)/sljitNativeARM_64.c \
+       $(SRCDIR)/sljitNativeMIPS_common.c $(SRCDIR)/sljitNativeMIPS_32.c $(SRCDIR)/sljitNativeMIPS_64.c \
        $(SRCDIR)/sljitNativePPC_common.c $(SRCDIR)/sljitNativePPC_32.c $(SRCDIR)/sljitNativePPC_64.c \
-       $(SRCDIR)/sljitNativeMIPS_common.c $(SRCDIR)/sljitNativeMIPS_32.c \
-       $(SRCDIR)/sljitNativeSPARC_common.c $(SRCDIR)/sljitNativeSPARC_32.c
+       $(SRCDIR)/sljitNativeSPARC_common.c $(SRCDIR)/sljitNativeSPARC_32.c \
+       $(SRCDIR)/sljitNativeTILEGX_64.c \
+       $(SRCDIR)/sljitNativeX86_common.c $(SRCDIR)/sljitNativeX86_32.c $(SRCDIR)/sljitNativeX86_64.c
 
 all: $(BINDIR) $(TARGET)
 
@@ -38,25 +41,25 @@
        mkdir $(BINDIR)
 
 $(BINDIR)/sljitLir.o : $(BINDIR) $(SLJIT_LIR_FILES) $(SLJIT_HEADERS)
-       $(CC) $(CFLAGS) -c -o $@ $(SRCDIR)/sljitLir.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(SRCDIR)/sljitLir.c
 
 $(BINDIR)/sljitMain.o : $(TESTDIR)/sljitMain.c $(BINDIR) $(SLJIT_HEADERS)
-       $(CC) $(CFLAGS) -c -o $@ $(TESTDIR)/sljitMain.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(TESTDIR)/sljitMain.c
 
 $(BINDIR)/sljitTest.o : $(TESTDIR)/sljitTest.c $(BINDIR) $(SLJIT_HEADERS)
-       $(CC) $(CFLAGS) -c -o $@ $(TESTDIR)/sljitTest.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $(TESTDIR)/sljitTest.c
 
 $(BINDIR)/regexMain.o : $(REGEXDIR)/regexMain.c $(BINDIR) $(SLJIT_HEADERS)
-       $(CC) $(CFLAGS) $(REGEX_CFLAGS) -c -o $@ $(REGEXDIR)/regexMain.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(REGEX_CFLAGS) -c -o $@ $(REGEXDIR)/regexMain.c
 
 $(BINDIR)/regexJIT.o : $(REGEXDIR)/regexJIT.c $(BINDIR) $(SLJIT_HEADERS) $(REGEXDIR)/regexJIT.h
-       $(CC) $(CFLAGS) $(REGEX_CFLAGS) -c -o $@ $(REGEXDIR)/regexJIT.c
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(REGEX_CFLAGS) -c -o $@ $(REGEXDIR)/regexJIT.c
 
 clean:
        rm -f $(BINDIR)/*.o $(BINDIR)/sljit_test $(BINDIR)/regex_test
 
 sljit_test: $(BINDIR)/sljitMain.o $(BINDIR)/sljitTest.o $(BINDIR)/sljitLir.o
-       $(CC) $(LDFLAGS) $(BINDIR)/sljitMain.o $(BINDIR)/sljitTest.o $(BINDIR)/sljitLir.o -o $(BINDIR)/$@ -lm -lpthread
+       $(CC) $(CFLAGS) $(LDFLAGS) $(BINDIR)/sljitMain.o $(BINDIR)/sljitTest.o $(BINDIR)/sljitLir.o -o $(BINDIR)/$@ -lm -lpthread
 
 regex_test: $(BINDIR)/regexMain.o $(BINDIR)/regexJIT.o $(BINDIR)/sljitLir.o
-       $(CC) $(LDFLAGS) $(BINDIR)/regexMain.o $(BINDIR)/regexJIT.o $(BINDIR)/sljitLir.o -o $(BINDIR)/$@ -lm -lpthread
+       $(CC) $(CFLAGS) $(LDFLAGS) $(BINDIR)/regexMain.o $(BINDIR)/regexJIT.o $(BINDIR)/sljitLir.o -o $(BINDIR)/$@ -lm -lpthread
diff -r d149b34b8fd6 -r 8892665bb8e5 sys/external/bsd/sljit/dist/README
--- a/sys/external/bsd/sljit/dist/README        Tue Jun 17 14:25:17 2014 +0000
+++ b/sys/external/bsd/sljit/dist/README        Tue Jun 17 15:37:40 2014 +0000
@@ -2,18 +2,19 @@
                      SLJIT - Stack Less JIT Compiler
 
 Purpose:
-  A simple machine independent JIT, which suitable for interpreters and
-  other dynamic tools. See sljitLir.h for more information.
+  A simple, machine independent JIT compiler, which suitable for
+  translating interpreted byte code to machine code. The sljitLir.h
+  describes the LIR (low-level intermediate representation) of SLJIT.
 
 Compatible:
   Any C (C++) compiler. At least I hope so.
 
 Using sljit:
-  Copy sljitLir.c sljitLir.h sljitConfig.h sljitExecAllocator.c and sljitNative*.c
-  files into your project. Add sljitLir.c into your project. The other files are
-  included by sljitLir.c (when required). Define the machine by SLJIT_CONFIG_*
-  selector. See sljitConfig.h for all possible values. For C++ compilers, rename
-  sljitLir.c to sljitLir.cpp.
+  Copy the content of sljit_src directory into your project source directory.
+  Add sljitLir.c source file to your build environment. All other files are
+  included by sljitLir.c (if required). Define the machine by SLJIT_CONFIG_*
+  selector. See sljitConfig.h for all possible values. For C++ compilers,
+  rename sljitLir.c to sljitLir.cpp.
 
 More info:
   http://sljit.sourceforge.net/
@@ -24,3 +25,5 @@
 Special thanks:
   Alexander Nasonov
   Daniel Richard G.
+  Giuseppe D'Angelo
+  Jiong Wang (TileGX support)
diff -r d149b34b8fd6 -r 8892665bb8e5 sys/external/bsd/sljit/dist/regex_src/regexJIT.c
--- a/sys/external/bsd/sljit/dist/regex_src/regexJIT.c  Tue Jun 17 14:25:17 2014 +0000
+++ b/sys/external/bsd/sljit/dist/regex_src/regexJIT.c  Tue Jun 17 15:37:40 2014 +0000
@@ -53,13 +53,13 @@
        /* flags. */
        int flags;
        /* Number of state descriptors for one term. */
-       sljit_w no_states;
+       sljit_sw no_states;
        /* Total size. */
-       sljit_w size;
+       sljit_sw size;
 
        union {
                void *init_match;
-               sljit_w (SLJIT_CALL *call_init)(void *next, void* match);
+               sljit_sw (SLJIT_CALL *call_init)(void *next, void* match);
        } u;
 #if (defined SLJIT_INDIRECT_CALL && SLJIT_INDIRECT_CALL)
        struct sljit_function_context context;
@@ -74,19 +74,19 @@
 struct regex_match
 {
        /* Current and next state array. */
-       sljit_w *current;
-       sljit_w *next;
+       sljit_sw *current;
+       sljit_sw *next;
        /* Starting. */
-       sljit_w head;
+       sljit_sw head;
        /* String character index (ever increasing). */
-       sljit_w index;
+       sljit_sw index;
        /* Best match found so far (members in priority order). */
-       sljit_w best_begin;
-       sljit_w best_end;
-       sljit_w best_id;
+       sljit_sw best_begin;
+       sljit_sw best_end;
+       sljit_sw best_id;
        /* Bool flags (encoded as word). */
-       sljit_w fast_quit;
-       sljit_w fast_forward;
+       sljit_sw fast_quit;
+       sljit_sw fast_forward;
        /* Machine. */
        struct regex_machine *machine;
 
@@ -96,7 +96,7 @@
        } u;
 
        /* Variable sized array to contain the state arrays. */
-       sljit_w states[1];
+       sljit_sw states[1];
 };
 
 /* State vector
@@ -117,11 +117,11 @@
 /* String fragment length. */
 #define R_LENGTH       SLJIT_SAVED_EREG2
 /* 'struct regex_match*' */
-#define R_REGEX_MATCH  SLJIT_TEMPORARY_REG1
+#define R_REGEX_MATCH  SLJIT_SCRATCH_REG1
 /* Current character. */
-#define R_CURR_CHAR    SLJIT_TEMPORARY_REG2
+#define R_CURR_CHAR    SLJIT_SCRATCH_REG2
 /* Temporary register. */
-#define R_TEMP         SLJIT_TEMPORARY_REG3
+#define R_TEMP         SLJIT_SCRATCH_REG3
 /* Caches the regex_match->best_begin. */
 #define R_BEST_BEGIN   SLJIT_TEMPORARY_EREG1
 /* Current character index. */
@@ -379,13 +379,13 @@
        /* REGEX_ flags. */
        int flags;
        /* Encoded size of the dfa representation. */
-       sljit_w dfa_size;
+       sljit_sw dfa_size;
        /* Number of terms. */
-       sljit_w terms_size;
+       sljit_sw terms_size;
        /* Number of state descriptors for one term (same as machine->no_states). */
-       sljit_w no_states;
+       sljit_sw no_states;
        /* Number of type_rng_(char|left)-s in the longest character range. */
-       sljit_w longest_range_size;
+       sljit_sw longest_range_size;
 
        /* DFA linear representation (size: dfa_size). */
        struct stack_item *dfa_transitions;
@@ -555,7 +555,7 @@
        return len;
 }
 
-static int parse_iterator(const regex_char_t *regex_string, int length, struct stack *stack, sljit_w *dfa_size, int begin)
+static int parse_iterator(const regex_char_t *regex_string, int length, struct stack *stack, sljit_sw *dfa_size, int begin)
 {
        /* We only know that *regex_string == { . */
        int val1, val2;
@@ -1281,8 +1281,8 @@
 /*  Code generator                                                       */
 /* --------------------------------------------------------------------- */
 



Home | Main Index | Thread Index | Old Index