From fd329e8725074966ca5866352f3fd8ebecd5135a Mon Sep 17 00:00:00 2001 From: Keisuke Nishida Date: Tue, 22 Aug 2000 17:39:49 +0000 Subject: [PATCH] types.scm (env-variable-address): Reverted the last change. --- vm/types.scm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/vm/types.scm b/vm/types.scm index cc8c4aff8..a06c3d18e 100644 --- a/vm/types.scm +++ b/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 ) (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 ) (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)