1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-17 20:42:26 +02:00

*** empty log message ***

This commit is contained in:
Keisuke Nishida 2001-04-06 23:15:53 +00:00
parent 15df344720
commit 4bfb26f58f
9 changed files with 595 additions and 560 deletions

View file

@ -21,14 +21,60 @@
(define-module (system vm core))
;;;
;;; Core procedures
;;;
(dynamic-call "scm_init_vm" (dynamic-link "libguilevm.so"))
(export vms:cons vms:time vms:clock)
(define (vms:time stat) (vector-ref stat 0))
(define (vms:clock stat) (vector-ref stat 1))
(module-export! (current-module)
(delq! '%module-public-interface
(hash-fold (lambda (k v d) (cons k d)) '()
(module-obarray (current-module)))))
;;;
;;; Bootcode interface
;;;
(export make-bootcode bootcode? bootcode-version
bootcode-nlocs bootcode-nexts bootcode-bytecode)
(define *bootcode-cookie* (string-append "\0GBC-" (vm-version)))
(define (make-bootcode nlocs nexts bytes)
(string-append *bootcode-cookie*
(integer->bytes nlocs)
(integer->bytes nexts)
bytes))
(define (bootcode? x)
(and (string? x)
(> (string-length x) 10)
(string=? (substring x 1 4) "GBC")))
(define (bootcode-version x)
(substring x 5 8))
(define (bootcode-nlocs x)
(bytes->integer x 8))
(define (bootcode-nexts x)
(bytes->integer x 9))
(define (bootcode-bytecode x)
(substring x 10))
(define (integer->bytes n)
(string (integer->char n)))
(define (bytes->integer bytes start)
(char->integer (string-ref bytes start)))
;;;
;;; Statistics interface
;;;
(export vms:time vms:clock)
(define (vms:time stat) (vector-ref stat 0))
(define (vms:clock stat) (vector-ref stat 1))