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