From 731f329c29ff25a9431a84238c6e2c07c56e24aa Mon Sep 17 00:00:00 2001 From: Keisuke Nishida Date: Sat, 7 Apr 2001 10:16:48 +0000 Subject: [PATCH] *** empty log message *** --- module/system/repl/command.scm | 8 +++----- module/system/vm/trace.scm | 13 +++++++------ src/vm.h | 2 +- src/vm_engine.h | 8 +++++--- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/module/system/repl/command.scm b/module/system/repl/command.scm index 9a0e4329e..414c8fe06 100644 --- a/module/system/repl/command.scm +++ b/module/system/repl/command.scm @@ -301,11 +301,9 @@ Generate compiled code. -O Enable optimization -D Add debug information" (let ((x (apply repl-compile repl form opts))) - (cond ((null? opts) - (disassemble-bootcode x)) - ((memq :c opts) - (pprint-glil x)) - (else (puts x))))) + (cond ((or (memq :e opts) (memq :t opts)) (puts x)) + ((memq :c opts) (pprint-glil x)) + (else (disassemble-bootcode x))))) (define (compile-file repl file . opts) "compile-file [options] FILE diff --git a/module/system/vm/trace.scm b/module/system/vm/trace.scm index b703791a7..7d34df722 100644 --- a/module/system/vm/trace.scm +++ b/module/system/vm/trace.scm @@ -30,22 +30,23 @@ (dynamic-wind (lambda () (set-vm-option! vm 'trace-first #t) - (if (memq :b opts) - (add-hook! (vm-next-hook vm) trace-next)) + (if (memq :b opts) (add-hook! (vm-next-hook vm) trace-next)) + (set-vm-option! vm 'trace-variables (if (memq :v opts) #t #f)) (add-hook! (vm-apply-hook vm) trace-apply) (add-hook! (vm-return-hook vm) trace-return)) (lambda () (vm-load vm bytes)) (lambda () - (if (memq :b opts) - (remove-hook! (vm-next-hook vm) trace-next)) + (if (memq :b opts) (remove-hook! (vm-next-hook vm) trace-next)) (remove-hook! (vm-apply-hook vm) trace-apply) (remove-hook! (vm-return-hook vm) trace-return)))) (define (trace-next vm) (let ((frame (vm-current-frame vm))) - (format #t "0x~8X ~20S~S\n" - (vm:ip vm) (vm-fetch-code vm) (vm-fetch-stack vm)))) + (format #t "0x~8X ~20S" (vm:ip vm) (vm-fetch-code vm)) + (if (vm-option vm 'trace-variables) + (format #t "~S\t" (frame-variables frame))) + (format #t "~S\n" (vm-fetch-stack vm)))) (define (trace-apply vm) (if (vm-option vm 'trace-first) diff --git a/src/vm.h b/src/vm.h index 23d13ecc6..f98cc772d 100644 --- a/src/vm.h +++ b/src/vm.h @@ -82,7 +82,7 @@ (SCM_VM_FRAME_DATA_ADDRESS (fp) + 2) #define SCM_VM_FRAME_DYNAMIC_LINK(fp) SCM_VM_FRAME_DATA_ADDRESS (fp)[1] -#define SCM_VM_FRAME_RETURN_ADDRESS(fp) SCM_VM_FRAME_DATA_ADDRESS (fp)[2] +#define SCM_VM_FRAME_RETURN_ADDRESS(fp) SCM_VM_FRAME_DATA_ADDRESS (fp)[0] #define SCM_VM_FRAME_VARIABLE(fp,i) fp[i] #define SCM_VM_FRAME_PROGRAM(fp) fp[-1] diff --git a/src/vm_engine.h b/src/vm_engine.h index 6bcf68655..f9dd099f3 100644 --- a/src/vm_engine.h +++ b/src/vm_engine.h @@ -276,12 +276,14 @@ do { \ #define NEW_FRAME() \ { \ - sp[1] = SCM_VM_MAKE_BYTE_ADDRESS (ip); \ - sp[2] = SCM_VM_MAKE_STACK_ADDRESS (fp); \ + SCM ra = SCM_VM_MAKE_BYTE_ADDRESS (ip); \ + SCM dl = SCM_VM_MAKE_STACK_ADDRESS (fp); \ ip = bp->base; \ fp = sp - bp->nargs + 1; \ - sp = sp + 2; \ + sp = sp + bp->nlocs + 2; \ CHECK_OVERFLOW (); \ + sp[0] = dl; \ + sp[-1] = ra; \ } #define FREE_FRAME() \