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)
|
||||
(- (length list) (length (memq obj list))))
|
||||
|
||||
(define-generic env-variable-address)
|
||||
|
||||
(define-method (env-variable-address (env <vm:env>) (var <vm:local-var>))
|
||||
(define-public (env-variable-address env var)
|
||||
(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)))
|
||||
|
||||
(define-method (env-variable-address (env <vm:env>) (var <vm:external-var>))
|
||||
(env-finalize! env)
|
||||
(define (env-external-variable-address env var)
|
||||
(let loop ((depth 0) (env env))
|
||||
(let ((list (env-externals env)))
|
||||
(cond ((null? list)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue