Mike Pall
b359ce804b
Remove obsolete non-truncating number to integer conversions.
2013-02-23 01:19:00 +01:00
Mike Pall
4a44c4ff69
Bump copyright date to 2013.
2013-02-11 12:54:48 +01:00
Mike Pall
76b18b2b46
Add table of IR type sizes.
2012-08-27 20:27:01 +02:00
Mike Pall
e8af6e9da4
Don't treat all constified cdata content as constant.
2012-07-24 14:56:29 +02:00
Mike Pall
17d3fc47f3
Avoid pesky compiler warnings about C++ keywords (eh?).
2012-07-03 13:19:32 +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
5032e6d87f
FFI: Use CNEWI/FLOAD to box/access ffi.new("int", x) (for varargs).
2012-06-04 15:39:16 +02:00
Mike Pall
10ef109eef
Bump copyright date to 2012.
2012-01-23 22:42:42 +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
ff7f7a7180
Cleanup various endianess issues in assembler backend.
2011-10-22 01:35:57 +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
138f54352a
Split up FP IR instructions with SPLIT pass for soft-float targets.
2011-05-22 17:44:58 +02:00
Mike Pall
effdfda673
Move IR_CALL* definitions to lj_ircall.h.
2011-05-22 16:28:43 +02:00
Mike Pall
31e0774a9e
FFI: Fix cdata finalization.
2011-04-13 21:37:54 +02:00
Mike Pall
bfce3c1127
DUALNUM: Handle integer type in JIT compiler.
2011-03-10 01:57:24 +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
e1aa8d0d97
FFI: Fix compiled ffi.string() semantics.
2011-02-28 19:47:51 +01:00
Mike Pall
7a37b93f1b
FFI: Record ffi.copy() and ffi.fill().
2011-02-07 23:49:27 +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
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
c29ed4dbbf
FFI: Record ffi.string().
2011-02-05 01:05:56 +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
a1e0f991d8
FFI: Record 64 bit integer divide and modulo.
2011-02-02 21:24:55 +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
07d8a53b39
FFI: Split up 64 bit x^k helper into signed/unsigned.
2011-01-28 02:15:30 +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
8407ac0eca
Add volatile XLOADs.
2011-01-19 02:05:12 +01:00
Mike Pall
925050fe3f
Differentiate between IR_KPTR and IR_KKPTR.
...
IR_KPTR holds a const pointer to possibly non-const content.
IR_KKPTR holds a const pointer to definitely const content.
Note that only content known by the VM to be const qualifies.
Content tagged as const by users (e.g. const char *) doesn't.
2011-01-19 00:40:03 +01:00
Mike Pall
06f99fc3df
Bump copyright date to 2011.
2011-01-09 17:12:53 +01:00
Mike Pall
bc37edc911
Fix handling of floats in x86/x64 backend.
2011-01-05 21:45:09 +01:00
Mike Pall
eaf88dfb3a
FFI: Record 64 bit integer arithmetic.
...
Currently NYI in the x86 backend.
2011-01-03 03:35:35 +01:00
Mike Pall
331b148737
Use cdata to pass IR_KINT64 to -jdump.
2011-01-02 22:20:08 +01:00
Mike Pall
783dbd335f
Refactoring of conversion ops, part 5: drop TOINT/TOI64/TONUM.
2010-12-31 04:09:32 +01:00
Mike Pall
1716540c55
Refactoring of conversion ops, part 4: use CONV instead of TOINT/TONUM.
...
Also narrow CONV.int.num and CONV.i64.num.
2010-12-31 03:56:30 +01:00
Mike Pall
65b194a2f8
Copy destination type for CONV from ir->t to op2, too.
2010-12-31 01:00:54 +01:00
Mike Pall
158de60b8c
Refactoring of conversion ops, part 2: cleanup cdata conversions.
2010-12-30 00:42:00 +01:00
Mike Pall
2ca2de7f0e
Refactoring of conversion ops, part 1: add IR_CONV.
2010-12-30 00:35:32 +01:00
Mike Pall
06c61d9cea
Use macro-map for IRT_* enum. Add IRT_FLOAT.
2010-12-28 20:58:00 +01:00
Mike Pall
255c6e8c87
FFI: Drop IR_CNEWI. Add IR_CNEWP only for pointers/refs.
2010-12-17 17:20:04 +01:00
Mike Pall
cdac0fa2cb
FFI: Add IR_CNEW/IR_CNEWI to allocate/init cdata objects.
2010-12-11 19:32:12 +01:00
Mike Pall
d778680098
FFI: Record cdata index operations (preliminary, lots of NYI cases).
2010-12-08 02:11:18 +01:00
Mike Pall
159f51d811
Add IR_TOI64.
2010-12-06 18:21:51 +01:00
Mike Pall
e137408752
Use native IRT_PTR instead of IRT_LIGHTUD workaround for FILE*.
2010-12-06 02:14:39 +01:00
Mike Pall
db3d16bfd7
Add IR_XSTORE.
2010-12-06 01:48:19 +01:00
Mike Pall
588fa0481f
Add support for 64 bit integer arithmetic to x64 backend.
2010-12-06 00:07:36 +01:00
Mike Pall
5a13fa69d9
Add IR_KINT64.
2010-12-05 22:12:31 +01:00
Mike Pall
b1fb71fb98
Cleanup 64 bit IR type handling.
2010-12-05 21:01:08 +01:00
Mike Pall
6a7605ec85
Rename IRT_PTR to IRT_P32.
2010-12-05 18:59:34 +01:00
Mike Pall
26830d070d
Make sure to use irt_toitype() macro everywhere.
2010-12-05 18:51:37 +01:00
Mike Pall
2fd1292955
FFI: Add cdata object type.
2010-11-26 13:28:46 +01:00
Mike Pall
b3cf2c70f4
Decouple SLOAD type and optional conversion.
2010-10-11 21:13:37 +02:00
Mike Pall
8dc76ee327
Add IR_VLOAD for vararg loads.
...
Also fixes the broken AA improvement in the last commit.
2010-09-14 19:58:27 +02:00
Mike Pall
847b9cf253
Record vararg expressions with varargs defined off-trace.
...
Add SLOAD variant to access the frame type/size.
2010-09-13 01:17:38 +02:00
Mike Pall
5ff994fa37
Add weak guards. Emit TNEW/TDUP with a guard bit.
2010-05-08 18:59:59 +02:00
Mike Pall
41379126a2
Treat the tag of a TValue as unsigned everywhere.
2010-04-25 23:21:15 +02:00
Mike Pall
721b73fecb
Turn traces into true GC objects (GCtrace).
2010-04-25 03:32:29 +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
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
370c868c31
RETF modifies BASE. Treat it like a store or it gets CSEd.
2010-02-04 21:36:32 +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
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
a61df8efbe
Decouple guard vs. INT check vs. TYPECHECK semantics for SLOAD.
2010-01-19 16:58:26 +01:00
Mike Pall
4d9be5b8f8
Bump all copyright dates to 2010.
2010-01-09 14:28:11 +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
55b1695971
RELEASE LuaJIT-2.0.0-beta1
2009-12-08 19:46:35 +01:00