diff options
Diffstat (limited to 'module/system/repl/common.scm')
-rw-r--r-- | module/system/repl/common.scm | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/module/system/repl/common.scm b/module/system/repl/common.scm index a5267c616..718cc0b8c 100644 --- a/module/system/repl/common.scm +++ b/module/system/repl/common.scm @@ -24,12 +24,14 @@ #:use-module (system base language) #:use-module (system base message) #:use-module (system vm program) + #:autoload (language tree-il optimize) (optimize!) #:use-module (ice-9 control) #:use-module (ice-9 history) #:export (<repl> make-repl repl-language repl-options repl-tm-stats repl-gc-stats repl-debug repl-welcome repl-prompt repl-read repl-compile repl-prepare-eval-thunk repl-eval + repl-expand repl-optimize repl-parse repl-print repl-option-ref repl-option-set! repl-default-option-set! repl-default-prompt-set! puts ->string user-error @@ -169,6 +171,22 @@ See <http://www.gnu.org/licenses/lgpl.html>, for more details.") (compile form #:from from #:to 'objcode #:opts opts #:env (current-module)))) +(define (repl-expand repl form) + (let ((from (repl-language repl)) + (opts (repl-compile-options repl))) + (decompile (compile form #:from from #:to 'tree-il #:opts opts + #:env (current-module)) + #:from 'tree-il #:to from))) + +(define (repl-optimize repl form) + (let ((from (repl-language 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))) + (define (repl-parse repl form) (let ((parser (language-parser (repl-language repl)))) (if parser (parser form) form))) |