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
Björn Lindqvist
d0dde922bd
compiler.cfg.*: new unit test vocabs
2014-12-31 03:37:17 +01:00
Björn Lindqvist
5782855343
compiler.cfg.*: more docs
2014-12-31 03:37:16 +01:00
Björn Lindqvist
0432b17409
compiler.cfg.*: refactoring away the compute-global-sets word
2014-12-31 03:37:16 +01:00
Björn Lindqvist
79d294e4bf
compiler.cfg.*: docs and more tests
2014-12-31 03:37:16 +01:00
Björn Lindqvist
1bd4525ac6
compiler.cfg.stacks.local: refactoring making stack-changes and height-changes take and return stuff instead of using variables and the make building
2014-12-31 03:37:16 +01:00
Björn Lindqvist
e87be7b5c8
compiler.cfg.parallel-copy: docs
2014-12-31 03:37:16 +01:00
Björn Lindqvist
24c9dbe160
compiler.cfg.stacks.height: these words are unused
2014-12-31 03:37:16 +01:00
Björn Lindqvist
2ccbcd6af6
compiler.cfg.*: more compiler docs
2014-12-31 03:37:16 +01:00
Björn Lindqvist
e968c16139
compiler.cfg.stacks.finalize: initial docs
2014-12-31 03:37:16 +01:00
John Benediktsson
c2c722891e
compiler.cfg.save-contexts: fix help-lint.
2014-12-15 15:11:06 -08: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
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
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
173f7c0869
compiler.cfg.scheduling: refactoring to use the simple-optimization combinator
2014-12-15 20:44:07 +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
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
Björn Lindqvist
a7137f32ff
compiler.cfg.save-contexts: refactoring of the vocab, using the simple-optimization combinator and union classes you can shorten it a lot
2014-12-15 20:36:27 +01:00
John Benediktsson
e5c69d3e9b
compiler: try this for compiler.cfg.builder.alien.
2014-12-13 18:44:35 -08:00
John Benediktsson
a689211ae1
compiler.cfg.builder: use compiler.cfg.builder.alien.
2014-12-13 18:08:50 -08:00
John Benediktsson
c65877104e
compiler: cleanup usings.
2014-12-13 16:10:21 -08:00
John Benediktsson
46e0426795
compiler.cfg.stack-frame: fix tests.
2014-12-12 17:14:39 -08:00
John Benediktsson
1911b183a0
compiler.cfg.build-stack-frame: fix tests.
2014-12-12 15:22:22 -08:00
John Benediktsson
8f4c4ea2e1
compiler.cfg.build-stack-frame: some cleanup.
2014-12-12 11:59:23 -08:00
John Benediktsson
c3a4bdcf68
compiler.cfg.linear-scan.resolve: use if-empty.
2014-12-11 14:00:50 -08:00
John Benediktsson
068ddd6c7b
compiler: cleanup cfg passes to have stack effect ( cfg -- )
2014-12-11 12:48:43 -08:00
Björn Lindqvist
33500db79f
compiler.cfg.*: help-lint and test case fixes
2014-12-11 15:02:40 +01:00
Björn Lindqvist
08e9f18c3b
compiler.cfg.*: fix for test cases that broke due to stack effect changes
2014-12-11 14:30:47 +01:00
Björn Lindqvist
bfc0ef815b
compiler.cfg.dominance: fix for #1227 , the dom children needs to be sorted to ensure that the same instruction sequence is generated every time
2014-12-11 14:30:47 +01:00
Björn Lindqvist
628c87c5b1
compiler.cfg.utilities: adding connect-bbs and make-edges
2014-12-11 14:30:47 +01:00
Björn Lindqvist
00e2d9f116
compiler.cfg.dominance: some more docs
2014-12-11 14:30:47 +01:00
Björn Lindqvist
c85175c10c
compiler.cfg.*: new utility word apply-passes to improve the looks of long cleave's where each quotation only contains one word
2014-12-11 14:30:47 +01:00
Björn Lindqvist
e371327ec4
compiler.cfg.ssa.construction.tests: fix tc broken by previous commit
2014-12-11 14:30:47 +01:00
Björn Lindqvist
befbe0bb59
compiler.cfg.dominance: changed stack effect compute-dominance ( cfg -- cfg' ) to ( cfg -- )
2014-12-11 14:30:47 +01:00
Björn Lindqvist
e5866dfa80
compiler.cfg.*: changed stack effect of needs-predecessors from ( cfg -- cfg') to ( cfg -- )
2014-12-11 14:30:47 +01:00
Björn Lindqvist
76cb665a8d
compiler.cfg.dominance: change needs-dominance effect from ( cfg -- cfg') to ( cfg -- )
2014-12-11 14:30:46 +01:00
Björn Lindqvist
054982f24a
compiler.cfg.*: docs for compiler.cfg.dominance and compiler.cfg.ssa.construction
2014-12-11 14:30:46 +01:00
Björn Lindqvist
53b7f82368
Docs: more compiler docs
2014-12-11 14:30:46 +01:00
Björn Lindqvist
5fe9ce4235
compiler.cfg: fix stack effect of cfg-changed and predecessors changed to ( cfg -- )
2014-12-11 14:30:46 +01:00
Björn Lindqvist
a0d4e9b417
compiler.cfg.stacks.uninitialized: this compiler pass isn't used anymore -- let's get rid of it
2014-12-11 14:30:46 +01:00
Björn Lindqvist
8744d908b6
compiler.cfg.*: fix stack effect of compiler passes in optimize-cfg
...
since they all modify the cfg in place, it is better if their stack
effect is ( cfg -- ) instead of ( cfg -- cfg' )
2014-12-11 14:30:45 +01:00
Björn Lindqvist
971a157369
compiler.cfg.instructions: ##alien-assembly should be in the alien-call-insn union but not gc-map-insn
2014-12-08 18:13:46 -08:00
Björn Lindqvist
52d3affeb8
compiler.cfg.*: the ##alien-assembly instruction does not use a gc-map
2014-12-08 18:13:46 -08:00
John Benediktsson
ad9d44aa2b
compiler.cfg.linear-scan.allocation.state: simplify init-unhandled.
2014-12-01 22:18:15 -08:00
Doug Coleman
20add9544a
compiler.cfg: cfg>insns has to go in linearization because of bootstrap circularity. Fix usings.
2014-11-23 22:53:27 -08:00
Björn Lindqvist
4c07d04417
compiler.cfg.*: getting an instruction sequence from a cfg is used in a few tests so let's make a word for it
2014-11-24 06:25:34 +01:00
Björn Lindqvist
9b7a873f6d
compiler.cfg.build-stack-frame.tests: improved fix for the test case
2014-11-24 03:42:27 +01:00
Doug Coleman
d40faa3bdc
compiler.cfg: Add vocabulary for words defined just to test compiler.cfg.
2014-11-23 01:06:46 -08:00
Doug Coleman
3b3103b545
compiler.cfg.scheduling: Fix V{ } -> { } unit test.
2014-11-22 17:43:27 -08:00
Björn Lindqvist
964ae127a2
compiler.cfg.dependence: docs
2014-11-22 17:31:40 -08:00
Björn Lindqvist
aca14563b0
compiler.cfg.dependence/scheduling: fix(?) for #1187 , just avoid shuffling ##peek...
2014-11-22 17:31:40 -08:00
Björn Lindqvist
9d0379b9ba
compiler.cfg.dependence: if node subclasses identity-tuple it doesn't need the number slot
2014-11-22 17:31:40 -08:00
Björn Lindqvist
eb9ca1c6fe
compiler.cfg.dependence: node class doesn't need parent attribute, that's nice
2014-11-22 17:31:40 -08:00
Björn Lindqvist
0feece123c
compiler.cfg.dependence/scheduling.tests: new tests, some that doesnt work yet
2014-11-22 17:31:40 -08:00
Björn Lindqvist
8347f43f84
compiler.cfg.dependence/scheduling: refactoring to get rid of node's follows>>
2014-11-22 17:31:40 -08:00
Björn Lindqvist
645a70f1d4
compiler.cfg.scheduling: refactoring to get rid of the roots dynamic variable
2014-11-22 17:31:39 -08:00
Björn Lindqvist
a96fff60af
compiler.cfg.dependence: keys-for ?first is not deterministic, use tiebreak-parents to get predictable ordering
2014-11-22 17:31:39 -08:00
Björn Lindqvist
7ebceb50e5
compiler.cfg.dependence/scheduling: select-parent and roots moved to scheduling
...
the roots stuff is only used by compiler.cfg.scheduling, so it's more
simple to have it there than in compiler.cfg.dependence
2014-11-22 17:31:39 -08:00
Björn Lindqvist
586c47e5ab
compiler.cfg.dependence/scheduling: more readable version of the select word
2014-11-22 17:31:39 -08:00
Björn Lindqvist
b5754d32ef
compiler.cfg.dependence: moved tree verification code to .tests
...
Since verify-trees just checked that make-trees worked correctly, it's
better to have that code in the test vocab instead of slowing down
every compile by running it
2014-11-22 17:31:39 -08:00
Björn Lindqvist
2ea1a999a4
compiler.cfg.dependence.tests: unit tests for the dependence vocab
2014-11-22 17:31:39 -08:00
Björn Lindqvist
3f3cc0eb8a
compiler.cfg.dependence: now the nodes are on the stack instead of being saved in a dynamic variable (fp++)
2014-11-22 17:31:39 -08:00
Björn Lindqvist
2cfd55b864
compiler.cfg.dependence/scheduling: refactoring, trying to get rid of the ugly usage of nodes dynamic variable
2014-11-22 17:31:39 -08:00
Björn Lindqvist
0a7726b66d
compiler.cfg.dependence: more docs for the vocab
2014-11-22 17:31:38 -08:00
Björn Lindqvist
a1b20e451b
compiler.cfg.scheduling: split-insns returns a 3-tuple instead of 3 items on the stack
2014-11-22 17:31:38 -08:00
Björn Lindqvist
c777cb954a
compiler.cfg.scheduling: refactor to use split-insns and compiler.cfg.linear-scan.numbering + tests
2014-11-22 17:31:38 -08:00
Björn Lindqvist
96396cb3ad
compiler.*: use block>cfg and insns>block in many tests instead of wordier code
2014-11-22 17:31:38 -08:00
Björn Lindqvist
c8a022423e
compiler.cfg.utilities: move and rename the helper words block>cfg, insns>block and insns>cfg, they are useful to many testing vocabs
2014-11-22 17:31:38 -08:00
John Benediktsson
44f31ee13e
use swapd instead of [ swap ] dip.
2014-11-21 11:56:17 -08:00
Doug Coleman
46174ab748
compiler.cfg.build-stack-frame: Fix test for win64
2014-11-18 14:21:45 -08:00
John Benediktsson
60d0937041
compiler.cfg.instructions: fix help-lint.
2014-11-16 16:22:13 -08:00
Björn Lindqvist
0d9316f4f9
Docs: more various compiler doc improvements
2014-11-16 06:25:55 -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
3b86d4b9ba
compiler.cfg.def-use: docs
2014-11-16 06:25:54 -08:00
Björn Lindqvist
90b31d543b
compiler.cfg.instructions: more docs
2014-11-16 06:25:54 -08:00
Björn Lindqvist
f06f59b956
Docs: smallish improvements to compiler vocabs
2014-11-16 06:25:54 -08:00
Björn Lindqvist
bc5c23b162
compiler.cfg.linear-scan.assignment: stub docs
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
Björn Lindqvist
0a30bd9218
compiler.cfg.stack-frame: stub docs and tests for vocab
2014-11-16 06:25:53 -08:00
Björn Lindqvist
8a0b4c3d26
compiler.cfg.build-stack-frame: stub docs and tests for vocab
2014-11-16 06:25:53 -08:00
Björn Lindqvist
cbc8681187
Docs: compiler.cfg.instructions improvements
2014-11-16 06:25:53 -08:00
Doug Coleman
7cfa9d9518
assocs: Make map-index-as support seq or assoc exemplars and move map-index, map-index-as to assocs because they need to use new-assoc. Make zip-index-as support assoc exemplars. Fix up docs and tests.
...
assocs.extras: Remove zip-as and move tests to assocs.
2014-11-08 18:18:00 -08:00
Doug Coleman
56f1b87a6f
basis, extra: Use zip-index.
2014-11-08 00:46:30 -08:00
Doug Coleman
1ee9a8ea13
compiler.cfg.stacks.local: Have unit test load prettyprint implementation for ds-loc so that it always prints as "D 4".
2014-10-22 10:31:27 -07:00
Björn Lindqvist
a617855aef
Docs: fixing smaller help-lint nitpicks
2014-10-19 14:05:06 +02:00
Björn Lindqvist
164af978ba
compiler.cfg.*: more stub docs for cfg construction words
2014-10-19 13:45:42 +02:00
Björn Lindqvist
83cf4b9d57
compiler,cpu: more docs
2014-10-17 23:18:57 +02:00
Björn Lindqvist
476ebf5b25
compiler.cfg.*: more docs, tests and a small refactoring of the
...
admissible-registers word
2014-10-17 23:18:57 +02:00
Doug Coleman
4c6435934b
compiler.cfg.stacks.vacant: Fix docs for word rename.
2014-09-08 17:48:22 -07:00
Björn Lindqvist
ffacc8370d
compiler.cfg.stacks.vacant: ##call instructions clear the set of overinitialized locations
2014-09-08 14:54:18 -07:00
Björn Lindqvist
9836d6a1d0
VM: move the stack scrubbing logic to call_frame_slot_visitor to avoid visiting the callstack twice
...
primitive_minor_gc() iterates the stack twice, first to scrub stack
locations, then to trace overinitialized ones and gc roots. By running
visit_callstack() before visit_stack_elements() you only need to do it
once.
2014-09-08 14:54:18 -07:00
Björn Lindqvist
46082d836a
compiler.cfg.stacks.vacant: invert meaning of 0/1 for overinit:ed locs to make some logic simpler
2014-09-08 14:54:17 -07:00
Björn Lindqvist
70e4f2a8b7
compiler.cfg.instructions: added check-d and check-r slots to gc-map
...
the data is output from compiler.cfg.stacks.vacant in a reasonable
format but not yet used for code generation.
2014-09-08 14:54:17 -07:00
Björn Lindqvist
ecead801c1
compiler.cfg.stacks.vacant: more docs and removed usage of byte-arrays
2014-09-08 14:54:17 -07:00
Björn Lindqvist
ab5e629243
compiler.cfg.stacks.vacant: sub docs seeded with a stolen comment from uninitialized.factor
2014-09-08 14:54:17 -07:00
Björn Lindqvist
40ee3cdcbb
compiler.cfg.stacks.vacant: fix usings and remove commented out code
2014-09-08 14:54:17 -07:00
Björn Lindqvist
e961a03837
compiler.cfg.stacks.vacant: compiler pass replacing uninitialized for more accurate stack maps
...
This pass uses a better algorithm for keeping track of all stack
manipulations which means that the stack maps it assigns are much more
precise.
2014-09-08 14:54:17 -07:00
Björn Lindqvist
d1032c159a
compiler.cfg.dataflow-analysis: generic for configuring the "block skipping"
...
To accurately record uninitialized/overinitialized stack locations,
kill blocks needs to be analyzed. Now you can make it so by overriding
ignore-block?.
2014-09-08 14:54:17 -07:00
John Benediktsson
7609ab6eda
compiler.cfg: fix some help-lint warnings.
2014-08-14 09:59:27 -07:00
Björn Lindqvist
c3253406e3
compiler.cfg.*: more docstrings for compiler words
2014-08-13 11:01:11 -07:00
Björn Lindqvist
c6784020aa
compiler.cfg.*: initial docs for dataflow analysis vocabs
2014-08-13 11:01:11 -07:00
Björn Lindqvist
6560778d2a
compiler.cfg.*: stub docs for register scheduling vocabs
2014-08-13 11:01:11 -07:00
Björn Lindqvist
769ca5550f
compiler.cfg.*: docs for compiler words
2014-08-13 11:01:11 -07:00
Björn Lindqvist
1225abeeaf
Docs: more compiler-related documentation
2014-08-13 11:01:10 -07:00
Björn Lindqvist
60ffe0680e
kernel: new combinator 2with = with with
2014-07-22 07:40:13 -07:00
Doug Coleman
f9d9d8d64c
compiler.cfg.instructions: Messed up a patch. oops.
2014-07-17 18:19:10 -05:00
Doug Coleman
1d0f0fb98a
compiler.cfg.instructions: Fix using.
2014-07-17 15:48:41 -05:00
Doug Coleman
d173da94c1
compiler.cfg: Rename doc -> docs in filenames so the docs load.
2014-07-17 15:32:29 -05:00
Doug Coleman
712aa303db
compiler, stack-checker docs: Fix for 32-bit builds.
2014-07-03 12:21:17 -07:00
John Benediktsson
bf473ec943
compiler.cfg: fix some docs.
2014-06-08 18:20:27 -07:00
Björn Lindqvist
280620c55f
Docs: docs for compiler-related words
2014-06-08 11:48:31 -07:00
Björn Lindqvist
160df8b3f1
Docs: for compiler.cfg.* vocabs
2014-06-08 11:48:31 -07:00
Björn Lindqvist
2d7f344109
Docs: more docs for compiler.cfg.* words
2014-06-08 11:48:30 -07:00
Björn Lindqvist
3d7b0dbf0a
Docs: for compiler.cfg.regsters
2014-06-08 11:48:30 -07:00
Björn Lindqvist
395a490b90
Docs: documentation for stack-checker.* and compiler.* vocabs
2014-06-08 11:48:30 -07:00
Björn Lindqvist
fa097c7a56
Docs: for compiler.cfg and cpu.architecture words
...
Conflicts:
basis/cpu/architecture/architecture-docs.factor
2014-06-08 11:48:30 -07:00
Björn Lindqvist
c76a994f27
Docs: new stub documentation for vocabs in compiler.cfg
2014-06-08 11:48:29 -07:00
Björn Lindqvist
c3f9c0a9a3
compiler.cfg.intrinsics.simd: the ulonglong case is correct, it just shouldn't convert the value to a fixnum
2014-06-07 17:00:52 +02:00
Björn Lindqvist
644dac1fc0
compiler.cfg.intrinsics.simd: remove a case in sign-bit-mask that is probably unused
2014-06-07 14:39:19 +02:00
Björn Lindqvist
e2eebdec4d
Docs: mostly fixes for doc errors found by help lint
2014-05-10 17:13:49 -07:00
Björn Lindqvist
4f9f2b862f
Docs: docs for compiler-related vocabs
2014-05-10 17:13:49 -07:00
Björn Lindqvist
ea48d13731
Docs: for compiler.cfg and compiler.codegen
2014-05-10 17:13:49 -07:00
Björn Lindqvist
0bb3e2397b
Docs: more compiler documentation
2014-05-10 17:13:48 -07:00
Björn Lindqvist
6a8336047d
Docs: initial docs for the compiler.cfg.* vocabs
2014-05-10 17:13:48 -07:00
Doug Coleman
33a4117787
compiler: Fix tuple literals in tests.
2013-03-24 01:09:37 -07:00
Doug Coleman
5f377c0849
compiler: Rename value-info, live-interval
2013-03-23 22:56:47 -07:00
John Benediktsson
d0ad18a64e
compiler.cfg.ssa.construction.tdmsc: fix previous broken commits.
2013-03-23 18:44:49 -07:00
John Benediktsson
15f9ba2763
Revert "compiler.cfg.ssa.construction.tdmsc: more use of ?adjoin."
...
This reverts commit 6bf55a6d89 .
2013-03-23 18:39:15 -07:00
John Benediktsson
3f1a426210
Revert "compiler.cfg.ssa.construction.tdmsc: pass visited set on stack."
...
This reverts commit ec2834300b .
2013-03-23 18:25:53 -07:00
John Benediktsson
7744498ad2
compiler.cfg.ssa.construction.tdmsc: pass visited set on stack.
2013-03-23 18:13:17 -07:00
John Benediktsson
56a7cf4df2
compiler.cfg.ssa.construction.tdmsc: more use of ?adjoin.
2013-03-23 17:57:41 -07:00
John Benediktsson
93fb7805b0
compiler: more use of ?adjoin.
2013-03-23 17:47:07 -07:00
Doug Coleman
f820215b1e
alien.libraries: Rename library to lookup-library.
2013-03-23 17:16:46 -07:00
John Benediktsson
7da4a74588
compiler: fewer namespace lookups.
2013-03-21 19:11:20 -07:00
John Benediktsson
972281987c
compiler.cfg.intrinsics: intrinsics on inline words are not supported.
2013-03-20 10:59:45 -07:00
John Benediktsson
b8097f9221
compiler: cleaner use of sets.
2013-03-10 17:21:27 -07:00
John Benediktsson
ac95c024f3
compiler.cfg.loop-detection: more use of hash-sets.
2013-03-10 10:06:48 -07:00
John Benediktsson
c7c951f207
compiler.cfg.ssa.construction: more use of hash-sets.
2013-03-10 10:03:11 -07:00
John Benediktsson
262a46a3f4
compiler.cfg.loop-detection: more use of hash-sets.
2013-03-08 12:38:50 -08:00
John Benediktsson
9d43e21563
compiler.cfg.write-barrier: more use of hash-sets.
2013-03-08 12:30:37 -08:00
John Benediktsson
88626d38ca
compiler.cfg.ssa.construction: more use of hash-sets.
2013-03-08 12:24:06 -08:00
John Benediktsson
b97a1a0753
compiler: fix stack effects to indicate visited is same object.
2013-03-08 12:16:02 -08:00
John Benediktsson
bf35114fec
compiler: use hash-sets to track visited sets.
2013-03-08 11:04:47 -08:00
John Benediktsson
5908186301
compiler.cfg.alias-analysis: use clear-set.
2013-03-07 21:35:00 -08:00