Commit Graph

1261 Commits

Author SHA1 Message Date
Mike Pall
e396bef7d8 PPC: Add pcall() and xpcall() fast functions. 2010-10-01 23:47:29 +02:00
Mike Pall
05099f0764 PPC: Add ipairs() fast function and its iterator. 2010-10-01 23:45:56 +02:00
Mike Pall
61d498be87 PPC: Add next() and pairs() fast functions. 2010-10-01 23:43:39 +02:00
Mike Pall
dcf006bfa2 PPC: Add BC_ITERN and BC_ISNEXT. 2010-10-01 01:44:02 +02:00
Mike Pall
ac76493df1 Specialize bytecode for pairs()/next() iterator. Speedup: 3.5x.
Parser predict pairs/next and emits specialized bytecode.
Bytecode is descpecialized at runtime if the prediction was wrong.
Store slot index in hidden control var to avoid key lookups.
2010-09-30 21:55:32 +02:00
Mike Pall
fce05fd6e1 x64: Use 64 bit slot copies in the interpreter. 2010-09-30 17:47:32 +02:00
Mike Pall
c0a8f5fb32 PPC: Add dispatch to fast function fallback handlers. 2010-09-30 02:58:29 +02:00
Mike Pall
4afff973a4 PPC: Add bit.* fast functions. 2010-09-30 02:56:54 +02:00
Mike Pall
408cd055a4 PPC: Add basic infrastructure for fast functions. 2010-09-30 02:54:33 +02:00
Mike Pall
a47136031e PPC: Add frame unwind info for assembler part.
Add define for target-specific exception handler return register.
2010-09-28 17:50:33 +02:00
Mike Pall
dc4fdecfb5 PPC: Don't use callee-save registers when folding '%' operator. 2010-09-28 14:59:33 +02:00
Mike Pall
a500752787 Fix checks for minimum required compiler versions. 2010-09-28 14:20:49 +02:00
Mike Pall
f635e3e5bb PPC: Add dispatch target for call hook. 2010-09-23 02:42:29 +02:00
Mike Pall
493d0aa259 PPC: Add dispatch targets for instruction and return hooks. 2010-09-23 02:41:06 +02:00
Mike Pall
6aedfa7919 PPC: Add lj_vm_resume(). 2010-09-23 02:35:51 +02:00
Mike Pall
5beedd6ef8 Workaround for missing fseeko/ftello prototypes on ancient glibc. 2010-09-23 01:30:53 +02:00
Mike Pall
d351c2ae36 x86/x64: Fix stack overflow handling for coroutine results. 2010-09-22 22:59:41 +02:00
Mike Pall
5baf0f9dc2 Fix stack growth for coroutine.wrap(). 2010-09-22 21:16:16 +02:00
Mike Pall
d270e890f1 PPC: Reschedule continuation dispatch. 2010-09-21 21:43:29 +02:00
Mike Pall
aff6b3080f Whitespace. 2010-09-21 21:41:49 +02:00
Mike Pall
201eec484c PPC: Add fixed register for TOBIT bias. 2010-09-21 21:40:39 +02:00
Mike Pall
0c0047e50c PPC: Add missing register setup after unwind to ff pcall. 2010-09-21 21:36:37 +02:00
Mike Pall
7336305e7c PPC: Fix result copy for return to Lua. 2010-09-21 21:21:21 +02:00
Mike Pall
1c3b8c51c9 PPC: Fix constant folding of modulo operator. 2010-09-21 20:54:12 +02:00
Mike Pall
bc146ddbe7 Consistently round int args of string functions on x64. 2010-09-21 18:04:59 +02:00
Mike Pall
4cd2299acd Improve AA for field accesses: disambiguate new allocations. 2010-09-21 15:21:26 +02:00
Mike Pall
3ae27ffebe Drop redundant (UGE any +0). 2010-09-21 02:44:18 +02:00
Mike Pall
38628d93b8 Improve FOLD/CSE of field loads and array/hash refs across NEWREF. 2010-09-21 02:28:14 +02:00
Mike Pall
23b5c56d41 Improve alias analysis: disambiguate new allocations. 2010-09-21 01:31:04 +02:00
Mike Pall
52b922c1e9 Avoid fusing potentially negative indexes into AREF on x64. 2010-09-18 18:34:38 +02:00
Mike Pall
9203d278d0 PPC: Add metamethod handlers and continuations for comparisons. 2010-09-17 16:07:01 +02:00
Mike Pall
9dc98280d2 PPC: Reschedule bytecode instruction fetch. 2010-09-17 16:01:02 +02:00
Mike Pall
66f0c43780 PPC: Add BC_CAT and lj_cont_cat. 2010-09-17 15:54:50 +02:00
Mike Pall
4f1d43d03e PPC: Fix ordered comparisons for NaN operands. 2010-09-16 02:09:19 +02:00
Mike Pall
028f80c599 PPC: Avoid comparison with NaN in BC_ISEQN/BC_ISNEN. 2010-09-16 02:06:20 +02:00
Mike Pall
3f32f4ac99 PPC: Add BC_TSETM. 2010-09-15 17:28:24 +02:00
Mike Pall
028a65a597 PPC: Add BC_VARG. 2010-09-15 17:27:17 +02:00
Mike Pall
44702720c5 Don't traverse inactive GCtrace objects. 2010-09-15 01:13:07 +02:00
Mike Pall
77267bc538 Show names of IR calls in disassembler output. 2010-09-15 00:51:43 +02:00
Mike Pall
8dc76ee327 Add IR_VLOAD for vararg loads.
Also fixes the broken AA improvement in the last commit.
2010-09-14 19:58:27 +02:00
Mike Pall
23655bd52e Improve alias analysis for vararg loads. 2010-09-14 16:48:52 +02:00
Mike Pall
b69c02eb68 Avoid unnecessary vararg loads. 2010-09-14 16:48:25 +02:00
Mike Pall
5b740046f8 PPC: Fix line number in stack overflow error. 2010-09-14 03:13:44 +02:00
Mike Pall
f8b7fb7d2b PPC: Fix write barrier in BC_TSETV. 2010-09-14 01:23:34 +02:00
Mike Pall
2bdf3fcd50 PPC: Fix KBASE restore in BC_CALLT. 2010-09-14 01:20:01 +02:00
Mike Pall
fe159ea2fb PPC: Keep MULTRES in a register. 2010-09-14 00:46:06 +02:00
Mike Pall
3d17f71968 x86/x64: Avoid unnecessary resize in BC_TSETM. 2010-09-13 22:30:23 +02:00
Mike Pall
8a87395d8d PPC: Add support for shifted MULTRES. 2010-09-13 21:50:27 +02:00
Mike Pall
0001916f8d PPC: Add metamethod handlers for indexing instructions. 2010-09-13 21:26:27 +02:00
Mike Pall
7a766c771d PPC: Add missing write barrier to BC_TSETV. 2010-09-13 21:21:39 +02:00
Mike Pall
dcfc385bf3 PPC: Fix write barrier and linkage for BC_USETV/BC_USETS.
Some older linkers can't rearrange to accomodate R_PPC_REL14.
2010-09-13 21:19:33 +02:00
Mike Pall
32bfececc5 Release all memory when using the builtin allocator.
Blocks >128K are not kept in the segment list and were not destroyed.
2010-09-13 19:48:31 +02:00
Mike Pall
c88169dc46 Record y = select(x, ...) idiom. 2010-09-13 01:23:19 +02:00
Mike Pall
4ba0eb5f80 Record select(). 2010-09-13 01:21:44 +02:00
Mike Pall
847b9cf253 Record vararg expressions with varargs defined off-trace.
Add SLOAD variant to access the frame type/size.
2010-09-13 01:17:38 +02:00
Mike Pall
e32f7d96c1 Fix tailcalls from vararg functions. 2010-09-13 00:55:05 +02:00
Mike Pall
52f75e9a5c Fix off-by-one errors in maxslot calculation of trace recorder. 2010-09-12 03:14:17 +02:00
Mike Pall
4da03965c0 Record vararg expressions with known fixed number of results. 2010-09-12 02:42:02 +02:00
Mike Pall
c2c08ba9b3 Record calls to vararg functions.
This loop is now roughly 1000x faster than the Lua interpreter:
  local function f(a,b,...) end; for i=1,2e8 do f(1,2,i) end
