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