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
Björn Lindqvist
bc7f9ee669
VM: always use undecorated names when loading ffi functions
...
For win32, Factor tries four different function names when loading
stdcall and fastcall functions, in case decorated names are used in the
dll. It seems to not be necessary because a dll meant for 3rd party use
will always export undecorated
names (http://blogs.msdn.com/b/oldnewthing/archive/2004/01/12/57833.aspx ).
2015-09-02 21:54:41 +02:00
Björn Lindqvist
9725169ca7
compiler.cfg.intrinsics.misc: use the vm-special-object-offset word
2015-09-02 21:54:36 +02:00
Björn Lindqvist
22887c5816
VM: get rid of the odd RT_EXCEPTION_HANDLER relocation
...
The address to the win32 relocation handler can be stored in a special
object and be accessed by jit-install-seh. Doing it that way is better
because you can remove a lot of special code related to that relocation
type.
2015-09-02 21:54:30 +02:00
Björn Lindqvist
85e45ae29e
compiler.constants: remove a bunch of constants that are unused
...
(or only used by the defunkt arm backend)
2015-09-02 21:54:24 +02:00
Björn Lindqvist
a89b0c2b30
Docs: reorg of the compiler.constants docs a little
2015-09-02 21:54:21 +02:00
Björn Lindqvist
883f65d0e4
VM: fix one callstack overflow problem by "unlocking" the callstacks
...
border pages
Also a new vocab compiler.tests.callstack-overflow which is supposed to
contain all tests for callstack overflow-related problems.
2015-08-14 20:19:58 -07:00
Björn Lindqvist
bdc4880b17
compiler.cfg.save-contexts: context-save-needed not needed because it's
...
the same as gc-map-insn
2015-08-14 20:19:51 -07:00
John Benediktsson
0216f9f6d1
namespaces: rename namestack* to (get-namestack) for consistency.
2015-08-13 17:53:07 -07: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
62686907fe
compiler: fix rename
2015-08-13 12:55:28 -07:00
Doug Coleman
c21a154056
core: callstack is a builtin type and a class name. rename the *stack words that grab the current stack get-foostack to avoid the callstack builtin conflict and for better symmetry with set-foostack.
2015-08-13 10:11:59 -07:00
Doug Coleman
b6be8685c3
basis: ERROR: changes.
2015-08-13 03:20:39 -07:00
Doug Coleman
225c28f23a
compiler.tree.propagation: Fix build error
2015-08-13 02:53:03 -07:00
Doug Coleman
e3ddd337e0
compiler, alien: fix some duplication in ERROR: definitions. hope this doesnt trigger more failing builds than it fixed...
2015-08-12 13:58:38 -05: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
46587f8457
factor: arch -> arch-name. fix breakage caused by other patch.
2015-08-12 11:08:24 -05:00
Doug Coleman
28dcd0667a
factor: rename set to unordered-set.
2015-08-12 10:54:19 -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
Doug Coleman
00338f62f3
factor: put inline on same line as ; for experimentation
2015-08-10 12:55:27 -05:00
Doug Coleman
0bdc27053b
compiler: oops, assoc-empty? vs empty?. undo harvest-values here.
2015-08-08 12:27:36 -05:00
Doug Coleman
76cb13ac52
basis: use harvest-values
2015-08-08 12:24:22 -05:00
Doug Coleman
43fb73fae6
factor: Rename I[ ]I to [I I]. Fix places where we do "string"token without whitespace.
2015-08-06 17:05:12 -05:00
John Benediktsson
136d793c6e
compiler.tests: remove some tests that can't work now.
...
check-combination-effect raises an error at parse-time.
2015-08-05 18:01:16 -07: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
John Benediktsson
38afea84bf
fix doc using.
2015-07-28 20:20:40 -07:00
John Benediktsson
4ded3c491c
fix some help-lint errors.
2015-07-28 20:06:59 -07:00
Björn Lindqvist
8a731681bf
compiler.cfg.*: tests against #1308
2015-07-28 17:58:29 -07:00
Björn Lindqvist
a8c0a25d87
compiler.cfg.ssa.destruction.coalescing: refactor and maybe a fix for #1308
...
the eliminatable-copy? word is the fix. the previous code only checked
that the registers had the same register class, but you also need to
check that they dont have the same representation size. because a copy
from double-rep -> double-2-rep is not eliminatable
2015-07-28 17:58:29 -07:00
Björn Lindqvist
b544c1b352
compiler.cfg.*: some extra unit tests for the compiler
2015-07-28 17:58:29 -07:00
Björn Lindqvist
820207c5b0
compiler.cfg.ssa.destruction.coalescing: simpler code for setting up the
...
initial leader-map and class-element-map
2015-07-28 17:58:28 -07:00
Björn Lindqvist
5e29aac0a6
Docs: various more compiler-related docs
2015-07-28 17:58:28 -07:00
Björn Lindqvist
aca610813d
compiler.cfg.representations.selection: use a union instead of a generic
...
to see if an insn is peephole-optimizable + test
2015-07-28 17:58:28 -07:00
Björn Lindqvist
44c9b2c8e8
compiler.tree.*: new docs
2015-07-28 17:58:28 -07:00
Björn Lindqvist
2c5f00d865
compiler.cfg.*: even more docs
2015-07-28 17:58:28 -07:00
Björn Lindqvist
e095b54644
compiler.tree.escape-analysis.*: new doc files
2015-07-28 17:58:28 -07:00
Björn Lindqvist
06560b24a6
compiler.tree.escape-analysis.allocations: stub doc file from comments
2015-07-28 17:58:27 -07:00
Björn Lindqvist
b4e4792cb6
compiler.cfg.*: a bunch of docs updates
2015-07-28 17:58:27 -07:00
Björn Lindqvist
cdf9a8535b
compiler.cfg.representations.selection: some initial docs from comments
2015-07-28 17:58:27 -07:00
Björn Lindqvist
31aae02916
compiler.cfg.linear-scan.live-intervals: simpler code for finding the
...
sync points in the cfg
2015-07-28 17:58:27 -07:00
Björn Lindqvist
78d5c0a743
compiler.cfg.instructions: ##read -> read-insn and ##write -> write-insn
2015-07-28 17:58:27 -07:00
Björn Lindqvist
81c7659360
compiler.cfg.instructions: rename ##allocation to allocation-insn,
...
because it's nicer if all instruction unions have the -insn suffix and
the ## prefix is reserved for tuples
2015-07-28 17:58:27 -07:00
Doug Coleman
1fcf96cada
factor: remove """ string syntax for now. there are HEREDOC:, STRING:, escaping \", and something else soon.
2015-07-25 22:59:56 -07:00
John Benediktsson
9ec74563ba
compiler.cfg: use "f [ or ] reduce" instead of "map [ ] any?"
2015-07-21 09:54:44 -07:00
Björn Lindqvist
d24733e703
compiler.cfg.build-stack-frame: refactoring which removes the
...
frame-required? variable
2015-07-21 13:40:50 +02:00
Björn Lindqvist
80ea6b8997
compiler.*: fix the tests that broke because i removed the stack-frame variable
2015-07-21 13:40:49 +02:00
Björn Lindqvist
eba939c0f2
compiler.cfg.stacks.map: this vocab is subsumed by
...
compiler.cfg.stacks.padding which works much better
2015-07-21 13:36:11 +02:00
Björn Lindqvist
bc8525bf5b
compiler.cfg.build-stack-frame: the frame-required? variable needs to be
...
reset so that stack frames aren't included in words that doesn't need them
2015-07-21 13:35:22 +02:00
Björn Lindqvist
b5333ec7aa
compiler.cfg.stack-frame: using cfg get stack-frame>> instead of the
...
stack-frame variable that pointed to the same instance
2015-07-21 13:35:22 +02:00
John Benediktsson
5eec781b40
use ``if*`` instead of ``dup [ ] [ drop ] if``.
2015-07-20 22:24:30 -07:00
Doug Coleman
bcc78ab220
basis: whitespace.
2015-07-20 17:13:52 -07:00
John Benediktsson
3ea9f09f6a
fix some sets:members.
2015-07-20 09:32:31 -07:00
Doug Coleman
2adeed9cb3
factor: rename classes:members to class-members so it doesn't conflict with sets:members. ugh.
2015-07-20 00:32:42 -07:00
Doug Coleman
618330b31e
factor: rename system:vm -> vm-path to differentiate it from vm:vm (which is a STRUCT:)
2015-07-20 00:10:29 -07:00
Doug Coleman
1e22e9b814
factor: all FUNCTION: rename complete
2015-07-19 22:55:24 -07:00
Doug Coleman
b3e8ecf738
factor: more function messups
2015-07-19 20:09:21 -07:00
Doug Coleman
6f6007570a
factor: Fix rename issues.
2015-07-19 19:56:16 -07:00
John Benediktsson
c25fb5f55e
update some more MACRO: effects.
2015-07-19 11:42:46 -07:00
Doug Coleman
2c257f399c
factor: Rename MACRO: and MACRO: to have quot as the output in stack effects.
2015-07-18 22:16:11 -07:00
John Benediktsson
8a3c5c2634
Fix some tests broken by optimized? rename.
2015-07-15 11:47:03 -07:00
John Benediktsson
4c2c8f133f
vm: rename some primitives, and some cleanup.
...
* quot-compiled? => quotation-compiled?
* optimized? => word-optimized?
2015-07-15 11:13:52 -07:00
Doug Coleman
128c262429
compiler.cfg.value-numbering: tests need to have this loaded.
2015-07-06 22:44:36 -07:00
Doug Coleman
892c62e1dc
factor: second stab at [ ] [ ] unit-test -> { } [ ] unit-test
2015-07-03 09:39:59 -07:00
Doug Coleman
40892c0302
tests: prefer ${ } instead of 1array
2015-07-02 14:56:14 -07:00
Doug Coleman
59f3b1ea57
Revert "factor: rename [ ] [ ] unit-test -> { } [ ] unit-test using a refactoring tool!"
...
Needs a bit more work.
This reverts commit 7e54cc2824
.
2015-07-02 13:47:06 -07:00
Doug Coleman
7e54cc2824
factor: rename [ ] [ ] unit-test -> { } [ ] unit-test using a refactoring tool!
2015-07-02 11:36:08 -07:00
Doug Coleman
999aa7c897
factor: clean up spaces in -tests files
2015-07-02 10:34:01 -07:00
Doug Coleman
352e5de16a
core, basis, extra: Remove DOS line endings from files.
...
Remove whitespace from end of lines.
Add a newline to the end of each file.
2015-06-29 17:25:40 -07:00
Björn Lindqvist
95fa3eba19
compiler.tree.propagation.known-words: better way to assign the
...
"outputs" to the mod words + some more tests
2015-06-27 16:14:58 +02:00
Björn Lindqvist
0d02ff8e40
compiler.tree.propagation.*: new and fixed tests for the new propagation
...
behaviour for mod
2015-06-27 16:14:58 +02:00
Björn Lindqvist
2f835d3666
compiler.tree.propagation.*: implements downgrading to fixnum for the
...
mod word, maybe a first step in solving #224
factor_vm::primitive_bignum_mod is changed so that it outputs a fixnum
if the value is small enough. Then the compiler can take advantage of
knowing that expressions like [ >bignum 10 mod ] always result in a
fixnum [-9,9] and inline more arithmetic.
2015-06-27 16:14:58 +02:00
Björn Lindqvist
72fe466ac9
compiler.tree.propagation.known-words: more precise output class
...
assignment for all mod words
The compiler can better optimize a quotation like [ 20 fixnum-mod 55 + ]
if it knows fixnum-mod outputs a fixnum.
2015-06-27 16:14:57 +02:00
Doug Coleman
09e4606791
compiler.cfg.debugger: alien-invoke insn nodes were printing double quotes in the dot file output. If you would pprint a string, instead print that string so the double quotes are not present in the output.
2015-06-24 18:46:39 -07:00
John Benediktsson
16abe47b03
compiler.tree.propagation: fix tests for bit? inlining.
2015-06-17 20:52:05 -07:00
John Benediktsson
621b50a8e5
cpu: enable bit-test intrinsic for fixnum-bit?.
2015-06-17 19:11:10 -07:00
John Benediktsson
423b2afb91
compiler.cfg.linear-scan.allocation: fix docs for free-position.
2015-06-16 20:38:34 -07:00
Björn Lindqvist
3678f62508
x86.64: change the register order so that RBX is allocated before RCX
2015-06-16 18:28:32 -07:00
Björn Lindqvist
8c8605d11a
compiler.cfg.linear-scan.*: more tests and docs for allocation and state
2015-06-16 18:28:32 -07:00
Björn Lindqvist
78fe8bf1dc
compiler.cfg.linear-scan.*: dont use a hashtable here, it fixes register
...
allocation so it's always in the same order as machine-registers
2015-06-16 18:28:32 -07:00
John Benediktsson
d4e3adca57
compiler.cfg.ssa.destruction.coalescing: lookup variable once not twice.
2015-06-15 09:11:16 -07:00
Björn Lindqvist
aeaed40d9c
compiler.cfg.ssa.destruction.coalescing: new vocab to refactor and
...
simplify the prepare-insn code in compiler.cfg.ssa.destruction
2015-06-15 12:28:31 +02:00
Björn Lindqvist
c5ec490f39
compiler.cfg.ssa.destruction: the natural-sort was malplaced, only sort
...
inputs from ##phi, should fix remainder of #1345
2015-06-15 12:28:30 +02:00
Björn Lindqvist
c0645ecafe
compiler.cfg.linear-scan.*: fix help-lint errors
2015-06-14 16:44:37 +02:00
Björn Lindqvist
5ad35fabd1
compiler.cfg.*: lots of more compiler docs
2015-06-14 16:44:37 +02:00
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