Commit Graph

623 Commits

Author SHA1 Message Date
Mike Pall
9502afb35b FFI: Preserve stack top across implicit load of FFI library in lexer. 2011-01-09 17:57:19 +01:00
Mike Pall
06f99fc3df Bump copyright date to 2011. 2011-01-09 17:12:53 +01:00
Mike Pall
4c0330a8b1 FFI: Handle NYI cases for cdata call metamethod. 2011-01-09 16:48:37 +01:00
Mike Pall
bfc638ca6c FFI: Add missing GC steps for C function calls. 2011-01-09 16:48:23 +01:00
Mike Pall
aca1e5b3e6 Fix Windows/x86 build and update pregenerated files. 2011-01-06 23:37:04 +01:00
Mike Pall
fb0a18ca0b FFI: Add support for calling C functions. 2011-01-06 23:30:04 +01:00
Mike Pall
97875c4fa9 Avoid compiler warnings. 2011-01-05 21:48:01 +01:00
Mike Pall
a148a6aa00 FFI: Add missing link to parameters for C function declaration. 2011-01-05 21:45:31 +01:00
Mike Pall
bc37edc911 Fix handling of floats in x86/x64 backend. 2011-01-05 21:45:09 +01:00
Mike Pall
3b468ceedb FFI: Force snapshot after store to cdata. 2011-01-05 20:28:57 +01:00
Mike Pall
eaf88dfb3a FFI: Record 64 bit integer arithmetic.
Currently NYI in the x86 backend.
2011-01-03 03:35:35 +01:00
Mike Pall
44a22b9889 Add support for non-constant integer IR_MUL to backend. 2011-01-03 02:58:31 +01:00
Mike Pall
593821f7d9 Add support for integer IR_NEG to backend. 2011-01-03 02:35:30 +01:00
Mike Pall
3291bb62e0 FFI: Record pointer arithmetic. 2011-01-03 01:59:26 +01:00
Mike Pall
b2c74c52cc FFI: Add support for cdata constants to IR. 2011-01-02 22:21:10 +01:00
Mike Pall
331b148737 Use cdata to pass IR_KINT64 to -jdump. 2011-01-02 22:20:08 +01:00
Mike Pall
e66b5b6eee Improve uint64_t <-> FP conversions in x64 backend. 2011-01-02 20:43:58 +01:00
Mike Pall
55a9be7809 FFI: Record tonumber() for boxed cdata. 2011-01-02 18:30:02 +01:00
Mike Pall
0005b2c2b9 Add support for uint64_t <-> FP conversions to x64 backend. 2011-01-02 18:24:31 +01:00
Mike Pall
ddfa7fc246 Add conversions for type mismatches in XSTORE forwarding. 2010-12-31 22:50:06 +01:00
Mike Pall
3b47eba9cc Add 8/16 to 32 bit sign/zero-extension variants to CONV. 2010-12-31 22:49:23 +01:00
Mike Pall
007067bdd8 Fix register allocation for FP <- int conversion. 2010-12-31 22:18:14 +01:00
Mike Pall
783dbd335f Refactoring of conversion ops, part 5: drop TOINT/TOI64/TONUM. 2010-12-31 04:09:32 +01:00
Mike Pall
1716540c55 Refactoring of conversion ops, part 4: use CONV instead of TOINT/TONUM.
Also narrow CONV.int.num and CONV.i64.num.
2010-12-31 03:56:30 +01:00
Mike Pall
1f26961092 Refactoring of conversion ops, part 3: add FOLD rules for IR_CONV. 2010-12-31 03:47:30 +01:00
Mike Pall
65b194a2f8 Copy destination type for CONV from ir->t to op2, too. 2010-12-31 01:00:54 +01:00
Mike Pall
dc4b82c33d Add lj_num2u64 for number to uint64_t conversion. 2010-12-31 00:46:29 +01:00
Mike Pall
4668b229de FFI: Add missing GC steps for implicit allocations. 2010-12-30 12:16:25 +01:00
Mike Pall
158de60b8c Refactoring of conversion ops, part 2: cleanup cdata conversions. 2010-12-30 00:42:00 +01:00
Mike Pall
8bcc5ed021 Add support for IRT_FLOAT to XLOAD/XSTORE. 2010-12-30 00:36:33 +01:00
Mike Pall
2ca2de7f0e Refactoring of conversion ops, part 1: add IR_CONV. 2010-12-30 00:35:32 +01:00
Mike Pall
06c61d9cea Use macro-map for IRT_* enum. Add IRT_FLOAT. 2010-12-28 20:58:00 +01:00
Mike Pall
d176433e32 FFI: Catch various NYI cases while recording. 2010-12-28 19:09:01 +01:00
Mike Pall
a70fb9416a Make recording of type() independent of LJ_T*/IRT_* mapping. 2010-12-28 18:23:41 +01:00
Mike Pall
44935dae0d FFI: Add 64 bit integer arithmetic. 2010-12-25 22:54:25 +01:00
Mike Pall
dd65e00831 FFI: Fix C type representation for valarrays. 2010-12-25 22:33:07 +01:00
Mike Pall
461bf77331 FFI: Parse complex and 64 bit integer literals. 2010-12-24 01:31:39 +01:00
Mike Pall
4850865c57 Fix misnamed macro in Lua parser. 2010-12-24 01:23:42 +01:00
Mike Pall
aa705f7e1a FFI: Fix C parser for hex literals. 2010-12-23 23:06:04 +01:00
Mike Pall
79ab1a4baa FFI: Add pointer arithmetic. 2010-12-23 17:54:54 +01:00
Mike Pall
ba20871f0f Fix display of branches to exit stubs in 32 bit disassembly. 2010-12-23 01:01:04 +01:00
Mike Pall
6082f93919 Improve register allocation for loops with variable shifts. 2010-12-23 00:55:31 +01:00
Mike Pall
c0ffe7d394 FFI: Record cdata allocations. 2010-12-22 23:21:38 +01:00
Mike Pall
4f2f44dd97 Avoid compiler warnings. 2010-12-22 23:20:50 +01:00
Mike Pall
dbab6cf511 Reassociate XLOAD across PHIs to handle a[i-1] forwarding case.
Improved SciMark scores: http://luajit.org/download/scimark.lua

