Björn Lindqvist
8c8605d11a
compiler.cfg.linear-scan.*: more tests and docs for allocation and state
2015-06-16 18:28:32 -07:00
Björn Lindqvist
78fe8bf1dc
compiler.cfg.linear-scan.*: dont use a hashtable here, it fixes register
...
allocation so it's always in the same order as machine-registers
2015-06-16 18:28:32 -07:00
Björn Lindqvist
c0645ecafe
compiler.cfg.linear-scan.*: fix help-lint errors
2015-06-14 16:44:37 +02:00
Björn Lindqvist
418438ab13
compiler.cfg.linear-scan.*: change compute-live-intervals so that it
...
returns only one sequence, it makes some words a little simpler
2015-06-14 16:44:37 +02:00
Björn Lindqvist
91118ae5df
compiler.cfg.linear-scan.allocation.state: fix #1345 by adding vreg to
...
the heap key
By having { start end vreg } as the key in the min-heap ordering is
guaranteed even if two intervals share the same start and end.
2015-06-14 16:44:37 +02:00
John Benediktsson
dfa763434e
Fix tests broken by word hashcode change.
2015-06-09 20:37:55 -07:00
John Benediktsson
2c3492a916
minor cleanup to some docs.
2015-05-13 16:09:14 -07:00
Björn Lindqvist
6097e80178
compiler.cfg.*: fixing tests so they work on 32bit archs too
2015-04-30 04:49:48 +02:00
Björn Lindqvist
6215561ad4
compiler.cfg.*: more docs and removing a test that isn't relevant anymore
2015-04-29 09:31:59 -07:00
Björn Lindqvist
135d7f5ff3
compiler.cfg.*: more unit tests
2015-04-29 09:31:59 -07:00
Björn Lindqvist
997f95196c
compiler.cfg.*: lots of new unit tests
2015-04-29 09:31:58 -07:00
Björn Lindqvist
167d1598b3
compiler.cfg.linear-scan.allocation.*: lots more docs and some word simplifications
2015-04-29 09:31:58 -07:00
Björn Lindqvist
16f6025979
compiler.cfg.linear-scan.allocation.spilling: docs and tests for this vocab
2015-04-29 09:31:58 -07:00
Björn Lindqvist
5cd44dc07c
compiler.cfg.linear-scan.allocation.state: set spill-area-size/align when the cfg tuple is created
2015-04-29 09:31:57 -07:00
Björn Lindqvist
4cda101717
compiler.cfg.linear-scan.allocation.state: more docs and tests for vocab
2015-04-29 09:31:57 -07:00
Doug Coleman
ceebc1d6c1
compiler: Fix help-lint for @bjourne's recent awesome docs.
2015-01-17 14:02:59 -08:00
Björn Lindqvist
5782855343
compiler.cfg.*: more docs
2014-12-31 03:37:16 +01:00
John Benediktsson
2a893a110a
compiler.cfg.linear-scan.allocation.state: don't use slot.syntax.
2014-12-15 13:10:59 -08:00
Björn Lindqvist
d6c1c075ff
compiler.cfg.linear-scan.allocation: using slurp-heap
2014-12-15 20:48:34 +01:00
Björn Lindqvist
84f8f26ce8
compiler.cfg.linear-scan.allocation.state: doc fixing
2014-12-15 20:44:53 +01:00
Björn Lindqvist
35d00da765
compiler.cfg.linear-scan.allocation.*: maybe a fix for #1227
...
The register allocator pops from the unhandled-intervals and
unhandled-sync-points heaps. If two live intervals share the same
start slot, then they can be popped in either order leading to
differently generated code. So instead use one
heap (unhandled-min-heap) and both the start and end slot as the heap
key to resolve tie-breakers
2014-12-15 20:44:53 +01:00
Björn Lindqvist
8a011c8366
compiler.cfg.*: more docs
2014-12-15 20:44:07 +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
fab478482e
compiler.cfg.linear-scan.allocation: refactoring to simplify the (allocate-registers) recursion
2014-12-15 20:44:06 +01:00
John Benediktsson
c65877104e
compiler: cleanup usings.
2014-12-13 16:10:21 -08:00
John Benediktsson
ad9d44aa2b
compiler.cfg.linear-scan.allocation.state: simplify init-unhandled.
2014-12-01 22:18:15 -08:00
Björn Lindqvist
d3c91bea72
compiler.cfg.linear-scan.*: stub docs and tests
2014-11-16 06:25:54 -08:00
Björn Lindqvist
1eac4afc8b
compiler.cfg.linear-scan.allocation.state: sub docs and tests
2014-11-16 06:25:53 -08:00
Doug Coleman
5f377c0849
compiler: Rename value-info, live-interval
2013-03-23 22:56:47 -07:00
Slava Pestov
07227f22f9
WIP
2012-12-31 11:03:33 -08:00
Joe Groff
2bd6de9a02
slots: pre-create the "at", "nth", and "global" slots to make deterministic the currently nondeterministic ambiguity between accessors:change-* and assocs:change-at, sequences:change-nth, and namespaces:change-global
2011-09-19 10:03:43 -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
adc9db3ea8
compiler.cfg.linear-scan.allocation: fix wrong order
2010-07-19 06:46:50 -04:00
Slava Pestov
b776a92546
compiler.cfg.linear-scan: fix bad interaction between split position calculation and register-clobbering instructions
2010-07-18 17:38:52 -04:00
Slava Pestov
e27adb2830
compiler: re-architect low-level optimizer to allow more than one output value per instruction
2010-07-13 07:40:14 -04:00
Slava Pestov
ba7cb61133
Stack allocation improvements
...
- New with-out-parameters combinator
- Inhibit tail call optimization in frames with local allocation, to ensure that passing a stack allocated value to the last word in the quotation works
- local allocations are now aligned properly
- spill slots are now aligned properly aligned in frames which have parameter and local allocation areas
2010-05-22 02:37:00 -04:00
Slava Pestov
5b48cd2a63
FFI rewrite part 5: return value boxing and callback parameter boxing now uses vregs; simplify return value unboxing
2010-05-16 03:43:23 -04:00
Slava Pestov
6d30bb8bf4
compiler.cfg.linear-scan: pointless optimizations
2010-05-14 18:37:08 -04:00
Slava Pestov
eb802208d1
FFI rewrite part 4: parameter and return value unboxing redesign
2010-05-11 19:11:44 -04:00
Slava Pestov
982e704626
compiler.cfg.linear-scan: clean up clobber-insn handling
2010-05-07 18:22:35 -04:00
Slava Pestov
627295f094
Language change: tuple slot setter words with stack effect ( value object -- ) are now named FOO<< instead of (>>FOO)
2010-05-06 17:21:02 -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
ffd1844d52
compiler.cfg.linear-scan: clean up spill slot assignment
2010-05-03 17:34:24 -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
299b5b0f6c
filter-here -> filter!
2009-10-28 00:44:05 -05:00
Slava Pestov
50f5c3d116
remq -> remove-eq, delq -> remove-eq!
2009-10-28 00:23:08 -05:00