call toplevel variables "toplevel", not "module"
authorAndy Wingo <wingo@pobox.com>
Mon, 29 Sep 2008 21:20:10 +0000 (23:20 +0200)
committerAndy Wingo <wingo@pobox.com>
Mon, 29 Sep 2008 21:20:10 +0000 (23:20 +0200)
* 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.

module/system/il/compile.scm
module/system/il/ghil.scm
module/system/il/glil.scm
module/system/vm/assemble.scm

index fee5bd5..261b936 100644 (file)
          (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)
index 5d6e67a..b0bac0f 100644 (file)
       ((<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)
       ((<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)
 (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))))
           
index 5c42a2a..48470a2 100644 (file)
    <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)
      `(,(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))
index f5fac6e..c5ca46f 100644 (file)
@@ -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?))
 
 \f
                     (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
                                ((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)))
                                  ((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))))
         (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)))))