Slava Pestov
|
ffd1844d52
|
compiler.cfg.linear-scan: clean up spill slot assignment
|
2010-05-03 17:34:24 -04:00 |
Slava Pestov
|
43f269e4eb
|
Register allocation now uses SSA properties to coalesce values with different representations
|
2010-05-03 17:34:20 -04:00 |
Slava Pestov
|
43fc230c69
|
compiler.cfg.linear-scan: cleanups
|
2010-05-03 17:34:18 -04:00 |
Slava Pestov
|
95ff5ffe51
|
New GC checks work in progress
|
2010-05-03 17:34:16 -04:00 |
Slava Pestov
|
db7403d697
|
compiler.cfg.linear-scan.resolve: fix incorrect behavior when one physical register is used with several representations in the same register class
|
2010-05-03 17:34:14 -04:00 |
Slava Pestov
|
705b4ab5c3
|
compiler.cfg.linear-scan: fix partial sync point logic in case where dst == src, and clean up spilling code
|
2009-09-27 19:28:20 -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
|
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 |
Slava Pestov
|
687454878a
|
compiler.cfg.linearization: change order to fit older unit tests
|
2009-08-08 23:06:57 -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
|
c1c8424605
|
Compiler speedups
|
2009-08-02 09:16:21 -05:00 |
Slava Pestov
|
cb36a40dc4
|
compiler.cfg.linear-scan: more test fixes
|
2009-07-29 07:04:52 -05:00 |
Slava Pestov
|
639a1cbb1f
|
compiler.cfg.linear-scan.resolve: fix unit tests to not depend on hashing
|
2009-07-29 06:48:01 -05:00 |
Slava Pestov
|
80e10f1bd0
|
compiler.cfg: Fix some unit tests
|
2009-07-28 08:56:14 -05:00 |
Slava Pestov
|
e6f5eab598
|
compiler.cfg.linear-scan: fix resolve pass
|
2009-07-28 08:47:35 -05:00 |
Slava Pestov
|
18717a449f
|
compiler.cfg.linear-scan.resolve: unit tests
|
2009-07-28 07:41:41 -05:00 |
Slava Pestov
|
857ef94acc
|
compiler.cfg.linear-scan: use compiler.cfg.parallel-copy in resolve pass
|
2009-07-28 07:39:46 -05:00 |
Slava Pestov
|
89db2e745d
|
Move liveness back to compiler.cfg.liveness, fix a corner-case where it didn't work on some forms of non-SSA code
|
2009-07-22 06:07:28 -05:00 |
Slava Pestov
|
21a012e3d7
|
compiler.cfg: Major restructuring -- do not compute liveness before local optimization, and instead change local optimizations to be more permissive of undefined values. Now, liveness is only computed once, after phi elimination and before register allocation. This means liveness analysis does not need to take phi nodes into account and can now use the new compiler.cfg.dataflow-analysis framework
|
2009-07-22 03:08:28 -05:00 |
Slava Pestov
|
8ff473e42c
|
compiler.cfg.linear-scan.resolve: get it to work on CFGs with critical edges
|
2009-07-12 23:00:33 -05:00 |
Slava Pestov
|
d0980edafe
|
compiler.cfg.linear-scan: fixing unit tests
|
2009-07-09 00:48:00 -05:00 |
Slava Pestov
|
c20e6c290f
|
compiler.cfg.linear-scan: split off parallel mapping code from resolve pass, use it in assignment pass to resolve parallel copies
|
2009-07-08 23:07:06 -05:00 |
Slava Pestov
|
a452f32e3a
|
compiler.cfg.linear-scan: Get cycle breaking in resolve pass to work by allocating a spare spill slot for this purpose
|
2009-07-05 21:32:23 -05:00 |
Slava Pestov
|
da13681bc8
|
compiler.cfg.linear-scan: redo resolve pass to fix a correctness issue
|
2009-07-03 23:38:52 -05:00 |
Slava Pestov
|
a19f22ec82
|
compiler.cfg.linear-scan: debugging spilling and resolve pass
|
2009-07-01 17:41:07 -05:00 |
Doug Coleman
|
d1f6871081
|
fix bug where traversal order was lost
|
2009-06-30 16:44:14 -05:00 |
Doug Coleman
|
f41f84436c
|
spill to spill-temp, not to virtual spill addresses
|
2009-06-30 15:40:13 -05:00 |
Slava Pestov
|
82bfaca188
|
Fix conflict
|
2009-06-29 01:59:53 -05:00 |
Slava Pestov
|
0f68ee3e9a
|
compiler.cfg.linear-scan.resolve: remove redundant vocabs from using list
|
2009-06-28 22:58:35 -05:00 |
Doug Coleman
|
1cb6bc99da
|
Merge branch 'master' of git://factorcode.org/git/factor
Conflicts:
basis/compiler/cfg/linear-scan/resolve/resolve-tests.factor
|
2009-06-26 21:51:08 -05:00 |
Doug Coleman
|
90017eb248
|
add spill-temp to compiler.cfg.instructions, implement parallel register assignment in linear-scan.resolve
|
2009-06-26 21:48:21 -05:00 |
Slava Pestov
|
96baede36a
|
Redesign compiler.cfg.stack-analysis to make compiler.cfg.height redundant, and to fix some problems
|
2009-06-26 17:29:55 -05:00 |
Slava Pestov
|
387f6df9e5
|
compiler.cfg.linear-scan: Debugging resolve pass
|
2009-06-22 00:24:51 -05:00 |
Slava Pestov
|
330bea3cc2
|
compiler.cfg.linear-scan.resolve: unit tests
|
2009-06-21 00:23:34 -05:00 |
Slava Pestov
|
5a78956956
|
compiler.cfg.linear-scan: Working on resolve pass
|
2009-06-21 00:20:01 -05:00 |
Slava Pestov
|
6fb7dca404
|
compiler.cfg.linear-scan.resolve: fix compile error
|
2009-06-14 17:00:52 -05:00 |
Slava Pestov
|
d0f6a7d048
|
Split up compiler.cfg.linear-scan.allocation into a number of sub-vocabularies; start work on compiler.cfg.linear-scan.resolve; start work on inactive interval splitting
|
2009-06-11 17:55:14 -05:00 |