[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 14/16: Remove inline-constructors pass
From: |
Andy Wingo |
Subject: |
[Guile-commits] 14/16: Remove inline-constructors pass |
Date: |
Wed, 27 Dec 2017 10:02:48 -0500 (EST) |
wingo pushed a commit to branch master
in repository guile.
commit 0b4c1e2c290e284daaac0f39e56db3ac5fdf37c3
Author: Andy Wingo <address@hidden>
Date: Wed Dec 27 10:54:50 2017 +0100
Remove inline-constructors pass
* module/language/cps/constructors.scm: Remove pass, as "list" and
"vector" are now inlined by CPS conversion, and nothing in the
optimizer reifies "list" or "vector" primcalls.
* module/language/cps/optimize.scm (optimize-higher-order-cps)
(cps-default-optimization-options):
* am/bootstrap.am:
* module/Makefile.am: Remove references to inline-constructors pass.
---
am/bootstrap.am | 1 -
module/Makefile.am | 1 -
module/language/cps/constructors.scm | 98 ------------------------------------
module/language/cps/optimize.scm | 3 --
4 files changed, 103 deletions(-)
diff --git a/am/bootstrap.am b/am/bootstrap.am
index 1fd9bfc..139649b 100644
--- a/am/bootstrap.am
+++ b/am/bootstrap.am
@@ -76,7 +76,6 @@ SOURCES = \
language/cps.scm \
language/cps/closure-conversion.scm \
language/cps/compile-bytecode.scm \
- language/cps/constructors.scm \
language/cps/contification.scm \
language/cps/cse.scm \
language/cps/dce.scm \
diff --git a/module/Makefile.am b/module/Makefile.am
index 4a9c4f1..535b5d8 100644
--- a/module/Makefile.am
+++ b/module/Makefile.am
@@ -131,7 +131,6 @@ SOURCES = \
language/cps.scm \
language/cps/closure-conversion.scm \
language/cps/compile-bytecode.scm \
- language/cps/constructors.scm \
language/cps/contification.scm \
language/cps/cse.scm \
language/cps/dce.scm \
diff --git a/module/language/cps/constructors.scm
b/module/language/cps/constructors.scm
deleted file mode 100644
index c35ac74..0000000
--- a/module/language/cps/constructors.scm
+++ /dev/null
@@ -1,98 +0,0 @@
-;;; Continuation-passing style (CPS) intermediate language (IL)
-
-;; Copyright (C) 2013, 2014, 2015, 2017 Free Software Foundation, Inc.
-
-;;;; This library is free software; you can redistribute it and/or
-;;;; modify it under the terms of the GNU Lesser General Public
-;;;; License as published by the Free Software Foundation; either
-;;;; version 3 of the License, or (at your option) any later version.
-;;;;
-;;;; This library is distributed in the hope that it will be useful,
-;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;;;; Lesser General Public License for more details.
-;;;;
-;;;; You should have received a copy of the GNU Lesser General Public
-;;;; License along with this library; if not, write to the Free Software
-;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
USA
-
-;;; Commentary:
-;;;
-;;; Constructor inlining turns "list" primcalls into a series of conses,
-;;; and does similar transformations for "vector".
-;;;
-;;; Code:
-
-(define-module (language cps constructors)
- #:use-module (ice-9 match)
- #:use-module (language cps)
- #:use-module (language cps utils)
- #:use-module (language cps with-cps)
- #:use-module (language cps intmap)
- #:export (inline-constructors))
-
-(define (inline-list out k src args)
- (define (build-list out args k)
- (match args
- (()
- (with-cps out
- (build-term ($continue k src ($const '())))))
- ((arg . args)
- (with-cps out
- (letv tail)
- (letk ktail ($kargs ('tail) (tail)
- ($continue k src
- ($primcall 'cons #f (arg tail)))))
- ($ (build-list args ktail))))))
- (with-cps out
- (letv val)
- (letk kvalues ($kargs ('val) (val)
- ($continue k src
- ($primcall 'values #f (val)))))
- ($ (build-list args kvalues))))
-
-(define (inline-vector out k src args)
- (define (initialize out vec args n)
- (match args
- (()
- (with-cps out
- (build-term ($continue k src ($primcall 'values #f (vec))))))
- ((arg . args)
- (with-cps out
- (let$ next (initialize vec args (1+ n)))
- (letk knext ($kargs () () ,next))
- (build-term
- ($continue knext src
- ($primcall 'vector-set!/immediate n (vec arg))))))))
- (with-cps out
- (letv vec)
- (let$ body (initialize vec args 0))
- (letk kalloc ($kargs ('vec) (vec) ,body))
- ($ (with-cps-constants ((init #f))
- (build-term
- ($continue kalloc src
- ($primcall 'make-vector/immediate (length args) (init))))))))
-
-(define (find-constructor-inliner name)
- (match name
- ('list inline-list)
- ('vector inline-vector)
- (_ #f)))
-
-(define (inline-constructors conts)
- (with-fresh-name-state conts
- (persistent-intmap
- (intmap-fold
- (lambda (label cont out)
- (match cont
- (($ $kargs names vars ($ $continue k src ($ $primcall name #f args)))
- (let ((inline (find-constructor-inliner name)))
- (if inline
- (call-with-values (lambda () (inline out k src args))
- (lambda (out term)
- (intmap-replace! out label
- (build-cont ($kargs names vars ,term)))))
- out)))
- (_ out)))
- conts
- conts))))
diff --git a/module/language/cps/optimize.scm b/module/language/cps/optimize.scm
index afd21a5..8914356 100644
--- a/module/language/cps/optimize.scm
+++ b/module/language/cps/optimize.scm
@@ -24,7 +24,6 @@
(define-module (language cps optimize)
#:use-module (ice-9 match)
- #:use-module (language cps constructors)
#:use-module (language cps contification)
#:use-module (language cps cse)
#:use-module (language cps devirtualize-integers)
@@ -93,7 +92,6 @@
(prune-top-level-scopes #:prune-top-level-scopes? #t)
(simplify #:simplify? #t)
(contify #:contify? #t)
- (inline-constructors #:inline-constructors? #t)
(prune-bailouts #:prune-bailouts? #t)
(simplify #:simplify? #t)
(devirtualize-integers #:devirtualize-integers? #t)
@@ -121,7 +119,6 @@
#:eliminate-dead-code? #t
#:prune-top-level-scopes? #t
#:contify? #t
- #:inline-constructors? #t
#:specialize-primcalls? #t
#:prune-bailouts? #t
#:peel-loops? #t
- [Guile-commits] 06/16: Refactor reify-primitives pass, (continued)
- [Guile-commits] 06/16: Refactor reify-primitives pass, Andy Wingo, 2017/12/27
- [Guile-commits] 08/16: Flesh out compile-bytecode for all heap objects, Andy Wingo, 2017/12/27
- [Guile-commits] 15/16: Unknown primcalls convert as calls, Andy Wingo, 2017/12/27
- [Guile-commits] 13/16: Contification also inlines "elide-values" pass, Andy Wingo, 2017/12/27
- [Guile-commits] 10/16: CPS conversion expands "list", Andy Wingo, 2017/12/27
- [Guile-commits] 11/16: Inline "elide-values" optimization into CPS conversion, Andy Wingo, 2017/12/27
- [Guile-commits] 09/16: Refactor lowering of Tree-IL primcalls to CPS, Andy Wingo, 2017/12/27
- [Guile-commits] 16/16: Re-add support for logbit?, Andy Wingo, 2017/12/27
- [Guile-commits] 03/16: Refactor boxing/unboxing primcall args/results, Andy Wingo, 2017/12/27
- [Guile-commits] 02/16: Fix mismatch between CPS and Scheme "complex?" predicate, Andy Wingo, 2017/12/27
- [Guile-commits] 14/16: Remove inline-constructors pass,
Andy Wingo <=