Yet another silly microbenchmark -- I know.
2010-09-12 01:44:13 +02:00
Mike Pall
b72ae54dc0 Fix broken MSVC build. 2010-09-12 01:33:32 +02:00
Mike Pall
90f22760af PPC: Add argument coercion for BC_FORI. 2010-09-11 01:53:59 +02:00
Mike Pall
c330af2452 PPC: Add continuation dispatch and RA/nop continuations. 2010-09-11 01:52:26 +02:00
Mike Pall
cabcce1e1d PPC: Add metamethod handlers for arithmetic instructions. 2010-09-11 01:47:49 +02:00
Mike Pall
e15e4c4d95 PPC: Add metamethod handlers for call instructions. 2010-09-11 01:46:11 +02:00
Mike Pall
daafc0b2a2 Reduce minimum Lua frame size to 1. 2010-09-10 11:43:31 +02:00
Mike Pall
6fd315581c Optimize BC_VARG: use RC for numparams. 2010-09-10 11:34:29 +02:00
Mike Pall
96957a4551 Turn some lua_State fields into 32 bit pointers.
lua_State now fits into one cache line on x64.
2010-09-09 12:28:17 +02:00
Mike Pall
fd63b05253 Use biased integer constant for TSETM array index. 2010-09-09 12:01:29 +02:00
Mike Pall
8a1af8cf89 PPC: Use unsigned compares for pointer comparisons. 2010-09-09 01:14:17 +02:00
Mike Pall
9fd10963b9 PPC: Add upvalue get/set instructions. 2010-09-09 01:08:07 +02:00
Mike Pall
ec8f2918ba PPC: Add closure-related instructions. 2010-09-09 01:06:55 +02:00
Mike Pall
b2aa08c75c PPC: Add helper function for folding arithmetic ops. 2010-09-08 00:14:36 +02:00
Mike Pall
932193baa6 PPC: Add modulo instructions. 2010-09-08 00:12:23 +02:00
Mike Pall
e9e7df5bfe PPC: Add heavily optimized floor/ceil/trunc functions. 2010-09-08 00:09:36 +02:00
Mike Pall
db735e0519 PPC: Add binary arithmetic instructions (except MOD). 2010-09-07 01:24:25 +02:00
Mike Pall
15834c3990 PPC: Add unary instructions. 2010-09-07 01:15:21 +02:00
Mike Pall
341820987b PPC: Add table constructors. 2010-09-06 15:20:58 +02:00
Mike Pall
711e55bdf8 PPC: Add tailcall instructions. 2010-09-04 12:58:36 +02:00
Mike Pall
684acbe930 PPC: Add call and iterator call instructions. 2010-09-03 21:02:55 +02:00
Mike Pall
b4c8b05ad5 PPC: Add table indexing with variable keys or uint8_t. 2010-09-03 19:35:44 +02:00
Mike Pall
5043efae7d PPC: Add table indexing with string keys. Add get/set global. 2010-09-03 19:31:07 +02:00
Mike Pall
f708d31bcc Explicitly indicate tailcall from fast function fallback. 2010-09-02 17:16:56 +02:00
Mike Pall
44fb3ebc64 PPC: Add unary test and copy instructions. 2010-09-01 20:29:29 +02:00
Mike Pall
7457ee869a PPC: Add comparison instructions. 2010-09-01 20:27:39 +02:00
Mike Pall
222e01fa83 PPC: Add loop instructions. 2010-09-01 20:24:08 +02:00
Mike Pall
7ccdc8045b PPC: Unwind the stack after an error is thrown. 2010-09-01 00:27:48 +02:00
Mike Pall
d67eb4de49 PPC: Handle stack growth on return to C. 2010-09-01 00:25:35 +02:00
Mike Pall
d71bd78b8f PPC: Add move and constant instructions. 2010-09-01 00:19:27 +02:00
Mike Pall
8876704e05 Improve coalescing of multiple KPRI instructions to KNIL. 2010-09-01 00:18:00 +02:00
Mike Pall
00d10711ae PPC: Add return instructions. 2010-08-31 23:55:18 +02:00
Mike Pall
fc1866fb6f PPC: Handle stack growth during function calls. 2010-08-31 23:52:45 +02:00
Mike Pall
233dc76078 PPC: Add support to call Lua functions. 2010-08-31 23:47:55 +02:00
Mike Pall
96c1d8a8ad PPC: Clean up JIT/non-JIT symbol declarations in assembler part. 2010-08-31 00:49:29 +02:00
Mike Pall
f4d4af1b6d PPC: Add support to call C functions and to return back to C.
Command line starts now, but it can't run any Lua code yet.
2010-08-31 00:29:38 +02:00
Mike Pall
690b1f3e4b PPC: Add entry and exit points into VM. Add type check macros. 2010-08-31 00:17:22 +02:00
Mike Pall
4ef6564f2e PPC: Add instruction/call decode + dispatch macros. 2010-08-31 00:05:10 +02:00
Mike Pall
c7f91f8cd1 PPC: Add register assignments and type definitions. 2010-08-31 00:04:32 +02:00
Mike Pall
e1efd0d871 Minor tweaks to integration of assembler part.
Remove unneeded PC restore in vm_growstack_*.
Don't declare symbols that are unused in interpreter-only builds.
Don't embed lj_vm_foldfpm in interpreter-only builds.
Add 2nd temporary TValue in lua_State.
2010-08-29 20:04:40 +02:00
Mike Pall
844e40d700 PPC: Clean up masked shift/rotate target settings. 2010-08-29 12:52:20 +02:00
Mike Pall
9cb5046c3f PPC: Add stack frame layout for PPCSPE target.
PPCSPE target compiles now, but will trap for any NYI parts.
Cross-compilation instructions:
  make HOST_CC="gcc -m32" CROSS=powerpc-e500v2-linux-gnuspe- TARGET=ppcspe
