]> git.ipfire.org Git - thirdparty/LuaJIT.git/log
thirdparty/LuaJIT.git
16 years agoImprove placement of dynamically generated code on x64.
Mike Pall [Sun, 7 Mar 2010 13:33:52 +0000 (14:33 +0100)] 
Improve placement of dynamically generated code on x64.

16 years agoFix assertion in rec_check_slots.
Mike Pall [Sun, 7 Mar 2010 13:32:50 +0000 (14:32 +0100)] 
Fix assertion in rec_check_slots.

16 years agoGenerate indirect calls for out-of-range distances on x64.
Mike Pall [Sun, 7 Mar 2010 13:31:51 +0000 (14:31 +0100)] 
Generate indirect calls for out-of-range distances on x64.

16 years agoFix unwind info for assembler part for OSX.
Mike Pall [Sun, 7 Mar 2010 13:29:04 +0000 (14:29 +0100)] 
Fix unwind info for assembler part for OSX.

16 years agoFix disassembly of call/jmp ModRM.
Mike Pall [Sun, 7 Mar 2010 13:28:05 +0000 (14:28 +0100)] 
Fix disassembly of call/jmp ModRM.

16 years agoFix generated 64 bit Mach-O assembler output.
Mike Pall [Fri, 5 Mar 2010 02:21:52 +0000 (03:21 +0100)] 
Fix generated 64 bit Mach-O assembler output.

16 years agoDocument jit.status().
Mike Pall [Thu, 4 Mar 2010 19:46:07 +0000 (20:46 +0100)] 
Document jit.status().

16 years agoUpdate docs: native build default, cross-compilation, embedding.
Mike Pall [Thu, 4 Mar 2010 18:07:38 +0000 (19:07 +0100)] 
Update docs: native build default, cross-compilation, embedding.

16 years agoAllocate 32 bit memory on OSX/x64 with mmap() hinting.
Mike Pall [Thu, 4 Mar 2010 15:27:42 +0000 (16:27 +0100)] 
Allocate 32 bit memory on OSX/x64 with mmap() hinting.

Must set -pagezero_size, otherwise the lower 4GB are blocked.

16 years agoBuild as a native 32 or 64 bit binary by default.
Mike Pall [Thu, 4 Mar 2010 15:23:28 +0000 (16:23 +0100)] 
Build as a native 32 or 64 bit binary by default.

16 years agoImprove performance of HREF/HREFK on x64.
Mike Pall [Wed, 3 Mar 2010 03:26:31 +0000 (04:26 +0100)] 
Improve performance of HREF/HREFK on x64.

16 years agoFix 64 bit conversion warning.
Mike Pall [Wed, 3 Mar 2010 03:25:48 +0000 (04:25 +0100)] 
Fix 64 bit conversion warning.

16 years agoImprove register allocation on x64.
Mike Pall [Tue, 2 Mar 2010 22:34:13 +0000 (23:34 +0100)] 
Improve register allocation on x64.

16 years agoFix comments about 64 bit FreeBSD mmap() behavior.
Mike Pall [Tue, 2 Mar 2010 20:53:59 +0000 (21:53 +0100)] 
Fix comments about 64 bit FreeBSD mmap() behavior.

16 years agoAdd compile errors for 64 bit OS without an equivalent of MAP_32BIT.
Mike Pall [Tue, 2 Mar 2010 18:41:56 +0000 (19:41 +0100)] 
Add compile errors for 64 bit OS without an equivalent of MAP_32BIT.

16 years agoAdd support for recursion to changelog.
Mike Pall [Tue, 2 Mar 2010 04:55:23 +0000 (05:55 +0100)] 
Add support for recursion to changelog.

16 years agoFix amalgamated build.
Mike Pall [Tue, 2 Mar 2010 00:48:37 +0000 (01:48 +0100)] 
Fix amalgamated build.

16 years agoEnable tracing of recursion.
Mike Pall [Mon, 1 Mar 2010 05:46:45 +0000 (06:46 +0100)] 
Enable tracing of recursion.

Now compiles tail-recursion, up-recursion and down-recursion.
Benchmarks vs. Lua: fib 20x, ack 23x, binary-trees 4.7x.

16 years agoImplement down-recursion.
Mike Pall [Mon, 1 Mar 2010 05:45:30 +0000 (06:45 +0100)] 
Implement down-recursion.

16 years agoFix pc to line number translation for GDB JIT API.
Mike Pall [Mon, 1 Mar 2010 05:33:48 +0000 (06:33 +0100)] 
Fix pc to line number translation for GDB JIT API.

16 years agoResize stack up to the true limit.
Mike Pall [Mon, 1 Mar 2010 04:51:04 +0000 (05:51 +0100)] 
Resize stack up to the true limit.

16 years agoFix error message generation for OOM error.
Mike Pall [Sun, 28 Feb 2010 21:22:45 +0000 (22:22 +0100)] 
Fix error message generation for OOM error.

16 years agoConditionally compile functions that are unused with JIT disabled.
Mike Pall [Sun, 28 Feb 2010 20:58:40 +0000 (21:58 +0100)] 
Conditionally compile functions that are unused with JIT disabled.

16 years agoEnable JIT compiler for x64.
Mike Pall [Sun, 28 Feb 2010 20:45:38 +0000 (21:45 +0100)] 
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.

16 years agoAdd frame info for x64 GDB JIT API.
Mike Pall [Sun, 28 Feb 2010 16:52:11 +0000 (17:52 +0100)] 
Add frame info for x64 GDB JIT API.

16 years agoSave/restore remaining callee-save regs on trace<->interp transitions.
Mike Pall [Sat, 27 Feb 2010 20:40:40 +0000 (21:40 +0100)] 
Save/restore remaining callee-save regs on trace<->interp transitions.

16 years agoCorrectly align and free allocated machine code areas.
Mike Pall [Sat, 27 Feb 2010 18:53:14 +0000 (19:53 +0100)] 
Correctly align and free allocated machine code areas.

Bump default mcode area size to 64K for x64.

16 years agoPlace dynamically generated code near static code on x64.
Mike Pall [Fri, 26 Feb 2010 17:20:24 +0000 (18:20 +0100)] 
Place dynamically generated code near static code on x64.

16 years agoMake penalty PRNG available for general use by compiler.
Mike Pall [Fri, 26 Feb 2010 16:01:33 +0000 (17:01 +0100)] 
Make penalty PRNG available for general use by compiler.

16 years agoAdd x64 call argument setup. More 32/64 bit cleanups in assembler.
Mike Pall [Thu, 25 Feb 2010 02:35:07 +0000 (03:35 +0100)] 
Add x64 call argument setup. More 32/64 bit cleanups in assembler.

16 years agoMove SIMD constants to jit_State to keep them in the low 4GB.
Mike Pall [Wed, 24 Feb 2010 22:17:17 +0000 (23:17 +0100)] 
Move SIMD constants to jit_State to keep them in the low 4GB.

16 years agoHandle negative continuation offsets (WIN64 with debug).
Mike Pall [Wed, 24 Feb 2010 19:39:41 +0000 (20:39 +0100)] 
Handle negative continuation offsets (WIN64 with debug).

16 years agoFix 64 bit conversion warnings.
Mike Pall [Wed, 24 Feb 2010 19:02:20 +0000 (20:02 +0100)] 
Fix 64 bit conversion warnings.

16 years agoMajor 32/64 bit cleanups in assembler and exit handling.
Mike Pall [Wed, 24 Feb 2010 06:09:34 +0000 (07:09 +0100)] 
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).

16 years agoFix 64 bit portability problem in rec_ret().
Mike Pall [Wed, 24 Feb 2010 04:29:46 +0000 (05:29 +0100)] 
Fix 64 bit portability problem in rec_ret().

16 years agoAdd trace exit helper for x64. Fix trace entry for x64.
Mike Pall [Wed, 24 Feb 2010 00:32:44 +0000 (01:32 +0100)] 
Add trace exit helper for x64. Fix trace entry for x64.

16 years agoCheck relative jump distances for x64.
Mike Pall [Wed, 24 Feb 2010 00:29:11 +0000 (01:29 +0100)] 
Check relative jump distances for x64.

16 years agoFix type() implementation for x64 lightuserdata.
Mike Pall [Wed, 24 Feb 2010 00:23:52 +0000 (01:23 +0100)] 
Fix type() implementation for x64 lightuserdata.

16 years agoFix exit state for 64 bit mode.
Mike Pall [Wed, 24 Feb 2010 00:18:49 +0000 (01:18 +0100)] 
Fix exit state for 64 bit mode.

16 years agoRandomize penalties for aborts and add blacklisting.
Mike Pall [Tue, 23 Feb 2010 17:27:39 +0000 (18:27 +0100)] 
Randomize penalties for aborts and add blacklisting.

16 years agoMark renamed registers as modified.
Mike Pall [Tue, 23 Feb 2010 16:22:12 +0000 (17:22 +0100)] 
Mark renamed registers as modified.

16 years agoDon't eliminate SLOAD restores across RETF.
Mike Pall [Tue, 23 Feb 2010 02:08:49 +0000 (03:08 +0100)] 
Don't eliminate SLOAD restores across RETF.

Move restore-elimination logic into snapshot_slots().

16 years agoDo not patch parent exit for a stack check.
Mike Pall [Mon, 22 Feb 2010 20:21:52 +0000 (21:21 +0100)] 
Do not patch parent exit for a stack check.

16 years agoEnsure function and all args have a reference for call recording.
Mike Pall [Mon, 22 Feb 2010 16:37:26 +0000 (17:37 +0100)] 
Ensure function and all args have a reference for call recording.

In practice this is only needed after a return to a lower frame.

16 years agoFix TRef for (dummy) 2nd arg of __len metamethod.
Mike Pall [Mon, 22 Feb 2010 16:33:39 +0000 (17:33 +0100)] 
Fix TRef for (dummy) 2nd arg of __len metamethod.

16 years agoBack out history buffer for tailcall counts.
Mike Pall [Mon, 22 Feb 2010 15:57:59 +0000 (16:57 +0100)] 
Back out history buffer for tailcall counts.

Use an aggregate counter independent of frame depth.

16 years agoAdd region selection for up-recursion and tail-recursion.
Mike Pall [Mon, 22 Feb 2010 13:35:47 +0000 (14:35 +0100)] 
Add region selection for up-recursion and tail-recursion.

16 years agoRefactor Lua stack handling in lj_asm.c.
Mike Pall [Sun, 21 Feb 2010 16:26:21 +0000 (17:26 +0100)] 
Refactor Lua stack handling in lj_asm.c.

16 years agoEliminate redundant stack checks. Add checks for growing root traces.
Mike Pall [Sun, 21 Feb 2010 15:47:43 +0000 (16:47 +0100)] 
Eliminate redundant stack checks. Add checks for growing root traces.

16 years agoRethrow errors from trace exit handling from the right C frame.
Mike Pall [Fri, 19 Feb 2010 02:13:48 +0000 (03:13 +0100)] 
Rethrow errors from trace exit handling from the right C frame.

16 years agoAllow linking to already compiled functions.
Mike Pall [Thu, 18 Feb 2010 18:37:30 +0000 (19:37 +0100)] 
Allow linking to already compiled functions.

16 years agoUse a limited history buffer for tailcall counts while recording.
Mike Pall [Thu, 18 Feb 2010 18:32:13 +0000 (19:32 +0100)] 
Use a limited history buffer for tailcall counts while recording.

16 years agoAdapt bytecode patching/unpatching for hot calls.
Mike Pall [Thu, 18 Feb 2010 16:17:50 +0000 (17:17 +0100)] 
Adapt bytecode patching/unpatching for hot calls.

16 years agoUpdate trace recorder infrastructure for hot calls.
Mike Pall [Thu, 18 Feb 2010 02:43:09 +0000 (03:43 +0100)] 
Update trace recorder infrastructure for hot calls.

16 years agoFix some uses of tref_isint().
Mike Pall [Thu, 18 Feb 2010 02:24:18 +0000 (03:24 +0100)] 
Fix some uses of tref_isint().

16 years agoDrop obsolete shadow frame link stack.
Mike Pall [Thu, 18 Feb 2010 02:19:46 +0000 (03:19 +0100)] 
Drop obsolete shadow frame link stack.

16 years agoAdd more assertions to compare the recorder state and the VM state.
Mike Pall [Thu, 18 Feb 2010 01:49:08 +0000 (02:49 +0100)] 
Add more assertions to compare the recorder state and the VM state.

16 years agoClear frame gaps in recorder to avoid resurrecting previous refs.
Mike Pall [Thu, 18 Feb 2010 01:45:03 +0000 (02:45 +0100)] 
Clear frame gaps in recorder to avoid resurrecting previous refs.

16 years agoUpdate docs and changelog.
Mike Pall [Tue, 16 Feb 2010 23:47:55 +0000 (00:47 +0100)] 
Update docs and changelog.

16 years agoJust disable JIT compiler for non-SSE2 CPUs instead of aborting.
Mike Pall [Tue, 16 Feb 2010 22:39:24 +0000 (23:39 +0100)] 
Just disable JIT compiler for non-SSE2 CPUs instead of aborting.

16 years agoSplit CALL/FUNC recording.
Mike Pall [Tue, 16 Feb 2010 03:04:16 +0000 (04:04 +0100)] 
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.

16 years agoImprove error reporting for traces aborted in non-Lua functions.
Mike Pall [Mon, 15 Feb 2010 21:44:23 +0000 (22:44 +0100)] 
Improve error reporting for traces aborted in non-Lua functions.

16 years agoChange record vmevent parameters. Dump function id on FUNC*.
Mike Pall [Mon, 15 Feb 2010 21:26:33 +0000 (22:26 +0100)] 
Change record vmevent parameters. Dump function id on FUNC*.

16 years agoUse a different marker for hot calls.
Mike Pall [Mon, 15 Feb 2010 17:04:06 +0000 (18:04 +0100)] 
Use a different marker for hot calls.

16 years agoAdd generic function handling for debug modules.
Mike Pall [Mon, 15 Feb 2010 16:36:29 +0000 (17:36 +0100)] 
Add generic function handling for debug modules.

Don't call record vmevent for non-Lua functions.

16 years agoMinor cleanup of trace event handling.
Mike Pall [Mon, 15 Feb 2010 15:41:52 +0000 (16:41 +0100)] 
Minor cleanup of trace event handling.

16 years agoAdd missing FORI coercions in recorder.
Mike Pall [Mon, 15 Feb 2010 00:51:41 +0000 (01:51 +0100)] 
Add missing FORI coercions in recorder.

16 years agoImprove FOR loop const specialization and integerness checks.
Mike Pall [Mon, 15 Feb 2010 00:07:30 +0000 (01:07 +0100)] 
Improve FOR loop const specialization and integerness checks.

16 years agoImplement return hooks for Lua functions (zero-cost if disabled).
Mike Pall [Sun, 14 Feb 2010 19:48:33 +0000 (20:48 +0100)] 
Implement return hooks for Lua functions (zero-cost if disabled).

16 years agoImplement call hooks (zero-cost if disabled).
Mike Pall [Sun, 14 Feb 2010 16:47:03 +0000 (17:47 +0100)] 
Implement call hooks (zero-cost if disabled).

16 years agoMajor redesign of function call handling.
Mike Pall [Sat, 13 Feb 2010 03:51:56 +0000 (04:51 +0100)] 
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.

16 years agoExtend scope of local vars in debug info beyond final return.
Mike Pall [Fri, 12 Feb 2010 15:17:42 +0000 (16:17 +0100)] 
Extend scope of local vars in debug info beyond final return.

16 years agoFix dump of bytecode instructions with missing operands.
Mike Pall [Thu, 11 Feb 2010 19:59:00 +0000 (20:59 +0100)] 
Fix dump of bytecode instructions with missing operands.

16 years agoMove dispatch tables out of GG_State struct.
Mike Pall [Thu, 11 Feb 2010 15:21:18 +0000 (16:21 +0100)] 
Move dispatch tables out of GG_State struct.

16 years agoDrop frame clearing in exit handling and JIT compiled code.
Mike Pall [Thu, 11 Feb 2010 00:50:32 +0000 (01:50 +0100)] 
Drop frame clearing in exit handling and JIT compiled code.

16 years agoSwitch to pre-initialized stacks. Drop frame clearing in interpreter.
Mike Pall [Thu, 11 Feb 2010 00:21:40 +0000 (01:21 +0100)] 
Switch to pre-initialized stacks. Drop frame clearing in interpreter.

16 years agoReplace GCproto reference with bytecode PC in GCfuncL.
Mike Pall [Wed, 10 Feb 2010 20:45:57 +0000 (21:45 +0100)] 
Replace GCproto reference with bytecode PC in GCfuncL.

16 years agoDrop bc field in GCproto since the bytecode is colocated.
Mike Pall [Mon, 8 Feb 2010 19:17:34 +0000 (20:17 +0100)] 
Drop bc field in GCproto since the bytecode is colocated.

16 years agoFix constructor bytecode generation for conditional values.
Mike Pall [Mon, 8 Feb 2010 15:08:58 +0000 (16:08 +0100)] 
Fix constructor bytecode generation for conditional values.

16 years agoReduce whitespace in lj_bcdef.h.
Mike Pall [Mon, 8 Feb 2010 04:35:18 +0000 (05:35 +0100)] 
Reduce whitespace in lj_bcdef.h.

16 years agoRedesign of prototype generation, part 5: colocation of protoype arrays.
Mike Pall [Mon, 8 Feb 2010 04:30:57 +0000 (05:30 +0100)] 
Redesign of prototype generation, part 5: colocation of protoype arrays.

16 years agoRedesign of prototype generation, part 4: late creation of prototype.
Mike Pall [Mon, 8 Feb 2010 04:29:47 +0000 (05:29 +0100)] 
Redesign of prototype generation, part 4: late creation of prototype.

16 years agoRedesign of prototype generation, part 3: bc and lineinfo.
Mike Pall [Mon, 8 Feb 2010 04:28:57 +0000 (05:28 +0100)] 
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.

16 years agoRedesign of prototype generation, part 2: late init of chunkname.
Mike Pall [Mon, 8 Feb 2010 04:27:43 +0000 (05:27 +0100)] 
Redesign of prototype generation, part 2: late init of chunkname.

16 years agoRedesign of prototype generation, part 1: varinfo and uvname.
Mike Pall [Mon, 8 Feb 2010 04:26:52 +0000 (05:26 +0100)] 
Redesign of prototype generation, part 1: varinfo and uvname.

Use a growable, per-chunk variable stack.
Collect varinfo/uvname for prototype at the end.

16 years agoMajor cleanup of bytecode parser.
Mike Pall [Sat, 6 Feb 2010 07:18:32 +0000 (08:18 +0100)] 
Major cleanup of bytecode parser.

16 years agoUpdate .gitignore.
Mike Pall [Sat, 6 Feb 2010 07:18:20 +0000 (08:18 +0100)] 
Update .gitignore.

16 years agoMove bytecode offsets from lj_vm.* to generated header.
Mike Pall [Fri, 5 Feb 2010 19:15:01 +0000 (20:15 +0100)] 
Move bytecode offsets from lj_vm.* to generated header.

16 years ago32/64 bit memory ref cleanup, part 4: GCproto ->varinfo.
Mike Pall [Fri, 5 Feb 2010 00:35:38 +0000 (01:35 +0100)] 
32/64 bit memory ref cleanup, part 4: GCproto ->varinfo.

16 years ago32/64 bit memory ref cleanup, part 3: GCproto ->lineinfo.
Mike Pall [Fri, 5 Feb 2010 00:16:22 +0000 (01:16 +0100)] 
32/64 bit memory ref cleanup, part 3: GCproto ->lineinfo.

16 years ago32/64 bit memory ref cleanup, part 2: GCproto ->uvname and ->chunkname.
Mike Pall [Thu, 4 Feb 2010 23:52:21 +0000 (00:52 +0100)] 
32/64 bit memory ref cleanup, part 2: GCproto ->uvname and ->chunkname.

16 years ago32/64 bit memory ref cleanup, part 1: GCproto ->bc and ->k.
Mike Pall [Thu, 4 Feb 2010 23:07:32 +0000 (00:07 +0100)] 
32/64 bit memory ref cleanup, part 1: GCproto ->bc and ->k.

16 years agoRETF modifies BASE. Treat it like a store or it gets CSEd.
Mike Pall [Thu, 4 Feb 2010 20:33:24 +0000 (21:33 +0100)] 
RETF modifies BASE. Treat it like a store or it gets CSEd.

16 years agoReset the hotcount table after a JIT off to on transition.
Mike Pall [Thu, 4 Feb 2010 19:40:00 +0000 (20:40 +0100)] 
Reset the hotcount table after a JIT off to on transition.

16 years agoAdd shadow frame link stack for trace recorder.
Mike Pall [Thu, 4 Feb 2010 02:08:29 +0000 (03:08 +0100)] 
Add shadow frame link stack for trace recorder.

Simplifies snapshots. Prerequisite for pre-call snapshots.
Increases consistency for fast function calls, too.

16 years agoFix unroll limit checks and frame depth adjustment for pcall.
Mike Pall [Wed, 3 Feb 2010 15:48:25 +0000 (16:48 +0100)] 
Fix unroll limit checks and frame depth adjustment for pcall.

16 years agoClean up frame depth checks and loop detection.
Mike Pall [Wed, 3 Feb 2010 13:55:56 +0000 (14:55 +0100)] 
Clean up frame depth checks and loop detection.

16 years agoAdd extra check to suppress hotcall event during recording.
Mike Pall [Wed, 3 Feb 2010 13:34:30 +0000 (14:34 +0100)] 
Add extra check to suppress hotcall event during recording.

16 years agoAnother loop formation test must check for return to lower frame.
Mike Pall [Wed, 3 Feb 2010 13:31:42 +0000 (14:31 +0100)] 
Another loop formation test must check for return to lower frame.

16 years agoImprove coalescing of BASE register in side traces.
Mike Pall [Mon, 1 Feb 2010 22:32:26 +0000 (23:32 +0100)] 
Improve coalescing of BASE register in side traces.