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
f37ab939f0
compiler.*: more compiler docs
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
Björn Lindqvist
9dbb3e9171
compiler.codegen.gc-maps: simplies largest-spill-slot and refactors serialize-gc-maps
2015-06-14 16:44:37 +02:00
Björn Lindqvist
ca2d64af68
compiler.cfg.ssa.destruction: try and sort the vreg pairs before
...
elimination, this way you always get the same leader info
2015-06-14 16:44:36 +02:00
Björn Lindqvist
be342e8638
compiler.cfg.ssa.destruction: refactors maybe/must-eliminate-copy into
...
one try-eliminate-copy
2015-06-14 16:44:36 +02:00
Björn Lindqvist
98ae0eb02e
compiler.cfg.ssa.destruction: small refactoring which removes
...
class-elements and maybe-eliminate-copy-later
2015-06-14 16:44:36 +02:00
Björn Lindqvist
ceff23339c
compiler.cfg.ssa.destruction: a bunch of new docs
2015-06-14 16:44:36 +02:00
Björn Lindqvist
b4f881a9be
compiler.cfg.ssa.destruction.tests: a bunch of new tests
2015-06-14 16:44:36 +02:00
John Benediktsson
dfa763434e
Fix tests broken by word hashcode change.
2015-06-09 20:37:55 -07:00
John Benediktsson
d68175f48f
Some more general fixes for recent refactors.
2015-06-08 19:15:29 -07:00
Doug Coleman
6e60c811ac
core: Rename create to create-word, create-in to create-word-in.
2015-06-08 12:47:35 -07:00
Doug Coleman
fa2bf33659
compiler.tree: renaming is hard. cleanup -> cleanup-tree
2015-06-05 23:18:43 -07:00
Doug Coleman
16094d283b
compiler.tree.debugger: more "cleanup"
2015-06-05 23:04:05 -07:00
Doug Coleman
a0cb7b4fd8
compiler.tree.cleanup: Fix docs
2015-06-05 21:22:50 -07:00
Doug Coleman
808342076d
compiler: rename cleanup to cleanup-tree, cleanup* to cleanup-tree*
2015-06-05 21:08:18 -07:00
John Benediktsson
a66bed77b3
compiler.cfg.stacks.clearing: fix help-lint.
2015-05-18 10:02:35 -07:00
John Benediktsson
c7ea419874
compiler.cfg.stacks.clearing: fix tests.
2015-05-17 09:32:44 -07:00
Björn Lindqvist
9ceea3c241
compiler.*: new cfg instruction ##clear, it makes it easier to see where
...
the compiler.cfg.stacks.clearing pass inserts extra instructions
2015-05-17 07:59:34 +02:00
Björn Lindqvist
655faadec9
compiler.*: now when we're tracking uninitialized locations instead of
...
initialized ones, the height slot isn't needed on ##call anymore
2015-05-17 07:59:34 +02:00
Björn Lindqvist
6dd2fe31b6
compiler.cfg.stacks.*: new attempt at fixing the gc maps bugs
...
the padding vocab is inverted so that instead of trying to track which
locations are live, it tracks those which are dead which is much easier
to get right.
2015-05-17 07:59:34 +02:00
John Benediktsson
aa1a5f22ba
compiler.tree.debugger: fix docs using.
2015-05-14 08:16:27 -07:00
John Benediktsson
2c3492a916
minor cleanup to some docs.
2015-05-13 16:09:14 -07:00
John Benediktsson
296968580a
use assoc-reject instead of [ ... not ] assoc-filter.
2015-05-12 19:08:42 -07:00
John Benediktsson
b366a06c41
use reject instead of [ ... not ] filter.
2015-05-12 18:50:34 -07:00
Björn Lindqvist
f9a6bb27f4
compiler.cfg.*: new test-case and setting leader-map to f is better
2015-05-09 20:10:27 -07:00
Björn Lindqvist
409a32d555
compiler.cfg.stacks.padding: docs
2015-05-09 20:04:23 -07:00
Björn Lindqvist
24dc0679dc
compiler.cfg.ssa.destruction: fix and testcase for the
...
"lookup-base-pointer* does not define a method for the POSTPONE: f
class" bug
2015-05-09 20:04:22 -07:00
Björn Lindqvist
ecf3829843
compiler.cfg.stacks.*: new vocab 'padding' to perform much more accurate
...
live analysis. it will replace the 'map' vocab
2015-05-09 20:04:22 -07:00
Björn Lindqvist
0c2559ef6e
compiler.*: a bunch more compiler docs
2015-05-09 20:04:22 -07:00
Björn Lindqvist
e2c91852e4
compiler.cfg.utilities: unused word
2015-05-09 20:04:22 -07:00
Björn Lindqvist
8df92abeb9
compiler.*,cpu.*: add a height slot to ##call nodes, then other compiler
...
passes can much easier to accurate liveness analysis on stack locations
2015-05-09 20:04:22 -07:00
Björn Lindqvist
8f02cad9c5
compiler.cfg.*: a bunch of new tests
2015-05-09 20:04:22 -07:00
Björn Lindqvist
a195e361df
compiler.cfg.stacks.*: create-locs, word for creating stack locations
...
from a sequence
2015-05-09 20:04:21 -07:00
Doug Coleman
62ea429c2b
compiler.cfg.linear-scan.assignment: Trivial docs fix.
2015-04-30 18:39:31 -07:00
John Benediktsson
a7cd03b45d
compiler.cfg.linear-scan.assignment: fix help-lint.
2015-04-30 17:20:52 -07:00
Björn Lindqvist
5ca23c4793
compiler.*: a few extra doc fixes
2015-04-30 04:51:58 +02: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
b4e7ffede4
compiler.cfg.stacks.local: test and fix for a silly bug in
...
compute-local-kill-set (switched the order on ds and rs)
2015-04-29 09:32:00 -07:00
Björn Lindqvist
9fc73c3355
compiler.cfg.stacks.local: unused words
2015-04-29 09:32:00 -07:00
Björn Lindqvist
d0c1493f36
compiler.cfg.linearization: can't use slurp/replenish-queue here because
...
the successors need to be pushed to the back of the deque
2015-04-29 09:32:00 -07:00
Björn Lindqvist
24ca0e3160
compiler.cfg.*: reverting the commit
...
5fd9e61bc04b054d58b8eeecbe9b5c59f68f2195, caused bad regressions in SIMD code
2015-04-29 09:31:59 -07:00
Björn Lindqvist
050e15ce83
compiler.cfg.debugger: new words build-optimized-tree and run-passes to
...
remove some duplicated code
2015-04-29 09:31:59 -07: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
17dff48402
compiler.cfg.ssa.*: refactors words to use stack parameters instead of
...
dynamic variables
2015-04-29 09:31:59 -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
135d7f5ff3
compiler.cfg.*: more unit tests
2015-04-29 09:31:59 -07:00
Björn Lindqvist
992314d2de
compiler.cfg.*: new word for consuming deques slurp/replenish-deque
...
most uses of slurp-deque processes one item and pushes a sequence of
items to continue working with. it can be formalized into a
slurp/replenish-deque combinator which also reduces the amount of
variables you need to use
2015-04-29 09:31:58 -07:00
Björn Lindqvist
c3ca8bd859
compiler.cfg.*: even more compiler docs
2015-04-29 09:31:58 -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
63a1e90af8
compiler.cfg.ssa.cssa, compiler.cfg.ssa.destruction, compiler.utilities: docs & tests
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
b827bc75cc
compiler.*: bunch of new docs for some compiler instructions
2015-04-29 09:31:58 -07:00
Björn Lindqvist
a17e943e88
compiler.cfg.liveness: refactoring so that words that doesn't modify
...
the live-set doesnt return it
e.g it's clearer when the effect is ( live-set insn -- ) than ( live-set insn -- live-set ) that the live-set is modified in place
2015-04-29 09:31:57 -07:00
Björn Lindqvist
c876d79b9d
compiler.cfg.liveness: lots of more tests and some docs
2015-04-29 09:31:57 -07:00
Björn Lindqvist
aa6fbf475e
compiler.cfg: the id slot of basic-block appears to not be needed
2015-04-29 09:31:57 -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
d486de889d
compiler.cfg.*: smaller doc improvements
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
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
6c6f85428c
compiler.cfg.intrinsics.simd: refactoring to use assocs instead of case-s for lookups + tests
2015-04-29 09:31:56 -07:00
Björn Lindqvist
745d3f29b2
compiler.cfg.*: a bunch of new docstrings and other doc fixes
2015-04-29 09:31:56 -07:00
Björn Lindqvist
f9812d9874
compiler.cfg.stacks.*: possible fix for #1289
...
instead of delaying outputting ##replace instructions to when they are
needed, output them directly in the block so that "holes" in the
stacks are avoided.
2015-04-29 09:31:56 -07:00
Björn Lindqvist
177a356240
compiler.cfg.stacks.local: refactorings on the vocab to try and make it using less dynamic variables
2015-04-29 09:31:56 -07:00
Björn Lindqvist
91144c0712
compiler.cfg.stacks.*: simplify the code a little by making replace-sets, peek-sets and kill-sets contain hash-sets instead of hash-tables
2015-04-29 09:31:56 -07:00
Björn Lindqvist
0ff4c68e15
compiler.cfg.stacks.local: to simplify, end-local-analysis can take the block it operates on as argument
2015-04-29 09:31:56 -07:00
Björn Lindqvist
b983053130
compiler.cfg.*: putting test-init in compiler.cfg.stacks.tests didn't work, put new word cfg-unit-test in compiler.test
2015-04-29 09:31:55 -07:00
Björn Lindqvist
4390561a6e
compiler.cfg.*: new word reset-vreg-counter, useful for making test writing more convenient
2015-04-29 09:31:55 -07:00
Björn Lindqvist
2536943e82
compiler.cfg.*: new word connect-Nto1-bbs
...
using that word predecessors is already up-to-date so calling needs-predecessors isn't needed
2015-04-29 09:31:55 -07:00
Björn Lindqvist
8a7699e42c
compiler.cfg.*: refactoring to remove the initial-basic-block word
2015-04-29 09:31:55 -07:00
Björn Lindqvist
6559382028
compiler.cfg.*: ds-load removed
2015-04-29 09:31:55 -07:00
Björn Lindqvist
cc1903bec1
compiler.cfg.*: some refactoring in the stack tracking for #shuffle nodes
...
instead of having separate words for the stacks like inc-d/r and ds/rs-store use generic words that work on either stack
2015-04-29 09:31:55 -07:00
Björn Lindqvist
eda9535ce6
compiler.tree.propagation.call-effect: changing back call-effect-unsafe?, changing it made all images to large for some reason
2015-04-29 09:31:55 -07:00
Björn Lindqvist
837e098d41
compiler.cfg.*: a little more docs
2015-04-29 09:31:54 -07:00
Björn Lindqvist
ba4736ff75
compiler.cfg.stacks.local: change current-height to a two-tuple { { d emit-d } { r emit-r } } it makes the code a bit simpler
2015-04-29 09:31:54 -07:00
Björn Lindqvist
c360f0123b
compiler.cfg.stacks: a few unused words removed
2015-04-29 09:31:54 -07:00
Björn Lindqvist
09238cee4b
compiler.tree.propagation.call-effect: docs for this vocab
2015-04-29 09:31:54 -07:00
Björn Lindqvist
acc1bd3221
compiler.*: removing the check-d and check-r slots from gc-map and adjusting code that depended on those
2015-04-29 09:31:53 -07:00
Björn Lindqvist
2cd2aa498a
VM: the compiler doesn't emit any live overinitialized locations anymore
...
Any overinitialized location immediately becomes garbage and is not
reused again. This is very nice because then the gc maps can be
simpler again.
2015-04-29 09:31:53 -07:00
Björn Lindqvist
ded3760d46
compiler.*: merge of ##inc-r and ##inc-d into one instruction ##inc with a loc slot
...
this is nice because it leads to simpler code and matches how ##peek and ##replace instructions work
2015-04-29 09:31:53 -07:00
Björn Lindqvist
c7d9cb4c3d
compiler.cfg.*: new and improved docs
2015-04-29 09:31:53 -07:00
Björn Lindqvist
74ea76a3c9
compiler.cfg: unlikely? slot unused, lets get rid of it
2015-04-29 09:31:53 -07:00
Björn Lindqvist
bb504b7c3d
compiler.cfg.dependence: this vocab was only used by scheduling so it isn't needed anymore
2015-04-29 09:31:53 -07:00
Björn Lindqvist
b3ebb04d6d
compiler.cfg.*: since the height and scheduling compiler passes aren't used anymore lets remove them
2015-04-29 09:31:53 -07:00
Björn Lindqvist
e7fc6a789e
compiler.tree.*: more compiler tree docs
2015-02-05 11:01:05 +00:00
Doug Coleman
edf1bddd67
compiler.tests.optimizer: Re-enable the minor-gc test case that was
...
failing until bjourne's latest commits.
2015-01-22 13:03:28 -08:00
Doug Coleman
e4e6c0031a
compiler.cfg.stacks.clearing: Fix help-lint-all.
2015-01-22 12:30:49 -08:00
Björn Lindqvist
d2c0ae9fd9
compiler.cfg.stacks.*: more docs
2015-01-22 12:17:21 -08:00
Björn Lindqvist
71b054cf39
compiler.cfg.stacks.*: updated tests to match
2015-01-22 12:17:21 -08:00
Björn Lindqvist
3c1f223d90
compiler.cfg.stacks.*: use insn# as the key in the stack-record instead of the insn tuple itself
2015-01-22 12:17:21 -08:00
Björn Lindqvist
d19869f906
compiler.cfg.stacks.*: many new and fixed tests
2015-01-22 12:17:21 -08:00
Björn Lindqvist
d4493858da
compiler.cfg.stacks.*: vacant-peek checking readded
2015-01-22 12:17:20 -08:00
Björn Lindqvist
640759ffed
compiler.cfg.*: new step in finalization: clear-uninitialized
...
this step is supposed to analyze the cfg, find where there are peeks
that can cause stack underflow, and insert replace-imm instructions so
that there are no uninitialized stack locations if they do. could fix #1187
2015-01-22 12:17:20 -08:00
Björn Lindqvist
fd06e22e9a
compiler.cfg.stacks.map: new vocab for creating an assoc that contains the stack state for each instruction in a cfg
2015-01-22 12:17:20 -08:00
Björn Lindqvist
163fef12f9
compiler.cfg.*: detached the normalize-height and schedule-instructions passes
...
those stages cause uninitialized "holes" in the stacks which in turn
causes gc errors if stack underflows occur
2015-01-22 12:17:20 -08:00
Doug Coleman
ceebc1d6c1
compiler: Fix help-lint for @bjourne's recent awesome docs.
2015-01-17 14:02:59 -08:00
Doug Coleman
b4e9334d04
compiler.tests.stack-trace: Fix unit test.
2015-01-17 13:57:56 -08:00
Doug Coleman
c4fbeccfa8
compiler.tests.optimizer: Disable minor-gc test case for now. #1187 .
2015-01-17 11:02:05 -08:00
Björn Lindqvist
b6d25ba090
compiler.tests.stack-trace: unit tests against the #1265 bugs
2015-01-15 09:29:14 +00:00