Björn Lindqvist
|
1a71407112
|
compiler.cfg.linear-scan.assignment: refactoring + tests
better expire-old-intervals, activate-new-intervals and assign-gc-roots
|
2016-04-03 20:56:29 +02:00 |
Björn Lindqvist
|
86606213de
|
compiler.cfg.linear-scan.assignment: refactoring
Better definitions for expire-old-intervals, activate-new-intervals and
assign-registers-in-insn.
|
2016-04-03 20:56:29 +02:00 |
Björn Lindqvist
|
3ef33708ae
|
compiler.cfg.linear-scan.assignment: dont think prepare-insn should be called twice here
|
2016-04-02 17:48:23 +02:00 |
Björn Lindqvist
|
76be7b54ed
|
compiler.cfg.linear-scan.*: removed start and end from live-interval-state
They weren't needed because start>> was always equal to ranges min and
end>> ranges max
|
2016-04-01 19:16:35 +02:00 |
John Benediktsson
|
71ef8a22c2
|
disambiguate namespaces:set and sets:set.
|
2016-03-29 17:14:42 -07:00 |
John Benediktsson
|
ceb75057da
|
change ERROR: words from throw-foo back to foo.
|
2015-08-13 16:13:05 -07:00 |
Doug Coleman
|
b6be8685c3
|
basis: ERROR: changes.
|
2015-08-13 03:20:39 -07:00 |
Doug Coleman
|
e0d1b14e5c
|
factor: don't need FROM: namespaces => set or namespaces:set anymore
|
2015-08-12 11:25:57 -05:00 |
John Benediktsson
|
b366a06c41
|
use reject instead of [ ... not ] filter.
|
2015-05-12 18:50:34 -07:00 |
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 |