[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 14/21: Treat tail $values as generating lazy allocations
From: |
Andy Wingo |
Subject: |
[Guile-commits] 14/21: Treat tail $values as generating lazy allocations |
Date: |
Wed, 28 Oct 2015 22:31:19 +0000 |
wingo pushed a commit to branch wip-2.1.2
in repository guile.
commit dd77a818ba6aefc98a78d03dec61454546992671
Author: Andy Wingo <address@hidden>
Date: Wed Oct 28 13:33:37 2015 +0000
Treat tail $values as generating lazy allocations
* module/language/cps/slot-allocation.scm (compute-lazy-vars): Returning
values in tail position also generates lazy vars.
---
module/language/cps/slot-allocation.scm | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/module/language/cps/slot-allocation.scm
b/module/language/cps/slot-allocation.scm
index b306898..1e349ee 100644
--- a/module/language/cps/slot-allocation.scm
+++ b/module/language/cps/slot-allocation.scm
@@ -376,6 +376,10 @@ is an active call."
(($ $kargs _ _ ($ $continue _ _ ($ $callk _ proc args)))
(intset-subtract (intset-add (list->intset args) proc)
(intmap-ref live-out label)))
+ (($ $kargs _ _ ($ $continue k _($ $values args)))
+ (match (intmap-ref cps k)
+ (($ $ktail) (list->intset args))
+ (_ #f)))
(_ #f)))
cps))
(kills (intmap-map
- [Guile-commits] 03/21: Revert "Bootstrap build doesn't have to expand CPS optimizations", (continued)
- [Guile-commits] 03/21: Revert "Bootstrap build doesn't have to expand CPS optimizations", Andy Wingo, 2015/10/28
- [Guile-commits] 06/21: Fix slot-allocation to make 'return' not need to alloc-frame, Andy Wingo, 2015/10/28
- [Guile-commits] 08/21: Don't emit redundant reset-frame before return, Andy Wingo, 2015/10/28
- [Guile-commits] 07/21: return-values opcode resets the frame, Andy Wingo, 2015/10/28
- [Guile-commits] 11/21: rtl.test uses return-values, Andy Wingo, 2015/10/28
- [Guile-commits] 10/21: Always emit return-values, Andy Wingo, 2015/10/28
- [Guile-commits] 12/21: Remove use of return in disassembler.scm, Andy Wingo, 2015/10/28
- [Guile-commits] 04/21: CSE can run on first-order CPS, Andy Wingo, 2015/10/28
- [Guile-commits] 09/21: Replace return primcalls with $values, Andy Wingo, 2015/10/28
- [Guile-commits] 13/21: Remove return opcode, Andy Wingo, 2015/10/28
- [Guile-commits] 14/21: Treat tail $values as generating lazy allocations,
Andy Wingo <=
- [Guile-commits] 17/21: Stack slots can hold a double, Andy Wingo, 2015/10/28
- [Guile-commits] 18/21: Add VM ops to pack and unpack raw f64 values., Andy Wingo, 2015/10/28
- [Guile-commits] 21/21: Scalar replacement for f64->scm, Andy Wingo, 2015/10/28
- [Guile-commits] 20/21: bv-f32-set!, bv-f64-set! take unboxed args, Andy Wingo, 2015/10/28
- [Guile-commits] 15/21: VM support for raw slots, Andy Wingo, 2015/10/28
- [Guile-commits] 19/21: bv-f32-ref and bv-f64-ref return raw f64 values, Andy Wingo, 2015/10/28
- [Guile-commits] 16/21: Reflection support for unboxed f64 slots, Andy Wingo, 2015/10/28