diff --git a/geiser-0.8.1.orig/scheme/guile/geiser/evaluation.scm b/geiser-0.8.1/scheme/guile/geiser/evaluation.scm index 4c87532..5086029 100644 --- a/geiser-0.8.1.orig/scheme/guile/geiser/evaluation.scm +++ b/geiser-0.8.1/scheme/guile/geiser/evaluation.scm @@ -65,20 +65,26 @@ (define (ge:compile form module) (compile* form module compile-opts)) -(define (compile* form module-name opts) - (let* ((module (or (find-module module-name) (current-module))) - (ev (lambda () - (call-with-values - (lambda () - (let* ((o (compile form - #:to 'objcode - #:env module - #:opts opts)) - (thunk (make-program o))) - (start-stack 'geiser-evaluation-stack - (eval `(,thunk) module)))) - (lambda vs vs))))) - (call-with-result ev))) +(define compile* + (let* ((v22 (string= "2.2" (effective-version))) + (to-code (if v22 'bytecode 'objcode)) + (make-thunk (if v22 + (@ (system vm loader) load-thunk-from-memory) + make-program))) + (lambda (form module-name opts) + (let* ((module (or (find-module module-name) (current-module))) + (ev (lambda () + (call-with-values + (lambda () + (let* ((o (compile form + #:to to-code + #:env module + #:opts opts)) + (thunk (make-thunk o))) + (start-stack 'geiser-evaluation-stack + (eval `(,thunk) module)))) + (lambda vs vs))))) + (call-with-result ev))))) (define (ge:eval form module-name) (let* ((module (or (find-module module-name) (current-module)))