mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-02 13:00:26 +02:00
types.scm (env-variable-address): Reverted the last change.
This commit is contained in:
parent
307cdcf0d0
commit
fd329e8725
1 changed files with 10 additions and 5 deletions
15
vm/types.scm
15
vm/types.scm
|
@ -271,14 +271,19 @@
|
||||||
(define (get-offset obj list)
|
(define (get-offset obj list)
|
||||||
(- (length list) (length (memq obj list))))
|
(- (length list) (length (memq obj list))))
|
||||||
|
|
||||||
(define-generic env-variable-address)
|
(define-public (env-variable-address env var)
|
||||||
|
|
||||||
(define-method (env-variable-address (env <vm:env>) (var <vm:local-var>))
|
|
||||||
(env-finalize! env)
|
(env-finalize! env)
|
||||||
|
(cond ((local-variable? var)
|
||||||
|
(env-local-variable-address env var))
|
||||||
|
((external-variable? var)
|
||||||
|
(env-external-variable-address env var))
|
||||||
|
(else
|
||||||
|
(error "Wrong type argument: ~S" var))))
|
||||||
|
|
||||||
|
(define (env-local-variable-address env var)
|
||||||
(get-offset (variable-location var) (env-locations env)))
|
(get-offset (variable-location var) (env-locations env)))
|
||||||
|
|
||||||
(define-method (env-variable-address (env <vm:env>) (var <vm:external-var>))
|
(define (env-external-variable-address env var)
|
||||||
(env-finalize! env)
|
|
||||||
(let loop ((depth 0) (env env))
|
(let loop ((depth 0) (env env))
|
||||||
(let ((list (env-externals env)))
|
(let ((list (env-externals env)))
|
||||||
(cond ((null? list)
|
(cond ((null? list)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue