Commit Graph

136 Commits (d0028df10bce6490c5cc4d5dd2ac9ef90db8c3b9)

Author SHA1 Message Date
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
Doug Coleman c7a04858ee 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 3b8733de01 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 be1dcc04c2 compiler.cfg.linear-scan: fix unit tests 2009-06-24 13:54:12 -05:00
Slava Pestov fff4a1dbbd compiler.cfg.linear-scan: fix coalescing to take lifetime holes into account 2009-06-23 21:32:51 -05:00
Slava Pestov 478e5cc95f compiler.cfg.linear-scan: Debugging resolve pass 2009-06-22 00:24:51 -05:00
Slava Pestov 02e2c0bcf7 compiler.cfg.linear-scan.resolve: unit tests 2009-06-21 00:23:34 -05:00
Slava Pestov 39dba00279 compiler.cfg.linear-scan: Working on resolve pass 2009-06-21 00:20:01 -05:00
Slava Pestov 886967256e compiler.cfg.linear-scan.assignment: correctly compute live registers at GC check points 2009-06-20 15:33:12 -05:00
Slava Pestov 82730af521 compiler.cfg.linear-scan: untangle add-active/delete-active/add-handled calls in spilling, replace 'sort-values last' with 'alist-max' in compiler.utilities 2009-06-19 18:28:30 -05:00
Slava Pestov 6ff7e2cba7 compiler.cfg.linear-scan: Fix a couple of bugs 2009-06-19 03:42:42 -05:00
Slava Pestov e1e24c4802 compiler.cfg.linear-scan: Further progress on inactive interval handling 2009-06-17 15:27:20 -05:00
Slava Pestov 14b4b79a37 compiler.cfg.linear-scan.resolve: fix compile error 2009-06-14 17:00:52 -05:00
Slava Pestov 941d7a1eeb Various linear scan fixes
insert spill before reload to fix x86-32 regression
inactive splitting: if all inactive intervals' registers are in use, don't fail
fix stack analysis tests
2009-06-13 17:35:40 -05:00
Slava Pestov d09ece8152 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
Slava Pestov e1d13d8ee7 Linear scan: implement live range intersection 2009-06-06 01:04:12 -05:00
Slava Pestov ad5ef2a3cc Linear scan: correctly compute live spill slots 2009-06-05 18:06:47 -05:00
Slava Pestov ee67b7c9a8 compiler.cfg.linear-scan: re-do interval splitting to operate on live ranges; add inactive set processing 2009-06-04 18:53:02 -05:00
Slava Pestov 9096acea6f Linear scan: build live ranges 2009-06-03 03:22:27 -05:00
Slava Pestov 7aca076408 GC checks now save and restore registers 2009-06-02 18:23:47 -05:00
Slava Pestov 3de85158de Merge branch 'master' into global_optimization 2009-06-01 03:12:32 -05:00
Slava Pestov 0375ce6bb4 Fix scoping issue in compiler.cfg.linear-scan.assignment 2009-05-31 18:21:23 -05:00
Slava Pestov 968a9bb666 Various codegen improvements:
- new-insn word to construct instructions
- cache RPO in the CFG
- re-organize low-level optimizer so that MR is built after register allocation
- register allocation now stores instruction numbers in the instructions themselves
- split defs-vregs into defs-vregs and temp-vregs
2009-05-29 13:11:34 -05:00
Doug Coleman 8da9d0f203 rename peek -> last and update all usages 2009-05-25 16:38:33 -05:00
Slava Pestov 05f3f9dcb9 Fixing unit tests for stack effect inference changes 2009-04-20 21:15:19 -05:00
Slava Pestov 37e278ed02 Use [ ] [ ] map-reduce instead of unclip [ ] reduce 2009-04-06 17:50:54 -05:00
Slava Pestov 421ee726b8 Merge branch 'master' into new_ui 2009-02-16 21:22:12 -06:00
Slava Pestov 6b25e99470 Add summary for heaps more vocabs 2009-02-16 21:05:13 -06:00
Slava Pestov 669548e62e Clean up some usages of tuck, and add Joe's curried cleave/spread/apply combinators to kernel vocabulary 2009-02-02 13:43:54 -06:00
Slava Pestov ca2f01e0d0 Updating non-core libraries for monotonic? change 2009-01-16 17:02:54 -06:00
Slava Pestov 34792a9f23 Remove >r/r> 2008-12-17 19:17:37 -06:00
Slava Pestov c8521ad826 Add tool to dump live intervals 2008-11-04 17:23:20 -06:00
Slava Pestov 1af3b8ed65 If a register is spilled and the reload location is also a copy, we chicken out and don't coalesce. This is suboptimal but it's not clear to me how to implement it cleanly, and SSA graph coloring will solve this problem eventually anyway 2008-11-04 00:32:56 -06:00
Slava Pestov 0250d7c1d2 Forgot a drop in unit test 2008-11-03 01:53:27 -06:00
Slava Pestov d11a779fdd RicE 2008-11-02 03:58:32 -06:00
Slava Pestov 8df1aba71d Coalescing 2008-11-02 01:49:57 -06:00
Slava Pestov db4db19cd9 Start working on coalescing 2008-10-28 02:38:37 -07:00
Slava Pestov ba0ed21e1d Better error message 2008-10-22 21:58:37 -05:00
Slava Pestov e92f795a76 More work on intrinsics; memory allocation and slot access now expands correctly 2008-10-20 20:40:15 -05:00
Slava Pestov f092622fac CFG IR is now pure SSA 2008-10-20 01:56:28 -05:00
Slava Pestov 14d8696f40 Oops, don't mix register classes in active set 2008-10-19 03:34:42 -05:00
Slava Pestov c0d89b061e Fixing register allocator prspilling 2008-10-19 01:10:21 -05:00
Slava Pestov 749c77d6b1 Fix linear scan test 2008-10-12 18:40:10 -05:00
Slava Pestov cf46a832e7 Debugging register allocator and inline allocation 2008-10-08 23:42:53 -05:00
Slava Pestov 7b6d9c4c4f Debugging new codegen 2008-10-07 20:00:38 -05:00
Slava Pestov f436fd0c0f Merging in new codegen 2008-10-07 16:16:50 -05:00