Slava Pestov
|
8b887630a0
|
compiler.cfg: convert code into two-operand form before SSA destruction; SSA destruction now operates on a relaxed SSA form where multiple defs of the same vreg are allowed, but only within a single basic block. This makes linear scan's coalescing redundant, allowing it to be removed completely
|
2009-08-05 18:57:46 -05:00 |
Slava Pestov
|
6ce9bcc658
|
compiler.graphviz: add high-level IR call graph rendering
|
2009-08-05 03:33:06 -05:00 |
Slava Pestov
|
b22a530511
|
compiler.tree.recursive: have to check tail call flag of call tree edges too
|
2009-08-05 02:14:49 -05:00 |
Slava Pestov
|
a2f52c1e41
|
compiler.tree.recursive: more accurate loop detection
|
2009-08-04 19:18:40 -05:00 |
Slava Pestov
|
4b87ee4ebd
|
compiler.tree.recursive: add some more more loop detection tests
|
2009-08-04 16:23:14 -05:00 |
Slava Pestov
|
7c3d65af21
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-03 10:31:27 -05:00 |
Slava Pestov
|
41a444a3d4
|
compiler.cfg.critical-edges: no longer neededed
|
2009-08-03 10:31:00 -05:00 |
Slava Pestov
|
cffd809ca0
|
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
|
e683004434
|
compiler.cfg.stacks.uninitialized: use bitand instead of min
|
2009-08-03 06:03:38 -05:00 |
Joe Groff
|
09b2acbd10
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-02 23:16:52 -05:00 |
Joe Groff
|
b4befe3f69
|
[ [ ... ] compare ] sort => [ ... ] sort-with
|
2009-08-02 20:09:23 -05:00 |
Slava Pestov
|
5b6e0ce534
|
compiler.cfg.def-use: remove compute-def-use word, passes have to call compute-defs or compute-uses now; compiler.cfg.ssa.liveness: don't compute dominance and def-use first since destruction does already
|
2009-08-02 19:12:32 -05:00 |
Slava Pestov
|
a61037d8f7
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-02 18:46:27 -05:00 |
Slava Pestov
|
c29ee06adb
|
Revert "SSA destruction uses new SSA liveness checking"
This reverts commit 98c7de8410.
|
2009-08-02 18:41:31 -05:00 |
Slava Pestov
|
b3786fb6eb
|
Revert "compiler.cfg.liveness.ssa: remove"
This reverts commit 6144fee101.
|
2009-08-02 18:41:16 -05:00 |
Daniel Ehrenberg
|
d643a0de21
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-02 18:25:37 -04:00 |
Daniel Ehrenberg
|
4e65589361
|
Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
basis/compiler/cfg/ssa/liveness/liveness-tests.factor
|
2009-08-02 18:23:49 -04:00 |
Slava Pestov
|
6144fee101
|
compiler.cfg.liveness.ssa: remove
|
2009-08-02 17:19:01 -05:00 |
Daniel Ehrenberg
|
318018f999
|
Removing phi-outs set in SSA liveness checking
|
2009-08-02 18:15:18 -04:00 |
Slava Pestov
|
8a631dfbd9
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-02 17:07:06 -05:00 |
Slava Pestov
|
3104129127
|
compiler.cfg.ssa.liveness: fix unit tests
|
2009-08-02 17:06:35 -05:00 |
Daniel Ehrenberg
|
82ba9a2e0c
|
minor SSA liveness code reorganization
|
2009-08-02 18:05:51 -04:00 |
Daniel Ehrenberg
|
98c7de8410
|
SSA destruction uses new SSA liveness checking
|
2009-08-02 18:04:45 -04:00 |
Daniel Ehrenberg
|
5c6f0413eb
|
def-use puts phi uses in respective predecessors
|
2009-08-02 18:04:07 -04:00 |
Slava Pestov
|
85b6b4c052
|
compiler.cfg.ssa.destruction: add optimization from old destruction pass: don't run on CFGs that have no phi instructions
|
2009-08-02 10:57:27 -05:00 |
Slava Pestov
|
929f195076
|
compiler.cfg.ssa.interference: cleanup
|
2009-08-02 10:35:02 -05:00 |
Slava Pestov
|
00254d1bde
|
compiler.cfg.ssa.destruction: new implementation: simpler and more correct
|
2009-08-02 10:26:52 -05:00 |
Slava Pestov
|
7665784911
|
Compiler speedups
|
2009-08-02 09:16:21 -05:00 |
Slava Pestov
|
d17d00595e
|
compiler.cfg.ssa.destruction.copies: factor out add-instructions combinator into compiler.cfg.utilities
|
2009-08-02 08:20:50 -05:00 |
Slava Pestov
|
ea7ba75a7f
|
Move compiler.cfg.ssa.destruction.interference to compiler.cfg.ssa.interference
|
2009-08-02 08:15:36 -05:00 |
Slava Pestov
|
b90e2c92f0
|
compiler.cfg.ssa.destruction.interference: fix a bug and add unit tests
|
2009-08-02 08:11:30 -05:00 |
Slava Pestov
|
1d289e68a4
|
compiler.cfg.debugger: fix load error
|
2009-08-02 08:11:04 -05:00 |
Slava Pestov
|
d84216ce6c
|
compiler.cfg.ssa.destruction: add some unit tests
|
2009-08-02 06:17:44 -05:00 |
Slava Pestov
|
ebe70b3bb1
|
compiler.cfg.critical-edges: update ##phi nodes
|
2009-08-02 06:17:22 -05:00 |
Slava Pestov
|
64b719269f
|
compiler.cfg.utilities: add each-phi combinator to iterate over all ##phi instructions in a basic block
|
2009-08-02 06:16:58 -05:00 |
Slava Pestov
|
3a9e164275
|
compiler tests: add test case for coalescing bug
|
2009-08-02 03:49:54 -05:00 |
Slava Pestov
|
8028eb5776
|
compiler.cfg: clean up unit tests using some new utilities
|
2009-08-02 03:49:25 -05:00 |
Slava Pestov
|
c89cb4e3ca
|
compiler.cfg.two-operand: if last instruction in a basic block is an overflowing arithmetic op of the form x = y op x, we now convert it correctly. This fixes compiler regression with benchmark.dawes after recent coalescing changes
|
2009-08-01 23:50:47 -05:00 |
Slava Pestov
|
49ac00097e
|
compiler.tree.propagation.call-effect: fix case where quotation inlining could enter an infinite loop: [ dup call( quot -- ) ] dup call( quot -- ) etc
|
2009-08-01 23:34:14 -05:00 |
Slava Pestov
|
87a5ea36d1
|
compiler.cfg.copy-prop: eliminate phi nodes that have the same inputs as a previous phi node in the basic block
|
2009-08-01 22:33:27 -05:00 |
Slava Pestov
|
eeea7f019d
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-01 20:22:51 -05:00 |
Slava Pestov
|
bb1c904261
|
compiler.cfg.ssa.destruction: fix bug in trivial-interference heuristic, and type error in code path that didn't run before
|
2009-08-01 20:22:31 -05:00 |
Daniel Ehrenberg
|
56f6f4d0ce
|
Merge branch 'master' of git://factorcode.org/git/factor
|
2009-08-01 20:33:41 -04:00 |
Slava Pestov
|
7ee7346505
|
compiler.cfg.liveness.ssa: fix bad bug discovered by littledan
|
2009-08-01 18:54:24 -05:00 |
Slava Pestov
|
86f8445eb6
|
compiler.cfg.stacks: kill set now includes all locations eliminated as a result of stack height decrease; reduces number of ##replace instructions generated by 2%
|
2009-08-01 06:12:43 -05:00 |
Slava Pestov
|
14d8cc4e5e
|
compiler: Oops, typos in unit tests
|
2009-07-31 22:33:02 -05:00 |
Slava Pestov
|
a5c4877bf6
|
compiler.cfg.ssa.destruction: fix bug in renaming triggered by sequence-parser:take-sequence
|
2009-07-31 18:34:15 -05:00 |
Slava Pestov
|
db55a031df
|
Move a bunch of GC check generation logic to platform-independent side
|
2009-07-30 21:28:27 -05:00 |
Daniel Ehrenberg
|
76a5972a69
|
Faster SSA liveness testing
|
2009-07-30 15:23:47 -04:00 |
Slava Pestov
|
99216b8435
|
compiler.cfg: Get inline GC checks working again, using a dataflow analysis to compute uninitialized stack locations in compiler.cfg.stacks.uninitialized. Re-enable intrinsics which use inline allocation
|
2009-07-30 09:19:44 -05:00 |