Commit Graph

113 Commits

Author SHA1 Message Date
Mike Pall
865ec114a7 FFI: Fix recording of casts from 32 bit pointers to integers. 2011-05-31 21:39:37 +02:00
Mike Pall
effdfda673 Move IR_CALL* definitions to lj_ircall.h. 2011-05-22 16:28:43 +02:00
Mike Pall
6534152b44 Fix compiler warning. 2011-05-04 23:45:02 +02:00
Mike Pall
c77ca54564 FFI: Compile C function calls with 64 bit args/results in 32 bit mode. 2011-04-29 19:40:50 +02:00
Mike Pall
5d096dcfde FFI: Add ffi.istype() function. 2011-04-20 01:53:26 +02:00
Mike Pall
31e0774a9e FFI: Fix cdata finalization. 2011-04-13 21:37:54 +02:00
Mike Pall
3b6f37dd2c FFI: Add ctype metamethods and ffi.metatype(). 2011-04-12 19:16:39 +02:00
Mike Pall
a226fb4cc7 FFI: Force snapshot after C call to preserve semantics. 2011-03-15 14:56:42 +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
e1aa8d0d97 FFI: Fix compiled ffi.string() semantics. 2011-02-28 19:47:51 +01:00
Mike Pall
a720db409d FFI: Record calls to functions with void results. 2011-02-23 00:28:49 +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
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
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
bf58160b7a FFI: Simplify and fix tonumber() for cdata objects. 2011-02-06 12:23:58 +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
14f5103764 FFI: Record C library namespace lookups. 2011-02-05 14:16:16 +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
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
a1e0f991d8 FFI: Record 64 bit integer divide and modulo. 2011-02-02 21:24:55 +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
992bc2caa3 FFI: Limit index range for complex numbers. 2011-01-29 19:47:37 +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
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
72b3fff72f FFI: Simplify initializer rules. Clarify docs. 2011-01-23 14:23:21 +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
335232b0f1 FFI: Record conversions to bool ctype. 2011-01-16 19:42:53 +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
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
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
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
3291bb62e0 FFI: Record pointer arithmetic. 2011-01-03 01:59:26 +01:00
Mike Pall
55a9be7809 FFI: Record tonumber() for boxed cdata. 2011-01-02 18:30:02 +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
65b194a2f8 Copy destination type for CONV from ir->t to op2, too. 2010-12-31 01:00:54 +01:00
Mike Pall
158de60b8c Refactoring of conversion ops, part 2: cleanup cdata conversions. 2010-12-30 00:42:00 +01:00
Mike Pall
d176433e32 FFI: Catch various NYI cases while recording. 2010-12-28 19:09:01 +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
255c6e8c87 FFI: Drop IR_CNEWI. Add IR_CNEWP only for pointers/refs. 2010-12-17 17:20:04 +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
fbcc925a2d FFI: Fix auto-deref of pointers to structs. 2010-12-15 19:48:20 +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
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
09e2bdbb0a FFI: Always specialize to the field name for struct access. 2010-12-09 22:48:01 +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
6a04591b7b FOLD (base+(idx+k)*sz)+ofs ==> (base+idx*sz)+(ofs+k*sz). 2010-12-08 03:33:48 +01:00
Mike Pall
d778680098 FFI: Record cdata index operations (preliminary, lots of NYI cases). 2010-12-08 02:11:18 +01:00