[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] branch master updated: Fix , optimize to be independent
From: |
Andy Wingo |
Subject: |
[Guile-commits] branch master updated: Fix , optimize to be independent of tree-il |
Date: |
Thu, 14 May 2020 03:18:21 -0400 |
This is an automated email from the git hooks/post-receive script.
wingo pushed a commit to branch master
in repository guile.
The following commit(s) were added to refs/heads/master by this push:
new 033a67d Fix ,optimize to be independent of tree-il
033a67d is described below
commit 033a67d5750759aeae0a49b4ef8f7499cfdf5818
Author: Andy Wingo <address@hidden>
AuthorDate: Thu May 14 09:13:51 2020 +0200
Fix ,optimize to be independent of tree-il
* module/system/repl/common.scm (repl-default-options): Add
optimization-level and warning-level REPL options.
(repl-optimization-level, repl-warning-level): New accessors,
defaulting to the default level parameters.
(repl-expand): Take target language as keyword argument rather than
hard-coding tree-il.
(repl-optimize): Take target language as keyword argument. Use REPL
optimization and warning levels. Use generic lowering interface.
---
module/system/repl/common.scm | 44 +++++++++++++++++++++++++++++++++----------
1 file changed, 34 insertions(+), 10 deletions(-)
diff --git a/module/system/repl/common.scm b/module/system/repl/common.scm
index 2106754..d487da8 100644
--- a/module/system/repl/common.scm
+++ b/module/system/repl/common.scm
@@ -25,7 +25,6 @@
#:use-module (system base message)
#:use-module (system vm program)
#:use-module (system vm loader)
- #:autoload (language tree-il optimize) (optimize)
#:use-module (ice-9 control)
#:use-module (ice-9 history)
#:export (<repl> make-repl repl-language repl-options
@@ -111,6 +110,14 @@ See <http://www.gnu.org/licenses/lgpl.html>, for more
details.")
(define repl-default-options
(copy-tree
`((compile-options ,%auto-compilation-options #f)
+ (optimization-level #f (lambda (x)
+ (unless (and (exact-integer? x) (<= 0 x 9))
+ (error "Invalid optimization level" x))
+ x))
+ (warning-level #f (lambda (x)
+ (unless (and (exact-integer? x) (<= 0 x 9))
+ (error "Invalid warning level" x))
+ x))
(trace #f #f)
(interp #f #f)
(prompt #f ,(lambda (prompt)
@@ -173,27 +180,44 @@ See <http://www.gnu.org/licenses/lgpl.html>, for more
details.")
(define (repl-compile-options repl)
(repl-option-ref repl 'compile-options))
+(define (repl-optimization-level repl)
+ (or (repl-option-ref repl 'optimization-level)
+ (default-optimization-level)))
+
+(define (repl-warning-level repl)
+ (or (repl-option-ref repl 'warning-level)
+ (default-warning-level)))
+
(define (repl-compile repl form)
(let ((from (repl-language repl))
(opts (repl-compile-options repl)))
(compile form #:from from #:to 'bytecode #:opts opts
+ #:optimization-level (repl-optimization-level repl)
+ #:warning-level (repl-warning-level repl)
#:env (current-module))))
-(define (repl-expand repl form)
+(define* (repl-expand repl form #:key (lang 'tree-il))
(let ((from (repl-language repl))
(opts (repl-compile-options repl)))
- (decompile (compile form #:from from #:to 'tree-il #:opts opts
+ (decompile (compile form #:from from #:to lang #:opts opts
#:env (current-module))
- #:from 'tree-il #:to from)))
+ #:from lang #:to from)))
-(define (repl-optimize repl form)
+(define* (repl-optimize repl form #:key (lang 'tree-il))
(let ((from (repl-language repl))
+ (make-lower (language-lowerer (lookup-language lang)))
+ (optimization-level (repl-optimization-level repl))
+ (warning-level (repl-warning-level repl))
(opts (repl-compile-options repl)))
- (decompile (optimize (compile form #:from from #:to 'tree-il #:opts opts
- #:env (current-module))
- (current-module)
- opts)
- #:from 'tree-il #:to from)))
+ (unless make-lower
+ (error "language has no optimizer" lang))
+ (decompile ((make-lower optimization-level opts)
+ (compile form #:from from #:to lang #:opts opts
+ #:optimization-level optimization-level
+ #:warning-level warning-level
+ #:env (current-module))
+ (current-module))
+ #:from lang #:to from)))
(define (repl-parse repl form)
(let ((parser (language-parser (repl-language repl))))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Guile-commits] branch master updated: Fix , optimize to be independent of tree-il,
Andy Wingo <=