Slava Pestov
|
eb802208d1
|
FFI rewrite part 4: parameter and return value unboxing redesign
|
2010-05-11 19:11:44 -04:00 |
Slava Pestov
|
982e704626
|
compiler.cfg.linear-scan: clean up clobber-insn handling
|
2010-05-07 18:22:35 -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
|
51b13ce373
|
compiler.cfg.linear-scan: don't insert a _reload if the register is going to be overwritten anyway
|
2010-05-03 17:34:14 -04:00 |
Slava Pestov
|
299b5b0f6c
|
filter-here -> filter!
|
2009-10-28 00:44:05 -05: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 |
Slava Pestov
|
0db01f6d5f
|
compiler.cfg.linear-scan now supports partial sync-points where all registers are spilled; taking advantage of this, there are new trigonometric intrinsics which yield a 2x performance boost on benchmark.struct-arrays and a 25% boost on benchmark.partial-sums
|
2009-08-30 04:52:01 -05:00 |
Slava Pestov
|
370f4c081d
|
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
|
791fbe4003
|
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
|
5a64290386
|
compiler.cfg.linear-scan: more code cleanups, and working on split-to-fit algorithm
|
2009-07-09 00:20:03 -05:00 |
Slava Pestov
|
4507bdcbc0
|
compiler.cfg.linear-scan: code cleanups
|
2009-07-08 23:28:28 -05:00 |
Slava Pestov
|
0bcf4ce535
|
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
|
a19f22ec82
|
compiler.cfg.linear-scan: debugging spilling and resolve pass
|
2009-07-01 17:41:07 -05:00 |
Slava Pestov
|
578b0126fc
|
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 |
Slava Pestov
|
c53aca6016
|
compiler.cfg.linear-scan: fix coalescing to take lifetime holes into account
|
2009-06-23 21:32:51 -05:00 |
Slava Pestov
|
5c912504d7
|
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
|
2f15ac3c8f
|
compiler.cfg.linear-scan: Fix a couple of bugs
|
2009-06-19 03:42:42 -05:00 |
Slava Pestov
|
1f5f8393c3
|
compiler.cfg.linear-scan: Further progress on inactive interval handling
|
2009-06-17 15:27:20 -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 |
Slava Pestov
|
70b75b8dea
|
Linear scan: implement live range intersection
|
2009-06-06 01:04:12 -05:00 |
Slava Pestov
|
04c72d0a72
|
Linear scan: correctly compute live spill slots
|
2009-06-05 18:06:47 -05:00 |
Slava Pestov
|
81b2a39070
|
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
|
37e278ed02
|
Use [ ] [ ] map-reduce instead of unclip [ ] reduce
|
2009-04-06 17:50:54 -05: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
|
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
|
8df1aba71d
|
Coalescing
|
2008-11-02 01:49:57 -06: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
|
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 |