summaryrefslogtreecommitdiff
path: root/module/language/objcode/spec.scm
diff options
context:
space:
mode:
Diffstat (limited to 'module/language/objcode/spec.scm')
-rw-r--r--module/language/objcode/spec.scm22
1 files changed, 7 insertions, 15 deletions
diff --git a/module/language/objcode/spec.scm b/module/language/objcode/spec.scm
index 42110271d..9837c5c1c 100644
--- a/module/language/objcode/spec.scm
+++ b/module/language/objcode/spec.scm
@@ -22,25 +22,17 @@
#:use-module (system base language)
#:use-module (system vm objcode)
#:use-module (system vm program)
- #:export (objcode make-objcode-env))
-
-(define (make-objcode-env module externals)
- (cons module externals))
-
-(define (objcode-env-module env)
- (if env (car env) (current-module)))
-
-(define (objcode-env-externals env)
- (and env (vector? (cdr env)) (cdr env)))
+ #:export (objcode))
(define (objcode->value x e opts)
- (let ((thunk (make-program x #f (objcode-env-externals e))))
- (if e
+ (let ((thunk (make-program x #f #f)))
+ (if (eq? e (current-module))
+ ;; save a cons in this case
+ (values (thunk) e e)
(save-module-excursion
(lambda ()
- (set-current-module (objcode-env-module e))
- (values (thunk) #f e)))
- (values (thunk) #f e))))
+ (set-current-module e)
+ (values (thunk) e e))))))
;; since locals are allocated on the stack and can have limited scope,
;; in many cases we use one local for more than one lexical variable. so