Commit Graph

2142 Commits (fd801e7946f9ab08723e87440a4b07fac8916c5f)

Author SHA1 Message Date
Björn Lindqvist d5cb972a71 Docs: ui and compiler 2016-04-22 18:23:02 +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 3e14ceafe2 compiler.*: more compiler tests 2016-04-22 12:44:25 +02:00
Björn Lindqvist e58e1b9a65 compiler.cfg.ssa.interference.live-ranges: Docs 2016-04-22 12:33:39 +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
John Benediktsson 331483ab98 classes.algebra: removing valid-classoid? (enforced in constructors). 2016-04-13 14:29:24 -07: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 4bfcc86cc4 compiler.tests.stack-trace: use with-test-file. 2016-04-04 15:00:04 -07: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
Doug Coleman 46f781a56f compiler.tests.stack-trace: remove temp-file usage. 2016-03-31 07:37:50 -07:00
Doug Coleman 41209a3a42 summary.txt: Delete empty lines and empty files. 2016-03-30 22:11:51 -07:00
Doug Coleman 391f8e433f basis: Cleaning up tests using lists and IN: forms. 2016-03-30 20:04:14 -07: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
John Benediktsson e7a42b1dc4 sets: rename unordered-set back to set. 2016-03-29 15:46:29 -07:00
John Benediktsson 3f18b71d07 cleanup some QUALIFIED: that are no longer needed. 2016-03-29 10:20:16 -07:00
Björn Lindqvist ff99f69f02 compiler.cfg.save-contexts: fix $link markup 2016-03-27 23:47:08 +02:00
Björn Lindqvist 07aee7525f compiler.cfg.save-contexts: ##save-context isn't need in front of ##call-gc
The reason is because the minor-gc primitive itself saves the
context. Not inlining context saves, saves 20 bytes/call site.
2016-03-27 19:21:50 +02:00
Björn Lindqvist 63ef600aa3 compiler.cfg.*: indentation fixes 2016-03-27 19:21:50 +02:00
Doug Coleman d3bc2035a2 factor: remove rest of double paren words. 2016-03-25 03:13:27 -07:00
John Benediktsson 6e035c3640 compiler.tests: fix a few KERNEL-ERROR. 2016-03-22 15:22:15 -07:00
John Benediktsson 9cc73c9492 graphs: move to core and simplify.
1. remove add-vertex* and remove-vertex* that contradicted the documentation.
2. graphs use hash-sets of edges instead of hashtables of {edge,edge} pairs.
3. make graphs:closure work like classes:closure, use in classes.
2016-03-21 10:20:38 -07:00
Björn Lindqvist bce3a88287 stack-checker.known-words: fix input class declaration for <string>
it should be { integer-array-capacity integer } ofcourse
2016-03-19 18:59:19 +01:00
Björn Lindqvist 6f9ff8813e compiler.*, stack-checker.known-words: adds the integer-array-capacity
This commit adds the integer-array-capacity declaration on a few
words. It should make loopy code compile faster and fix #1339
2016-03-18 20:46:41 +01:00
Björn Lindqvist be4484d708 compiler.tree.*: fixes the propagation and dead-code removal logic so it
becomes aware of integer-array-capacity
2016-03-18 20:39:28 +01:00
Björn Lindqvist a3ce61f8da compiler.tree.cleanup: more docs and a test 2016-03-18 19:21:31 +01:00
Björn Lindqvist 6576660069 compiler.tree.dead-code.simple: tests and more docs 2016-03-18 19:21:31 +01:00
Björn Lindqvist 707bc801a4 compiler.cfg.stacks.local: replace-sets values must be hash-sets (#1507)
The compiler hang was because { D: 3 D: 2 } was unequal to { D: 2 D: 3
}, so using a set should fix that.
2016-03-16 16:32:50 +01:00
Björn Lindqvist db9093dd5c compiler.cfg.stacks.*: new docs
Mostly from making comments into doc definitions
2016-03-16 15:21:42 +01:00
Björn Lindqvist f80513cd99 compiler.cfg.dataflow-analysis: removes the -analysis from the dfa token
It makes the FORWARD-ANALYSIS: and BACKWARD-ANALYSIS: functors less
magical if the generated singletons name is the same as in the syntax.
2016-03-16 14:40:58 +01:00
Björn Lindqvist 4a472d7882 compiler.cfg.builder.blocks: return the slots, they are absolutely
needed for bootstrap
2016-03-16 14:08:49 +01:00
Björn Lindqvist f906f1c282 compiler.cfg.*: the make-kill-block word is not needed 2016-03-16 12:26:03 +01:00
Björn Lindqvist 5ca571e304 compiler.cfg.builder.blocks: some cleanup 2016-03-16 11:48:31 +01:00
Björn Lindqvist 3a9b297b3b compiler.cfg.*: better stack effect for end-stack-analysis 2016-03-16 10:53:33 +01:00
Björn Lindqvist d62240a0a2 compiler.codegen.relocation.tests: fix test so it works on windows too 2016-03-13 07:37:49 +01:00
Björn Lindqvist db4c4665f3 Docs: doc updates 2016-03-13 07:37:20 +01:00
Björn Lindqvist 076abf04ce compiler.*: new tests 2016-03-09 23:24:43 +01:00
Björn Lindqvist b51bd79819 compiler.cfg.*: new doc files 2016-03-09 23:24:43 +01:00
Björn Lindqvist 442827ade9 compiler.cfg.intrinsics.fixnum: more docs and tests 2016-03-09 23:24:43 +01:00
Björn Lindqvist b27634bff7 compiler.cfg.builder.blocks: removes assignments to basic-block variable
Now it isn't used at all in the cfg creation step.
2016-03-09 23:24:43 +01:00
Björn Lindqvist 9df955e199 compiler.cfg.*: big changes which removes the last basic-block uses
All intrinsic code generating words signatures are changed from ( node
-- ) to ( block node -- block' ) so the current block is now always
passed on the stack.
2016-03-09 23:24:42 +01:00
Björn Lindqvist 482998974b compiler.cfg.*: more refactoring to remove basic-block get:s
Now almost all words pass around the current basic block on the
stack. Left is updating all intrinsics.
2016-03-09 23:24:42 +01:00
Björn Lindqvist f9c6d7cc43 compiler.cfg.*: changes to remove basic-block variable
The emit-node generics signature is changed to ( block node -- block' )
so that it always returns the next block to operate on. Signature for a
lot of related words are changed similarily. Now there is only a few
basic-block usages left.
2016-03-09 23:24:42 +01:00
Björn Lindqvist 07adc2ecae compiler.cfg.*: changed generic emit-node to take the current block as
stack parameter

The idea is to eventually completely remove the basic-block dynamic
variable from cfg construction.
2016-03-09 23:24:42 +01:00
Björn Lindqvist 5663d39a76 compiler.*: more docs 2016-02-28 01:01:38 +01:00
Björn Lindqvist 7247906bf8 vm: remove vm-field-offset and context-field-offset
Shorter to just write "vm offset-of" and "context offset-of"
2015-12-14 09:29:18 +01:00
John Benediktsson 3affad7681 docs: using $maybe. 2015-12-11 17:05:45 -08:00
Björn Lindqvist 24db8a5d7f compiler.tests.callstack-overflow: disable test for os x 64, see #1478 2015-12-08 02:16:51 +01:00
Björn Lindqvist a35895f222 compiler.cfg.intrinsics: fix doc and make tests work on 32bit 2015-12-01 13:43:45 +01:00
Björn Lindqvist 02c80423ba compiler.cfg.intrinsics.slots: refactor + docs & tests 2015-11-28 01:55:12 +01:00
Björn Lindqvist 6a2c36f5ec compiler.cfg.builder.blocks: help-lint fix 2015-11-23 16:32:01 +01:00
Björn Lindqvist 63fd4d25cf compiler.cfg.*: more fixes to pass basic-block on the stack than in a
dynamic variable
2015-11-22 01:06:11 +01:00
Björn Lindqvist 1421779c9e compiler.cfg.*: refactors words to take a block parameter instead of
using the basic-block dynamic variable

the idea is to make the code easier to follow by limiting the use of
dynamic variables
2015-11-22 00:37:34 +01:00
Björn Lindqvist e1b22e0af4 compiler.tree.dead-code.simple: small refactoring and docs 2015-11-22 00:37:33 +01:00
Björn Lindqvist 097b40ce41 compiler.tree.propagation.recursive: better counter-class 2015-11-22 00:37:33 +01:00
Björn Lindqvist a3be724f5a compiler.tree.propagation.info: better code for wrap-interval 2015-11-16 12:30:24 +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 4890239c3c compiler.tree.propagation.tests: #1370 specific test 2015-09-22 09:03:16 +02:00
Björn Lindqvist 804348287c Docs: fix a bunch of help-lint warnings 2015-09-22 08:52:59 +02:00
Björn Lindqvist c5b92cedcb compiler.*: even more compiler docs 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 3e485652fe compiler.tree.propagation.slots: looks like you can do without the
constructor-output-class word
2015-09-22 08:52:59 +02:00
Björn Lindqvist 09ad5bd617 compiler.tree.propagation.slots: docs & tests for the vocab 2015-09-22 08:52:59 +02:00
Björn Lindqvist 4ee88bdc3d compiler.tree.propagation.info: better logic for comparing value-infos
Now the slots of the value infos only matter if the class of the first
info is at least as large as the class of the second info
2015-09-22 08:52:37 +02:00
Björn Lindqvist bc0cdff2c6 compiler.tree.propagation.info: fixed value-info<= so that it handles
slots correctly

if a slot is defined for a value-info, then it can't be <= a value-info
without that slot defined
2015-09-22 08:52:37 +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 ea67379751 compiler.tree.*: new tests 2015-09-22 08:52:37 +02:00
Björn Lindqvist b9ce4910af compiler.tree.*: docs 2015-09-22 08:52:36 +02:00
Björn Lindqvist aaef9af863 compiler.cfg.*: random doc updates 2015-09-22 08:51:46 +02:00
Björn Lindqvist a1153e6de1 compiler.tree.propagation.info: more docs and tests for the vocab 2015-09-22 08:51:46 +02:00
Björn Lindqvist bb8b77419f compiler.tree.propagation.nodes: the loop-nesting variable appears unused 2015-09-22 08:51:05 +02:00
Björn Lindqvist 44092bf78d compiler.tree.propagation.*: better to use 2array than the "cuter" /\ word 2015-09-22 08:51:05 +02:00
Björn Lindqvist 9369f8216f compiler.tree.propagation.constraints: docs for this vocab 2015-09-22 08:51:04 +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
Björn Lindqvist d0aae5cc20 compiler.cfg.linearization: number-blocks can set the number>> accessor
instead of using the numbers dynamic variable
2015-09-22 08:51:03 +02:00
John Benediktsson e477f6996f Fix comments to be ! not #!. 2015-09-08 16:15:10 -07:00