Commit Graph

1077 Commits (050e15ce83c683d5de5b7a96d8347337daae684c)

Author SHA1 Message Date
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