Björn Lindqvist
|
2077ae9180
|
compiler.cfg.linear-scan.assignment: refactoring vreg>reg and
assign-registers-in-block so locals aren't needed
|
2015-04-29 09:31:59 -07:00 |
Björn Lindqvist
|
c3ca8bd859
|
compiler.cfg.*: even more compiler docs
|
2015-04-29 09:31:58 -07:00 |
Björn Lindqvist
|
d486de889d
|
compiler.cfg.*: smaller doc improvements
|
2015-04-29 09:31:57 -07:00 |
Björn Lindqvist
|
043b6d5377
|
compiler.cfg.linear-scan.linear-scan: refactoring of word so that locals doesn't need to be used and more docs (by moving comments)
|
2015-04-29 09:31:56 -07:00 |
Björn Lindqvist
|
aee55f1b83
|
compiler.cfg.linear-scan.assignment: forgot that i removed live-intervals>min-heap
|
2014-12-15 21:04:53 +01:00 |
Björn Lindqvist
|
c810677b47
|
compiler.cfg.linear-scan.*: refactoring to simplify init-allocator and get rid of init-unhandled
|
2014-12-15 20:44:06 +01:00 |
Björn Lindqvist
|
52c6009aeb
|
compiler.cfg.linear-scan.assignment: utility word heap-pop-while which lets you express expire-old-intervals and activate-new-intervals more nicely + tests
|
2014-12-15 20:40:49 +01:00 |
Björn Lindqvist
|
0af46ac4de
|
compiler.cfg.linear-scan.assignment: more docs and refactoring of the init-unhandled and assign-registers-in-block words
|
2014-12-15 20:40:49 +01:00 |
John Benediktsson
|
c65877104e
|
compiler: cleanup usings.
|
2014-12-13 16:10:21 -08:00 |
Björn Lindqvist
|
d3c91bea72
|
compiler.cfg.linear-scan.*: stub docs and tests
|
2014-11-16 06:25:54 -08:00 |
Alex Vondrak
|
e90ce0865c
|
compiler.cfg.ssa.destruction.leaders: break off leader-map to resolve circular dependencies (oops)
|
2012-12-31 11:20:57 -08:00 |
Doug Coleman
|
6cca0ea468
|
compiler.cfg: Rename <##foo> to ##foo, in the low-level IR
|
2011-11-11 19:48:38 -08:00 |
Doug Coleman
|
eb2a0c611b
|
compiler.cfg: Change low-level IR constructors from ##foo to <##foo>
|
2011-11-06 23:02:46 -08:00 |
Slava Pestov
|
6b5fffc026
|
compiler: preliminary implementation of tracking derived pointers in GC maps
|
2010-09-27 20:12:44 -07:00 |
Slava Pestov
|
ec2f42fd40
|
compiler.cfg.liveness: merge in compiler.cfg.liveness.ssa and simplify the code, since we don't compute live sets before SSA construction anymore
|
2010-09-25 14:36:58 -07:00 |
Slava Pestov
|
94f6ac98de
|
compiler.cfg.linear-scan: fix bad interaction between inactive intervals and sync points
|
2010-07-29 21:06:48 -04:00 |
Slava Pestov
|
355d89e8e8
|
compiler.cfg: now that kill-blocks cannot contain instructions that define vregs we can skip them all
|
2010-07-27 12:40:31 -04:00 |
Slava Pestov
|
e86f434f26
|
Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction
|
2010-06-14 19:39:46 -04:00 |
Slava Pestov
|
806e54630a
|
GC maps for more compact inline GC checks
|
2010-06-11 20:06:00 -04:00 |
Slava Pestov
|
982e704626
|
compiler.cfg.linear-scan: clean up clobber-insn handling
|
2010-05-07 18:22:35 -04:00 |
Slava Pestov
|
f5c5d8b44c
|
compiler: remove flat machine representation and generate code directly from the CFG
|
2010-05-03 17:34:32 -04:00 |
Slava Pestov
|
38bafd2be8
|
compiler.cfg.linear-scan.assignment: spill slot representation logic was backwards, just like Factor
|
2010-05-03 17:34:29 -04:00 |
Slava Pestov
|
43f269e4eb
|
Register allocation now uses SSA properties to coalesce values with different representations
|
2010-05-03 17:34:20 -04:00 |
Slava Pestov
|
9b34a4a054
|
compiler.cfg: remove unused 'reps' slot from compiler.cfg, and re-organize things in preparation for SSA register allocation
|
2010-05-03 17:34:18 -04:00 |
Slava Pestov
|
43fc230c69
|
compiler.cfg.linear-scan: cleanups
|
2010-05-03 17:34:18 -04:00 |
Slava Pestov
|
95ff5ffe51
|
New GC checks work in progress
|
2010-05-03 17:34:16 -04:00 |
Slava Pestov
|
51b13ce373
|
compiler.cfg.linear-scan: don't insert a _reload if the register is going to be overwritten anyway
|
2010-05-03 17:34:14 -04:00 |
Slava Pestov
|
503c0fcfde
|
compiler: Start using tagged-rep for stuff, and split up compiler.cfg.representations into several sub-vocabularies
|
2010-05-03 17:34:01 -04:00 |
Daniel Ehrenberg
|
7074979745
|
Moving new-sets to sets
|
2010-02-26 16:01:01 -05:00 |
Slava Pestov
|
b4e36608da
|
compiler.cfg: remove _gc instruction, it doesn't need to exist, and change GC checks to ensure that the right amount of space is available instead of blindly checking for 1Kb
|
2009-10-05 05:27:49 -05:00 |
Slava Pestov
|
705b4ab5c3
|
compiler.cfg.linear-scan: fix partial sync point logic in case where dst == src, and clean up spilling code
|
2009-09-27 19:28:20 -05:00 |
Slava Pestov
|
513ba1f176
|
compiler.cfg.linearization.order: basic blocks were being inserted twice if some blocks had repeated successors, causing problems for register allocation
|
2009-09-22 03:19:23 -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
|
0db01f6d5f
|
compiler.cfg.linear-scan now supports partial sync-points where all registers are spilled; taking advantage of this, there are new trigonometric intrinsics which yield a 2x performance boost on benchmark.struct-arrays and a 25% boost on benchmark.partial-sums
|
2009-08-30 04:52:01 -05:00 |
Slava Pestov
|
d0c393aa60
|
compiler.cfg: new system to track when results of analyses need to be recomputed (reverse post order, linear order, predecessors, dominance, loops). Passes can now call needs-predecessors, needs-dominance, needs-loops at the beginning, and cfg-changed, predecessors-changd at the end. Linearization order now takes loop nesting into account, and linear scan now uses linearization order instead of RPO.
|
2009-08-08 20:02:56 -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
|
725280d424
|
Split off the notion of a register representation from a register class
|
2009-08-07 17:44:50 -05:00 |
Slava Pestov
|
74766d1ccd
|
compiler.cfg.linear-scan.assignment: modifies instructions in place instead of storing a registers assoc for further compile-time performance improvement
|
2009-07-29 06:36:14 -05:00 |
Slava Pestov
|
1532a6f2e3
|
compiler.cfg.linear-scan.assignment: more efficient data structures
|
2009-07-29 06:12:33 -05:00 |
Slava Pestov
|
d913d7331f
|
compiler.cfg: Minor optimization. Instructions can now only ever produce a single value; this eliminates 1array constructions and some iterations
|
2009-07-28 12:29:07 -05:00 |
Slava Pestov
|
857ef94acc
|
compiler.cfg.linear-scan: use compiler.cfg.parallel-copy in resolve pass
|
2009-07-28 07:39:46 -05:00 |
Slava Pestov
|
89db2e745d
|
Move liveness back to compiler.cfg.liveness, fix a corner-case where it didn't work on some forms of non-SSA code
|
2009-07-22 06:07:28 -05:00 |
Slava Pestov
|
21a012e3d7
|
compiler.cfg: Major restructuring -- do not compute liveness before local optimization, and instead change local optimizations to be more permissive of undefined values. Now, liveness is only computed once, after phi elimination and before register allocation. This means liveness analysis does not need to take phi nodes into account and can now use the new compiler.cfg.dataflow-analysis framework
|
2009-07-22 03:08:28 -05:00 |
Slava Pestov
|
ea69566ddd
|
compiler.cfg.linear-scan: algorithmic optimizations
|
2009-07-18 00:14:39 -05:00 |
Slava Pestov
|
ae67de6f90
|
compiler.cfg.linear-scan: fix fencepost error in spill insertion
|
2009-07-10 03:58:51 -05:00 |
Slava Pestov
|
d02854b04e
|
compiler.cfg.linear-scan: two live intervals which are coalesced will use the same spill slot
|
2009-07-09 23:12:49 -05:00 |
Slava Pestov
|
c20e6c290f
|
compiler.cfg.linear-scan: split off parallel mapping code from resolve pass, use it in assignment pass to resolve parallel copies
|
2009-07-08 23:07:06 -05:00 |
Slava Pestov
|
e2044602aa
|
compiler.cfg.linear-scan: debugging spilling, add more assertions
|
2009-07-07 13:01:27 -05:00 |
Slava Pestov
|
0bcf4ce535
|
compiler.cfg.linear-scan: Re-implement spilling, add some additional runtime assertions, simplify assignment pass since it doesn't have to track spill slots anymore; just assume a live value that's not in active or inactive is spilled
|
2009-07-07 03:28:55 -05:00 |
Slava Pestov
|
4402d8652c
|
compiler.cfg.linear-scan: minor fixes
|
2009-07-05 22:51:53 -05:00 |