diff --git a/am/bootstrap.am b/am/bootstrap.am index 1fd9bfcd4..139649bde 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 4a9c4f18c..535b5d8d3 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 c35ac7475..000000000 --- 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 afd21a5ab..8914356c8 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