x86      SciMark LARGE | FFT     SOR      MC    SPARSE    LU
-----------------------+---------------------------------------
GCC 4.4.3        623.8 |  91.0   883.5   190.4   784.7  1169.6
LuaJIT git +FFI  651.2 |  97.2  1021.9   323.4   673.7  1139.6
LuaJIT git       527.7 |  91.4  1008.5   225.6   400.0   913.2

x64      SciMark LARGE | FFT     SOR      MC    SPARSE    LU
-----------------------+---------------------------------------
GCC 4.4.3        614.7 |  97.7   883.5   228.5   734.0  1129.9
JVM 1.6.0_22     707.5 |  79.2  1118.1   385.5   658.9  1295.7
LuaJIT git +FFI  632.8 |  89.1  1035.8   298.3   648.1  1092.9
LuaJIT git       516.1 |  88.4   995.4   225.6   382.1   888.9
2010-12-20 22:32:01 +01:00
Mike Pall
c8d6f078a5 Fix XSTORE for IRT_NUM constants. 2010-12-20 19:34:15 +01:00
Mike Pall
c9a0b9ea9e Improve alias analysis for cdata allocations. 2010-12-20 15:26:05 +01:00
Mike Pall
255c6e8c87 FFI: Drop IR_CNEWI. Add IR_CNEWP only for pointers/refs. 2010-12-17 17:20:04 +01:00
Mike Pall
c98132e182 FFI: FOLD load of initializers even across PHIs. 2010-12-17 16:47:28 +01:00
Mike Pall
c4a0fb4f60 FFI: Record copy-by-value for pointer and complex C types. 2010-12-17 16:47:14 +01:00
Mike Pall
09ef7ebf56 FFI: Simplify copy-by-value. Strip attributes, keep qualifiers. 2010-12-15 21:47:46 +01:00
Mike Pall
fbcc925a2d FFI: Fix auto-deref of pointers to structs. 2010-12-15 19:48:20 +01:00
Mike Pall
badff4ed0a Fix error location while recording metamethods. 2010-12-15 19:44:30 +01:00
Mike Pall
9666cf52ce Fix type-based alias analysis for XLOAD/XSTORE. 2010-12-12 23:09:26 +01:00
Mike Pall
74317fa0ef Add alias analysis for XLOAD/XSTORE. Add DSE for XSTORE. 2010-12-12 22:32:52 +01:00
Mike Pall
a22ea8898e FOLD (base+k)+(idx*sz)+ofs ==> (base+idx*sz)+(ofs+k). 2010-12-12 21:07:23 +01:00
Mike Pall
a403cb13e4 Add missing PHI barrier to strength reduction of widening. 2010-12-12 21:05:34 +01:00
Mike Pall
42f9b38663 Extend all FOLD rules to work on 64 bit integers. 2010-12-11 21:20:49 +01:00
Mike Pall
476259e87e Add 64 bit bswap and rotates. 2010-12-11 21:20:12 +01:00
Mike Pall
5f7e9173db Regroup FOLD rules for constant folding. 2010-12-11 20:08:07 +01:00
Mike Pall
44101c64e8 FFI: Don't use KNULL for arbitrary NULL pointers. 2010-12-11 20:12:14 +01:00
Mike Pall
cdac0fa2cb FFI: Add IR_CNEW/IR_CNEWI to allocate/init cdata objects. 2010-12-11 19:32:12 +01:00
Mike Pall
6947493687 Turn lj_mem_newgco() into a fastcall. 2010-12-10 01:10:52 +01:00
Mike Pall
09e2bdbb0a FFI: Always specialize to the field name for struct access. 2010-12-09 22:48:01 +01:00
Mike Pall
870bcd7640 Add missing guard for check against "#" when recording select(). 2010-12-09 22:35:49 +01:00
Mike Pall
cc0efd85d6 FFI: Fix alignment of scalars/vectors modified with mode attribute. 2010-12-09 18:48:23 +01:00
Mike Pall
1d86090926 Strength-reduce 32 to 64 bit widening using scalar evolution analysis. 2010-12-09 16:12:59 +01:00
Mike Pall
36fed9f3e1 Allow integer literals in FOLD rules.
Workaround before refactoring conversion ops.
2010-12-09 16:11:15 +01:00
Mike Pall
e9cab5a763 x86/x64 backend: keep invariants on the right rather than fusing loads. 2010-12-09 16:08:55 +01:00
Mike Pall
4f0d3e8262 Apply narrowing optimization to IR_TOI64, too. 2010-12-08 21:03:45 +01:00
Mike Pall
f308e00e03 Add FOLD rule to reassociate 64 bit (x+k1)+k2. 2010-12-08 20:57:21 +01:00
Mike Pall
d0b283e596 Avoid stack resizes while recording calls to vararg functions.
FUNCV might have been recorded twice (with ill effects).
2010-12-08 19:11:58 +01:00
Mike Pall
6a04591b7b FOLD (base+(idx+k)*sz)+ofs ==> (base+idx*sz)+(ofs+k*sz). 2010-12-08 03:33:48 +01:00
Mike Pall
3c78a7f468 Avoid fusing loads if there are multiple references. 2010-12-08 03:26:53 +01:00
Mike Pall
72744dabd9 Fix IRT_NUM support for XLOAD/XSTORE. 2010-12-08 03:24:35 +01:00
Mike Pall
3ef6a53cfa FFI: Turn cdata indexing into x86/x64 [base+idx*sz+ofs] addressing. 2010-12-08 02:36:09 +01:00
Mike Pall
d778680098 FFI: Record cdata index operations (preliminary, lots of NYI cases). 2010-12-08 02:11:18 +01:00
Mike Pall
2a917a9d83 FFI: Treat cdata metatable+methods as immutable in trace recorder. 2010-12-08 02:02:21 +01:00
Mike Pall
d4d95ee2da Fix x64 code generation for A16+REX prefixed instructions. 2010-12-08 01:57:50 +01:00
Mike Pall
e6093b129a Fix register allocation for 8 bit stores in x86 backend. 2010-12-07 01:18:10 +01:00
Mike Pall
b3c4c0810a Add IRT_NUM support to XLOAD/XSTORE. 2010-12-06 19:28:51 +01:00
Mike Pall
159f51d811 Add IR_TOI64. 2010-12-06 18:21:51 +01:00
Mike Pall
f6c4e8d3d7 Add FOLD rule to turn i << 1 into i + i. 2010-12-06 13:26:58 +01:00
Mike Pall
a5bdae8f23 Fix 64 bit shifts in backend. Fix shift by 0. 2010-12-06 13:16:35 +01:00
Mike Pall
5270586a80 Fix XLOAD/XSTORE references. 2010-12-06 13:15:53 +01:00
Mike Pall
86fd2289f0 Add support for integer IR_MUL. 2010-12-06 12:54:00 +01:00
Mike Pall
b56b83487f Support all kinds of XLOAD/XSTORE references in backend.
Fuse pointer arithmetic, too.
2010-12-06 03:10:28 +01:00
Mike Pall
a850b27da9 Avoid compiler warnings. 2010-12-06 03:07:10 +01:00
Mike Pall
e137408752 Use native IRT_PTR instead of IRT_LIGHTUD workaround for FILE*. 2010-12-06 02:14:39 +01:00
Mike Pall
73bc83cda1 Simplify lj_ir_kvalue(). Fix IR_KNULL + IRT_P64 case. 2010-12-06 02:12:08 +01:00
Mike Pall
4755765e32 Avoid warning. 2010-12-06 01:59:07 +01:00
Mike Pall
db3d16bfd7 Add IR_XSTORE. 2010-12-06 01:48:19 +01:00
Mike Pall
281f426d60 Add minimal set of fold rules for KINT64. 2010-12-06 00:38:21 +01:00
Mike Pall
588fa0481f Add support for 64 bit integer arithmetic to x64 backend. 2010-12-06 00:07:36 +01:00
Mike Pall
c5f4f607c9 Fix xmm spill/restore broken by b1fb71fb. 2010-12-05 22:39:36 +01:00
Mike Pall
5a13fa69d9 Add IR_KINT64. 2010-12-05 22:12:31 +01:00
Mike Pall
b1fb71fb98 Cleanup 64 bit IR type handling. 2010-12-05 21:01:08 +01:00
Mike Pall
6a7605ec85 Rename IRT_PTR to IRT_P32. 2010-12-05 18:59:34 +01:00
Mike Pall
26830d070d Make sure to use irt_toitype() macro everywhere. 2010-12-05 18:51:37 +01:00
Mike Pall
e7f8cc964e Split off fast function recording to lj_ffrecord.c. 2010-12-05 17:12:34 +01:00
Mike Pall
ffa5a2b045 Don't export internal symbol. 2010-12-05 01:08:19 +01:00
Mike Pall
7cb250c4b4 FFI: Add ffi.* library. 2010-12-05 00:52:17 +01:00
Mike Pall
513b0ba18f FFI: Add support for converting cdata to tonumber(). 2010-12-05 00:40:23 +01:00
Mike Pall
233076d3f9 FFI: Add C declaration parser. 2010-12-05 00:20:59 +01:00
Mike Pall
526e087e63 FFI: Add C data handling and C type conversions. 2010-12-05 00:18:07 +01:00
Mike Pall
05973ee440 FFI: Add C type management. 2010-12-05 00:11:35 +01:00
Mike Pall
8679ca5792 POSIX is an acronym. 2010-12-04 20:47:51 +01:00
Mike Pall
100a00dd40 Undo ef8c2648. 2010-12-03 16:58:19 +01:00
Mike Pall
d98cd19bb0 Allow access to raw error messages from outside lj_err.c. 2010-12-01 12:54:32 +01:00
Mike Pall
0ffd06aba8 FFI: Add define to disable the FFI library. 2010-11-30 21:56:57 +01:00
Mike Pall
4ed8a1931b Add support for deferred library loads to lib_init.c. 2010-11-30 21:56:03 +01:00
Mike Pall
443c542e26 Fix check for enabled JIT compiler in lj_trace.h. 2010-11-30 18:32:22 +01:00
Mike Pall
cd1901370d Rearrange src/Makefile. Split features and debugging support. 2010-11-30 16:19:20 +01:00
Mike Pall
592cf3ffac Don't mark REF_BASE in DCE. 2010-11-29 16:00:44 +01:00
Mike Pall
2033d6310b Add shorter defines for endianess checks. 2010-11-28 17:22:45 +01:00
Mike Pall
24186e05e6 Remove metamethod frame for errors from internal metamethods. 2010-11-27 20:23:39 +01:00
Mike Pall
35890f66c1 FFI: Don't propagate cdata objects. 2010-11-26 17:27:02 +01:00
Mike Pall
ef8c264873 FFI: Add macros for consistent number to integer truncation. 2010-11-26 13:40:40 +01:00
Mike Pall
2fd1292955 FFI: Add cdata object type. 2010-11-26 13:28:46 +01:00
Mike Pall
6290d6f5d0 Display caller location in errors from metamethods. 2010-11-26 13:20:56 +01:00
Mike Pall
7840d0b2b0 Shrink slots for 'break' statement to help data-flow analysis. 2010-11-25 12:13:23 +01:00
Mike Pall
18fbf86c9e Improve unrolling heuristics for non-looping inner loops. 2010-11-25 11:42:17 +01:00
Mike Pall
7338456796 Support os.exit(status|true|false [,close]) (from Lua 5.2). 2010-11-22 22:39:06 +01:00
Mike Pall
367ff0cdaa Parse '\*' escape in strings (from Lua 5.2). 2010-11-22 22:22:12 +01:00
Mike Pall
b776bf91ff Tighter check on table.sort function compliance (from Lua 5.2). 2010-11-19 18:44:59 +01:00
Mike Pall
52fd87bf34 Add support for "%g" character class in patterns (from Lua 5.2). 2010-11-19 18:37:10 +01:00
Mike Pall
7cc981c140 string.format("%q", str) is now fully reversible (from Lua 5.2). 2010-11-19 18:22:08 +01:00
Mike Pall
29b8959df1 Parse hexadecimal escapes in strings (from Lua 5.2). 2010-11-19 18:15:50 +01:00
Mike Pall
57cd5026eb Disable Lua 5.2 features by default. See -DLUAJIT_ENABLE_LUA52COMPAT. 2010-11-19 17:00:11 +01:00
Mike Pall
ba602c9578 Add support for __pairs and __ipairs metamethods (from Lua 5.2). 2010-11-18 00:23:24 +01:00
Mike Pall
3754a8fe7a Allow running C functions with coroutine.create(), too. 2010-11-17 20:07:55 +01:00
Mike Pall
751ff5b392 Add jit.os string. 2010-11-16 15:05:21 +01:00
Mike Pall
24baf77955 Cleanup architecture, ABI and OS definitions. 2010-11-16 15:03:40 +01:00
Mike Pall
1de05d1147 Avoid using negative hex numbers with DynASM. 2010-11-16 13:41:58 +01:00
Mike Pall
ad29c1f39f Rename character type handling from lj_ctype* to lj_char*. 2010-11-09 12:09:54 +01:00
Mike Pall
fe21a42a92 Fix conflict between loop branch inversion and HREF+NE/EQ merging. 2010-11-05 23:12:43 +01:00
Mike Pall
188f0b04e1 Number parser shouldn't accept '0x' without hex digits. 2010-11-02 16:01:43 +01:00
Mike Pall
44372a4453 Fix parsing of hex floats. 2010-11-01 17:53:04 +01:00
Mike Pall
ab1b67f73a Fix collectgarbage("count") result if more than 2GB is in use.
Thanks to Tony Finch.
2010-10-25 14:53:37 +02:00
Mike Pall
08b0ede194 Reduce 32GB RLIMIT_DATA on FreeBSD/x64 to allocate low-2GB memory.
Thanks to Tony Finch.
2010-10-23 16:31:27 +02:00
Mike Pall
02dc9d1082 Avoid compiler warning. 2010-10-23 15:28:28 +02:00
Mike Pall
65dec38e44 PPC: Preserve RD during array resizing in BC_TSETM. 2010-10-18 16:12:27 +02:00
Mike Pall
5391a5f5b1 Fix recording of y = select(n, ...) for non-int indexes. 2010-10-11 21:52:22 +02:00
Mike Pall
b3cf2c70f4 Decouple SLOAD type and optional conversion. 2010-10-11 21:13:37 +02:00
Mike Pall
cc62edebfd x64: Fix type check for numbers in compiled code. 2010-10-11 19:24:12 +02:00
Mike Pall
5140b40b44 x64: Optimize internal/external tag conversion in lua_type(). 2010-10-11 17:26:07 +02:00
Mike Pall
a3eeee5b3e PPC: Update DynASM-generated file.
PPC/e500v2 interpreter port is now feature-complete.
2010-10-07 02:24:57 +02:00
Mike Pall
a7caa4894c PPC: Use ZERO register instead of extra load immediate. 2010-10-07 02:21:54 +02:00
Mike Pall
9d201c972a PPC: Add coroutine.resume/wrap_aux/yield() fast functions. 2010-10-07 02:16:44 +02:00
Mike Pall
9f14e03d6e PPC: Add string.sub() fast function. 2010-10-06 16:18:24 +02:00