mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-11 22:31:12 +02:00
call toplevel variables "toplevel", not "module"
* module/system/il/ghil.scm (ghil-var-for-set!, ghil-var-for-ref!) (ghil-var-define!): ghil-var-kind of a toplevel var is now 'toplevel. * module/system/il/glil.scm: Renamve <glil-module> to <glil-toplevel>. Remove the unused `module' field. Remove the unused <glil-late-bound> type. * module/system/il/compile.scm (make-glil-var): s/toplevel/module/ * module/system/vm/assemble.scm (<vlink-later>, <vdefine>): Remove the unused `module' parameters from these two types. (codegen, dump-object!): Adapt to module/toplevel name changes.
This commit is contained in:
parent
48d0006409
commit
a1122f8cba
4 changed files with 17 additions and 22 deletions
|
@ -122,8 +122,8 @@
|
|||
(e env (ghil-env-parent e)))
|
||||
((eq? e (ghil-var-env var))
|
||||
(make-glil-external op depth (ghil-var-index var)))))
|
||||
((module)
|
||||
(make-glil-module op (ghil-var-env var) (ghil-var-name var)))
|
||||
((toplevel)
|
||||
(make-glil-toplevel op (ghil-var-name var)))
|
||||
(else (error "Unknown kind of variable:" var))))
|
||||
|
||||
(define (constant? x)
|
||||
|
|
|
@ -205,7 +205,7 @@
|
|||
((<ghil-toplevel-env> table)
|
||||
(let ((key (cons (module-name (current-module)) sym)))
|
||||
(or (assoc-ref table key)
|
||||
(let ((var (make-ghil-var (car key) (cdr key) 'module)))
|
||||
(let ((var (make-ghil-var (car key) (cdr key) 'toplevel)))
|
||||
(apush! key var (ghil-toplevel-env-table e))
|
||||
var))))
|
||||
((<ghil-env> parent table variables)
|
||||
|
@ -224,7 +224,7 @@
|
|||
((<ghil-toplevel-env> table)
|
||||
(let ((key (cons (module-name (current-module)) sym)))
|
||||
(or (assoc-ref table key)
|
||||
(let ((var (make-ghil-var (car key) (cdr key) 'module)))
|
||||
(let ((var (make-ghil-var (car key) (cdr key) 'toplevel)))
|
||||
(apush! key var (ghil-toplevel-env-table e))
|
||||
var))))
|
||||
((<ghil-env> parent table variables)
|
||||
|
@ -239,7 +239,7 @@
|
|||
(define (ghil-var-define! toplevel sym)
|
||||
(let ((key (cons (module-name (current-module)) sym)))
|
||||
(or (assoc-ref (ghil-toplevel-env-table toplevel) key)
|
||||
(let ((var (make-ghil-var (car key) (cdr key) 'module)))
|
||||
(let ((var (make-ghil-var (car key) (cdr key) 'toplevel)))
|
||||
(apush! key var (ghil-toplevel-env-table toplevel))
|
||||
var))))
|
||||
|
||||
|
|
|
@ -54,11 +54,8 @@
|
|||
<glil-external> make-glil-external glil-external?
|
||||
glil-external-op glil-external-depth glil-external-index
|
||||
|
||||
<glil-module> make-glil-module glil-module?
|
||||
glil-module-op glil-module-module glil-module-index
|
||||
|
||||
<glil-late-bound> make-glil-late-bound glil-late-bound?
|
||||
glil-late-bound-op glil-late-bound-name
|
||||
<glil-toplevel> make-glil-toplevel glil-toplevel?
|
||||
glil-toplevel-op glil-toplevel-name
|
||||
|
||||
<glil-label> make-glil-label glil-label?
|
||||
glil-label-label
|
||||
|
@ -89,8 +86,7 @@
|
|||
(<glil-argument> op index)
|
||||
(<glil-local> op index)
|
||||
(<glil-external> op depth index)
|
||||
(<glil-module> op module name)
|
||||
(<glil-late-bound> op name)
|
||||
(<glil-toplevel> op name)
|
||||
;; Controls
|
||||
(<glil-label> label)
|
||||
(<glil-branch> inst label)
|
||||
|
@ -192,8 +188,8 @@
|
|||
`(,(symbol-append 'local- op) ,index))
|
||||
((<glil-external> op depth index)
|
||||
`(,(symbol-append 'external- op) ,depth ,index))
|
||||
((<glil-module> op module name)
|
||||
`(,(symbol-append 'module- op) ,module ,name))
|
||||
((<glil-toplevel> op name)
|
||||
`(,(symbol-append 'toplevel- op) ,name))
|
||||
;; controls
|
||||
((<glil-label> label) label)
|
||||
((<glil-branch> inst label) `(,inst ,label))
|
||||
|
|
|
@ -43,8 +43,8 @@
|
|||
(define-record (<vm-asm> venv glil body))
|
||||
(define-record (<venv> parent nexts closure?))
|
||||
(define-record (<vlink-now> name))
|
||||
(define-record (<vlink-later> module name))
|
||||
(define-record (<vdefine> module name))
|
||||
(define-record (<vlink-later> name))
|
||||
(define-record (<vdefine> name))
|
||||
(define-record (<bytespec> vars bytes meta objs closure?))
|
||||
|
||||
|
||||
|
@ -183,7 +183,7 @@
|
|||
(push-code! `(external-ref ,(+ n index)))
|
||||
(push-code! `(external-set ,(+ n index)))))))
|
||||
|
||||
((<glil-module> op module name)
|
||||
((<glil-toplevel> op name)
|
||||
(case op
|
||||
((ref set)
|
||||
(cond
|
||||
|
@ -193,7 +193,7 @@
|
|||
((ref) '(variable-ref))
|
||||
((set) '(variable-set)))))
|
||||
(else
|
||||
(let* ((var (make-vlink-later #:module module #:name name))
|
||||
(let* ((var (make-vlink-later #:name name))
|
||||
(i (cond ((object-assoc var object-alist) => cdr)
|
||||
(else
|
||||
(let ((i (length object-alist)))
|
||||
|
@ -203,7 +203,7 @@
|
|||
((ref) `(late-variable-ref ,i))
|
||||
((set) `(late-variable-set ,i))))))))
|
||||
((define)
|
||||
(push-object! (make-vdefine #:module module #:name name))
|
||||
(push-object! (make-vdefine #:name name))
|
||||
(push-code! '(variable-set)))
|
||||
(else
|
||||
(error "unknown toplevel var kind" op name))))
|
||||
|
@ -319,13 +319,12 @@
|
|||
(if meta (dump! meta))
|
||||
;; dump bytecode
|
||||
(push-code! `(load-program ,bytes)))
|
||||
((<vlink-later> module name)
|
||||
((<vlink-later> name)
|
||||
(dump! name))
|
||||
((<vlink-now> name)
|
||||
(dump! name)
|
||||
(push-code! '(link-now)))
|
||||
((<vdefine> module name)
|
||||
;; FIXME: dump module
|
||||
((<vdefine> name)
|
||||
(push-code! `(define ,(symbol->string name))))
|
||||
(else
|
||||
(error "assemble: unknown record type" (record-type-descriptor x)))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue