Commit Graph

45 Commits

Author SHA1 Message Date
Mike Pall
c52da1f2da Rethrow errors from trace exit handling from the right C frame. 2010-02-19 03:13:48 +01:00
Mike Pall
e1905f498a Use a different marker for hot calls. 2010-02-15 18:04:06 +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
b2067236c5 Move dispatch tables out of GG_State struct. 2010-02-11 16:21:18 +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
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
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
d64b031269 Minor fixes for x64 interpreter. 2009-12-29 20:16:29 +01:00
Mike Pall
42124227cf Add DWARF2 unwind info for x64 interpreter. 2009-12-29 05:25:24 +01:00
Mike Pall
81c9f5de89 Fix various 32/64 bit issues in interpreter. 2009-12-29 03:03:09 +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
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
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
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
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
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
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