2010-08-27 18:32:24 +02:00
Mike Pall
b3bd9b55e0 Improve target architecture detection in src/Makefile. 2010-08-27 18:17:29 +02:00
Mike Pall
a8d23e84e6 PPC: Add build rules and preprocessed skeleton for PPCSPE target. 2010-08-27 17:28:07 +02:00
Mike Pall
96b60d5ef3 PPC: Add skeleton for PowerPC interpreter. 2010-08-27 16:52:45 +02:00
Mike Pall
877ff1e28e Always enable check mode for DynASM (only used at build-time). 2010-08-27 13:19:35 +02:00
Mike Pall
a0e3c9bb5a PPC: Add support for word-wise relocations to buildvm asm targets. 2010-08-27 13:08:58 +02:00
Mike Pall
5526fa2312 PPC: Add PowerPC target architecture selection. 2010-08-25 13:00:42 +02:00
Mike Pall
06ae534328 Fix string.format() for non-finite numbers. 2010-08-24 23:06:10 +02:00
Mike Pall
d668373654 RELEASE LuaJIT-2.0.0-beta5 2010-08-24 15:10:40 +02:00
Mike Pall
55017d4626 Fix formatting of canonicalized number to string conversions. 2010-08-23 20:06:36 +02:00
Mike Pall
65b8c36def Fix encoding of doubles for mixed-endian cross builds. 2010-08-09 18:55:37 +02:00
Mike Pall
0d6f6f3fa0 Clean up some more DynASM target dependencies. 2010-08-08 18:03:20 +02:00
Mike Pall
be19218a6c Fix return from pcall within active hook. 2010-08-07 20:26:00 +02:00
Mike Pall
44de7eb48c Keep framesize in RA of FUNCC/FUNCCW instructions, too 2010-08-06 19:43:55 +02:00
Mike Pall
3d81368331 Fix lua_cpcall(). Duplicate save corrupted C frame chain. 2010-08-06 14:34:54 +02:00
Mike Pall
0a3329c581 Fix some compiler warnings. 2010-08-03 23:11:12 +02:00
Mike Pall
33ef1fa524 Untangle some target dependencies. 2010-08-03 22:09:12 +02:00
Mike Pall
a6b7952f7e Use FuncState typedef in favor of struct. 2010-08-03 22:08:08 +02:00
Mike Pall
c5feda2d53 Speed up string compares in string interning. 2010-07-21 23:55:05 +02:00
Mike Pall
420124372b Switch to fast string hash. 2010-07-21 22:53:27 +02:00
Mike Pall
d05873ee0a Abstract out pointer hash to hashrot(). Tune hash constants. 2010-07-21 22:06:38 +02:00
Mike Pall
6667ab0f26 Use independent hash for VM event dispatch. 2010-07-21 21:23:45 +02:00
Mike Pall
2ca58aa67d Fix arg check for two-arg SSE math functions in interpreter. 2010-07-14 14:11:48 +02:00
Mike Pall
0d3f190d94 Fix passing of constant args in FPRs on x64. 2010-07-14 13:04:29 +02:00
Mike Pall
7d5a3cb5d4 Rechain pseudo-resurrected string keys with colliding hashes. 2010-07-04 23:07:21 +02:00
Mike Pall
bbd1584d5f Do not eliminate PHIs for values only referenced from side exits. 2010-06-30 23:30:08 +02:00
Mike Pall
9f6707ddbb Fix frame setup for error handling in next(). 2010-06-28 18:07:34 +02:00
Mike Pall
cdc37a33b3 Fallback to metamethod resolving for tostring in print(). 2010-06-16 19:43:07 +02:00
Mike Pall
fa673eb179 Fix string.char() range check on x64. 2010-05-30 12:29:55 +02:00
Mike Pall
926f688cd0 Canonicalize string conversion of nan, inf, -inf. 2010-05-20 00:40:51 +02:00
Mike Pall
c7a3103f41 Fix handling of failed fp:read(..., "*n"). 2010-05-15 18:10:41 +02:00
Mike Pall
655401f3e9 Avoid name clash with standard POSIX function. 2010-05-09 22:47:09 +02:00
Mike Pall
41ec9a94b3 Avoid string allocation in GDB JIT API. 2010-05-09 03:27:24 +02:00
Mike Pall
5ff994fa37 Add weak guards. Emit TNEW/TDUP with a guard bit. 2010-05-08 18:59:59 +02:00
Mike Pall
8fa1db826c Create symbol table of JIT-compiled code for use with Linux perf tools.
Enable with: -DLUAJIT_USE_PERFTOOLS
2010-05-01 04:27:14 +02:00
Mike Pall
f28a42c923 Fix PHI elimination: mark right PHI as used, too. 2010-04-28 22:00:40 +02:00
Mike Pall
28cfccf748 Turn TValue setter macros into inline functions. 2010-04-26 00:28:44 +02:00
Mike Pall
41379126a2 Treat the tag of a TValue as unsigned everywhere. 2010-04-25 23:21:15 +02:00
Mike Pall
f396f3d192 Avoid starting a GC cycle immediately after library init. 2010-04-25 19:45:54 +02:00
Mike Pall
2ccb24f894 Fix TNEW in x64 interpreter. Do not force a full GC (ouch). 2010-04-25 19:33:39 +02:00
Mike Pall
ef0904e80b Make metamethod names proper GC roots. 2010-04-25 18:35:47 +02:00
Mike Pall
87e4daf89c Reorganize and fix placement of generated machine code on x64. 2010-04-25 14:52:29 +02:00
Mike Pall
2e24770ed3 Simplify management of current trace. Drop lazy save. 2010-04-25 13:53:33 +02:00
Mike Pall
721b73fecb Turn traces into true GC objects (GCtrace). 2010-04-25 03:32:29 +02:00
Mike Pall
3a32bbc7cb Simplify lexer a bit. 2010-04-24 20:23:02 +02:00
Mike Pall
28a6284642 Add assertions to guard against using lua_*call on dead coroutines. 2010-04-23 17:42:25 +02:00
Mike Pall
a6c52d80a2 Avoid compiler warning. 2010-04-23 15:38:08 +02:00
Mike Pall
ab45481199 No longer let the GC replace dead keys with the LJ_TDEADKEY tag.
Important: this changes the semantics of the write barrier!
Carefully read the big comment block in lj_obj.h
This helps HREFK key slot specialization and allows safely hoisting
HREF/HREFK across GC steps, too (fix for a barely reproducible bug).
Dead keys are only removed during a table resize (as before).
2010-04-21 01:45:58 +02:00
Mike Pall
d8cb69ed07 Simplify GC step calls from on-trace code. 2010-04-19 23:41:48 +02:00
Mike Pall
932cda0fe3 Replace on-trace GC frame syncing with interpreter exit.
Need to sync GC objects to stack only during atomic GC phase.
Need to setup a proper frame structure only for calling finalizers.
Force an exit to the interpreter and let it handle the uncommon cases.
Finally solves the "NYI: gcstep sync with frames" issue.
2010-04-19 00:43:35 +02:00
Mike Pall
ff82df797a Refactor buildvm symbol generation.
Fixes Windows and OSX builds with LUAJIT_DISABLE_JIT.
2010-04-14 17:13:13 +02:00
Mike Pall
fbe092c22d Fix setup of RD when dispatching to function headers after exit. 2010-04-09 14:26:18 +02:00
Mike Pall
db756430ee Don't copy SNAP_NORESTORE mark into loops and suppress restore in exit. 2010-04-08 01:32:26 +02:00
Mike Pall
23189fa40d RELEASE LuaJIT-2.0.0-beta4 2010-03-28 19:26:33 +02:00
Mike Pall
1d1d9221f3 Fold HREF of TNEW/TDUP to niltv. Fold HLOAD of niltv to nil. 2010-03-28 06:53:41 +02:00
Mike Pall
e4bca95451 Generate EQ(HREF, niltv) for load path, too (better CSE). 2010-03-28 06:49:09 +02:00
Mike Pall
1130ade4de Also merge EQ(HREF, niltv) in backend. 2010-03-28 06:47:04 +02:00
Mike Pall
44756ded7a Only fuse with spill slots for cross-section references. 2010-03-28 06:42:48 +02:00
Mike Pall
69df01efb2 Fix precondition check for NEWREF.
A check for nil value is not enough. Must check for ptr == niltv.
2010-03-28 03:34:18 +02:00
Mike Pall
6038866f7d Pass MULTRES or negated error code in RD to lj_vm_exit_interp.
Fixes overwrite of saved r12 after trace exit.
2010-03-23 18:31:17 +01:00
Mike Pall
097db7317b Move colocated array part after GCtab (now properly aligned). 2010-03-22 15:59:50 +01:00
Mike Pall
361266518c Move free node pos to t->node[0].freetop. Saves 4 bytes in GCtab. 2010-03-22 15:05:37 +01:00
Mike Pall
51c14bf1c8 Avoid snapshots for returns to known callers. 2010-03-21 16:01:44 +01:00
Mike Pall
5c8f1f2594 Increase max. fusion distance. 2010-03-19 00:28:04 +01:00
Mike Pall
37a3ca330f Reorder various structs to reduce padding (thanks to /usr/bin/pahole). 2010-03-15 23:29:10 +01:00
Mike Pall
1fea5cb822 Fix TSETM on x64/SSE builds when table is resized. 2010-03-15 19:00:16 +01:00
Mike Pall
871941a840 Add static target to msvcbuild.bat. 2010-03-15 18:50:59 +01:00
Mike Pall
c4727220e8 Add array bounds check elimination (-Oabc, on by default). 2010-03-15 17:02:53 +01:00
Mike Pall
24402ede04 Reorganize scalar evolution analysis. 2010-03-15 16:23:02 +01:00
Mike Pall
a25a717089 Fix folding of (comparison x x). 2010-03-14 17:10:47 +01:00
Mike Pall
16f33422f1 Restore MULTRES for snapshots pointing to CALLM etc. bytecodes. 2010-03-13 17:45:09 +01:00
Mike Pall
4f19a15bd9 Fix potential hang in UCLO redirection handling in hooks. 2010-03-10 22:13:23 +01:00
Mike Pall
c56d791316 Fix handling of bad argument types in recorder. 2010-03-09 19:03:43 +01:00
Mike Pall
f49649d005 Fix recording of getmetatable() for non-tables. 2010-03-09 17:49:13 +01:00
Mike Pall
6e6034e809 Avoid tracing the nil return case of tonumber(). 2010-03-09 03:47:49 +01:00
Mike Pall
2e614adb21 Do not fuse SLOAD across RETF. 2010-03-08 23:43:16 +01:00
Mike Pall
09e875519b RELEASE LuaJIT-2.0.0-beta3 2010-03-07 19:30:21 +01:00
Mike Pall
f354b46d29 Fix tracebacks for failed coroutines. 2010-03-07 18:21:14 +01:00
Mike Pall
6769397d38 Rebase dynamic library on OSX/x64. 2010-03-07 15:04:42 +01:00
Mike Pall
e40b001a79 Improve placement of dynamically generated code on x64. 2010-03-07 14:33:52 +01:00
Mike Pall
e38fbb3d0a Fix assertion in rec_check_slots. 2010-03-07 14:32:50 +01:00
Mike Pall
e807d46931 Generate indirect calls for out-of-range distances on x64. 2010-03-07 14:31:51 +01:00
Mike Pall
b4299256cd Fix unwind info for assembler part for OSX. 2010-03-07 14:29:04 +01:00
Mike Pall
5594a0c653 Fix generated 64 bit Mach-O assembler output. 2010-03-05 03:21:52 +01:00
Mike Pall
f76e5a311b Allocate 32 bit memory on OSX/x64 with mmap() hinting.
Must set -pagezero_size, otherwise the lower 4GB are blocked.
2010-03-04 16:27:42 +01:00
Mike Pall
3d2abf3148 Build as a native 32 or 64 bit binary by default. 2010-03-04 16:23:28 +01:00
Mike Pall
15c3bd7725 Improve performance of HREF/HREFK on x64. 2010-03-03 04:26:31 +01:00
Mike Pall
5fdb6e2e20 Fix 64 bit conversion warning. 2010-03-03 04:25:48 +01:00
Mike Pall
32309583e5 Improve register allocation on x64. 2010-03-02 23:34:13 +01:00
Mike Pall
20fa30b388 Fix comments about 64 bit FreeBSD mmap() behavior. 2010-03-02 21:53:59 +01:00
Mike Pall
1cda54a3ab Add compile errors for 64 bit OS without an equivalent of MAP_32BIT. 2010-03-02 19:41:56 +01:00
Mike Pall
a1bacd8d68 Fix amalgamated build. 2010-03-02 01:48:37 +01:00
Mike Pall
5d0b65519c Enable tracing of recursion.
Now compiles tail-recursion, up-recursion and down-recursion.
Benchmarks vs. Lua: fib 20x, ack 23x, binary-trees 4.7x.
2010-03-01 06:54:35 +01:00
Mike Pall
e7b737aa12 Implement down-recursion. 2010-03-01 06:45:30 +01:00
Mike Pall
69ea553024 Fix pc to line number translation for GDB JIT API. 2010-03-01 06:33:48 +01:00
Mike Pall
7e696124ec Resize stack up to the true limit. 2010-03-01 05:51:04 +01:00
Mike Pall
89c90f0955 Fix error message generation for OOM error. 2010-02-28 22:22:45 +01:00
Mike Pall
8cc50cf6b1 Conditionally compile functions that are unused with JIT disabled. 2010-02-28 21:58:40 +01:00
Mike Pall
2e22d33d9d Enable JIT compiler for x64.
Only works on Linux/x64 and Windows/x64 right now.
Force an x64 build on Linux/x64 with: make CC="gcc -m64"
NYI: handle on-trace OOM errors.
NYI: improve register allocation for x64.
2010-02-28 21:51:01 +01:00
Mike Pall
956065fd04 Add frame info for x64 GDB JIT API. 2010-02-28 17:52:11 +01:00
Mike Pall
2144d55eb8 Save/restore remaining callee-save regs on trace<->interp transitions. 2010-02-27 21:40:40 +01:00
Mike Pall
ec78d3177e Correctly align and free allocated machine code areas.
Bump default mcode area size to 64K for x64.
2010-02-27 20:18:11 +01:00
Mike Pall
52b7651327 Place dynamically generated code near static code on x64. 2010-02-26 18:20:24 +01:00
Mike Pall
a0fbb05bf0 Make penalty PRNG available for general use by compiler. 2010-02-26 17:01:33 +01:00
Mike Pall
3c6cec0846 Add x64 call argument setup. More 32/64 bit cleanups in assembler. 2010-02-25 03:35:07 +01:00
Mike Pall
b95294572c Move SIMD constants to jit_State to keep them in the low 4GB. 2010-02-24 23:17:17 +01:00
Mike Pall
b32f4f4549 Handle negative continuation offsets (WIN64 with debug). 2010-02-24 20:39:41 +01:00
Mike Pall
4e73488985 Fix 64 bit conversion warnings. 2010-02-24 20:02:20 +01:00
Mike Pall
4c9f71be5d Major 32/64 bit cleanups in assembler and exit handling.
Add 64 bit lightuserdata handling. Keep the tagged 64 bit value.
Allocate/save/restore 64 bit spill slots for 64 bit lightuserdata.
Fix code generation for 64 bit loads/stores/moves/compares.
Fix code generation for stack pointer adjustments.
Add fixed spill slot definitions for x64. Reduce reserved spill slots.
Disable STRREF + ADD fusion in 64 bit mode (avoid negative 32 bit ofs).
2010-02-24 07:09:34 +01:00
Mike Pall
e46f4c8a11 Fix 64 bit portability problem in rec_ret(). 2010-02-24 05:29:46 +01:00
Mike Pall
13a9d7e135 Add trace exit helper for x64. Fix trace entry for x64. 2010-02-24 01:32:44 +01:00
Mike Pall
2f3a917f2f Check relative jump distances for x64. 2010-02-24 01:29:11 +01:00
Mike Pall
47da0d8018 Fix type() implementation for x64 lightuserdata. 2010-02-24 01:23:52 +01:00
Mike Pall
857f538eac Fix exit state for 64 bit mode. 2010-02-24 01:18:49 +01:00
Mike Pall
8ae2f9feaa Randomize penalties for aborts and add blacklisting. 2010-02-23 19:41:32 +01:00
Mike Pall
d5c8fe4b90 Mark renamed registers as modified. 2010-02-23 17:22:12 +01:00
Mike Pall
c1362dcac9 Don't eliminate SLOAD restores across RETF.
Move restore-elimination logic into snapshot_slots().
2010-02-23 03:08:49 +01:00
Mike Pall
f751cd1d6f Do not patch parent exit for a stack check. 2010-02-22 21:21:52 +01:00
Mike Pall
659ea9de7b Ensure function and all args have a reference for call recording.
In practice this is only needed after a return to a lower frame.
2010-02-22 17:37:26 +01:00
Mike Pall
3336434aa0 Fix TRef for (dummy) 2nd arg of __len metamethod. 2010-02-22 17:33:39 +01:00
Mike Pall
86494c783d Back out history buffer for tailcall counts.
Use an aggregate counter independent of frame depth.
2010-02-22 16:57:59 +01:00
Mike Pall
19af483166 Add region selection for up-recursion and tail-recursion. 2010-02-22 14:35:47 +01:00
Mike Pall
e76bcd2914 Refactor Lua stack handling in lj_asm.c. 2010-02-21 17:26:21 +01:00
Mike Pall
c1658ddcf1 Eliminate redundant stack checks. Add checks for growing root traces. 2010-02-21 16:47:43 +01:00
Mike Pall
c52da1f2da Rethrow errors from trace exit handling from the right C frame. 2010-02-19 03:13:48 +01:00
Mike Pall
bbe7d818d9 Allow linking to already compiled functions. 2010-02-18 19:37:30 +01:00
Mike Pall
b11eeab906 Use a limited history buffer for tailcall counts while recording. 2010-02-18 19:32:13 +01:00
Mike Pall
65586ca4dc Adapt bytecode patching/unpatching for hot calls. 2010-02-18 17:17:50 +01:00
Mike Pall
59f54be9d3 Update trace recorder infrastructure for hot calls. 2010-02-18 06:07:31 +01:00
Mike Pall
2f300fb66a Fix some uses of tref_isint(). 2010-02-18 03:24:18 +01:00
Mike Pall
2b22b9e710 Drop obsolete shadow frame link stack. 2010-02-18 03:19:46 +01:00
Mike Pall
265a24b978 Add more assertions to compare the recorder state and the VM state. 2010-02-18 02:49:08 +01:00
Mike Pall
00ad80c9e4 Clear frame gaps in recorder to avoid resurrecting previous refs. 2010-02-18 02:45:03 +01:00
Mike Pall
8060f5b531 Just disable JIT compiler for non-SSE2 CPUs instead of aborting. 2010-02-16 23:39:24 +01:00
Mike Pall
c225ee8db4 Split CALL/FUNC recording.
Record __call resolving and specialization for CALL* bytecodes.
Record argument adjustment and fast functions for FUNC* bytecodes.
Avoids all pending/immediate decisions for chained fast functions.
Cleaner semantics for pcall(), xpcall() and __tostring metamethod.
Prerequisite to drop the shadow frame link stack again.
2010-02-16 04:04:16 +01:00
Mike Pall
afa07e0c46 Improve error reporting for traces aborted in non-Lua functions. 2010-02-15 22:44:23 +01:00
Mike Pall
e664945e0b Change record vmevent parameters. Dump function id on FUNC*. 2010-02-15 22:26:33 +01:00
Mike Pall
e1905f498a Use a different marker for hot calls. 2010-02-15 18:04:06 +01:00
Mike Pall
3452bfcf8c Add generic function handling for debug modules.
Don't call record vmevent for non-Lua functions.
2010-02-15 17:36:29 +01:00
Mike Pall
b838cd8dca Minor cleanup of trace event handling. 2010-02-15 16:41:52 +01:00
Mike Pall
1288e04186 Add missing FORI coercions in recorder. 2010-02-15 01:51:41 +01:00
Mike Pall
b6e4fde0dc Improve FOR loop const specialization and integerness checks. 2010-02-15 01:07:30 +01:00
Mike Pall
2a2f8ed6a1 Implement return hooks for Lua functions (zero-cost if disabled). 2010-02-14 20:48:33 +01:00
Mike Pall
8e38231f9e Implement call hooks (zero-cost if disabled). 2010-02-14 17:47:03 +01:00
Mike Pall
c93138b59e Major redesign of function call handling.
Drop call gates. Use function headers, dispatched like bytecodes.
Emit BC_FUNCF/BC_FUNCV bytecode at PC 0 for all Lua functions.
C functions and ASM fast functions get extra bytecodes.
Modify internal calling convention: new base in BASE (formerly in RA).
Can now use better C function wrapper semantics (dynamic on/off).
Prerequisite for call hooks with zero-overhead if disabled.
Prerequisite for compiling recursive calls.
Prerequisite for efficient 32/64 bit prototype guards.
2010-02-13 04:51:56 +01:00
Mike Pall
4f8d7be8ea Extend scope of local vars in debug info beyond final return. 2010-02-12 16:17:42 +01:00
Mike Pall
b2067236c5 Move dispatch tables out of GG_State struct. 2010-02-11 16:21:18 +01:00
Mike Pall
565eb39574 Drop frame clearing in exit handling and JIT compiled code. 2010-02-11 01:50:32 +01:00
Mike Pall
ab90b8fc2b Switch to pre-initialized stacks. Drop frame clearing in interpreter. 2010-02-11 01:21:40 +01:00
Mike Pall
bb0384c366 Replace GCproto reference with bytecode PC in GCfuncL. 2010-02-10 21:45:57 +01:00
Mike Pall
d5a46621f9 Drop bc field in GCproto since the bytecode is colocated. 2010-02-08 20:17:34 +01:00
Mike Pall
2ddea3838d Fix constructor bytecode generation for conditional values. 2010-02-08 16:08:58 +01:00
Mike Pall
f86f9e8eec Reduce whitespace in lj_bcdef.h. 2010-02-08 05:35:18 +01:00
Mike Pall
6194b1c896 Redesign of prototype generation, part 5: colocation of protoype arrays. 2010-02-08 05:30:57 +01:00
Mike Pall
f275a9d7ef Redesign of prototype generation, part 4: late creation of prototype. 2010-02-08 05:29:47 +01:00
Mike Pall
4424027844 Redesign of prototype generation, part 3: bc and lineinfo.
Use a growable, per-chunk bytecode instruction/line stack.
Collect bc/lineinfo for prototype at the end.
2010-02-08 05:28:57 +01:00
Mike Pall
48d93d8c84 Redesign of prototype generation, part 2: late init of chunkname. 2010-02-08 05:27:43 +01:00
Mike Pall
60b5af4422 Redesign of prototype generation, part 1: varinfo and uvname.
Use a growable, per-chunk variable stack.
Collect varinfo/uvname for prototype at the end.
2010-02-08 05:26:52 +01:00
Mike Pall
1307f49137 Major cleanup of bytecode parser. 2010-02-06 08:18:32 +01:00
Mike Pall
1f39cc5c21 Update .gitignore. 2010-02-06 08:18:20 +01:00
Mike Pall
c4dadf1d67 Move bytecode offsets from lj_vm.* to generated header. 2010-02-05 20:15:01 +01:00
Mike Pall
a0914c409b 32/64 bit memory ref cleanup, part 4: GCproto ->varinfo. 2010-02-05 01:35:38 +01:00
Mike Pall
8dcc4364cf 32/64 bit memory ref cleanup, part 3: GCproto ->lineinfo. 2010-02-05 01:16:22 +01:00
Mike Pall
d778982120 32/64 bit memory ref cleanup, part 2: GCproto ->uvname and ->chunkname. 2010-02-05 00:52:21 +01:00
Mike Pall
c8d55e8506 32/64 bit memory ref cleanup, part 1: GCproto ->bc and ->k. 2010-02-05 00:07:32 +01:00
Mike Pall
370c868c31 RETF modifies BASE. Treat it like a store or it gets CSEd. 2010-02-04 21:36:32 +01:00
Mike Pall
5d2690c608 Reset the hotcount table after a JIT off to on transition. 2010-02-04 20:40:00 +01:00
Mike Pall
7256690364 Add shadow frame link stack for trace recorder.
Simplifies snapshots. Prerequisite for pre-call snapshots.
Increases consistency for fast function calls, too.
2010-02-04 03:08:29 +01:00
Mike Pall
78f5e2ffd3 Fix unroll limit checks and frame depth adjustment for pcall. 2010-02-03 16:48:25 +01:00
Mike Pall
318e86c7eb Clean up frame depth checks and loop detection. 2010-02-03 14:55:56 +01:00
Mike Pall
c1c9abeab7 Add extra check to suppress hotcall event during recording. 2010-02-03 14:34:30 +01:00
Mike Pall
305ecbbb84 Another loop formation test must check for return to lower frame. 2010-02-03 14:31:42 +01:00
Mike Pall
61c5a60dc3 Improve coalescing of BASE register in side traces. 2010-02-01 23:32:26 +01:00
Mike Pall
9a682f341d Revise hardcoded inlining in lj_asm.c. Saves 1-2K. 2010-01-30 14:33:08 +01:00
Mike Pall
02e58f5e56 Add support for weak IR references to register allocator.
Spilling a weak ref forces a spill slot, but omits the restore.
Spill slots for snapshot refs override the register, anyway.
Marking snapshot refs weak avoids pointless restores.
2010-01-30 06:50:39 +01:00
Mike Pall
96e8a56260 Loop formation test must check for return to lower frame. 2010-01-29 15:07:40 +01:00
Mike Pall
8681b7330f Compile return to lower frame. Only for Lua frames right now. 2010-01-29 03:32:37 +01:00
Mike Pall
272b2f7368 Followup fix: set maxslot for continuation return. 2010-01-28 04:29:15 +01:00
Mike Pall
2ed0bb7f1e Drop obsolete frame shrinking after continuation return. 2010-01-28 04:20:20 +01:00
Mike Pall
a6565d21fa Fix recording of metamethod result adjustment. 2010-01-28 04:02:32 +01:00
Mike Pall
725da9224d Don't modify jit_State and exit counters while in vmevent.
Fixes crash with hot loop in TEXIT callback which cleared J->parent.
2010-01-28 02:30:12 +01:00
Mike Pall
21d6709271 Avoid reuse of PHI registers, even for duplicate right PHIs. 2010-01-27 22:09:43 +01:00
Mike Pall
09b8f67cd8 Expose compressed snapshot map to reflection API.
Update jit.dump module and restore printing of frame separators.
2010-01-27 20:06:03 +01:00
Mike Pall
3aeb892262 Eliminate IR_FRAME. Replace with KGC and TRef/SnapEntry flags. 2010-01-27 03:50:29 +01:00
Mike Pall
d216cdb2b9 Add frame and continuation flags to TRef and SnapEntry. 2010-01-27 02:17:56 +01:00
Mike Pall
05d67cf566 Add missing check for return to lower frame. 2010-01-27 01:57:15 +01:00
Mike Pall
c8a80fa989 Cleanup types for narrowing stack machine. 2010-01-27 00:39:22 +01:00
Mike Pall
67ca399a30 Compress snapshots using a simple, extensible 1D-compression.
Typically reduces storage overhead for snapshot maps by 60%.
The extensible format is a prerequisite for the next redesign steps:
Eliminate IR_FRAME and implement return-to-lower-frame.
2010-01-26 21:49:04 +01:00
Mike Pall
e058714a2e Add missing eviction in asm_obar(). 2010-01-26 02:56:00 +01:00
Mike Pall
34d84f8836 Fill gaps in frames (caused by metamethod calls) with nil.
Simplifies storing snapshots to stack.
2010-01-26 00:45:30 +01:00
Mike Pall
47f1bc80d8 Use dedicated type for snapshot map entry.
Preparatory work for compressed snapshots.
2010-01-25 19:51:52 +01:00
Mike Pall
055396a69d Force error if lua_newstate() is used in 64 bit mode. 2010-01-24 15:50:59 +01:00
Mike Pall
43f1e13470 Integrate MinGW build with DWARF2 exception handling.
Only works with DWARF2-enabled GCC 4.x (not the default MinGW GCC).
Fix fastcall symbol names for COFF assembler output.
Add DWARF2 unwind info to COFF assembler output.
Use COFF assembler mode for MinGW builds.
Always enable the DWARF2 handler if compiled with GCC.
2010-01-22 01:56:49 +01:00
Mike Pall
c56811bb7a Fix undefined behavior in table resizing calculation. 2010-01-21 19:42:51 +01:00
Mike Pall
419cbb3aa9 Fix ordered string comparisons. Unsigned arithmetic is evil. 2010-01-21 15:29:23 +01:00
Mike Pall
a61df8efbe Decouple guard vs. INT check vs. TYPECHECK semantics for SLOAD. 2010-01-19 16:58:26 +01:00
Mike Pall
36769c2f6b Fix broken intarith + testop optimization. 2010-01-19 01:45:39 +01:00
Mike Pall
4e39597ba6 Add some sanity checks for allocator in 64 bit mode. 2010-01-18 01:32:33 +01:00
Mike Pall
32969abe40 Reduce non-numeric tag range by bumping up 64 bit lightud tag. 2010-01-18 00:42:34 +01:00
Mike Pall
4b0725d5fc Fix more 64 bit conversion warnings. 2010-01-17 20:47:10 +01:00
Mike Pall
09548024d1 Silence 64 bit conversion warning. 2010-01-17 20:36:04 +01:00
Mike Pall
09ca54d9bc Enable build for x64 interpreter on WIN64.
To build the x64 interpreter open a "Windows SDK Command Shell".
Then set the compiler environment: setenv /release /x64
Then cd to the src directory and run msvcbuild.bat.
2010-01-17 20:33:13 +01:00
Mike Pall
49e3bdf080 Allocate 32 bit memory on WIN64 using NtAllocateVirtualMemory. 2010-01-17 20:20:43 +01:00
Mike Pall
62fafb5a72 Fix off-by-one error in x64 PE object symbol mangling. 2010-01-17 19:58:31 +01:00
Mike Pall
3100026b86 Error for blacklisted loop bytecodes has no info argument. 2010-01-16 02:04:12 +01:00
Mike Pall
82417ee889 Add build infrastructure for x64 interpreter.
Must be explicitly enabled with: make clean && make "CC=gcc -m64"
Only works on Linux/x64. Does not work on WIN64 or OSX/x64 (yet).
2010-01-14 12:28:16 +01:00
Mike Pall
a431d6f35c Shorten %p format for pure 32 bit pointers on x64. 2010-01-14 12:08:32 +01:00
Mike Pall
767035f031 Strip '@' suffix from external symbols for MACH-O, too.
Fixes OSX build.
2010-01-10 09:39:05 +01:00
Mike Pall
99d153bef9 Improve alias analysis of upvalues using a disambiguation hash value.
All upvalue objects hold a disambiguation hash value now.
It's built from the parent prototype and the slot number.
Different hash values imply the upvalues cannot alias.
Same hash values don't imply anything (collision or different closures).
Upvalue disambiguation makes use of a reduced hash due to IR contraints.
2010-01-09 23:59:43 +01:00
Mike Pall
2cc554db0c Avoid int16_t widening for pt->uv elements. 2010-01-09 22:41:08 +01:00
Mike Pall
a33204ae5e Fix 32/64 bit portability issue with upval->v. 2010-01-09 21:11:35 +01:00
Mike Pall
ece20f8ca2 Fix x64 PE object emitter. 2010-01-09 21:10:22 +01:00
Mike Pall
4d9be5b8f8 Bump all copyright dates to 2010. 2010-01-09 14:28:11 +01:00
Mike Pall
c31ac26fb9 Add support for WIN64 exception handling to external unwinder.
Modify unwinding to always return _ff or _c unwind type.
Generate PE object .pdata/.xdata sections for x64 interpreter.
Can drop r12-r15 saves in Windows/x64 interpreter now.
2010-01-05 22:39:46 +01:00
Mike Pall
b3e3bad0ff Fix PE object build for fastcall entry points into interpreter. 2010-01-05 22:13:20 +01:00
Mike Pall
93ee10642e Major rewrite of error handling to allow external/internal unwinding.
Make external unwinding the default on x64.
It's mandatory on WIN64 due to the abundance of callee-saved regs.
Allow piecewise internal frame unwinding and optional cleanup.
Store ERRMEM, ERRERR and ERRCPP early and copy down later.
Use FRAME_CP for lj_vm_resume.
Add lj_vm_unwind_*_eh variants as landing pads for external unwinder.
Use fastcall for lj_vm_unwind_*.
Can drop r12/r13 saves in POSIX/x64 interpreter now.
2010-01-02 17:42:11 +01:00
Mike Pall
8fc9430d06 Rename NRESULTS to MULTRES on the assembler side, too. 2009-12-30 02:38:40 +01:00
Mike Pall
9de0f53a8d Implement yield from C hooks.
Get number of multiple results from C frame.
Add lj_cont_hook: restores multres and dispatch to static ins.
Can use fastcall for lj_dispatch_ins() now.
2009-12-30 02:37:57 +01:00
Mike Pall
52eb88773e Fix narrowing casts of pointer differences for x64. 2009-12-29 20:19:54 +01:00
Mike Pall
d64b031269 Minor fixes for x64 interpreter. 2009-12-29 20:16:29 +01:00
Mike Pall
82f7d0907c Fix PE object build on x64 and with disabled interpreter. 2009-12-29 20:13:34 +01:00
Mike Pall
42124227cf Add DWARF2 unwind info for x64 interpreter. 2009-12-29 05:25:24 +01:00
Mike Pall
24429ed1f5 Fix alloc/free sizes of internal GCRef arrays. 2009-12-29 04:36:35 +01:00
Mike Pall
81c9f5de89 Fix various 32/64 bit issues in interpreter. 2009-12-29 03:03:09 +01:00
Mike Pall
241e8db3f1 Fix bad stack setup in collectgarbage(). 2009-12-29 02:34:15 +01:00
Mike Pall
52f310bd3e Fix x64 lj_vm_pow_sse(). 2009-12-29 02:16:52 +01:00
Mike Pall
d18d1573d8 Save all callee-saved x64 integer regs for unwinding.
Temporary measure. Does not cover xmm saves on WIN64.
May have to use unwind info or waste another 160 bytes per CFRAME.
2009-12-29 02:04:20 +01:00
Mike Pall
374f534715 Logical 'not' must be sign-extended for address operands. 2009-12-29 01:38:26 +01:00
Mike Pall
8a9cfa4b45 Define CFRAME structure for x64 interpreter. 2009-12-28 23:45:32 +01:00
Mike Pall
61abf342a3 Linux/x64 mremap() does not obey MAP_32BIT, so make it non-moving. 2009-12-28 23:33:10 +01:00
Mike Pall
9c8f42573f Fix size calculation for closure structs. 2009-12-28 22:15:00 +01:00
Mike Pall
07e1a0d138 Fix POSIX/x64 call argument order. 2009-12-28 21:32:15 +01:00
Mike Pall
7b7c6ed754 Change callee-save regs for x64 interpreter to shorten code. 2009-12-28 21:18:44 +01:00
Mike Pall
8bb38bd93b Final calling convention cleanup for x64 interpreter. 2009-12-28 20:05:31 +01:00
Mike Pall
3a15e46b79 More calling convention cleanups for x64 interpreter. 2009-12-27 18:44:12 +01:00
Mike Pall
bc47063708 Use fastcall for remaining 1-arg/2-arg calls from interpreter.
Simplifies conversion to x64 calling conventions.
2009-12-27 17:42:41 +01:00
Mike Pall
690760aa38 Add SSE variant of pow/powi to interpreter.
Use SSE pow/powi helper functions from compiled code.
Cleanup use of helper functions.
Related cleanups of folding functions in x64 interpreter.
2009-12-25 23:12:30 +01:00
Mike Pall
6ce0c90ed6 Add build infrastructure for the SSE2-enabled interpreter.
Works on x86 now. Will be enabled by default on x64 (not ready, yet).
2009-12-22 20:27:20 +01:00
Mike Pall
a5faa29aa9 Fix last commit. 2009-12-22 06:23:22 +01:00
Mike Pall
c4e9dc0012 Miscellaneous cleanups for x64 interpreter. 2009-12-22 06:16:29 +01:00
Mike Pall
44a9d7b00c Use SSE variants for IRFPM_FLOOR/CEIL/TRUNC unless SSE4.1 available. 2009-12-22 05:40:49 +01:00
Mike Pall
298e3f5d54 Add SSE2 variants for all FP ops (except vm_pow*) in interpreter. 2009-12-22 05:04:21 +01:00
Mike Pall
ab02f069aa Add SSE2 variants of basic arithmetic ops in interpreter. 2009-12-21 20:11:02 +01:00
Mike Pall
34d716947c Properly compile on Debian kFreeBSD. 2009-12-20 18:41:55 +01:00
Mike Pall
a1d4d05f2c Adapt most outbound calls in interpreter to x64 calling conventions. 2009-12-19 17:25:54 +01:00
Mike Pall
ed8d86bf66 Better change the saved regs for the x64 interpreter, too. 2009-12-18 03:10:52 +01:00
Mike Pall
db29a8cb04 Change KBASE/PC regs for x64/POSIX to get shorter encodings. 2009-12-17 22:14:24 +01:00
Mike Pall
6adab430af Adapt primary inbound calls in x64 interpreter.
Change argument order for lj_vm_cpcall() to simplify x64 interpreter.
2009-12-17 22:08:20 +01:00
Mike Pall
1e7951ea7b Cleanup DynASM action list flushes. 2009-12-16 22:31:15 +01:00
Mike Pall
85d32aeb36 Change some misuses of esp in x64 interpreter. 2009-12-16 04:37:30 +01:00
Mike Pall
4cb357d30f Define x64 interpreter frame and cleanup use of stack temps. 2009-12-16 01:29:07 +01:00
Mike Pall
8df9603888 Unify interpreter reg saves/restores for WIN64 prolog/epilog req. 2009-12-15 21:36:42 +01:00
Mike Pall
1eedc6d2f1 First bunch of register definitions for x64 interpreter. 2009-12-15 05:40:44 +01:00
Mike Pall
547508f36f Fix off-by-one error in err_chunkid(). 2009-12-14 02:28:22 +01:00
Mike Pall
ec2442862f Reorg Makefile to allow more overrides on the make command line. 2009-12-08 22:27:14 +01:00
Mike Pall
6163a90d6d Remove asm auto-detection due to cross-compilation issues. 2009-12-08 21:28:49 +01:00
Mike Pall
699232f667 Add DynASM-built files to public repo. 2009-12-08 20:40:15 +01:00
Mike Pall
3f1f9e11f4 Fast forward to sync public repo.
Compile math.sinh(), math.cosh(), math.tanh() and math.random().
Compile various io.*() functions.
Drive the GC forward on string allocations in the parser.
Improve KNUM fuse vs. load heuristics.
Add abstract C call handling to IR.
2009-12-08 20:35:29 +01:00
Mike Pall
5287b93264 LuaJIT-2.0.0-beta2 hotfix #2
Fix lua_tocfunction().
Fix cutoff register in JMP bytecode for some conditional expressions.
Fix PHI marking algorithm for references from variant slots.
2009-12-08 19:52:28 +01:00
Mike Pall
2d0ef4522b LuaJIT 2.0.0-beta2 hotfix #1
Fix LUA_XCPATH.
Fix DWARF unwinding info for OSX.
2009-12-08 19:50:21 +01:00
Mike Pall
1d1fed48a0 RELEASE LuaJIT-2.0.0-beta2 2009-12-08 19:49:20 +01:00
Mike Pall
55b1695971 RELEASE LuaJIT-2.0.0-beta1 2009-12-08 19:46:35 +01:00