Commit Graph

723 Commits

Author SHA1 Message Date
Mike Pall
314995aebf ARM: Finish basic table indexing and add metamethod handlers. 2011-04-05 00:25:31 +02:00
Mike Pall
a7874cb299 ARM: Add assert() and type() fast functions. 2011-04-05 00:24:23 +02:00
Mike Pall
43d7db62d1 ARM: Add pcall() and xpcall() fast functions and unwinders. 2011-04-05 00:23:05 +02:00
Mike Pall
959683c77c PPC: Minor cleanups of interpreter. 2011-04-04 02:00:38 +02:00
Mike Pall
6511941348 ARM: Add fast functions pairs()/next() and ipairs() + iterator. 2011-04-04 01:56:41 +02:00
Mike Pall
5b146f61b5 ARM: Add tostring() fast function. 2011-04-04 01:55:41 +02:00
Mike Pall
6110faadd8 ARM: Add basic infrastructure for fast functions. 2011-04-04 01:54:56 +02:00
Mike Pall
dd4a043b78 ARM: Add table indexing with string keys. Add get global. 2011-04-04 01:51:29 +02:00
Mike Pall
0e7009ddc8 ARM: Add table constructors. 2011-04-04 01:49:24 +02:00
Mike Pall
81fa9e34cd ARM: Add call and iterator call instructions. 2011-04-04 01:47:23 +02:00
Mike Pall
85fff386ef ARM: Add missing parts of return handling. 2011-04-04 01:46:08 +02:00
Mike Pall
f1c79f80c2 ARM: Minor fixes and cleanups for type checks. 2011-04-04 01:44:54 +02:00
Mike Pall
5b06b298a2 ARM: Add binary arithmetic instructions. 2011-03-30 21:56:05 +02:00
Mike Pall
a0e4711055 ARM: Add basic loop and branch instructions. 2011-03-30 21:54:33 +02:00
Mike Pall
7b0a125cf7 ARM: Add basic unary bytecode instructions. 2011-03-29 02:31:47 +02:00
Mike Pall
ca494b72a9 ARM: Add support to call Lua functions and return from them. 2011-03-29 02:30:41 +02:00
Mike Pall
c04a252a06 ARM: Add support to call C functions. 2011-03-29 02:29:27 +02:00
Mike Pall
cff08b2315 ARM: Add entry and exit points into VM. Add type check macros. 2011-03-29 02:24:35 +02:00
Mike Pall
3bcb48c6a1 ARM: Add frame unwind info for assembler part. 2011-03-29 02:23:05 +02:00
Mike Pall
71f976b02e ARM: Add instruction/call decode + dispatch macros. 2011-03-29 02:26:09 +02:00
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