guile-commits
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]