Commit Graph

276 Commits (f4ccfa0f71cd9b163836c92950cd2dafab8dfd05)

Author SHA1 Message Date
Björn Lindqvist b89a305ef7 compiler.cfg.linear-scan.assignment: correct representation used when spilling
Previously the rep-of word was used. But as the vregs representation can
change, you need to instead use the representation it uas as the spill
point.
2016-11-15 03:49:46 +01:00
Björn Lindqvist b1ac5ae7ca compiler.cfg.linear-scan: more tests 2016-11-15 03:49:46 +01:00
Björn Lindqvist ffef75f8a7 compiler.cfg.*: more docs 2016-11-15 03:49:46 +01:00
Björn Lindqvist 4d9367249b compiler.cfg.linear-scan.*: more tests 2016-11-15 03:49:46 +01:00
Björn Lindqvist 7053c72aa1 compiler.cfg.linear-scan.allocation.spilling: <linked-hash> 2016-11-15 03:49:46 +01:00
Alexander Iljin 2fd5654473 Add EOL at EOF for all authors.txt files for consistency
In some instances replaced CR/LF with LF.
2016-07-30 09:25:30 -07:00
Björn Lindqvist 70e9834f2f compiler.cfg.*: new system for emitting spill/reloads for gc calls (#1471)
GC calls were treated as sync points so all registers were spilled
around them. But if the gc call isn't triggered, it is unnecessary to
spill. This commit fixes that by handling ##call-gc specially and
putting ##spill and ##reloads in the same block as the gc call itself.
2016-04-22 19:21:15 +02:00
Björn Lindqvist 720edcbd3b style fixes - indenting slots and word bodies 2016-04-22 13:06:41 +02:00
Björn Lindqvist 92a85ebe86 compiler.*: more compiler docs 2016-04-22 12:57:54 +02:00
Björn Lindqvist cf74a4dc0f compiler.cfg.linear-scan.allocation.splitting: Docs 2016-04-22 12:16:46 +02:00
Björn Lindqvist 951c0586f0 compiler.cfg.linear-scan.allocation: removes no-free-registers? 2016-04-22 12:04:22 +02:00
Björn Lindqvist e426e5c339 compiler.cfg.linear-scan.assignment: better vregs>regs 2016-04-11 01:17:13 +02:00
Björn Lindqvist 754f52d399 compiler.cfg.linear-scan.assignment: refactoring of assign-registers-in-block + tests 2016-04-11 01:17:13 +02:00
John Benediktsson e4ddd9f38e compiler.cfg.linear-scan.allocation.spilling: fix $maybe docs. 2016-04-04 10:40:02 -07:00
Björn Lindqvist 2cc8b5e7de compiler.cfg.linear-scan.allocation.spilling: fix stack effect 2016-04-03 20:56:30 +02:00
Björn Lindqvist 89e98e96a4 compiler.cfg.linear-scan.live-intervals: hairy- and clober-insn moved to
this vocab
2016-04-03 20:56:30 +02:00
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 54d7b50d1b compiler.cfg.linear-scan.live-intervals: better way to write insn>sync-point 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 026abb9c38 compiler.cfg.linear.scan.*: makes it so ranges and uses are guaranteed
to be vectors

Simplifies the code and makes it a little faster.
2016-04-02 17:48:23 +02:00
Björn Lindqvist 95c1b6bbe3 compiler.cfg.linear-scan.live-intervals: doc lint fixes 2016-04-01 23:42:00 +02:00
Björn Lindqvist a60f122c5e basis.compiler.cfg.linear-scan.*: fixing boostrap problems due to the
word rename

Sorry for the noise.
2016-04-01 20:16:13 +02:00
Björn Lindqvist eb68ad6932 compiler.cfg.linear-scan.allocation.splitting: fix HINTS: specialization
for split-interval
2016-04-01 19:38:45 +02:00
Björn Lindqvist 52e78441f8 compiler.cfg.linear-scan.live-intervals: simplify uses-vregs* 2016-04-01 19:16:35 +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 1721f9e314 fix some tests for the sets:set change. 2016-03-29 20:43:46 -07:00
John Benediktsson 71ef8a22c2 disambiguate namespaces:set and sets:set. 2016-03-29 17:14:42 -07:00
Björn Lindqvist 5663d39a76 compiler.*: more docs 2016-02-28 01:01:38 +01:00
Björn Lindqvist 7b18618b3e compiler.cfg.linear-scan.allocation.state: fixes the the 64-bit-o-centric testcases 2015-11-04 13:54:14 +01:00
Björn Lindqvist bb6fa7267c compiler.cfg.linear-scan.allocation.state: help-lint fixes 2015-11-04 13:38:59 +01:00
Björn Lindqvist f692200547 compiler.cfg.*: refactoring which removes spill-area-size and
spill-area-align from cfg

This makes the code for building the stack frame simpler.
2015-11-04 07:53:19 +01:00
Björn Lindqvist cfe4fec574 compiler.cfg.linear-scan.*: make it so cfg is given as an argument to next-spill-slot 2015-11-04 07:53:19 +01:00
Björn Lindqvist 804348287c Docs: fix a bunch of help-lint warnings 2015-09-22 08:52:59 +02:00
Björn Lindqvist 4db173cadb compiler.*: random doc and tests updates 2015-09-22 08:52:59 +02:00
Björn Lindqvist 86d35982ac compiler.cfg.linear-scan.allocation.splitting: better def for split-uses
it seems to be just as fast as the wordier one
2015-09-22 08:52:37 +02:00
Björn Lindqvist aaef9af863 compiler.cfg.*: random doc updates 2015-09-22 08:51:46 +02:00
Björn Lindqvist 508ddc5c0b compiler.cfg.linear-scan.ranges: merge adjacent ranges when adding them
this way, the number of live interval ranges you have to deal with is
much smaller
2015-09-22 08:51:04 +02:00
Björn Lindqvist 89e261f673 compiler.cfg.linear-scan.ranges: remove the live-range definition and
use integer pairs instead

so instead of ranges being a sequence of live-ranges it is now a
sequence of integer pairs instead. That makes the
compiler.cfg.linear-scan.ranges simpler and easier to generalize
2015-09-22 08:51:04 +02:00
Björn Lindqvist 2943e7f246 compiler.cfg.linear-scan.ranges: new word ranges-endpoints and remove relevant-ranges 2015-09-22 08:51:04 +02:00
Björn Lindqvist 8c781639ed compiler.cfg.linear-scan.ranges: move more range-related features into
this vocab
2015-09-22 08:51:04 +02:00
Björn Lindqvist fb45bc278f compiler.cfg.linear-scan.live-intervals: the reg-class slot can be
removed

it's always the same as vreg>> rep-of reg-class-of so no need to store
that data twice
2015-09-22 08:51:04 +02:00
Björn Lindqvist 68c6654763 compiler.cfg.linear-scan.*: move words for splitting and intersecting ranges to the compiler.cfg.linear-scan.ranges vocab 2015-09-22 08:51:04 +02:00
Björn Lindqvist b8d47ed845 compiler.cfg.linear-scan.ranges: new vocab to contain all the range
related stuff from live intervals
2015-09-22 08:51:03 +02:00
John Benediktsson ceb75057da change ERROR: words from throw-foo back to foo. 2015-08-13 16:13:05 -07:00
Doug Coleman ce046b77c8 compiler: rename D to D: because it wants a token. Same for R -> R: 2015-08-13 15:23:10 -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
Doug Coleman 330c7ba156 factor: Removing SLOT: nth/at/global in favor of using change: at for tuple slots named ``at`` and change-at for hashtables.
Redo many FROM: and QUALIFIED: and using lists.
2015-08-12 08:49:02 -05:00
Björn Lindqvist 22b871d82e compiler.cfg.utilities: make it so block>cfg initializes spill-area-align 2015-07-29 13:01:24 +02:00