Commit Graph

2599 Commits (master)

Author SHA1 Message Date
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 d62dcd4a72 Update docs about exception handling. 2010-01-20 12:24:56 +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 379b8c5fe4 Update docs with x64 build instructions. 2010-01-17 22:02:13 +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 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