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
9df01f96b9
Allow @ in DynASM globals.
2010-01-05 22:07:54 +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
da65e0dfed
Fix DynASM x64 encoding for qword-only instructions.
2009-12-28 21:00:03 +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
e5438daffe
Ignore lea operand size in DynASM x86/x64.
2009-12-27 18:25:01 +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
64a4528cac
Fix memory operand sizes for some SSE ops in DynASM.
2009-12-21 16:41:03 +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
1353acacb1
Allow quadword lea for DynASM x64.
2009-12-17 22:03:33 +01:00
Mike Pall
1e7951ea7b
Cleanup DynASM action list flushes.
2009-12-16 22:31:15 +01:00
Mike Pall
eb8ee661f2
Fix handling of byte-addressable registers in DynASM x64.
2009-12-16 21:58:15 +01:00
Mike Pall
3a18dba3f2
Add support for rip-relative displacements to DynASM x64.
2009-12-16 05:47:52 +01:00
Mike Pall
85d32aeb36
Change some misuses of esp in x64 interpreter.
2009-12-16 04:37:30 +01:00
Mike Pall
d2156c7f73
Warn about use of esp with DynASM x64.
2009-12-16 04:34:54 +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
267d7152ab
Allow 32 bit regs for indexing even for DynASM x64.
2009-12-15 04:45:34 +01:00
Mike Pall
31f0074c5e
Make DynASM conditionals available before .arch statement.
2009-12-15 04:29:22 +01:00