Mike Pall
834ff6d36d
Fix slot flags in snapshot replay.
2012-07-20 18:52:29 +02:00
Mike Pall
f1b4fa844b
Fix restore of sunk CNEWI with implicit P32 to P64 conversion.
2012-07-18 18:02:32 +02:00
Mike Pall
4d9c29a78c
FFI: Box all accessed or returned enums.
2012-07-17 22:22:07 +02:00
Mike Pall
2139c6791f
Fix FOLD rule (i-j)-i => 0-j.
...
Thanks to Thomas Schilling.
2012-07-17 21:47:45 +02:00
Mike Pall
c172e7aa30
Workaround for MSVC conversion bug (double -> uint32_t -> int32_t).
2012-07-17 21:45:49 +02:00
Mike Pall
08d8ec0648
x86/x64: Fix fusion of unsigned byte comparisons with swapped ops.
2012-07-16 23:43:03 +02:00
Mike Pall
e44cb53874
ARM: Invoke SPLIT pass for leftover IR_TOBIT.
...
Can only happen with -O-fold for TOBIT(constant).
2012-07-16 23:39:49 +02:00
Mike Pall
63bb052bbe
From Lua 5.2: Add -E command line option (ignore env vars).
2012-07-16 22:47:01 +02:00
Mike Pall
bf2d4acf00
Correct dispatch table modifications for return hooks.
2012-07-16 22:36:38 +02:00
Mike Pall
0e2f5be140
FFI: Show address pointed to for tostring(ref), too.
2012-07-12 14:19:27 +02:00
Mike Pall
53e28d7678
Limit number of parent links handled by backend.
2012-07-11 16:48:52 +02:00
Mike Pall
24fa85760c
Use an explicit flag to signal SINK tags for a trace.
2012-07-11 16:45:15 +02:00
Mike Pall
79ecb231ce
Don't allocate constants for sunk stores.
2012-07-09 16:22:08 +02:00
Mike Pall
f20ff8a30d
Avoid compiler warnings about redefined C++ keywords.
2012-07-09 16:02:05 +02:00
Mike Pall
6e4d0fdc8e
Add missing declarations for MSVC intrinsics.
2012-07-09 15:54:25 +02:00
Mike Pall
b23a7830d2
Clean up ARM capability flags. Only set highest arch version.
2012-07-08 22:20:11 +02:00
Mike Pall
c00ffcb870
Change DynASM bit operations to use Lua BitOp.
2012-07-08 16:27:18 +02:00
Mike Pall
e3dec0438d
Add Lua BitOp to minilua.
2012-07-08 16:24:53 +02:00
Mike Pall
6a67fa8a4b
Finally fix target detection for msvcbuild.bat.
...
Famous last words.
2012-07-07 20:36:35 +02:00
Mike Pall
7c056488d9
Drop range limit for sunk stores relative to sunk allocation.
2012-07-04 21:16:06 +02:00
Mike Pall
bd782cedd5
Bump some limits to accomodate SINK pass.
2012-07-04 21:15:15 +02:00
Mike Pall
c22d698e17
Add stricter check for sinking PHIs.
2012-07-04 11:41:58 +02:00
Mike Pall
4da7ffc34b
Remove unneeded snapshot preps for sunk stores.
2012-07-03 23:19:45 +02:00
Mike Pall
d5b9d84538
Fix NEWREF marking in SINK pass.
2012-07-03 16:45:13 +02:00
Mike Pall
80d0acc7c1
Fix compiler warnings.
2012-07-03 13:22:30 +02:00
Mike Pall
17d3fc47f3
Avoid pesky compiler warnings about C++ keywords (eh?).
2012-07-03 13:19:32 +02:00
Mike Pall
c740a30223
Invoke SPLIT pass in side trace for rejoined sunk stores.
2012-07-03 12:41:21 +02:00
Mike Pall
2df19049ef
Avoid strict aliasing issues.
2012-07-03 00:03:01 +02:00
Mike Pall
0af3f47ba0
Add allocation sinking and store sinking optimization.
2012-07-02 23:47:12 +02:00
Mike Pall
79e1eaa73b
ARM: Simplify two-step constant rematerialization.
2012-07-02 22:57:51 +02:00
Mike Pall
afeb4e2c51
Handle initial snapshot for side traces in lj_snap.c only.
2012-07-02 22:52:15 +02:00
Mike Pall
f093a34a2f
Handle joining IR_HIOP in SPLIT pass.
2012-07-02 22:50:03 +02:00
Mike Pall
0688de5483
Add IR_PVAL instruction for non-slot parent links.
2012-07-02 22:47:20 +02:00
Mike Pall
5d0115ef8d
Add explicit IR_GCSTEP instruction.
2012-07-02 22:42:40 +02:00
Mike Pall
264177b0d0
Use HIOP for XSTORE in SPLIT pass.
2012-07-02 22:37:00 +02:00
Mike Pall
7ae3832f20
Move snapshot replay for side traces to lj_snap.c.
2012-07-02 13:37:55 +02:00
Mike Pall
cda3630565
Clean up RegSP handling for parent link instructions.
2012-07-01 22:44:54 +02:00
Mike Pall
89f8c920c6
Expand array slots in template tables with mixed const/var initializers.
2012-06-30 20:58:19 +02:00
Mike Pall
eacecc90e1
Clean up snapshot restore.
2012-06-30 20:45:59 +02:00
Mike Pall
dd9e7a4608
Fix cdecl string parsing during recording.
2012-06-28 20:17:08 +02:00
Mike Pall
a6458ce4de
Make os.date() thread-safe.
2012-06-28 15:47:16 +02:00
Mike Pall
a751c8a5b5
Fix buffer check in bytecode writer.
2012-06-28 15:13:26 +02:00
Mike Pall
a9bf455b96
Add HREFK forwarding. Eliminate HREFK guard for TDUP refs.
2012-06-28 15:10:52 +02:00
Mike Pall
0d1056eeed
Create string hash slots in template tables even for non-const values.
2012-06-27 22:45:54 +02:00
Mike Pall
ceb76d26b5
Another attempt at proper target detection for msvcbuild.bat.
2012-06-27 20:53:08 +02:00
Mike Pall
9a98ba64b4
Fix TDUP to HLOAD forwarding for DUALNUM builds.
2012-06-27 19:54:52 +02:00
Mike Pall
3dc7baf6af
PPC: Fix PPC32 build.
2012-06-27 19:41:56 +02:00
Mike Pall
2f844fc87b
Fix build issues on Cygwin and MinGW with optional MSys.
2012-06-22 11:36:58 +02:00
Mike Pall
8b71ab1080
FFI: Check for __new metamethod when calling a constructor.
2012-06-20 18:28:25 +02:00
Mike Pall
e9e45313e7
FFI: Do not resolve strings passed to parameterized types.
2012-06-20 15:45:23 +02:00
Mike Pall
6cee1333ef
FFI: Resolve metamethods for constructors, too.
2012-06-20 15:16:40 +02:00
Mike Pall
126f9906fe
FFI: Improve error messages for ctype arguments.
2012-06-20 15:06:28 +02:00
Mike Pall
946c7418d5
FFI: Add support for parameterized C types.
2012-06-14 19:54:07 +02:00
Mike Pall
ca6bf2d9a4
CONSOLE: Handle P64, GPR64, TOC* and PPE (PS3) in PPC interpreter.
...
PS3 build command: make HOST_CC="gcc -m32" CROSS=ppu-lv2-
2012-06-13 02:32:24 +02:00
Mike Pall
4f9db0fbc3
Clean up buildvm error message.
2012-06-13 01:54:15 +02:00
Mike Pall
80ff9d69a3
Allow parsing bcsave.lua (-b option) without FFI.
2012-06-12 21:25:19 +02:00
Mike Pall
0b3d8375f7
PPC: Remove lj_vm_floor/ceil/trunc assembler wrappers.
2012-06-12 17:26:55 +02:00
Mike Pall
c2159f8624
ARM/PPC: Remove assembler code for lj_vm_foldarith().
2012-06-12 17:25:52 +02:00
Mike Pall
46dc6d347c
PPC: Fix disassembly of rldcl/rldcr.
2012-06-12 16:48:24 +02:00
Mike Pall
0528bb7d02
x64: Fix DynASM defines.
2012-06-12 03:50:22 +02:00
Mike Pall
e08914988c
Improved target detection for msvcbuild.bat.
2012-06-12 01:47:16 +02:00
Mike Pall
b1c2a45464
OSX: Change dylib names to be consistent with other platforms.
2012-06-11 18:49:40 +02:00
Mike Pall
b51d7fb310
MIPS: Cleanup interpreter.
...
Use DynASM defines instead of C defines.
2012-06-11 00:51:21 +02:00
Mike Pall
3f1035a170
PPC/e500: Cleanup interpreter.
...
Use DynASM defines instead of C defines.
2012-06-11 00:51:59 +02:00
Mike Pall
7da4d16faa
PPC: Cleanup interpreter.
...
Use DynASM defines instead of C defines.
2012-06-11 00:50:22 +02:00
Mike Pall
02acb39b10
ARM: Cleanup interpreter.
...
Use DynASM defines instead of C defines.
2012-06-11 00:49:47 +02:00
Mike Pall
c99439b3be
x86/x64: More interpreter cleanups.
2012-06-11 00:49:24 +02:00
Mike Pall
c0aaf271c8
PPC: Fix interpreter state setup in callbacks.
2012-06-11 00:44:54 +02:00
Mike Pall
58622937c0
Fix userdata __gc separations at state close.
2012-06-10 23:40:53 +02:00
Mike Pall
58ec704f78
x86/x64: Clean up interpreter.
...
Use DynASM defines instead of C defines.
Remove support for ancient CPUs without CMOV (before Pentium Pro).
2012-06-10 16:50:46 +02:00
Mike Pall
e496a502b0
Pass various build, arch and OS flags to DynASM.
2012-06-10 16:41:00 +02:00
Mike Pall
d5a915ccf5
CONSOLE: Minor PS3 build fixes.
2012-06-10 16:34:18 +02:00
Mike Pall
b8f5727ab4
CONSOLE: Fix PS3 build.
2012-06-10 02:01:25 +02:00
Mike Pall
37be8a5478
CONSOLE: Handle unimplemented features for console toolchains.
2012-06-09 20:54:34 +02:00
Mike Pall
9f443e8b89
ARM/PPC: Detect more target arch variants. Detect console OS.
2012-06-09 20:53:22 +02:00
Mike Pall
9d7bd04fae
Avoid potential store-forwarding stalls in GC marking.
2012-06-09 20:30:27 +02:00
Mike Pall
1c8ed534b3
Fix check for minimum GCC version.
2012-06-09 17:29:54 +02:00
Mike Pall
9a9509c66a
Reorganize build process.
...
Drop pre-translated buildvm_*.h.
Rename buildvm_*.dasc to vm_*.dasc.
Move buildvm* to host directory.
Build minilua, unless HOST_LUA is set.
Use HOST_LUA to run DynASM.
Translate only vm_*.dasc for target architecture.
2012-06-09 15:12:44 +02:00
Mike Pall
0a6c8338d2
Add minified Lua interpreter (minilua). Used by the build process.
2012-06-09 15:03:40 +02:00
Mike Pall
e75561b70e
FFI: Fix address calculation for refs.
...
Fixes bug introduced in commit 5032e6d8
.
2012-06-09 00:23:27 +02:00
Mike Pall
cccf763898
Move lib/* to src/jit/*.
2012-06-08 21:14:33 +02:00
Mike Pall
7266e27404
Correctly preserve snapshot #0 PC for root traces (insert NOP).
2012-06-08 19:22:59 +02:00
Mike Pall
fad5382d21
Rearrange OSX vs. iOS defines. Disable callbacks on iOS.
2012-06-08 11:59:23 +02:00
Mike Pall
0bd1a66f2f
Print version and JIT status to stdout, not stderr.
2012-06-06 14:17:15 +02:00
Mike Pall
9ab2ae8d46
Split-off large-file support flags to TARGET_LFSFLAGS.
2012-06-05 00:12:43 +02:00
Mike Pall
5032e6d87f
FFI: Use CNEWI/FLOAD to box/access ffi.new("int", x) (for varargs).
2012-06-04 15:39:16 +02:00
Mike Pall
fa2572da6c
FFI: Convert io.* file handle to FILE * pointer (but as a void *).
2012-05-29 12:09:18 +02:00
Mike Pall
97b7edb206
Fix argument checks for coroutine.create().
2012-05-28 21:38:23 +02:00
Mike Pall
10b9ed37e0
PPC/e500: Fix tailcall from fast function (esp. tostring).
2012-05-23 22:22:10 +02:00
Mike Pall
3a43ea5084
FFI: Equality comparisons never raise an error.
2012-05-23 22:20:27 +02:00
Mike Pall
f3197046b8
Preserve snapshot #0 PC for root traces.
2012-05-14 17:35:05 +02:00
Mike Pall
e6bcb545f8
FFI: Don't call FreeLibrary() on our own EXE/DLL.
2012-05-14 13:41:08 +02:00
Mike Pall
74205dc64b
ARM/PPC/MIPS: Fix tailcall from fast function (esp. tostring).
2012-05-10 16:21:14 +02:00
Mike Pall
3fc5948abf
ARM: Fix modulo operator and math.floor/ceil for inf/nan.
2012-05-10 16:19:07 +02:00
Mike Pall
48567b6043
ARM: Fix tonumber() argument check.
2012-05-10 16:17:23 +02:00
Mike Pall
51f05d64c9
RELEASE LuaJIT-2.0.0-beta10
2012-05-09 18:11:35 +02:00
Mike Pall
c8a1f274af
Remove stray comment.
2012-05-09 17:53:05 +02:00
Mike Pall
6e5c872eb7
FFI: Fix recording of test for bool result of call.
2012-05-09 16:25:51 +02:00
Mike Pall
7d3954036c
FFI: Don't record test for bool result of call, if ignored.
2012-05-08 18:59:51 +02:00
Mike Pall
886a450a3d
FFI: Allow 'typedef _Bool int BOOL;' to make Windows users happy.
2012-05-08 18:34:12 +02:00
Mike Pall
0d824b7d14
Fix PHI stack slot syncing.
2012-05-07 23:16:19 +02:00
Mike Pall
afc17b3c1a
FFI: Use correct PC in FFI metamethod error message.
2012-05-05 22:58:29 +02:00
Mike Pall
53a285c0c3
Disable loading bytecode with an extra header (BOM or #!).
2012-05-03 19:04:44 +02:00
Mike Pall
eec0d80d1b
ARM: Fix compilation of math.sinh/cosh/tanh.
2012-04-30 17:09:41 +02:00
Mike Pall
8d31b5cdde
ARM: Fix rejoin of pow in SPLIT pass.
2012-04-30 12:59:45 +02:00
Mike Pall
9a2ae72bce
ARM: Handle all CALL* ops with double results in SPLIT pass.
2012-04-29 21:25:46 +02:00
Mike Pall
e099059afd
Add more comparison variants to Valgrind suppressions file.
2012-04-26 23:47:00 +02:00
Mike Pall
d4a09431c8
ARM/FFI: Invoke SPLIT pass for double args in FFI call.
2012-04-26 23:46:23 +02:00
Mike Pall
325a1820eb
ARM: Fix conditional branch fixup for OBAR.
2012-04-26 23:34:54 +02:00
Mike Pall
0522f74f69
ARM: Fix register allocation for ldrd-optimized HREFK.
2012-04-26 23:33:56 +02:00
Mike Pall
904cc1facb
ARM: Reorder type/value tests to silence Valgrind.
2012-04-26 23:33:20 +02:00
Mike Pall
ba3cad0dd9
Add required PHIs for implicit conversions (via XREF fwd).
2012-04-19 15:05:55 +02:00
Mike Pall
ac6b678d4c
FFI: Fix result type of pointer difference.
2012-04-17 12:54:38 +02:00
Mike Pall
7aa34aa4de
Fix dependencies.
2012-04-17 12:37:34 +02:00
Mike Pall
cf5a54fedf
FFI: Fix blacklisting of C functions calling callbacks.
2012-04-12 14:21:41 +02:00
Mike Pall
68ca796d28
Make lua_concat() work from C hook with partial frame.
2012-04-12 12:02:38 +02:00
Mike Pall
3ed5172fe4
Fix DSE of USTORE. Have to remove OBAR, too.
2012-04-11 16:22:05 +02:00
Mike Pall
39112fd6fb
Fix bytecode JMP slot range after const + and/or optimization.
2012-04-11 15:17:11 +02:00
Mike Pall
44876ec99f
Limit number of userdata __gc separations at state close.
2012-04-11 15:15:50 +02:00
Mike Pall
e14b6346b4
Ensure running __gc of userdata created in __gc at state close.
2012-04-11 12:08:09 +02:00
Mike Pall
d621a6ccc2
Fix discharge order of comparisons in Lua parser.
2012-04-09 14:48:27 +02:00
Mike Pall
5a83601589
MIPS: Add support for GDB JIT API.
2012-04-01 20:01:13 +02:00
Mike Pall
407cc5e9ec
FFI: Fix symbol resolving error messages on Windows.
2012-03-31 22:23:46 +02:00
Mike Pall
03275ba7fc
FFI: Fix resolving of function name redirects on Windows/x86.
2012-03-31 22:19:47 +02:00
Mike Pall
bcd459aa0e
MIPS: Integrate and enable JIT compiler.
2012-03-30 01:36:55 +02:00
Mike Pall
2225c9aafc
MIPS: Add MIPS32R2 compile-time/runtime CPU detection.
2012-03-30 01:34:17 +02:00
Mike Pall
aaaf0e0f5f
MIPS: Interpreter/JIT integration
2012-03-30 01:33:38 +02:00
Mike Pall
1980ee95b0
PPC: Use builtin D-Cache/I-Cache sync code.
2012-03-29 01:14:24 +02:00
Mike Pall
a53a549774
PPC: Fix HREFK code generation for huge tables.
2012-03-29 01:11:23 +02:00
Mike Pall
509ca0f0db
PPC: Fix fusion of floating-point XLOAD/XSTORE.
2012-03-29 01:10:35 +02:00
Mike Pall
67773165e8
Fix OSX build issues. Bump minimum required OSX version to 10.4
...
Only set MACOSX_DEPLOYMENT_TARGET to 10.4 if not set.
Always force -fno-stack-protector.
2012-03-28 10:19:23 +02:00
Mike Pall
018792452e
Replace unwind.h definitions with our own.
2012-03-25 21:52:07 +02:00
Mike Pall
339142c2aa
FFI: Change ffi.load() library name resolution for Cygwin.
2012-03-21 22:09:01 +01:00
Mike Pall
9589e11e44
Avoid recursive GC steps after GC-triggered trace exit.
2012-03-20 14:18:14 +01:00
Mike Pall
5dbb6671a3
Fix compilation on OpenBSD.
...
Thanks to Laurence Tratt.
2012-03-15 12:01:13 +01:00
Mike Pall
6670a13bbf
Add missing mcode limit check in assembler backend.
2012-03-12 00:51:25 +01:00
Mike Pall
8ae38dc519
FFI: Finalize cdata before userdata when closing the state.
2012-03-05 15:05:28 +01:00
Mike Pall
7498ee204e
Fix argument error handling on Lua stacks without a frame.
2012-02-22 16:27:44 +01:00
Mike Pall
5e113d0058
Fix argument type in error message for relative arguments.
2012-02-22 16:26:50 +01:00
Mike Pall
ff71394931
From Lua 5.2: Try __tostring metamethod on non-string error messages.
2012-02-13 20:08:29 +01:00
Mike Pall
8e524d437e
Fix bytecode dump for certain number constants.
2012-02-04 00:32:45 +01:00
Mike Pall
d72d758a11
FFI: Fix library unloading on POSIX systems.
2012-02-01 18:21:12 +01:00
Mike Pall
10ef109eef
Bump copyright date to 2012.
2012-01-23 22:42:42 +01:00
Mike Pall
5bed11e6b4
MIPS: Add interpreter. Enable MIPS build rules.
2012-01-23 22:24:11 +01:00
Mike Pall
7d2774e4c5
PPC: Avoid pointless arg clearing in BC_IFUNCF. Remove dead code.
2012-01-23 19:18:40 +01:00
Mike Pall
9f485115ef
PPC: Fix argument checking for rawget.
2012-01-23 19:14:19 +01:00
Mike Pall
0a8fd0af8c
PPC: Fix resume after yield from hook.
2012-01-23 19:13:26 +01:00
Mike Pall
93a71f6a52
ARM: Avoid pointless arg clearing in BC_IFUNCF. Fix comments.
2012-01-23 19:17:19 +01:00
Mike Pall
a72134e280
Fix parsing of hex literals with exponents.
2012-01-20 11:38:14 +01:00
Mike Pall
2f396c6db7
FFI: Don't touch frame in callbacks with tailcalls to fast functions.
2012-01-15 17:05:34 +01:00
Mike Pall
248cf2ffa9
FFI: Ignore number parsing errors while skipping definitions.
2011-12-17 15:02:53 +01:00
Mike Pall
d050b2fff5
FFI: Ignore empty statements in ffi.cdef().
2011-12-17 15:02:00 +01:00
Mike Pall
b330b468b3
MIPS: Add build rules (non-functional, yet).
2011-12-15 20:39:30 +01:00
Mike Pall
b61be299c9
Auto-detect target arch via cross-compiler. Drop TARGET=arch.
2011-12-15 19:16:06 +01:00
Mike Pall
6ace80c897
RELEASE LuaJIT-2.0.0-beta9
2011-12-14 15:12:49 +01:00
Mike Pall
a064156d5d
PPC: Avoid undefined operand dereference in BAND/shift fusion.
2011-12-13 18:05:51 +01:00
Mike Pall
03c51fc578
FFI: Add callback support for ARM.
2011-12-12 23:16:55 +01:00
Mike Pall
1b0d646004
FFI: Add callback support for PPC.
2011-12-12 23:11:49 +01:00
Mike Pall
10474987bd
Move helper for syncing data/instruction cache to lj_mcode.c.
...
Sync caches after dynamic code generation for FFI callbacks.
2011-12-12 23:10:46 +01:00
Mike Pall
2d8f3d75df
ARM: Error out for attempt to compile with hard-float ABI.
2011-12-10 17:15:38 +01:00
Mike Pall
60b8e9e2fb
ARM: Fix stack check for spilled BASE in parent.
2011-12-10 00:18:19 +01:00
Mike Pall
2591b4524a
x64: Always extend stack arguments to pointer size.
2011-12-09 16:00:04 +01:00
Mike Pall
63981436f7
Fix compiler warning.
2011-12-09 15:57:20 +01:00
Mike Pall
e162d8cef0
FFI: Fix stack adjustment for calls to stdcall/fastcall functions.
2011-12-01 16:27:24 +01:00
Mike Pall
ff7e9bc464
FFI: Need to treat strlen() as a load.
2011-11-27 18:22:48 +01:00
Mike Pall
0a31c6373c
Don't increment module reference counts due to symbol resolving.
2011-11-27 11:45:55 +01:00
Mike Pall
e3c7476533
FFI: Record ffi.errno().
2011-11-26 16:56:09 +01:00
Mike Pall
1a42c03807
Fix stack check in side exit.
2011-11-25 19:36:48 +01:00
Mike Pall
c142b6c53e
FFI: Record C function calls with bool return values.
2011-11-25 19:36:35 +01:00
Mike Pall
b3f16cb64d
FFI: Fix line info for result conversion errors in callbacks.
2011-11-25 19:35:58 +01:00
Mike Pall
90c445851f
FFI: Fix GetLastError() save/restore around ffi.load().
2011-11-25 12:25:51 +01:00
Mike Pall
c2dcf39ee3
FFI: Improve ld script detection in ffi.load().
2011-11-25 11:19:59 +01:00
Mike Pall
923738459d
Do not eliminate PHIs only referenced from other PHIs.
2011-11-24 00:42:14 +01:00
Mike Pall
bd758df76a
Replace stack slot for implicit number->string conv. in Lua/C API.
2011-11-21 20:50:27 +01:00
Mike Pall
cecbe3c15f
Specialize to prototype for non-monomorphic functions.
...
Solves the trace-explosion problem with closure-heavy programming.
2011-11-20 19:16:40 +01:00
Mike Pall
cc7a12be93
Count frames with same prototype in call unroll limit check.
2011-11-20 17:59:41 +01:00
Mike Pall
f8a4769fb2
Keep maximum frame extent in snap->topslot.
2011-11-20 17:56:47 +01:00
Mike Pall
dc2a39e46d
Get rid of snap->depth.
2011-11-20 13:23:25 +01:00
Mike Pall
726dc42c32
Fix debug option for msvcbuild.bat.
2011-11-17 17:34:23 +01:00
Mike Pall
b1efcef745
FFI: Add missing GC barrier for callback registration.
2011-11-15 16:43:43 +01:00
Mike Pall
d4df8d7825
FFI: Save GetLastError() around ffi.load() and symbol resolving, too.
2011-11-15 16:37:06 +01:00
Mike Pall
8437d0c48d
Eliminate some rare occurrences of redundant PHIs.
2011-11-14 23:57:05 +01:00
Mike Pall
87456f73f5
Fix hint-based register allocation in ra_dest().
2011-11-14 23:52:26 +01:00
Mike Pall
71d00a56db
FFI: Add callback support (for x86/x64).
2011-11-14 14:18:25 +01:00
Mike Pall
ae79ff4e53
FFI: Resolve __call metamethod for pointers, too.
2011-11-14 12:01:48 +01:00
Mike Pall
4d59752217
Avoid dependence on lj_jit.h if only including lj_target.h.
2011-11-12 01:16:43 +01:00
Mike Pall
635371c212
FFI: Add unwind definitions for lj_vm_ffi_call.
...
Adds exception interoperability for C/C++ functions called via FFI
from the interpreter.
2011-11-12 01:16:10 +01:00
Mike Pall
fa1675baad
ARM: Fix IR splitting for softfp XLOAD.
2011-11-11 01:07:34 +01:00
Mike Pall
4bcf2b40fe
ARM: Fix code generation for type-check only softfp [AHUV]LOAD.
2011-11-11 01:05:37 +01:00
Mike Pall
f1849fa928
x64: Fix lightuserdata comparisons.
2011-11-04 14:49:27 +01:00
Mike Pall
7b0157aa99
Spelling.
2011-11-04 14:07:19 +01:00
Mike Pall
2dc574d06b
FFI: Compile calls to stdcall, fastcall and vararg functions.
2011-10-27 01:57:30 +02:00
Mike Pall
1d190c99a2
PPC: Fuse BAND with shift to rlwinm.
2011-10-25 21:29:58 +02:00
Mike Pall
455917fa0a
Add more FOLD rules for shift + BAND simplifications.
2011-10-25 21:16:27 +02:00
Mike Pall
17cb366fc9
x64: Fix code generation for BSWAP.
2011-10-25 21:14:01 +02:00
Mike Pall
179fe9e5d8
PPC: Fuse BSWAP with XLOAD/XSTORE to lwbrx/stwbrx.
2011-10-25 19:50:44 +02:00
Mike Pall
ca2b923026
PPC/e500: Fix write barrier in USETS.
2011-10-25 12:42:13 +02:00
Mike Pall
bec4d20fb6
PPC: Fix write barrier in USETV/USETS.
2011-10-25 00:30:41 +02:00
Mike Pall
0cf8c20be8
PPC: Integrate and enable JIT compiler.
2011-10-24 16:43:51 +02:00
Mike Pall
fa9ade356b
Allow selection of single-number vs. dual-number mode in Makefile.
2011-10-24 16:35:17 +02:00
Mike Pall
96d8611d1b
PPC: Fix/improve interpreter/JIT integration.
...
Switch to per-trace exit stubs.
Drop register holding current trace number.
2011-10-24 16:24:47 +02:00
Mike Pall
167f638f91
PPC: Generalize rematerialization handling.
2011-10-24 16:21:11 +02:00
Mike Pall
826fb377ec
PPC: Add support for GDB JIT API.
2011-10-24 16:20:04 +02:00
Mike Pall
3591609dad
PPC: Add Linux/PPC cache flush mechanism.
...
GCC's __clear_cache() does nothing on PPC. Duh.
2011-10-24 16:18:02 +02:00
Mike Pall
8fc9bc1724
Make sure to flush/sync the D/I-cache for all generated code.
2011-10-24 16:16:14 +02:00
Mike Pall
32098921fd
Fix handling of alignment arguments (nil) to CALLX.
2011-10-24 16:14:01 +02:00
Mike Pall
cb1dd159e3
PPC: Add support for per-trace exit stubs.
2011-10-24 16:13:12 +02:00
Mike Pall
a0d7827554
Generalize handling of stack checks indicated by highest exit + 1.
2011-10-24 16:11:38 +02:00
Mike Pall
84683405fb
Don't save/restore tmptv with copyTV.
2011-10-24 15:58:54 +02:00
Mike Pall
86a5cc427d
Fix compiler warning.
2011-10-24 15:58:24 +02:00
Mike Pall
aa502203a6
Add missing FOLD rule for CONV.u64.int + sign-extension.
2011-10-22 02:03:07 +02:00
Mike Pall
fee957b22d
FFI: Cleanup/fix 64 bit arithmetic in assembler backend.
2011-10-22 02:02:51 +02:00
Mike Pall
2e5c0870bc
x64: Fix math.random() code generation.
2011-10-22 02:01:44 +02:00
Mike Pall
c01aaad890
Fix register hints for arithmetic helper functions.
2011-10-22 02:00:15 +02:00
Mike Pall
c805a49d30
Separate/rename NUM/FLOAT <-> I64/U64 conversion functions.
2011-10-22 01:59:10 +02:00
Mike Pall
ff7f7a7180
Cleanup various endianess issues in assembler backend.
2011-10-22 01:35:57 +02:00
Mike Pall
e80478c44b
Rearrange defines for workarounds to embedded operating systems.
2011-10-19 18:14:46 +02:00
Mike Pall
a39aac0445
Fix FOLD rule for CONV.flt.num(CONV.num.flt(x)) => x.
2011-10-19 01:52:50 +02:00
Mike Pall
45df079c01
FFI/x86: Fix CONV.u32.num rounding.
2011-10-19 00:18:36 +02:00
Mike Pall
2fcd562582
Don't fuse colocated array offsets without -Ofuse.
2011-10-19 00:17:19 +02:00
Mike Pall
f50075a9d7
Fixup PC in tracebacks after exits from down-recursive traces.
2011-10-17 20:06:04 +02:00
Mike Pall
270de2d6cc
Add missing FOLD rule for integer NEG of constants.
2011-10-17 17:21:09 +02:00
Mike Pall
c5164b1a7d
FFI/ARM: Ensure invocation of SPLIT pass for float conversions.
2011-10-14 01:09:30 +02:00
Mike Pall
4c9318792f
Save tmptv state for trace recorder across RECORD vmevent.
2011-10-14 00:43:17 +02:00
Mike Pall
882537a874
FFI: Fix unfused loads of float fields.
2011-10-13 20:53:01 +02:00
Mike Pall
bc95d54ec9
FFI: Fix call argument and return handling for I8/U8/I16/U16 types.
2011-10-13 20:44:31 +02:00
Mike Pall
120c3adbff
FFI: Record loads/stores to external variables in namespaces.
2011-10-11 20:58:04 +02:00
Mike Pall
4a144625c9
FFI: Fix recording of const/enum lookups in namespaces.
2011-10-11 11:51:48 +02:00
Mike Pall
f34ac81e3a
Remove unneeded PHI barrier for reassociation of duplicate ops.
2011-10-10 20:35:42 +02:00
Mike Pall
76a2a7c857
Avoid overwriting argument with error from metacall recording.
2011-09-28 17:29:15 +02:00
Mike Pall
3c998f6c3c
Fix (harmless) typo.
2011-09-21 08:22:07 +02:00
Mike Pall
da9c74f163
ARM: Fix HREFK code generation.
2011-09-21 08:21:25 +02:00
Mike Pall
c5e75e7893
Generate a portable vmdef.lua.
2011-09-20 21:15:05 +02:00
Mike Pall
5fedf72ca6
PPC/e500: Fix GC barrier for TSETM.
2011-09-17 21:59:56 +02:00
Mike Pall
1a899ff671
PPC: Fix GC barrier for TSETM.
2011-09-14 16:03:02 +02:00
Mike Pall
6d854c04fe
ARM: Fix GC barrier for TSETM.
2011-09-14 15:53:43 +02:00
Mike Pall
1c5fbd4c1d
ARM: Disable CPU detection for interpreter-only builds.
2011-09-08 15:34:53 +02:00
Mike Pall
c56ae9f6ef
Increase max. number of exit stub groups to correspond with -Omaxsnap.
2011-09-05 23:12:58 +02:00
Mike Pall
1b949dc60a
Use some register allocator helpers for multiple architectures.
2011-09-05 20:23:20 +02:00
Mike Pall
ae3317b186
PPC: Interpreter/JIT integration.
2011-09-05 20:22:55 +02:00
Mike Pall
bab2f0efae
PPC: Fix or remove assembler helper functions.
2011-09-05 18:34:11 +02:00
Mike Pall
690ff909f5
PPC: More interpreter tuning. Use y-bit for branch predictions.
2011-09-05 18:30:36 +02:00
Mike Pall
25a0e663db
Always use ANSI variants of Windows system functions.
2011-09-02 11:42:01 +02:00
Mike Pall
32c1d4751a
Avoid conversion narrowing of arithmetic with large constants.
2011-08-26 20:29:05 +02:00
Mike Pall
6627744752
FFI/x64: Fix struct-by-value calling conventions.
2011-08-25 11:10:39 +02:00
Mike Pall
78cc9c889d
Record missing FORI slot loads (e.g. after return to lower frame).
2011-08-21 15:08:27 +02:00
Mike Pall
607bd88f57
Add potential PHI for number conversions due to type instability, too.
2011-08-17 20:42:41 +02:00
Mike Pall
aad7ea3c02
Load embedded bytecode with require().
2011-08-17 00:10:12 +02:00
Mike Pall
4a42933b17
Replace some _Unwind_* types. Fixes build issues on OSX 10.7.
2011-08-14 11:35:53 +02:00
Mike Pall
10ffd05ba9
x64: Fix result type of cdata index conversions.
2011-08-11 22:05:35 +02:00
Mike Pall
05ef03e2d0
Don't bother to chain NOPs.
2011-08-11 22:04:38 +02:00
Mike Pall
e8fa76feac
PPCSPE: Save/restore cr2, cr3 and cr4 when entering/leaving VM.
2011-08-10 22:33:52 +02:00
Mike Pall
d84207b8b6
PPC: Save/restore cr2, cr3 and cr4 when entering/leaving VM.
2011-08-10 21:56:10 +02:00
Mike Pall
28b98acd75
PPC: Tune and reschedule interpreter for PPC/e300.
2011-08-10 20:28:14 +02:00
Mike Pall
f333dfd17d
Fix compiler warning.
2011-08-10 15:25:11 +02:00
Mike Pall
4c50e36cee
Fix stack check when L->top is above L->maxstack.
2011-08-09 15:56:07 +02:00
Mike Pall
bed0f18466
Remove temporary mcode limit error from application stack.
2011-08-09 00:45:26 +02:00
Mike Pall
d9b518874d
FFI: Limit snapshot optimization for cdata comparisons.
2011-08-07 21:53:43 +02:00
Mike Pall
4008b351f4
PPC: Add machine-specific part of FFI.
2011-08-01 18:59:16 +02:00
Mike Pall
26106759d4
PPC: Fix floor/ceil for dual-number mode.
2011-07-25 10:06:06 +02:00
Mike Pall
551f09cebd
PPC: Add dual-number mode interpreter. Enable by default.
2011-07-25 00:18:20 +02:00
Mike Pall
ee2bb5efed
Use different workaround for alignment of jit_State.
2011-07-23 17:53:09 +02:00
Mike Pall
d001d7b7ce
FFI: Treat function ctypes like pointers in comparisons.
2011-07-23 16:29:47 +02:00
Mike Pall
b261d0ec04
From Lua 5.2: Change \* to \z. Reject undefined escape sequences.
2011-07-19 20:58:10 +02:00
Mike Pall
ca8dadb328
PPC: Add dual-number mode interpreter.
2011-07-13 21:36:17 +02:00
Mike Pall
6599bc7db2
PPCSPE: Fix dispatch for binop metamethods.
2011-07-13 21:33:51 +02:00
Mike Pall
9687472454
Cleanup single-number vs. dual-number mode selection.
2011-07-13 21:25:31 +02:00
Mike Pall
eb92daad0a
ARM: Don't evict ASMREF_L in ra_evictk().
2011-07-12 15:59:07 +02:00
Mike Pall
29ac908f74
FFI: Fix comment parsing.
2011-07-06 23:04:33 +02:00
Mike Pall
89201f2e66
Fix install_name and versioning on OSX.
2011-07-03 17:58:26 +02:00
Mike Pall
0239a56d37
PPC: Add build rules for PPC interpreter (non-functional, yet).
2011-07-03 15:19:34 +02:00
Mike Pall
161f1a5eb0
PPC: Separate PPC vs. PPCSPE interpreter source files.
2011-07-03 15:01:50 +02:00
Mike Pall
8addfefb33
PPC: Untangle PPC vs. PPCSPE target defines.
2011-07-02 00:45:38 +02:00
Mike Pall
8ccf89718c
Add debug option to msvcbuild.bat and improve error handling.
2011-06-29 19:26:31 +02:00
Mike Pall
0af502f438
Don't use thread-safe exceptions on OSX. Complain to Apple, not me.
2011-06-29 11:27:09 +02:00
Mike Pall
64dbe7d929
Return to lower frame via interpreter for unhandled cases.
...
E.g. spontaneous upcalls from C are now compiled.
2011-06-29 01:53:39 +02:00
Mike Pall
82eca898db
Prefer recording loops over calls.
...
Hotcounts are decremented by 2 for loops and by 1 for calls.
2011-06-29 01:52:23 +02:00
Mike Pall
deeb8196c4
Reorganize trace linking and track link types.
2011-06-28 23:23:34 +02:00
Mike Pall
3dbae4ffc2
Clean up temporary bytecode patching.
2011-06-28 23:19:36 +02:00
Mike Pall
999d95253a
Fix forced unwinding triggered by external unwinder.
2011-06-27 21:09:01 +02:00
Mike Pall
2dd52500ab
Use thread-safe exceptions for external unwinding on x64/GCC.
2011-06-27 20:14:28 +02:00
Mike Pall
db22ce2ba8
Fix iOS build.
2011-06-27 01:33:50 +02:00
Mike Pall
113f8e9ac2
Fix data-flow analysis for BC_ITERL.
2011-06-27 01:11:11 +02:00
Mike Pall
29e89adfa7
RELEASE LuaJIT-2.0.0-beta8 (fixed)
2011-06-23 19:40:21 +02:00
Mike Pall
9b0c641ac1
RELEASE LuaJIT-2.0.0-beta8
2011-06-23 17:15:02 +02:00
Mike Pall
6691e72eb8
Fix assertion.
2011-06-22 21:18:23 +02:00
Mike Pall
513bd6e952
x86/x64: Don't evict BASE in ra_evictk().
2011-06-22 21:07:02 +02:00
Mike Pall
d4da9ff55e
x86/x64: Fix register allocation for variable shifts.
2011-06-22 20:38:07 +02:00
Mike Pall
e2246db688
x86/x64: Fix fusion of comparisons with u8/u16 XLOAD.
2011-06-22 17:56:41 +02:00
Mike Pall
b6e4ffd079
Avoid pointless calls for std file handles on __gc.
2011-06-22 17:54:09 +02:00
Mike Pall
4df40a228f
Fix recording of loops with instable directions in side traces.
2011-06-20 21:51:31 +02:00
Mike Pall
31d566428f
From Lua 5.2: __len for tables. Needs -DLUAJIT_ENABLE_LUA52COMPAT.
2011-06-20 20:45:41 +02:00
Mike Pall
3d1563524f
More fixes for the Solaris/x86 build. Thanks to Will Metcalf.
2011-06-14 16:44:20 +02:00
Mike Pall
9cf2cd2a11
Fix bytecode loading on Windows.
2011-06-14 12:47:48 +02:00
Mike Pall
bcc196eed3
Fix dumping of already stripped functions with debug info.
2011-06-13 03:22:10 +02:00
Mike Pall
0eee70cd4d
Add -b command line option to save/list bytecode.
2011-06-13 01:04:23 +02:00
Mike Pall
4994fcc32c
Add support for bytecode loading/saving.
2011-06-13 01:04:11 +02:00
Mike Pall
9da94d1355
Add recursive dump option to jit.bc.dump().
2011-06-12 23:51:13 +02:00
Mike Pall
0c8696dfbf
No need for L argument to lj_str_initbuf().
2011-06-12 21:09:20 +02:00
Mike Pall
287de611a2
FFI: Support __tostring metamethod for pointers to structs, too.
2011-06-11 18:30:22 +02:00
Mike Pall
a58eb604f4
Make .eh_frame section read-write on Solaris.
2011-06-11 15:57:03 +02:00
Mike Pall
27d8d3b5d9
Fix check for missing arguments in string.format().
2011-06-10 13:47:11 +02:00
Mike Pall
b6a7fc5330
Cleanup prototype flags.
2011-06-09 13:54:40 +02:00
Mike Pall
96cc99bd6a
Remove bogus assertion for GC estimate vs. threshold.
2011-06-09 01:34:10 +02:00
Mike Pall
8c32b38ca3
Flatten and compress in-memory debug info (saves ~70%).
2011-06-09 01:27:37 +02:00
Mike Pall
585cf05dbd
Move debugging/introspection functionality to lj_debug.c.
2011-06-07 21:37:24 +02:00
Mike Pall
b44ccd4263
Fix compiler warning.
2011-06-07 21:28:31 +02:00
Mike Pall
a0840d2695
FFI: Print NULL pointers as "cdata<... *>: NULL".
2011-06-07 21:10:04 +02:00
Mike Pall
a7ca722dca
FFI: Show address pointed to for tostring(pointer).
2011-06-07 20:57:32 +02:00
Mike Pall
51ee3d951e
Minor change to bytecode penalty code for consistency.
2011-06-07 20:44:55 +02:00
Mike Pall
f50d8986d8
Fix data-flow analysis for BC_UCLO.
2011-06-07 11:51:04 +02:00
Mike Pall
22946f268b
FFI: Change tonumber(cdata) semantics. Return nil for non-numbers.
2011-06-06 19:56:55 +02:00
Mike Pall
a48058a791
ARM: Add fast assembler implementation of floor/ceil/trunc.
2011-06-05 23:38:23 +02:00
Mike Pall
a175754ab7
PPC: Add lj_vm_floor which is callable from C.
2011-06-05 23:36:49 +02:00
Mike Pall
7ad4908a48
ARM: Fuse XLOAD/XSTORE operands.
2011-06-05 18:59:35 +02:00
Mike Pall
b88eaa11f3
Add stdint.h replacement for Symbian. Sigh.
2011-06-03 20:21:10 +02:00
Mike Pall
8c5935000d
Add narrowing of modulo operator.
2011-06-03 18:48:02 +02:00
Mike Pall
eec28aa9fd
Move math helpers to lj_vmmath.c. Add missing log2/exp2 for Symbian.
2011-06-03 17:15:44 +02:00
Mike Pall
77bb8de93d
ARM: Disable C++ exception catching on Symbian.
2011-06-03 12:23:43 +02:00
Mike Pall
84e33332a7
ARM: Enable JIT compiler (except for iOS).
2011-06-02 03:19:23 +02:00
Mike Pall
5d82cfd091
ARM: Add ARM-specific assembler backend.
2011-06-02 03:18:26 +02:00
Mike Pall
fff2fb31f9
ARM: Don't generate unaligned XLOADs.
2011-06-02 01:46:23 +02:00
Mike Pall
a770bf3741
Many soft-float-related fixes to SPLIT pass and assembler backend.
2011-06-02 01:24:36 +02:00
Mike Pall
9e153003b4
ARM: Catch C++ exceptions in interpreter frames.
2011-06-02 01:21:32 +02:00
Mike Pall
8dd09d5041
DUALNUM: Fix missing type check for loop index slot.
2011-06-01 00:49:29 +02:00
Mike Pall
2d0b32500e
ARM: Tune rematerialization scheduler.
2011-05-31 21:50:14 +02:00
Mike Pall
865ec114a7
FFI: Fix recording of casts from 32 bit pointers to integers.
2011-05-31 21:39:37 +02:00
Mike Pall
a522087371
x86/x64: Minor cleanup in assembler backend.
2011-05-31 21:39:09 +02:00
Mike Pall
496d3753f5
ARM: Optimize hash algorithm for 3-operand CPUs.
2011-05-31 21:38:16 +02:00
Mike Pall
514ccfceb8
ARM: Fix __newindex metamethod handling for BC_TSETB.
2011-05-31 21:37:44 +02:00
Mike Pall
0764c615fd
ARM: Fix string.sub() argument checks.
2011-05-31 21:35:03 +02:00
Mike Pall
03b5c8c935
Clean up memory allocator initialization and catch early OOM.
2011-05-30 01:32:50 +02:00
Mike Pall
638f968978
FFI: Avoid unused functions if FFI is disabled.
2011-05-27 02:15:55 +02:00
Mike Pall
12dc697eae
ARM: Interpreter/JIT integration, part #2 .
2011-05-27 02:06:05 +02:00
Mike Pall
7683f39786
ARM: Fix math.ldexp() recording and folding.
2011-05-27 02:03:02 +02:00
Mike Pall
7bad42a3ba
Fix compiler warning.
2011-05-27 02:01:36 +02:00
Mike Pall
46955be1e2
Fix handling of number constants in snapshots in SPLIT pass.
2011-05-27 01:56:25 +02:00
Mike Pall
840a067d4e
ARM: Fix rematerialization scheduler.
2011-05-26 18:05:19 +02:00
Mike Pall
8d4400331d
ARM: Flush instruction cache in assembler backend.
2011-05-26 18:04:01 +02:00
Mike Pall
4057620bf5
Treat extra exit from stack check like a parent exit.
2011-05-26 18:02:42 +02:00
Mike Pall
625ef8626f
Simplify helper routines for soft-float targets. Add POW rejoin.
2011-05-26 18:01:55 +02:00
Mike Pall
ae3179926a
ARM: Add CPU detection.
2011-05-26 17:58:29 +02:00
Mike Pall
185554b682
ARM: Unify rotates to simplify assembler backend.
2011-05-23 20:20:34 +02:00
Mike Pall
7b21a660a8
FFI: Fix __gc for VLA/VLS cdata objects.
2011-05-23 02:43:36 +02:00
Mike Pall
afad72af25
ARM: Add ARM-specific tuning to generic assembler backend.
2011-05-22 17:54:28 +02:00
Mike Pall
aaba681056
ARM: Add rematerialization scheduler for constants to backend.
2011-05-22 17:50:36 +02:00
Mike Pall
138f54352a
Split up FP IR instructions with SPLIT pass for soft-float targets.
2011-05-22 17:44:58 +02:00
Mike Pall
d0115c65f5
More portability cleanups for assembler backend.
2011-05-22 17:13:16 +02:00
Mike Pall
919ba5fd74
Add missing guard to for loop argument conversion.
2011-05-22 16:47:55 +02:00
Mike Pall
effdfda673
Move IR_CALL* definitions to lj_ircall.h.
2011-05-22 16:28:43 +02:00
Mike Pall
3a942d6cea
Portability cleanups for assembler backend.
2011-05-17 21:26:00 +02:00
Mike Pall
fb46370e56
Cleanup of target dependencies.
2011-05-16 19:32:47 +02:00
Mike Pall
dab4bcafba
Add target-specific macro for stack alignment in assembler backend.
2011-05-16 02:43:14 +02:00
Mike Pall
6cb123bb99
Fix compiler warning.
2011-05-16 02:41:47 +02:00
Mike Pall
a251a28bd5
ARM: Add support for GDB JIT API.
2011-05-16 02:40:59 +02:00
Mike Pall
1ac71f1fa8
ARM: Add LJ_SOFTFP define. Add support for soft-float slot handling.
2011-05-16 02:38:07 +02:00
Mike Pall
be73a96751
ARM: Generalize machine code co-location. ARM has a +-32MB range.
2011-05-16 02:29:44 +02:00
Mike Pall
58f38c254b
Move x86/x64 parts of JIT assembler backend to extra files.
2011-05-12 01:35:09 +02:00
Mike Pall
800349387a
Disentangle target-specific parts of JIT assembler backend.
2011-05-12 01:27:20 +02:00
Mike Pall
b79cdba3a0
Tuning loop unrolling heuristics again.
2011-05-10 16:55:23 +02:00
Mike Pall
65d9c7cb5e
ARM: Fix table/userdata equality comparisons in interpreter.
2011-05-09 22:41:12 +02:00
Mike Pall
c8308e2a87
ARM: Interpreter/JIT integration, part #1 .
2011-05-09 22:39:53 +02:00
Mike Pall
67d3ac9b19
Fix some portability issues with the JIT compiler.
2011-05-09 20:46:58 +02:00
Mike Pall
28e87d33e9
Use common helper functions for unaligned loads.
2011-05-09 18:09:29 +02:00
Mike Pall
d9c1f771a7
FFI: Allow setting errno with ffi.errno(), too.
2011-05-09 11:52:54 +02:00
Mike Pall
868ecad32b
FFI: Add ffi.errno().
2011-05-08 22:34:40 +02:00
Mike Pall
77ba7726e2
FFI: Save errno/GetLastError() around allocations, hooks etc.
2011-05-08 22:33:04 +02:00
Mike Pall
87553d9e77
Avoid name clash with Windows MM_MAX define.
2011-05-08 22:31:03 +02:00
Mike Pall
16369d5a64
x86/x64: Fix bit.* argument checking.
2011-05-06 16:06:02 +02:00
Mike Pall
cfdc356ebe
RELEASE LuaJIT-2.0.0-beta7
2011-05-05 16:31:13 +02:00
Mike Pall
693b629787
Improve bytecode optimization of and/or operators.
2011-05-05 15:49:11 +02:00
Mike Pall
6534152b44
Fix compiler warning.
2011-05-04 23:45:02 +02:00
Mike Pall
704752c612
FFI: Fix field alignment for iOS.
2011-05-04 23:30:37 +02:00
Mike Pall
fb8b87e818
More tuning of loop unrolling heuristics.
2011-05-04 23:21:46 +02:00
Mike Pall
b4006ba9a8
Fix stack slot updates for down-recursion.
2011-05-04 21:34:21 +02:00
Mike Pall
139175f8c4
Tune loop unrolling heuristics. Increase trace recorder limits.
2011-05-03 21:14:18 +02:00
Mike Pall
c77ca54564
FFI: Compile C function calls with 64 bit args/results in 32 bit mode.
2011-04-29 19:40:50 +02:00
Mike Pall
eb7b452d53
x86: Pop unused FP result from x87 stack.
2011-04-29 19:35:25 +02:00
Mike Pall
b4cfaa62ac
Improve target OS selection for buildvm.
2011-04-29 09:23:00 +02:00
Mike Pall
0ba34ffe50
ARM: Fix ABI and build issues for iOS. Now works on iOS 3.0+.
2011-04-28 19:41:34 +02:00
Mike Pall
0b606061db
ARM: Use own lj_bswap(). Reduce min. req. version of GCC to 4.2.
2011-04-28 12:33:31 +02:00
Mike Pall
5d096dcfde
FFI: Add ffi.istype() function.
2011-04-20 01:53:26 +02:00
Mike Pall
9ea679410c
Workaround to compile with Clang. Fix Clang warnings.
2011-04-19 17:12:41 +02:00
Mike Pall
e94a12f4f6
Fix compiler warning.
2011-04-19 16:19:34 +02:00
Mike Pall
b3d10cdf62
ARM: Workaround for unaligned accesses.
2011-04-19 16:09:07 +02:00
Mike Pall
4fbacaf887
ARM: Allow compilation in thumb mode (CCOPT_ARM=-mthumb).
2011-04-18 23:44:06 +02:00
Mike Pall
a1ffb6114f
ARM: Add missing FFI functionality. Enable FFI for ARM.
2011-04-18 21:24:47 +02:00
Mike Pall
38a842a474
Add common TARGET_FLAGS option to Makefile.
2011-04-17 12:48:01 +02:00
Mike Pall
54994ef7be
ARM: Enable ARM port.
2011-04-17 02:36:10 +02:00
Mike Pall
7bb4b0f570
ARM: Normalize results of math.floor()/ceil() fast functions.
2011-04-17 02:31:00 +02:00
Mike Pall
32db4525d9
ARM: Misc. fixes for interpreter.
2011-04-16 23:32:44 +02:00
Mike Pall
add553edd8
ARM: Add integer variant of modulo operator.
2011-04-16 23:29:57 +02:00
Mike Pall
d636a3decd
ARM: Add partial support for FFI.
2011-04-16 23:28:51 +02:00
Mike Pall
fc40214279
ARM: Add coroutine.resume/wrap_aux/yield() fast functions.
2011-04-16 23:26:11 +02:00
Mike Pall
5f08a50506
FFI: Fix arithmetic ctype metamethods for references.
2011-04-15 19:02:47 +02:00
Mike Pall
31e0774a9e
FFI: Fix cdata finalization.
2011-04-13 21:37:54 +02:00
Mike Pall
1fa0cc09b3
PPC: Fix L->status for resume after yield.
2011-04-13 02:28:25 +02:00
Mike Pall
0001a7fced
ARM: Add BC_VARG and BC_TSETM.
2011-04-13 02:24:56 +02:00
Mike Pall
7aa7069271
ARM: Add dispatch targets for hooks.
2011-04-13 02:24:18 +02:00
Mike Pall
46d97d28f0
ARM: Add modulo subroutine and temp. math.floor()/math.ceil().
2011-04-13 02:22:59 +02:00
Mike Pall
3b6f37dd2c
FFI: Add ctype metamethods and ffi.metatype().
2011-04-12 19:16:39 +02:00
Mike Pall
fa5cd010e8
Add support for tailcalls from internal C functions.
...
PPC: Fix __call metamethod for tailcalls.
2011-04-12 19:13:11 +02:00
Mike Pall
23f847f4ed
Optimize lookups in empty proxy tables.
2011-04-10 21:43:21 +02:00
Mike Pall
a1f66abe4e
Avoid phantom stores to proxy tables.
2011-04-10 21:41:58 +02:00
Mike Pall
efcaef22bd
Inline lj_gc_barrierback().
2011-04-10 20:45:36 +02:00
Mike Pall
d85b7e636e
Fix recording of JLOOP with higher maxslot.
2011-04-10 18:00:08 +02:00
Mike Pall
f69524f7f1
PPC: Misc. fixes for interpreter.
2011-04-10 17:04:10 +02:00
Mike Pall
54e986a51d
ARM: Misc. fixes for interpreter.
2011-04-10 17:00:32 +02:00
Mike Pall
040c8c5737
ARM: Add string.* fast functions and GC steps.
2011-04-10 16:59:38 +02:00
Mike Pall
da1ef8c3b0
ARM: Add rawget() fast function.
2011-04-10 16:59:00 +02:00
Mike Pall
89022b4c3e
Use lj_vm_tobit() on targets without FPU.
2011-04-10 16:58:22 +02:00
Mike Pall
f089f3954c
ARM: Add bit.* fast functions and lj_vm_tobit().
2011-04-10 16:56:13 +02:00
Mike Pall
27bf481669
ARM: Misc. fixes for interpreter.
2011-04-08 03:03:10 +02:00
Mike Pall
b56784aae2
ARM: Add BC_CAT and lj_cont_cat.
2011-04-08 03:01:37 +02:00
Mike Pall
b1912f3325
ARM: Add missing metamethod handlers and continuations.
2011-04-08 02:57:22 +02:00
Mike Pall
aee129a789
ARM: Add tailcall instructions.
2011-04-08 02:54:11 +02:00
Mike Pall
16e0ecaf54
ARM: Add table.getn() fast function.
2011-04-08 02:52:24 +02:00
Mike Pall
9e18260fb4
ARM: Add upvalue get/set and closure-related instructions.
2011-04-08 02:50:56 +02:00
Mike Pall
3af41060c7
ARM: Add test/copy and comparison instructions.
2011-04-08 02:48:55 +02:00
Mike Pall
83e302938b
ARM: Add math.* fast functions.
2011-04-08 02:47:19 +02:00
Mike Pall
1f4f805c96
ARM: Add getmetatable(), setmetatable() and tonumber() fast functions.
2011-04-08 02:42:04 +02:00
Mike Pall
0046f955eb
ARM: Handle stack growth during function calls.
2011-04-08 02:44:56 +02:00
Mike Pall
1a56dacbcf
ARM: Add build rules (still disabled).
2011-04-07 16:08:34 +02:00
Mike Pall
ee644872e3
FFI: Register the FFI library as a loaded module in luaopen_ffi().
...
Allows loading it on startup like other libraries in lib_init.c.
2011-04-06 01:31:21 +02:00
Mike Pall
66a1006175
Fuse XLOAD/XSTORE operands more aggressively.
2011-04-05 16:32:27 +02:00
Mike Pall
3acd4892e9
Add FOLD rule for FLOAT->NUM->FLOAT conversions.
2011-04-05 16:31:48 +02:00
Mike Pall
48438b9e13
Fix code generation for PHIs with type IRT_FLOAT.
2011-04-05 16:29:40 +02:00
Mike Pall
5b7a8baea4
x64: Fix getmetatable(lightuserdata).
2011-04-05 13:00:13 +02:00
Mike Pall
314995aebf
ARM: Finish basic table indexing and add metamethod handlers.
2011-04-05 00:25:31 +02:00
Mike Pall
a7874cb299
ARM: Add assert() and type() fast functions.
2011-04-05 00:24:23 +02:00
Mike Pall
43d7db62d1
ARM: Add pcall() and xpcall() fast functions and unwinders.
2011-04-05 00:23:05 +02:00
Mike Pall
959683c77c
PPC: Minor cleanups of interpreter.
2011-04-04 02:00:38 +02:00
Mike Pall
6511941348
ARM: Add fast functions pairs()/next() and ipairs() + iterator.
2011-04-04 01:56:41 +02:00
Mike Pall
5b146f61b5
ARM: Add tostring() fast function.
2011-04-04 01:55:41 +02:00
Mike Pall
6110faadd8
ARM: Add basic infrastructure for fast functions.
2011-04-04 01:54:56 +02:00
Mike Pall
dd4a043b78
ARM: Add table indexing with string keys. Add get global.
2011-04-04 01:51:29 +02:00
Mike Pall
0e7009ddc8
ARM: Add table constructors.
2011-04-04 01:49:24 +02:00
Mike Pall
81fa9e34cd
ARM: Add call and iterator call instructions.
2011-04-04 01:47:23 +02:00
Mike Pall
85fff386ef
ARM: Add missing parts of return handling.
2011-04-04 01:46:08 +02:00
Mike Pall
f1c79f80c2
ARM: Minor fixes and cleanups for type checks.
2011-04-04 01:44:54 +02:00
Mike Pall
5b06b298a2
ARM: Add binary arithmetic instructions.
2011-03-30 21:56:05 +02:00
Mike Pall
a0e4711055
ARM: Add basic loop and branch instructions.
2011-03-30 21:54:33 +02:00
Mike Pall
7b0a125cf7
ARM: Add basic unary bytecode instructions.
2011-03-29 02:31:47 +02:00
Mike Pall
ca494b72a9
ARM: Add support to call Lua functions and return from them.
2011-03-29 02:30:41 +02:00
Mike Pall
c04a252a06
ARM: Add support to call C functions.
2011-03-29 02:29:27 +02:00
Mike Pall
cff08b2315
ARM: Add entry and exit points into VM. Add type check macros.
2011-03-29 02:24:35 +02:00
Mike Pall
3bcb48c6a1
ARM: Add frame unwind info for assembler part.
2011-03-29 02:23:05 +02:00
Mike Pall
71f976b02e
ARM: Add instruction/call decode + dispatch macros.
2011-03-29 02:26:09 +02:00
Mike Pall
98e3c8a8ff
ARM: Add register assignments, type definitions and stack layout.
2011-03-29 02:18:36 +02:00
Mike Pall
4c9a10f3ad
Avoid compiler warning.
2011-03-28 19:22:17 +02:00
Mike Pall
492efb7e7e
Clean up DynASM glue macros. Thanks to Josh Haberman.
2011-03-28 15:06:30 +02:00
Mike Pall
32aef8aee4
ARM: Add skeleton for ARM interpreter.
2011-03-26 18:42:41 +01:00
Mike Pall
b6ed984843
ARM: Add support for ARM relocations to buildvm.
2011-03-26 18:40:11 +01:00
Mike Pall
7088abce8f
DUALNUM: Fix narrowing of unary minus.
2011-03-19 17:46:10 +01:00
Mike Pall
a1c887e3b9
Fix data-flow analysis for BC_ITERC.
2011-03-19 17:30:15 +01:00
Mike Pall
642ae06916
x64: Use external unwinding for lua_yield().
2011-03-18 23:38:05 +01:00
Mike Pall
063182d79c
FFI: Fix marking of ffi.gc() finalizer table.
2011-03-17 17:31:48 +01:00
Mike Pall
ac3b1dcfc5
x64: Workaround for libgcc unwind bug (still present in RHEL 5.5).
2011-03-17 16:06:41 +01:00
Mike Pall
6299485000
DUALNUM: Narrow result of math.floor() and math.ceil().
2011-03-15 18:15:42 +01:00
Mike Pall
dcbae09b1d
DUALNUM: Narrow unary minus.
2011-03-15 18:14:18 +01:00
Mike Pall
a226fb4cc7
FFI: Force snapshot after C call to preserve semantics.
2011-03-15 14:56:42 +01:00
Mike Pall
7fb1075903
DUALNUM: Add integer variant of MIN/MAX.
2011-03-11 23:28:46 +01:00
Mike Pall
889368e921
Get rid of the remaining silly cast macros from Lua.
2011-03-10 02:13:43 +01:00
Mike Pall
bfce3c1127
DUALNUM: Handle integer type in JIT compiler.
2011-03-10 01:57:24 +01:00
Mike Pall
3f26e3a89d
FFI: Fix and optimize recording of cdata[cdata].
2011-03-10 01:41:58 +01:00
Mike Pall
1c9981ae4c
x86/x64: Fix code generation for fused IR_MUL/IR_MULOV.
2011-03-10 01:09:18 +01:00
Mike Pall
a127eaf8d2
FFI: Fix x86 code generation for ffi.string().
2011-03-10 00:57:02 +01:00
Mike Pall
30cc4d3bba
Fix handling of err_loc() within cpcall frames.
2011-03-09 22:39:17 +01:00
Mike Pall
0125ee8211
DUALNUM: Add extra assertions to interpreter.
2011-03-09 22:38:53 +01:00
Mike Pall
449cee405c
Fix code generation for bit.bnot().
2011-03-07 22:11:01 +01:00
Mike Pall
54978e481b
DUALNUM: Make overflow guards weak. Add IR_USE and IR_MULOV.
2011-03-07 20:21:38 +01:00
Mike Pall
a30f58b54b
DUALNUM: Fix x87 code for BC_ISEQN/BC_ISNEN.
2011-03-07 20:12:39 +01:00
Mike Pall
8eb09fe820
Suppress recording of retried fast functions.
2011-03-07 20:03:38 +01:00
Mike Pall
f29a9d4341
Fix narrowing of POW.
2011-03-03 17:29:09 +01:00
Mike Pall
1cb58fb7bb
Fix code generation for Intel Atom in x64 mode.
2011-03-03 00:49:45 +01:00
Mike Pall
6c43767c23
FFI: Resolve ld script redirection in ffi.load().
2011-03-01 12:31:16 +01:00
Mike Pall
e1aa8d0d97
FFI: Fix compiled ffi.string() semantics.
2011-02-28 19:47:51 +01:00
Mike Pall
83a37aeca7
FFI: Add ffi.gc() function for finalization of cdata objects.
2011-02-28 16:48:13 +01:00
Mike Pall
cead25f928
DUALNUM: Handle integer type in x86/x64 interpreter and libraries.
2011-02-27 01:36:59 +01:00
Mike Pall
c031d4b6a0
DUALNUM: Handle integer type in FFI.
2011-02-27 01:31:22 +01:00
Mike Pall
d437086c5a
x64: Improve accuracy of x^-k.
2011-02-25 11:47:34 +01:00
Mike Pall
b90d80d80a
Fix table.maxn().
2011-02-23 14:52:50 +01:00
Mike Pall
a720db409d
FFI: Record calls to functions with void results.
2011-02-23 00:28:49 +01:00
Mike Pall
4c97cc7730
Eliminate dead slots in snapshots using bytecode data-flow analysis.
2011-02-22 22:39:12 +01:00
Mike Pall
8d0b073ff0
From Lua 5.2: Support load(string).
2011-02-20 21:17:49 +01:00
Mike Pall
2bae11a49a
From Lua 5.2: fp:read("*L").
2011-02-20 21:07:19 +01:00
Mike Pall
c823e26b8b
From Lua 5.2: table.unpack(). Needs -DLUAJIT_ENABLE_LUA52COMPAT.
2011-02-20 20:53:09 +01:00
Mike Pall
baef199ece
From Lua 5.2: Add package.searchpath().
...
Thanks to F. Perrad.
2011-02-20 20:48:13 +01:00
Mike Pall
f83d58d6fb
From Lua 5.2: Empty statement. Needs -DLUAJIT_ENABLE_LUA52COMPAT.
2011-02-20 20:38:36 +01:00
Mike Pall
d82022a656
From Lua 5.2: coroutine.running(). Needs -DLUAJIT_ENABLE_LUA52COMPAT.
2011-02-20 20:33:00 +01:00
Mike Pall
34bcf6378b
FFI: Fix recording of userdata conversions.
2011-02-20 02:13:32 +01:00
Mike Pall
cf88c43dd6
FFI: Fix 64 bit to 32 bit truncations on x64.
2011-02-20 00:18:46 +01:00
Mike Pall
32eaa48c79
FFI: Fix recording of ffi.copy() and ffi.fill().
2011-02-19 23:04:16 +01:00
Mike Pall
bd29d16141
FFI: Improve conversion error messages.
2011-02-19 12:56:12 +01:00
Mike Pall
03946ac978
DUALNUM: Add integer type to core VM.
2011-02-17 00:44:14 +01:00
Mike Pall
963f05c7e1
DUALNUM: Add build infrastructure.
...
Note: DUALNUM is disabled by default and won't work yet.
2011-02-17 00:42:57 +01:00
Mike Pall
54b6054087
FFI: Fix management of C library handles for default namespace.
2011-02-16 23:52:18 +01:00
Mike Pall
5fe7282d4c
Fix error handling within metamethods. Special-case FFI mm.
2011-02-16 00:38:23 +01:00
Mike Pall
4dca589af0
Add workaround for lj_meta_tset() newkey inconsistency.
2011-02-15 01:02:08 +01:00
Mike Pall
4117a61620
PPC: Disable FFI due to NYI: comparisons and calls.
2011-02-14 23:25:18 +01:00
Mike Pall
19b84009b2
Fix type mismatch in XSTORE forwarding.
2011-02-14 23:02:16 +01:00
Mike Pall
97d84111fd
RELEASE LuaJIT-2.0.0-beta6
2011-02-11 16:28:37 +01:00
Mike Pall
7c61073a30
FFI: Disable unused code for some build modes.
2011-02-11 16:22:58 +01:00
Mike Pall
9c81c81ed5
Fix bytecode optimization of and/or operators.
2011-02-08 01:00:47 +01:00
Mike Pall
c39ca7c35b
FFI: Record ffi.abi().
2011-02-08 00:09:33 +01:00
Mike Pall
7a37b93f1b
FFI: Record ffi.copy() and ffi.fill().
2011-02-07 23:49:27 +01:00
Mike Pall
fb53d4aeb7
FFI: Fix recording of pointer arithmetic.
2011-02-07 23:42:51 +01:00
Mike Pall
97d0874ff5
Add IR_XBAR, a barrier against XLOAD/XSTORE optimizations.
2011-02-07 21:59:25 +01:00
Mike Pall
0a50356b6f
Improve static assertion macro.
2011-02-07 21:44:01 +01:00
Mike Pall
51e8fe9cf0
FFI: Allow cdata types for integer arguments of ffi.* functions.
2011-02-07 17:13:14 +01:00
Mike Pall
8da287cab8
FFI: Fix handling of enum arguments to C calls.
2011-02-07 16:41:51 +01:00
Mike Pall
ceece4d13e
FFI: Perform stricter checks in ffi.cast(). Record ffi.cast().
2011-02-06 12:46:18 +01:00
Mike Pall
bf58160b7a
FFI: Simplify and fix tonumber() for cdata objects.
2011-02-06 12:23:58 +01:00
Mike Pall
4c74f70464
Strength-reduce 32 to 64 bit widening for XLOAD U8/U16 inputs.
2011-02-06 00:45:39 +01:00
Mike Pall
26bb0fe24b
FFI: Limit number of arguments for recorded calls.
2011-02-05 23:01:10 +01:00
Mike Pall
26fadcd25b
FFI: Record simple C function calls.
...
Only handles cdecl and fixarg C functions.
Doesn't handle pass-by-value aggregates.
Doesn't handle 64 bit args/returns on 32 bit CPUs.
2011-02-05 21:50:15 +01:00
Mike Pall
bf05209e14
FFI: Optimize snapshots for cdata comparisons.
2011-02-05 18:54:08 +01:00
Mike Pall
da3f256a52
Fix metamethod comparisons triggered by BC_ISEQP/BC_ISNEP.
2011-02-05 16:32:08 +01:00
Mike Pall
14f5103764
FFI: Record C library namespace lookups.
2011-02-05 14:16:16 +01:00
Mike Pall
223d85aa06
Treat metatables of special userdata objects as immutable.
2011-02-05 14:09:50 +01:00
Mike Pall
c29ed4dbbf
FFI: Record ffi.string().
2011-02-05 01:05:56 +01:00
Mike Pall
618b451648
FFI: Avoid intermediate boxes for tonumber(), too.
2011-02-05 01:04:41 +01:00
Mike Pall
1abf5d4d26
FFI: Disable MUL => BSHL FOLD rule on 32 bit.
2011-02-03 20:10:13 +01:00
Mike Pall
df65b8b419
FFI: Rename IR_CNEWP to IR_CNEWI and use it to box 64 bit integers.
...
Generates smaller IR and DCE eliminates many intermediate boxes.
Needs allocation sinking to eliminate the boxes kept alive by PHIs.
2011-02-03 04:22:27 +01:00
Mike Pall
1027018b21
Rename IR_POWI to IR_POW.
2011-02-02 21:33:11 +01:00
Mike Pall
433fd18f6d
FFI: Add basic FOLD rules for 64 bit integer DIV, MOD and POWI.
2011-02-02 21:25:43 +01:00
Mike Pall
a1e0f991d8
FFI: Record 64 bit integer divide and modulo.
2011-02-02 21:24:55 +01:00
Mike Pall
2c8945d3e7
Use names defined in lualib.h for library registration.
2011-02-02 02:38:59 +01:00
Mike Pall
1505d6ffde
Fix OSX build to work with newer ld64 versions.
2011-02-02 02:31:59 +01:00
Mike Pall
b613216efc
Add SPLIT pass to split 64 bit IR instructions for 32 bit CPUs.
...
Add generic HIOP instruction for extra backend functionality.
Add support for HIOP to x86 backend.
Use POWI for 64 bit integer x^k, too.
POWI is lowered to a call by SPLIT or the x64 backend.
2011-02-02 02:29:37 +01:00
Mike Pall
c539c0cac8
Add SSE3 CPU feature detection.
2011-02-01 19:28:03 +01:00
Mike Pall
992bc2caa3
FFI: Limit index range for complex numbers.
2011-01-29 19:47:37 +01:00
Mike Pall
6fd721ce72
FFI: Implement POSIX/x64 struct-by-value calling conventions.
2011-01-29 13:04:16 +01:00
Mike Pall
6fee0002b9
Fix 64 bit case of (SUB x x) and (BXOR x x) FOLD rules.
2011-01-28 02:17:35 +01:00
Mike Pall
07d8a53b39
FFI: Split up 64 bit x^k helper into signed/unsigned.
2011-01-28 02:15:30 +01:00
Mike Pall
cd9b8f90e2
FFI: Fix various issues with C type table reallocations.
2011-01-27 16:28:24 +01:00
Mike Pall
279b6ec22e
FFI: Fix symbol name redirection.
2011-01-27 16:07:02 +01:00
Mike Pall
3184f17169
FFI: Move code for cdata arithmetic to lj_carith.c.
2011-01-26 21:46:02 +01:00
Mike Pall
2526498c71
FFI: Record cdata indexing with integer cdata.
2011-01-26 21:14:58 +01:00
Mike Pall
de0781d610
FFI: Allow cdata indexing with integer cdata.
2011-01-26 21:14:38 +01:00
Mike Pall
0622ad9adc
Fix comments for BC_ITERN.
2011-01-26 19:55:55 +01:00
Mike Pall
30db71e2e2
FFI: Convert enum return value of C function to underlying type.
2011-01-26 14:18:12 +01:00
Mike Pall
a285415b01
One more fix for the trace flush logic. Sigh.
2011-01-26 02:34:30 +01:00
Mike Pall
1b75ec22c8
FFI: Add symbol name redirection.
...
This works like the GCC extension, e.g.:
FILE *fopen(const char *fn, const char *mode) __asm__("" "fopen64");
2011-01-26 02:31:19 +01:00
Mike Pall
ed6c895ae5
ARM: Add ARM target architecture selection (disabled).
2011-01-25 18:50:24 +01:00
Mike Pall
705f593ffc
FFI: Don't force zero terminator on string to array conversion.
2011-01-24 15:51:33 +01:00
Mike Pall
96ef87bdfd
Clear bytecode penalty cache in jit.flush().
2011-01-23 19:06:19 +01:00
Mike Pall
ef3b209127
FFI: Fix ffi.load() error message on Windows.
2011-01-23 14:28:01 +01:00
Mike Pall
72b3fff72f
FFI: Simplify initializer rules. Clarify docs.
2011-01-23 14:23:21 +01:00
Mike Pall
f529d22869
Another fix for the trace flush logic. I'll get this right someday.
...
Thanks to David Manura.
2011-01-22 20:32:23 +01:00