Commit Graph

2599 Commits (master)

Author SHA1 Message Date
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 eed5585c51 Add support for recursion to changelog. 2010-03-02 05:55:23 +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 4a7ee2cb66 Update docs and changelog. 2010-02-17 00:47:55 +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