Commit Graph

95 Commits (8677d56466989158043f8e0fcd0e7914856930aa)

Author SHA1 Message Date
Slava Pestov 8677d56466 compiler.cfg.linear-scan: fix case where a register can be made available for only a part of a live interval's lifetime, but there are no more usages after the split location. This case never came up until global stack analysis, at which point it started to be exercised on x86-32 2009-07-30 02:13:30 -05:00
Slava Pestov c815c8c5b5 compiler.cfg.linear-scan: more test fixes 2009-07-29 07:04:52 -05:00
Slava Pestov bd70967f8a compiler.cfg.linear-scan.resolve: fix unit tests to not depend on hashing 2009-07-29 06:48:01 -05:00
Slava Pestov 68d06c4b06 compiler.cfg.linear-scan.assignment: modifies instructions in place instead of storing a registers assoc for further compile-time performance improvement 2009-07-29 06:36:14 -05:00
Slava Pestov 02b1cc0c40 compiler.cfg.linear-scan.assignment: more efficient data structures 2009-07-29 06:12:33 -05:00
Slava Pestov bbd4e4af3e compiler.cfg: Minor optimization. Instructions can now only ever produce a single value; this eliminates 1array constructions and some iterations 2009-07-28 12:29:07 -05:00
Slava Pestov 905f52d4a9 compiler.cfg: Fix some unit tests 2009-07-28 08:56:14 -05:00
Slava Pestov 6d4a54201b compiler.cfg.linear-scan: fix resolve pass 2009-07-28 08:47:35 -05:00
Slava Pestov c44b13c29e compiler.cfg.linear-scan.resolve: unit tests 2009-07-28 07:41:41 -05:00
Slava Pestov f19ee61d3a compiler.cfg.linear-scan: use compiler.cfg.parallel-copy in resolve pass 2009-07-28 07:39:46 -05:00
Slava Pestov 2726ebe4a9 compiler.cfg.linear-scan.mapping: simplify 2009-07-23 18:03:04 -05:00
Slava Pestov c355c21de6 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 5d9f7b0ed2 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 749522c29c compiler.cfg.linear-scan: fix tests 2009-07-18 06:10:01 -05:00
Slava Pestov 9d831baa9c compiler.cfg.linear-scan: algorithmic optimizations 2009-07-18 00:14:39 -05:00
Slava Pestov 99faf3c79f Overflowing fixnum intrinsics now expand into several CFG nodes. This speeds up the common case since only the uncommon case is now a stack syncpoint 2009-07-16 18:29:40 -05:00
Slava Pestov c5e00da9f8 compiler.cfg.linear-scan.live-intervals: remove bogus assertion 2009-07-16 02:42:01 -05:00
Slava Pestov a17293a828 compiler.cfg: update unit tests for compiler.cfg.comparisons 2009-07-14 12:06:55 -05:00
Slava Pestov 31ae0845f3 compiler.cfg.linear-scan.resolve: get it to work on CFGs with critical edges 2009-07-12 23:00:33 -05:00
Slava Pestov 75b2e114f3 compiler.cfg.linear-scan: disable unit test for unimplemented feature 2009-07-10 07:48:49 -05:00
Slava Pestov 2c3fb59f4f compiler.cfg.linear-scan: fix fencepost error in spill insertion 2009-07-10 03:58:51 -05:00
Slava Pestov e48b805bde compiler.cfg.linear-scan.allocation: fix broken spill slot reuse logic 2009-07-10 00:25:46 -05:00
Slava Pestov f93a71e978 compiler.cfg.linear-scan: two live intervals which are coalesced will use the same spill slot 2009-07-09 23:12:49 -05:00
Slava Pestov 4d3382431f compiler.cfg.linear-scan: fixing unit tests 2009-07-09 00:48:00 -05:00
Slava Pestov 279733adfb compiler.cfg.linear-scan: more code cleanups, and working on split-to-fit algorithm 2009-07-09 00:20:03 -05:00
Slava Pestov b02590cd58 compiler.cfg.linear-scan: code cleanups 2009-07-08 23:28:28 -05:00
Slava Pestov 65cb2d84a7 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 4ef76762e3 compiler.cfg.linear-scan: debugging spilling, add more assertions 2009-07-07 13:01:27 -05:00
Slava Pestov 39e660d8f6 compiler.cfg.linear-scan: code cleanup 2009-07-07 03:45:27 -05:00
Slava Pestov 15134e61e0 compiler.cfg.linear-scan: Re-implement spilling, add some additional runtime assertions, simplify assignment pass since it doesn't have to track spill slots anymore; just assume a live value that's not in active or inactive is spilled 2009-07-07 03:28:55 -05:00
Slava Pestov d6f45a5216 compiler.cfg.linear-scan: minor fixes 2009-07-05 22:51:53 -05:00
Slava Pestov dd56f4158a 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 0a634ec4ec Fix compiler.cfg.linear-scan.resolve test failure 2009-07-04 16:30:16 -05:00
Slava Pestov c431e0db99 compiler.cfg.linear-scan.resolve: More fixes 2009-07-04 00:45:06 -05:00
Slava Pestov ab5fdc70ac compiler.cfg.linear-scan: redo resolve pass to fix a correctness issue 2009-07-03 23:38:52 -05:00
Slava Pestov 12cbbbd6ad compiler.cfg: clean up GC check generation to use spill-slot data type 2009-07-03 23:11:23 -05:00
Slava Pestov 3d92117ef1 compiler.cfg.linear-scan: assign spill slots to vregs globally, so that resolve pass never has to perform a memory->memory transfer 2009-07-03 22:51:40 -05:00
Slava Pestov 04508f2ece compiler.cfg: bug fixes in GC check insertion and fixnum intrinsics 2009-07-02 00:51:06 -05:00
Slava Pestov ca0b05cd1d compiler.cfg.linear-scan: fix spilling 2009-07-01 22:37:27 -05:00
Slava Pestov 14bce3b400 compiler.cfg.linear-scan: debugging spilling and resolve pass 2009-07-01 17:41:07 -05:00
Slava Pestov 189043eae7 compiler.cfg.linear-scan.assignment: insert-copy did the wrong thing if the second interval had been split. Fixes compilation of 'trilerp' 2009-06-30 21:07:39 -05:00
Slava Pestov dc96968b99 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-30 18:12:00 -05:00
Slava Pestov 87aabfc053 compiler.cfg.linear-scan.assignment: get check-assignment? to work with coalescing 2009-06-30 18:10:53 -05:00
Doug Coleman eb2d574e79 Merge branch 'master' of git://factorcode.org/git/factor 2009-06-30 16:45:57 -05:00
Doug Coleman c5ffb08f5b fix bug where traversal order was lost 2009-06-30 16:44:14 -05:00
Slava Pestov ecf44c98bc compiler.cfg.linear-scan: compute-free-pos was broken in the case where more than one inactive interval had the same physical register assigned 2009-06-30 16:07:58 -05:00
Doug Coleman d888d13efe spill to spill-temp, not to virtual spill addresses 2009-06-30 15:40:13 -05:00
Slava Pestov c2d4c42252 Fix conflict 2009-06-29 01:59:53 -05:00
Slava Pestov 5754bf0028 compiler.cfg.linear-scan.resolve: remove redundant vocabs from using list 2009-06-28 22:58:35 -05:00
Doug Coleman 750d8c0a9a 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