Commit Graph

853 Commits

Author SHA1 Message Date
Mike Pall
98e3c8a8ff ARM: Add register assignments, type definitions and stack layout. 2011-03-29 02:18:36 +02:00
Mike Pall
4c9a10f3ad Avoid compiler warning. 2011-03-28 19:22:17 +02:00
Mike Pall
492efb7e7e Clean up DynASM glue macros. Thanks to Josh Haberman. 2011-03-28 15:06:30 +02:00
Mike Pall
32aef8aee4 ARM: Add skeleton for ARM interpreter. 2011-03-26 18:42:41 +01:00
Mike Pall
b6ed984843 ARM: Add support for ARM relocations to buildvm. 2011-03-26 18:40:11 +01:00
Mike Pall
7088abce8f DUALNUM: Fix narrowing of unary minus. 2011-03-19 17:46:10 +01:00
Mike Pall
a1c887e3b9 Fix data-flow analysis for BC_ITERC. 2011-03-19 17:30:15 +01:00
Mike Pall
642ae06916 x64: Use external unwinding for lua_yield(). 2011-03-18 23:38:05 +01:00
Mike Pall
063182d79c FFI: Fix marking of ffi.gc() finalizer table. 2011-03-17 17:31:48 +01:00
Mike Pall
ac3b1dcfc5 x64: Workaround for libgcc unwind bug (still present in RHEL 5.5). 2011-03-17 16:06:41 +01:00
Mike Pall
6299485000 DUALNUM: Narrow result of math.floor() and math.ceil(). 2011-03-15 18:15:42 +01:00
Mike Pall
dcbae09b1d DUALNUM: Narrow unary minus. 2011-03-15 18:14:18 +01:00
Mike Pall
a226fb4cc7 FFI: Force snapshot after C call to preserve semantics. 2011-03-15 14:56:42 +01:00
Mike Pall
7fb1075903 DUALNUM: Add integer variant of MIN/MAX. 2011-03-11 23:28:46 +01:00
Mike Pall
889368e921 Get rid of the remaining silly cast macros from Lua. 2011-03-10 02:13:43 +01:00
Mike Pall
bfce3c1127 DUALNUM: Handle integer type in JIT compiler. 2011-03-10 01:57:24 +01:00
Mike Pall
3f26e3a89d FFI: Fix and optimize recording of cdata[cdata]. 2011-03-10 01:41:58 +01:00
Mike Pall
1c9981ae4c x86/x64: Fix code generation for fused IR_MUL/IR_MULOV. 2011-03-10 01:09:18 +01:00
Mike Pall
a127eaf8d2 FFI: Fix x86 code generation for ffi.string(). 2011-03-10 00:57:02 +01:00
Mike Pall
30cc4d3bba Fix handling of err_loc() within cpcall frames. 2011-03-09 22:39:17 +01:00
Mike Pall
0125ee8211 DUALNUM: Add extra assertions to interpreter. 2011-03-09 22:38:53 +01:00
Mike Pall
449cee405c Fix code generation for bit.bnot(). 2011-03-07 22:11:01 +01:00
Mike Pall
54978e481b DUALNUM: Make overflow guards weak. Add IR_USE and IR_MULOV. 2011-03-07 20:21:38 +01:00
Mike Pall
a30f58b54b DUALNUM: Fix x87 code for BC_ISEQN/BC_ISNEN. 2011-03-07 20:12:39 +01:00
Mike Pall
8eb09fe820 Suppress recording of retried fast functions. 2011-03-07 20:03:38 +01:00
Mike Pall
f29a9d4341 Fix narrowing of POW. 2011-03-03 17:29:09 +01:00
Mike Pall
1cb58fb7bb Fix code generation for Intel Atom in x64 mode. 2011-03-03 00:49:45 +01:00
Mike Pall
6c43767c23 FFI: Resolve ld script redirection in ffi.load(). 2011-03-01 12:31:16 +01:00
Mike Pall
e1aa8d0d97 FFI: Fix compiled ffi.string() semantics. 2011-02-28 19:47:51 +01:00
Mike Pall
83a37aeca7 FFI: Add ffi.gc() function for finalization of cdata objects. 2011-02-28 16:48:13 +01:00
Mike Pall
cead25f928 DUALNUM: Handle integer type in x86/x64 interpreter and libraries. 2011-02-27 01:36:59 +01:00
Mike Pall
c031d4b6a0 DUALNUM: Handle integer type in FFI. 2011-02-27 01:31:22 +01:00
Mike Pall
d437086c5a x64: Improve accuracy of x^-k. 2011-02-25 11:47:34 +01:00
Mike Pall
b90d80d80a Fix table.maxn(). 2011-02-23 14:52:50 +01:00
Mike Pall
a720db409d FFI: Record calls to functions with void results. 2011-02-23 00:28:49 +01:00
Mike Pall
4c97cc7730 Eliminate dead slots in snapshots using bytecode data-flow analysis. 2011-02-22 22:39:12 +01:00
Mike Pall
8d0b073ff0 From Lua 5.2: Support load(string). 2011-02-20 21:17:49 +01:00
Mike Pall
2bae11a49a From Lua 5.2: fp:read("*L"). 2011-02-20 21:07:19 +01:00
Mike Pall
c823e26b8b From Lua 5.2: table.unpack(). Needs -DLUAJIT_ENABLE_LUA52COMPAT. 2011-02-20 20:53:09 +01:00
Mike Pall
baef199ece From Lua 5.2: Add package.searchpath().
Thanks to F. Perrad.
2011-02-20 20:48:13 +01:00
Mike Pall
f83d58d6fb From Lua 5.2: Empty statement. Needs -DLUAJIT_ENABLE_LUA52COMPAT. 2011-02-20 20:38:36 +01:00
Mike Pall
d82022a656 From Lua 5.2: coroutine.running(). Needs -DLUAJIT_ENABLE_LUA52COMPAT. 2011-02-20 20:33:00 +01:00
Mike Pall
34bcf6378b FFI: Fix recording of userdata conversions. 2011-02-20 02:13:32 +01:00
Mike Pall
cf88c43dd6 FFI: Fix 64 bit to 32 bit truncations on x64. 2011-02-20 00:18:46 +01:00
Mike Pall
32eaa48c79 FFI: Fix recording of ffi.copy() and ffi.fill(). 2011-02-19 23:04:16 +01:00
Mike Pall
bd29d16141 FFI: Improve conversion error messages. 2011-02-19 12:56:12 +01:00
Mike Pall
03946ac978 DUALNUM: Add integer type to core VM. 2011-02-17 00:44:14 +01:00
Mike Pall
963f05c7e1 DUALNUM: Add build infrastructure.
Note: DUALNUM is disabled by default and won't work yet.
2011-02-17 00:42:57 +01:00
Mike Pall
54b6054087 FFI: Fix management of C library handles for default namespace. 2011-02-16 23:52:18 +01:00
Mike Pall
5fe7282d4c Fix error handling within metamethods. Special-case FFI mm. 2011-02-16 00:38:23 +01:00
Mike Pall
4dca589af0 Add workaround for lj_meta_tset() newkey inconsistency. 2011-02-15 01:02:08 +01:00
Mike Pall
4117a61620 PPC: Disable FFI due to NYI: comparisons and calls. 2011-02-14 23:25:18 +01:00
Mike Pall
19b84009b2 Fix type mismatch in XSTORE forwarding. 2011-02-14 23:02:16 +01:00
Mike Pall
97d84111fd RELEASE LuaJIT-2.0.0-beta6 2011-02-11 16:28:37 +01:00
Mike Pall
7c61073a30 FFI: Disable unused code for some build modes. 2011-02-11 16:22:58 +01:00
Mike Pall
9c81c81ed5 Fix bytecode optimization of and/or operators. 2011-02-08 01:00:47 +01:00
Mike Pall
c39ca7c35b FFI: Record ffi.abi(). 2011-02-08 00:09:33 +01:00
Mike Pall
7a37b93f1b FFI: Record ffi.copy() and ffi.fill(). 2011-02-07 23:49:27 +01:00
Mike Pall
fb53d4aeb7 FFI: Fix recording of pointer arithmetic. 2011-02-07 23:42:51 +01:00
Mike Pall
97d0874ff5 Add IR_XBAR, a barrier against XLOAD/XSTORE optimizations. 2011-02-07 21:59:25 +01:00
Mike Pall
0a50356b6f Improve static assertion macro. 2011-02-07 21:44:01 +01:00
Mike Pall
51e8fe9cf0 FFI: Allow cdata types for integer arguments of ffi.* functions. 2011-02-07 17:13:14 +01:00
Mike Pall
8da287cab8 FFI: Fix handling of enum arguments to C calls. 2011-02-07 16:41:51 +01:00
Mike Pall
ceece4d13e FFI: Perform stricter checks in ffi.cast(). Record ffi.cast(). 2011-02-06 12:46:18 +01:00
Mike Pall
bf58160b7a FFI: Simplify and fix tonumber() for cdata objects. 2011-02-06 12:23:58 +01:00
Mike Pall
4c74f70464 Strength-reduce 32 to 64 bit widening for XLOAD U8/U16 inputs. 2011-02-06 00:45:39 +01:00
Mike Pall
26bb0fe24b FFI: Limit number of arguments for recorded calls. 2011-02-05 23:01:10 +01:00
Mike Pall
26fadcd25b FFI: Record simple C function calls.
Only handles cdecl and fixarg C functions.
Doesn't handle pass-by-value aggregates.
Doesn't handle 64 bit args/returns on 32 bit CPUs.
2011-02-05 21:50:15 +01:00
Mike Pall
bf05209e14 FFI: Optimize snapshots for cdata comparisons. 2011-02-05 18:54:08 +01:00
Mike Pall
da3f256a52 Fix metamethod comparisons triggered by BC_ISEQP/BC_ISNEP. 2011-02-05 16:32:08 +01:00
Mike Pall
14f5103764 FFI: Record C library namespace lookups. 2011-02-05 14:16:16 +01:00
Mike Pall
223d85aa06 Treat metatables of special userdata objects as immutable. 2011-02-05 14:09:50 +01:00
Mike Pall
c29ed4dbbf FFI: Record ffi.string(). 2011-02-05 01:05:56 +01:00
Mike Pall
618b451648 FFI: Avoid intermediate boxes for tonumber(), too. 2011-02-05 01:04:41 +01:00
Mike Pall
1abf5d4d26 FFI: Disable MUL => BSHL FOLD rule on 32 bit. 2011-02-03 20:10:13 +01:00
Mike Pall
df65b8b419 FFI: Rename IR_CNEWP to IR_CNEWI and use it to box 64 bit integers.
Generates smaller IR and DCE eliminates many intermediate boxes.
Needs allocation sinking to eliminate the boxes kept alive by PHIs.
2011-02-03 04:22:27 +01:00
Mike Pall
1027018b21 Rename IR_POWI to IR_POW. 2011-02-02 21:33:11 +01:00
Mike Pall
433fd18f6d FFI: Add basic FOLD rules for 64 bit integer DIV, MOD and POWI. 2011-02-02 21:25:43 +01:00
Mike Pall
a1e0f991d8 FFI: Record 64 bit integer divide and modulo. 2011-02-02 21:24:55 +01:00
Mike Pall
2c8945d3e7 Use names defined in lualib.h for library registration. 2011-02-02 02:38:59 +01:00
Mike Pall
1505d6ffde Fix OSX build to work with newer ld64 versions. 2011-02-02 02:31:59 +01:00
Mike Pall
b613216efc Add SPLIT pass to split 64 bit IR instructions for 32 bit CPUs.
Add generic HIOP instruction for extra backend functionality.
Add support for HIOP to x86 backend.
Use POWI for 64 bit integer x^k, too.
POWI is lowered to a call by SPLIT or the x64 backend.
2011-02-02 02:29:37 +01:00
Mike Pall
c539c0cac8 Add SSE3 CPU feature detection. 2011-02-01 19:28:03 +01:00
Mike Pall
992bc2caa3 FFI: Limit index range for complex numbers. 2011-01-29 19:47:37 +01:00
Mike Pall
6fd721ce72 FFI: Implement POSIX/x64 struct-by-value calling conventions. 2011-01-29 13:04:16 +01:00
Mike Pall
6fee0002b9 Fix 64 bit case of (SUB x x) and (BXOR x x) FOLD rules. 2011-01-28 02:17:35 +01:00
Mike Pall
07d8a53b39 FFI: Split up 64 bit x^k helper into signed/unsigned. 2011-01-28 02:15:30 +01:00
Mike Pall
cd9b8f90e2 FFI: Fix various issues with C type table reallocations. 2011-01-27 16:28:24 +01:00
Mike Pall
279b6ec22e FFI: Fix symbol name redirection. 2011-01-27 16:07:02 +01:00
Mike Pall
3184f17169 FFI: Move code for cdata arithmetic to lj_carith.c. 2011-01-26 21:46:02 +01:00
Mike Pall
2526498c71 FFI: Record cdata indexing with integer cdata. 2011-01-26 21:14:58 +01:00
Mike Pall
de0781d610 FFI: Allow cdata indexing with integer cdata. 2011-01-26 21:14:38 +01:00
Mike Pall
0622ad9adc Fix comments for BC_ITERN. 2011-01-26 19:55:55 +01:00
Mike Pall
30db71e2e2 FFI: Convert enum return value of C function to underlying type. 2011-01-26 14:18:12 +01:00
Mike Pall
a285415b01 One more fix for the trace flush logic. Sigh. 2011-01-26 02:34:30 +01:00
Mike Pall
1b75ec22c8 FFI: Add symbol name redirection.
This works like the GCC extension, e.g.:
FILE *fopen(const char *fn, const char *mode) __asm__("" "fopen64");
2011-01-26 02:31:19 +01:00
Mike Pall
ed6c895ae5 ARM: Add ARM target architecture selection (disabled). 2011-01-25 18:50:24 +01:00
Mike Pall
705f593ffc FFI: Don't force zero terminator on string to array conversion. 2011-01-24 15:51:33 +01:00
Mike Pall
96ef87bdfd Clear bytecode penalty cache in jit.flush(). 2011-01-23 19:06:19 +01:00
Mike Pall
ef3b209127 FFI: Fix ffi.load() error message on Windows. 2011-01-23 14:28:01 +01:00
Mike Pall
72b3fff72f FFI: Simplify initializer rules. Clarify docs. 2011-01-23 14:23:21 +01:00
Mike Pall
f529d22869 Another fix for the trace flush logic. I'll get this right someday.
Thanks to David Manura.
2011-01-22 20:32:23 +01:00
Mike Pall
8396c3cdbc PPC: Fix ipairs() for keys in the hash part. 2011-01-20 12:25:56 +01:00
Mike Pall
6bce6b118e Add compile-time option LUAJIT_ENABLE_CHECKHOOK. Disabled by default.
This checks for asynchronously set hooks from compiled code.
2011-01-19 02:05:37 +01:00
Mike Pall
d20e53c322 Combine i8/u8 XLOAD with BAND+comparison into test byte mrm, imm8. 2011-01-19 02:05:26 +01:00
Mike Pall
8407ac0eca Add volatile XLOADs. 2011-01-19 02:05:12 +01:00
Mike Pall
925050fe3f Differentiate between IR_KPTR and IR_KKPTR.
IR_KPTR holds a const pointer to possibly non-const content.
IR_KKPTR holds a const pointer to definitely const content.
Note that only content known by the VM to be const qualifies.
Content tagged as const by users (e.g. const char *) doesn't.
2011-01-19 00:40:03 +01:00
Mike Pall
685dfc3172 Fix for the fix for the trace flush logic. 2011-01-18 22:17:27 +01:00
Mike Pall
751eff9f97 Cleanup and fix trace flush logic. 2011-01-18 21:08:23 +01:00
Mike Pall
f385af7084 FFI: Record 64 bit integer comparisons and pointer comparisons. 2011-01-17 01:23:04 +01:00
Mike Pall
83d8c86bbb FFI: Record conversions from bool ctype. 2011-01-17 01:21:57 +01:00
Mike Pall
66ba1e68aa Add trace recorder infrastructure for instruction post-processing. 2011-01-17 01:20:10 +01:00
Mike Pall
b2ff889c6e FFI: Don't swap operands for cdata __eq metamethod call. 2011-01-17 01:09:43 +01:00
Mike Pall
335232b0f1 FFI: Record conversions to bool ctype. 2011-01-16 19:42:53 +01:00
Mike Pall
2940ab023a Fix assertion. 2011-01-16 19:24:50 +01:00
Mike Pall
6f746577d0 FFI: Allow indexing a struct constructor to get constants.
Specialize to the CTypeID held by a constructor in all cases.
2011-01-16 18:32:33 +01:00
Mike Pall
0fa32e5d31 FFI: Record conversions from strings to enums or pointers. 2011-01-13 17:20:29 +01:00
Mike Pall
59643c86fb Add FOLD rule for CONV.num.u32 KINT. 2011-01-13 17:18:08 +01:00
Mike Pall
706bbe394e Fix recording of select() with multi-char string as 1st argument. 2011-01-13 17:16:22 +01:00
Mike Pall
6e702d703e FFI: Cleanup some type conversions.
Remove pointless conversions to booleans.
Allow assigning functions to function pointers.
2011-01-13 16:39:42 +01:00
Mike Pall
0ec7f5ed92 FFI: Add 64 bit integer comparisons and pointer comparisons. 2011-01-13 02:35:29 +01:00
Mike Pall
e7b08b2361 FFI: Simplify logic for pointer arithmetic. 2011-01-12 21:34:11 +01:00
Mike Pall
a5e48285e3 FFI: Rearrange code in lib_ffi.c. 2011-01-12 21:33:58 +01:00
Mike Pall
2363399b10 FFI: Untangle and fix calling convention definitions. 2011-01-12 20:01:35 +01:00
Mike Pall
1548383dbe Avoid compiler warnings. 2011-01-12 18:22:00 +01:00
Mike Pall
8d858bfefa FFI: Fix C calls with complex values on x64. 2011-01-11 03:36:49 +01:00
Mike Pall
a54843bb51 FFI: Lookup decorated name for fastcall/stdcall functions. 2011-01-11 03:08:54 +01:00
Mike Pall
87a6c8a980 FFI: Auto-detect __stdcall and fix up C function declarations. 2011-01-10 20:50:34 +01:00
Mike Pall
ddf6596333 FFI: Add ffi.load() and ffi.C default namespace. 2011-01-10 03:43:18 +01:00
Mike Pall
d215747fd5 FFI: Fix function pointer lookup for calls. 2011-01-10 03:38:23 +01:00
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