Joe Groff
|
4d16c569f0
|
struct classes now make their own C type without help from alien.structs. remove alien.structs dependencies from everywhere outside of alien and compiler, and have the FFI handle both alien.structs and classes.struct c-types
|
2009-09-15 17:38:49 -05:00 |
Slava Pestov
|
85a2bfab6c
|
compiler: eliminate boilerplate by centralizing info in declarative INSN: syntax
|
2009-09-02 06:22:37 -05:00 |
Slava Pestov
|
8a9c15ab0b
|
compiler.tree.escape-analysis: if the output of an #introduce node has an immutable tuple class type declaration, and it is not passed to any subroutine calls, or returned from the word, then unbox it. This speeds up vector arithmetic words on specialized arrays, because the specialized array is unboxed up-front, eliminating an indirection on every loop iteration
|
2009-08-09 16:29:21 -05:00 |
Slava Pestov
|
4b7ba38aab
|
compiler.cfg: virtual registers are integers now, and representations are stored off to the side. Fix bug in representation selection that would manifest if a value was used as a float and a fixnum in different branches; cannot globally unbox float in this case
|
2009-08-08 04:02:18 -05:00 |
Slava Pestov
|
d20d335447
|
compiler.cfg.stacks: more accurate deconcatenatization inserts fewer partially redundant ##peeks. 11% improvement on benchmark.beust2, 2% reduction in ##peek and ##replace instructions inserted
|
2009-08-03 07:08:28 -05:00 |
Slava Pestov
|
d10993b837
|
compiler.cfg: Rename ssa to ssa.construction, coalescing to ssa.destruction
|
2009-07-28 09:34:08 -05:00 |
Slava Pestov
|
7590ad3574
|
compiler.cfg: introduce less temporaries when building CFG
|
2009-07-24 03:37:18 -05:00 |
Slava Pestov
|
2bea107202
|
compiler.cfg.builder: fix stack effect declaration
|
2009-07-23 21:24:15 -05:00 |
Slava Pestov
|
d947c61bd7
|
compiler.cfg.stacks: now performs online local DCN
|
2009-07-23 20:54:38 -05:00 |
Slava Pestov
|
d29c275089
|
compiler.cfg.builder: Fix construction of ##return instructions from #return-recursive nodes
|
2009-07-22 19:17:21 -05:00 |
Slava Pestov
|
44bcd258f6
|
Insert _loop-entry in linearization pass instead of in CFG builder, so that optimizations don't have to worry about it
|
2009-07-22 06:05:17 -05:00 |
Slava Pestov
|
fdef772d67
|
compiler.cfg: if a block has an instruction that kills values it must be the only instruction in the block
|
2009-07-19 20:12:04 -05:00 |
Slava Pestov
|
605b37a949
|
compiler.cfg.builder: annotate calls with height changes, once again
|
2009-07-18 23:08:53 -05:00 |
Slava Pestov
|
b83f27af74
|
compiler.cfg.builder: remove some dead code
|
2009-07-17 21:52:33 -05:00 |
Slava Pestov
|
e76dce8aff
|
Overflowing fixnum intrinsics now expand into several CFG nodes. This speeds up the common case since only the uncommon case is now a stack syncpoint
|
2009-07-16 18:29:40 -05:00 |
Slava Pestov
|
768e2a5148
|
compiler.cfg: split off condition codes into a comparisons sub-vocabulary
|
2009-07-13 14:42:52 -05:00 |
Slava Pestov
|
72b6bef19d
|
compiler.cfg.builder: emit less crap after a #terminate node
|
2009-06-30 23:03:25 -05:00 |
Slava Pestov
|
0402790001
|
compiler.cfg Remove height tracking for ##call instructions, wire in ##no-tco instruction
|
2009-06-30 21:21:46 -05:00 |
Slava Pestov
|
eca718b32d
|
compiler.cfg.builder: fix stack effect
|
2009-06-30 21:07:55 -05:00 |
Slava Pestov
|
5c6c3ecd85
|
compiler.cfg.tco: Tail call optimization moved out of compiler.cfg.builder into its own pass
|
2009-06-30 20:13:35 -05:00 |
Slava Pestov
|
2d231f066a
|
GC checks now save and restore registers
|
2009-06-02 18:23:47 -05:00 |
Slava Pestov
|
76d74c16af
|
Fixing various bugs; alias analysis wasn't handling ##phi nodes, stack analysis incorrectly handled height-changing back edges and ##fixnum-*, clean up ##dispatch generation
|
2009-05-29 01:39:14 -05:00 |
Slava Pestov
|
a2b982e247
|
compiler.cfg.builder: don't make basic blocks after terminating calls
|
2009-05-25 19:16:36 -05:00 |
Slava Pestov
|
e58fcd485c
|
Working on global optimizations
|
2009-05-19 17:28:13 -05:00 |
Slava Pestov
|
cddb1f6133
|
Fix spelling
|
2009-02-15 04:07:05 -06:00 |
Slava Pestov
|
1c0789e616
|
Didn't generate ##branch after ##alien-invoke and ##alien-indirect
|
2008-11-29 03:46:57 -06:00 |
Slava Pestov
|
f44506089d
|
More work on overflow instructions: don't need temp register anymore, add -tail variants which don't need stack frame
|
2008-11-28 06:36:30 -06:00 |
Slava Pestov
|
eb05dd3a12
|
Optimize a ##dispatch that is applied to the result of a ##sub-imm or ##add-imm; this eliminates an instruction from the common 1 fixnum-fast { ... } dispatch and 8 fixnum-fast { ... } dispatch code sequences appearing in generic word expansions
|
2008-11-13 04:16:08 -06:00 |
Slava Pestov
|
26f309d2ae
|
Trying to make PEGs compile faster by reducing the number of low level IR nodes: merge functionality of #>r and #r> into #shuffle, and generate 1 node instead of 3 for calls to get-local
|
2008-11-11 18:46:31 -06:00 |
sheeple
|
5b7d40d9b4
|
We need to end the basic block after the ##prologue in the dispatch branch so that the GC check can go after the prologue
|
2008-11-10 02:58:05 -06:00 |
Slava Pestov
|
4e55cd973b
|
If a #dispatch branch is a call to another word which is not an intrinsic, we avoid generating the dispatch branch and just jump to the word directly
|
2008-11-06 11:48:55 -06:00 |
Slava Pestov
|
1c1333fbe9
|
Compile not and >boolean as branchless intrinsics by having the CFG builder detect certain code patterns
|
2008-11-06 09:09:21 -06:00 |
Slava Pestov
|
59f4f25b91
|
Loop alignment: appears to be a small win for reverse-complement
|
2008-11-03 06:20:51 -06:00 |
Slava Pestov
|
445e353337
|
Optimize away useless jumps
|
2008-11-02 23:09:31 -06:00 |
Slava Pestov
|
804c6f93ea
|
Fix x86.32
|
2008-10-31 21:07:41 -05:00 |
Slava Pestov
|
73d01452cb
|
Replace ##gc with a gc flag in the basic block
|
2008-10-22 18:38:30 -05:00 |
Slava Pestov
|
1b06ab1b39
|
Fixing various bugs
|
2008-10-21 23:17:32 -05:00 |
Slava Pestov
|
94a2bfa2ea
|
Working on comparison operations, clearing out remaining dead wood
|
2008-10-21 03:20:48 -05:00 |
Slava Pestov
|
e92f795a76
|
More work on intrinsics; memory allocation and slot access now expands correctly
|
2008-10-20 20:40:15 -05:00 |
Slava Pestov
|
37cf7d9a9c
|
Add SSA comparison instructions, fix various problems
|
2008-10-20 05:55:20 -05:00 |
Slava Pestov
|
f092622fac
|
CFG IR is now pure SSA
|
2008-10-20 01:56:28 -05:00 |
Slava Pestov
|
c0d89b061e
|
Fixing register allocator prspilling
|
2008-10-19 01:10:21 -05:00 |
Slava Pestov
|
239578353f
|
Simplifying vregs work in progress
|
2008-10-17 15:35:04 -05:00 |
Slava Pestov
|
ae3c4ae1b6
|
Fix some problems with callbacks
|
2008-10-12 23:32:14 -05:00 |
Slava Pestov
|
b2ade7f556
|
Fix callbacks and non-tailcalls to dispatch
|
2008-10-12 17:37:26 -05:00 |
Slava Pestov
|
5f93ab74e4
|
Fix #dispatch generation
|
2008-10-12 16:46:59 -05:00 |
Slava Pestov
|
3844cb62d8
|
Fix %write-barrier
|
2008-10-10 03:16:26 -05:00 |
Slava Pestov
|
3e29808f17
|
Fix loop compilation
|
2008-10-10 02:33:32 -05:00 |
Slava Pestov
|
cf46a832e7
|
Debugging register allocator and inline allocation
|
2008-10-08 23:42:53 -05:00 |
Slava Pestov
|
0e4e05d5cd
|
Debugging new codegen
|
2008-10-08 03:51:44 -05:00 |