Mike Pall
87e4daf89c
Reorganize and fix placement of generated machine code on x64.
2010-04-25 14:52:29 +02:00
Mike Pall
2e24770ed3
Simplify management of current trace. Drop lazy save.
2010-04-25 13:53:33 +02:00
Mike Pall
721b73fecb
Turn traces into true GC objects (GCtrace).
2010-04-25 03:32:29 +02:00
Mike Pall
3a32bbc7cb
Simplify lexer a bit.
2010-04-24 20:23:02 +02:00
Mike Pall
28a6284642
Add assertions to guard against using lua_*call on dead coroutines.
2010-04-23 17:42:25 +02:00
Mike Pall
a6c52d80a2
Avoid compiler warning.
2010-04-23 15:38:08 +02:00
Mike Pall
ab45481199
No longer let the GC replace dead keys with the LJ_TDEADKEY tag.
...
Important: this changes the semantics of the write barrier!
Carefully read the big comment block in lj_obj.h
This helps HREFK key slot specialization and allows safely hoisting
HREF/HREFK across GC steps, too (fix for a barely reproducible bug).
Dead keys are only removed during a table resize (as before).
2010-04-21 01:45:58 +02:00
Mike Pall
d8cb69ed07
Simplify GC step calls from on-trace code.
2010-04-19 23:41:48 +02:00
Mike Pall
932cda0fe3
Replace on-trace GC frame syncing with interpreter exit.
...
Need to sync GC objects to stack only during atomic GC phase.
Need to setup a proper frame structure only for calling finalizers.
Force an exit to the interpreter and let it handle the uncommon cases.
Finally solves the "NYI: gcstep sync with frames" issue.
2010-04-19 00:43:35 +02:00
Mike Pall
ff82df797a
Refactor buildvm symbol generation.
...
Fixes Windows and OSX builds with LUAJIT_DISABLE_JIT.
2010-04-14 17:13:13 +02:00
Mike Pall
fbe092c22d
Fix setup of RD when dispatching to function headers after exit.
2010-04-09 14:26:18 +02:00
Mike Pall
db756430ee
Don't copy SNAP_NORESTORE mark into loops and suppress restore in exit.
2010-04-08 01:32:26 +02:00
Mike Pall
23189fa40d
RELEASE LuaJIT-2.0.0-beta4
2010-03-28 19:26:33 +02:00
Mike Pall
1d1d9221f3
Fold HREF of TNEW/TDUP to niltv. Fold HLOAD of niltv to nil.
2010-03-28 06:53:41 +02:00
Mike Pall
e4bca95451
Generate EQ(HREF, niltv) for load path, too (better CSE).
2010-03-28 06:49:09 +02:00
Mike Pall
1130ade4de
Also merge EQ(HREF, niltv) in backend.
2010-03-28 06:47:04 +02:00
Mike Pall
44756ded7a
Only fuse with spill slots for cross-section references.
2010-03-28 06:42:48 +02:00
Mike Pall
69df01efb2
Fix precondition check for NEWREF.
...
A check for nil value is not enough. Must check for ptr == niltv.
2010-03-28 03:34:18 +02:00
Mike Pall
6038866f7d
Pass MULTRES or negated error code in RD to lj_vm_exit_interp.
...
Fixes overwrite of saved r12 after trace exit.
2010-03-23 18:31:17 +01:00
Mike Pall
097db7317b
Move colocated array part after GCtab (now properly aligned).
2010-03-22 15:59:50 +01:00
Mike Pall
361266518c
Move free node pos to t->node[0].freetop. Saves 4 bytes in GCtab.
2010-03-22 15:05:37 +01:00
Mike Pall
51c14bf1c8
Avoid snapshots for returns to known callers.
2010-03-21 16:01:44 +01:00
Mike Pall
5c8f1f2594
Increase max. fusion distance.
2010-03-19 00:28:04 +01:00
Mike Pall
37a3ca330f
Reorder various structs to reduce padding (thanks to /usr/bin/pahole).
2010-03-15 23:29:10 +01:00
Mike Pall
1fea5cb822
Fix TSETM on x64/SSE builds when table is resized.
2010-03-15 19:00:16 +01:00
Mike Pall
871941a840
Add static target to msvcbuild.bat.
2010-03-15 18:50:59 +01:00
Mike Pall
c4727220e8
Add array bounds check elimination (-Oabc, on by default).
2010-03-15 17:02:53 +01:00
Mike Pall
24402ede04
Reorganize scalar evolution analysis.
2010-03-15 16:23:02 +01:00
Mike Pall
a25a717089
Fix folding of (comparison x x).
2010-03-14 17:10:47 +01:00
Mike Pall
16f33422f1
Restore MULTRES for snapshots pointing to CALLM etc. bytecodes.
2010-03-13 17:45:09 +01:00
Mike Pall
4f19a15bd9
Fix potential hang in UCLO redirection handling in hooks.
2010-03-10 22:13:23 +01:00
Mike Pall
c56d791316
Fix handling of bad argument types in recorder.
2010-03-09 19:03:43 +01:00
Mike Pall
f49649d005
Fix recording of getmetatable() for non-tables.
2010-03-09 17:49:13 +01:00
Mike Pall
6e6034e809
Avoid tracing the nil return case of tonumber().
2010-03-09 03:47:49 +01:00
Mike Pall
2e614adb21
Do not fuse SLOAD across RETF.
2010-03-08 23:43:16 +01:00
Mike Pall
09e875519b
RELEASE LuaJIT-2.0.0-beta3
2010-03-07 19:30:21 +01:00
Mike Pall
f354b46d29
Fix tracebacks for failed coroutines.
2010-03-07 18:21:14 +01:00
Mike Pall
6769397d38
Rebase dynamic library on OSX/x64.
2010-03-07 15:04:42 +01:00
Mike Pall
e40b001a79
Improve placement of dynamically generated code on x64.
2010-03-07 14:33:52 +01:00
Mike Pall
e38fbb3d0a
Fix assertion in rec_check_slots.
2010-03-07 14:32:50 +01:00
Mike Pall
e807d46931
Generate indirect calls for out-of-range distances on x64.
2010-03-07 14:31:51 +01:00
Mike Pall
b4299256cd
Fix unwind info for assembler part for OSX.
2010-03-07 14:29:04 +01:00
Mike Pall
5594a0c653
Fix generated 64 bit Mach-O assembler output.
2010-03-05 03:21:52 +01:00
Mike Pall
f76e5a311b
Allocate 32 bit memory on OSX/x64 with mmap() hinting.
...
Must set -pagezero_size, otherwise the lower 4GB are blocked.
2010-03-04 16:27:42 +01:00
Mike Pall
3d2abf3148
Build as a native 32 or 64 bit binary by default.
2010-03-04 16:23:28 +01:00
Mike Pall
15c3bd7725
Improve performance of HREF/HREFK on x64.
2010-03-03 04:26:31 +01:00
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
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
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
Mike Pall
afa07e0c46
Improve error reporting for traces aborted in non-Lua functions.
2010-02-15 22:44:23 +01:00
Mike Pall
e664945e0b
Change record vmevent parameters. Dump function id on FUNC*.
2010-02-15 22:26:33 +01:00
Mike Pall
e1905f498a
Use a different marker for hot calls.
2010-02-15 18:04:06 +01:00
Mike Pall
3452bfcf8c
Add generic function handling for debug modules.
...
Don't call record vmevent for non-Lua functions.
2010-02-15 17:36:29 +01:00
Mike Pall
b838cd8dca
Minor cleanup of trace event handling.
2010-02-15 16:41:52 +01:00
Mike Pall
1288e04186
Add missing FORI coercions in recorder.
2010-02-15 01:51:41 +01:00
Mike Pall
b6e4fde0dc
Improve FOR loop const specialization and integerness checks.
2010-02-15 01:07:30 +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
4f8d7be8ea
Extend scope of local vars in debug info beyond final return.
2010-02-12 16:17:42 +01:00
Mike Pall
b2067236c5
Move dispatch tables out of GG_State struct.
2010-02-11 16:21:18 +01:00
Mike Pall
565eb39574
Drop frame clearing in exit handling and JIT compiled code.
2010-02-11 01:50:32 +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
2ddea3838d
Fix constructor bytecode generation for conditional values.
2010-02-08 16:08:58 +01:00
Mike Pall
f86f9e8eec
Reduce whitespace in lj_bcdef.h.
2010-02-08 05:35:18 +01:00
Mike Pall
6194b1c896
Redesign of prototype generation, part 5: colocation of protoype arrays.
2010-02-08 05:30:57 +01:00
Mike Pall
f275a9d7ef
Redesign of prototype generation, part 4: late creation of prototype.
2010-02-08 05:29:47 +01:00
Mike Pall
4424027844
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.
2010-02-08 05:28:57 +01:00
Mike Pall
48d93d8c84
Redesign of prototype generation, part 2: late init of chunkname.
2010-02-08 05:27:43 +01:00
Mike Pall
60b5af4422
Redesign of prototype generation, part 1: varinfo and uvname.
...
Use a growable, per-chunk variable stack.
Collect varinfo/uvname for prototype at the end.
2010-02-08 05:26:52 +01:00
Mike Pall
1307f49137
Major cleanup of bytecode parser.
2010-02-06 08:18:32 +01:00
Mike Pall
1f39cc5c21
Update .gitignore.
2010-02-06 08:18:20 +01:00
Mike Pall
c4dadf1d67
Move bytecode offsets from lj_vm.* to generated header.
2010-02-05 20:15:01 +01:00
Mike Pall
a0914c409b
32/64 bit memory ref cleanup, part 4: GCproto ->varinfo.
2010-02-05 01:35:38 +01:00
Mike Pall
8dcc4364cf
32/64 bit memory ref cleanup, part 3: GCproto ->lineinfo.
2010-02-05 01:16:22 +01:00
Mike Pall
d778982120
32/64 bit memory ref cleanup, part 2: GCproto ->uvname and ->chunkname.
2010-02-05 00:52:21 +01:00
Mike Pall
c8d55e8506
32/64 bit memory ref cleanup, part 1: GCproto ->bc and ->k.
2010-02-05 00:07:32 +01:00
Mike Pall
370c868c31
RETF modifies BASE. Treat it like a store or it gets CSEd.
2010-02-04 21:36:32 +01:00
Mike Pall
5d2690c608
Reset the hotcount table after a JIT off to on transition.
2010-02-04 20:40:00 +01:00
Mike Pall
7256690364
Add shadow frame link stack for trace recorder.
...
Simplifies snapshots. Prerequisite for pre-call snapshots.
Increases consistency for fast function calls, too.
2010-02-04 03:08:29 +01:00
Mike Pall
78f5e2ffd3
Fix unroll limit checks and frame depth adjustment for pcall.
2010-02-03 16:48:25 +01:00
Mike Pall
318e86c7eb
Clean up frame depth checks and loop detection.
2010-02-03 14:55:56 +01:00
Mike Pall
c1c9abeab7
Add extra check to suppress hotcall event during recording.
2010-02-03 14:34:30 +01:00
Mike Pall
305ecbbb84
Another loop formation test must check for return to lower frame.
2010-02-03 14:31:42 +01:00
Mike Pall
61c5a60dc3
Improve coalescing of BASE register in side traces.
2010-02-01 23:32:26 +01:00
Mike Pall
9a682f341d
Revise hardcoded inlining in lj_asm.c. Saves 1-2K.
2010-01-30 14:33:08 +01:00
Mike Pall
02e58f5e56
Add support for weak IR references to register allocator.
...
Spilling a weak ref forces a spill slot, but omits the restore.
Spill slots for snapshot refs override the register, anyway.
Marking snapshot refs weak avoids pointless restores.
2010-01-30 06:50:39 +01:00
Mike Pall
96e8a56260
Loop formation test must check for return to lower frame.
2010-01-29 15:07:40 +01:00
Mike Pall
8681b7330f
Compile return to lower frame. Only for Lua frames right now.
2010-01-29 03:32:37 +01:00
Mike Pall
272b2f7368
Followup fix: set maxslot for continuation return.
2010-01-28 04:29:15 +01:00
Mike Pall
2ed0bb7f1e
Drop obsolete frame shrinking after continuation return.
2010-01-28 04:20:20 +01:00
Mike Pall
a6565d21fa
Fix recording of metamethod result adjustment.
2010-01-28 04:02:32 +01:00
Mike Pall
725da9224d
Don't modify jit_State and exit counters while in vmevent.
...
Fixes crash with hot loop in TEXIT callback which cleared J->parent.
2010-01-28 02:30:12 +01:00
Mike Pall
21d6709271
Avoid reuse of PHI registers, even for duplicate right PHIs.
2010-01-27 22:09:43 +01:00
Mike Pall
09b8f67cd8
Expose compressed snapshot map to reflection API.
...
Update jit.dump module and restore printing of frame separators.
2010-01-27 20:06:03 +01:00
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
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
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
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
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
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
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
1e7951ea7b
Cleanup DynASM action list flushes.
2009-12-16 22:31:15 +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
547508f36f
Fix off-by-one error in err_chunkid().
2009-12-14 02:28:22 +01:00
Mike Pall
ec2442862f
Reorg Makefile to allow more overrides on the make command line.
2009-12-08 22:27:14 +01:00
Mike Pall
6163a90d6d
Remove asm auto-detection due to cross-compilation issues.
2009-12-08 21:28:49 +01:00
Mike Pall
699232f667
Add DynASM-built files to public repo.
2009-12-08 20:40:15 +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
5287b93264
LuaJIT-2.0.0-beta2 hotfix #2
...
Fix lua_tocfunction().
Fix cutoff register in JMP bytecode for some conditional expressions.
Fix PHI marking algorithm for references from variant slots.
2009-12-08 19:52:28 +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