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
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
24ca0e3160
compiler.cfg.*: reverting the commit
...
5fd9e61bc04b054d58b8eeecbe9b5c59f68f2195, caused bad regressions in SIMD code
2015-04-29 09:31:59 -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
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
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
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
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
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
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
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
c65877104e
compiler: cleanup usings.
2014-12-13 16:10:21 -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
628c87c5b1
compiler.cfg.utilities: adding connect-bbs and make-edges
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
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
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
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
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
John Benediktsson
7609ab6eda
compiler.cfg: fix some help-lint warnings.
2014-08-14 09:59:27 -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
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
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
395a490b90
Docs: documentation for stack-checker.* and compiler.* vocabs
2014-06-08 11:48:30 -07: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
0bb3e2397b
Docs: more compiler documentation
2014-05-10 17:13:48 -07:00
Doug Coleman
6cca0ea468
compiler.cfg: Rename <##foo> to ##foo, in the low-level IR
2011-11-11 19:48:38 -08:00
Doug Coleman
eb2a0c611b
compiler.cfg: Change low-level IR constructors from ##foo to <##foo>
2011-11-06 23:02:46 -08:00
Doug Coleman
f9257959fd
Rename class to class-of
2011-10-24 06:47:42 -05:00
John Benediktsson
378786599d
Cleanup lint warnings.
2011-10-14 11:47:24 -07:00
John Benediktsson
1987deb359
Fix M: stack effects.
2011-10-13 16:41:17 -07:00
Slava Pestov
5d6816d364
compiler.cfg.ssa: fixing test failures
2010-06-15 17:18:51 -04:00
Slava Pestov
e86f434f26
Add GC maps to ##box, ##box-long-long, ##alien-invoke, ##alien-indirect and ##call-gc; remove ##gc-map instruction
2010-06-14 19:39:46 -04:00
Slava Pestov
806e54630a
GC maps for more compact inline GC checks
2010-06-11 20:06:00 -04:00
Slava Pestov
c211c3e84e
FFI rewrite part 1: split up ##alien-invoke and friends into smaller instructions
2010-05-09 21:36:52 -04:00
Slava Pestov
428ba9fd0f
compiler.cfg: fuse ##load-integer/##load-reference into ##replace to form ##replace-imm
2010-05-03 17:34:28 -04:00
Slava Pestov
95ff5ffe51
New GC checks work in progress
2010-05-03 17:34:16 -04:00
Slava Pestov
82fb1879af
Debugging untagged fixnums
2010-05-03 17:34:02 -04:00
Daniel Ehrenberg
512fe14e4e
Merge branch 'bags' of git://github.com/littledan/Factor
...
Conflicts:
basis/compiler/cfg/ssa/construction/tdmsc/tdmsc.factor
basis/furnace/auth/auth.factor
basis/stack-checker/backend/backend.factor
2010-03-16 13:28:00 -04:00
Joe Groff
191ac353fd
generalize stack effects so we can bootstrap with the stricter stack effect checking
2010-03-08 23:38:10 -08:00
Daniel Ehrenberg
7074979745
Moving new-sets to sets
2010-02-26 16:01:01 -05:00
Doug Coleman
8c1d202b4c
Rename accumulator to collector, pusher to selector
2010-01-22 15:00:53 -06:00
Slava Pestov
df4fb4a3ee
Removing integers-as-sequences
2010-01-15 07:15:33 +13:00
Slava Pestov
0612bc6177
Factor source files should not be executable
2009-11-21 17:50:43 -06:00
Slava Pestov
b4e36608da
compiler.cfg: remove _gc instruction, it doesn't need to exist, and change GC checks to ensure that the right amount of space is available instead of blindly checking for 1Kb
2009-10-05 05:27:49 -05:00
Slava Pestov
fd2f0a602d
compiler.cfg.stacks.local: more accurate local replace set computation; optimizes out 'swap swap'
2009-08-19 22:00:21 -05:00
Daniel Ehrenberg
478b960560
Merge branch 'master' of git://factorcode.org/git/factor
2009-08-14 20:11:54 -05:00
Daniel Ehrenberg
3cec74867d
Improving write barrier elimination; change to compiler.cfg.utilities to support this
2009-08-14 19:41:41 -05:00
Doug Coleman
2ed4425b7a
Merge branch 'master' of git://factorcode.org/git/factor
...
Conflicts:
basis/calendar/calendar.factor
2009-08-13 19:40:02 -05:00
Doug Coleman
3f3d57032b
Delete empty unit tests files, remove 1- and 1+, reorder IN: lines in a lot of places, minor refactoring
2009-08-13 19:21:44 -05:00
Daniel Ehrenberg
d35e1eb76c
Fixing write-barrier elimination; adding bb as a parameter to join-sets in dataflow analysis
2009-08-12 23:52:29 -05:00
Slava Pestov
d0c393aa60
compiler.cfg: new system to track when results of analyses need to be recomputed (reverse post order, linear order, predecessors, dominance, loops). Passes can now call needs-predecessors, needs-dominance, needs-loops at the beginning, and cfg-changed, predecessors-changd at the end. Linearization order now takes loop nesting into account, and linear scan now uses linearization order instead of RPO.
2009-08-08 20:02:56 -05:00
Slava Pestov
4b7ba38aab
compiler.cfg: virtual registers are integers now, and representations are stored off to the side. Fix bug in representation selection that would manifest if a value was used as a float and a fixnum in different branches; cannot globally unbox float in this case
2009-08-08 04:02:18 -05:00
Slava Pestov
725280d424
Split off the notion of a register representation from a register class
2009-08-07 17:44:50 -05:00
Slava Pestov
d20d335447
compiler.cfg.stacks: more accurate deconcatenatization inserts fewer partially redundant ##peeks. 11% improvement on benchmark.beust2, 2% reduction in ##peek and ##replace instructions inserted
2009-08-03 07:08:28 -05:00
Slava Pestov
720bfe378f
compiler.cfg.stacks.uninitialized: use bitand instead of min
2009-08-03 06:03:38 -05:00
Slava Pestov
c1c8424605
Compiler speedups
2009-08-02 09:16:21 -05:00
Slava Pestov
e1c7f7394a
compiler.cfg: clean up unit tests using some new utilities
2009-08-02 03:49:25 -05:00