Add label argument to all interpreter calls for the C back-end.
authorGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Mon, 9 Nov 1992 18:50:24 +0000 (18:50 +0000)
committerGuillermo J. Rozas <edu/mit/csail/zurich/gjr>
Mon, 9 Nov 1992 18:50:24 +0000 (18:50 +0000)
12 files changed:
v7/src/compiler/machines/alpha/rules4.scm
v7/src/compiler/machines/bobcat/rules4.scm
v7/src/compiler/machines/i386/rules4.scm
v7/src/compiler/machines/mips/rules4.scm
v7/src/compiler/machines/spectrum/rules4.scm
v7/src/compiler/machines/vax/rules4.scm
v7/src/compiler/rtlbase/rtlcon.scm
v7/src/compiler/rtlbase/rtlty1.scm
v7/src/compiler/rtlgen/rgproc.scm
v7/src/compiler/rtlgen/rgrval.scm
v7/src/compiler/rtlgen/rgstmt.scm
v7/src/compiler/rtlgen/rtlgen.scm

index d70e303e42d287a29c2b54b5c11728aca1919772..8ac7e7de47796f0eee4a193cf959da0d4860652e 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: rules4.scm,v 1.1 1992/08/29 13:51:32 jinx Exp $
+$Id: rules4.scm,v 1.2 1992/11/09 18:50:24 jinx Exp $
 
 Copyright (c) 1992 Digital Equipment Corporation (D.E.C.)
 
@@ -40,26 +40,69 @@ case.
 
 (declare (usual-integrations))
 \f
+;;;; Variable cache trap handling.
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-REFERENCE (? cont)
+                                   (REGISTER (? extension))
+                                   (? safe?))
+  cont                                 ; ignored
+  (LAP ,@(load-interface-args! false extension false false)
+       ,@(link-to-interface
+         (if safe?
+             code:compiler-safe-reference-trap
+             code:compiler-reference-trap))))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-ASSIGNMENT (? cont)
+                                    (REGISTER (? extension))
+                                    (? value register-expression))
+  cont                                 ; ignored
+  (LAP ,@(load-interface-args! false extension value false)
+       ,@(link-to-interface code:compiler-assignment-trap)))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-UNASSIGNED? (? cont)
+                                     (REGISTER (? extension)))
+  cont                                 ; ignored
+  (LAP ,@(load-interface-args! false extension false false)
+       ,@(link-to-interface code:compiler-unassigned?-trap)))
+\f
 ;;;; Interpreter Calls
 
+;;; All the code that follows is obsolete.  It hasn't been used in a while.
+;;; It is provided in case the relevant switches are turned off, but there
+;;; is no real reason to do this.  Perhaps the switches should be removed.
+
 (define-rule statement
-  (INTERPRETER-CALL:ACCESS (? environment register-expression) (? name))
+  (INTERPRETER-CALL:ACCESS (? cont)
+                          (? environment register-expression)
+                          (? name))
+  cont                                 ; ignored
   (lookup-call code:compiler-access environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:LOOKUP (? environment register-expression)
+  (INTERPRETER-CALL:LOOKUP (? cont)
+                          (? environment register-expression)
                           (? name)
                           (? safe?))
+  cont                                 ; ignored
   (lookup-call (if safe? code:compiler-safe-lookup code:compiler-lookup)
               environment
               name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNASSIGNED? (? environment register-expression) (? name))
+  (INTERPRETER-CALL:UNASSIGNED? (? cont)
+                               (? environment register-expression)
+                               (? name))
+  cont                                 ; ignored
   (lookup-call code:compiler-unassigned? environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNBOUND? (? environment register-expression) (? name))
+  (INTERPRETER-CALL:UNBOUND? (? cont)
+                            (? environment register-expression)
+                            (? name))
+  cont                                 ; ignored
   (lookup-call code:compiler-unbound? environment name))
 
 (define (lookup-call code environment name)
@@ -68,37 +111,22 @@ case.
        ,@(link-to-interface code)))
 
 (define-rule statement
-  (INTERPRETER-CALL:DEFINE (? environment register-expression)
+  (INTERPRETER-CALL:DEFINE (? cont)
+                          (? environment register-expression)
                           (? name)
                           (? value register-expression))
+  cont                                 ; ignored
   (assignment-call code:compiler-define environment name value))
 
 (define-rule statement
-  (INTERPRETER-CALL:SET! (? environment register-expression)
+  (INTERPRETER-CALL:SET! (? cont)
+                        (? environment register-expression)
                         (? name)
                         (? value register-expression))
+  cont                                 ; ignored
   (assignment-call code:compiler-set! environment name value))
 
 (define (assignment-call code environment name value)
   (LAP ,@(load-interface-args! false environment false value)
        ,@(load-constant regnum:third-arg name #F #F)
-       ,@(link-to-interface code)))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-REFERENCE (REGISTER (? extension)) (? safe?))
-  (LAP ,@(load-interface-args! false extension false false)
-       ,@(link-to-interface
-         (if safe?
-             code:compiler-safe-reference-trap
-             code:compiler-reference-trap))))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-ASSIGNMENT (REGISTER (? extension))
-                                    (? value register-expression))
-  (LAP ,@(load-interface-args! false extension value false)
-       ,@(link-to-interface code:compiler-assignment-trap)))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-UNASSIGNED? (REGISTER (? extension)))
-  (LAP ,@(load-interface-args! false extension false false)
-       ,@(link-to-interface code:compiler-unassigned?-trap)))
\ No newline at end of file
+       ,@(link-to-interface code)))
\ No newline at end of file
index f54ec0cf233eed844cbbd3e38c0cce955000f656..79f3d85143a8d2256c3c239e643dccc7926b4f6e 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/rules4.scm,v 4.12 1990/05/03 15:17:38 jinx Rel $
+$Id: rules4.scm,v 4.13 1992/11/09 18:46:07 jinx Exp $
 
-Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -33,11 +33,56 @@ promotional, or sales literature without prior written consent from
 MIT in each case. |#
 
 ;;;; LAP Generation Rules: Interpreter Calls
+;;; package: (compiler lap-syntaxer)
 
 (declare (usual-integrations))
 \f
+;;;; Variable cache trap handling.
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-REFERENCE (? cont) (? extension) (? safe?))
+  (QUALIFIER (interpreter-call-argument? extension))
+  cont                                 ; ignored
+  (let ((set-extension
+        (interpreter-call-argument->machine-register! extension d2)))
+    (let ((clear-map (clear-map!)))
+      (LAP ,@set-extension
+          ,@clear-map
+          (JSR ,(if safe?
+                    entry:compiler-safe-reference-trap
+                    entry:compiler-reference-trap))))))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-ASSIGNMENT (? cont) (? extension) (? value))
+  (QUALIFIER (and (interpreter-call-argument? extension)
+                 (interpreter-call-argument? value)))
+  cont                                 ; ignored
+  (let ((set-extension
+        (interpreter-call-argument->machine-register! extension d2)))
+    (let ((set-value (interpreter-call-argument->machine-register! value d3)))
+      (let ((clear-map (clear-map!)))
+       (LAP ,@set-extension
+            ,@set-value
+            ,@clear-map
+            (JSR ,entry:compiler-assignment-trap))))))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-UNASSIGNED? (? cont) (? extension))
+  (QUALIFIER (interpreter-call-argument? extension))
+  cont                                 ; ignored
+  (let ((set-extension
+        (interpreter-call-argument->machine-register! extension d2)))
+    (let ((clear-map (clear-map!)))
+      (LAP ,@set-extension
+          ,@clear-map
+          ,@(invoke-interface-jsr code:compiler-unassigned?-trap)))))
+\f
 ;;;; Interpreter Calls
 
+;;; All the code that follows is obsolete.  It hasn't been used in a while.
+;;; It is provided in case the relevant switches are turned off, but there
+;;; is no real reason to do this.  Perhaps the switches should be removed.
+
 (define (interpreter-call-argument? expression)
   (or (rtl:register? expression)
       (rtl:constant? expression)
@@ -70,24 +115,28 @@ MIT in each case. |#
        (error "Unknown expression type" (car expression))))))
 
 (define-rule statement
-  (INTERPRETER-CALL:ACCESS (? environment) (? name))
+  (INTERPRETER-CALL:ACCESS (? cont) (? environment) (? name))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call code:compiler-access environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:LOOKUP (? environment) (? name) (? safe?))
+  (INTERPRETER-CALL:LOOKUP (? cont) (? environment) (? name) (? safe?))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call (if safe? code:compiler-safe-lookup code:compiler-lookup)
               environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNASSIGNED? (? environment) (? name))
+  (INTERPRETER-CALL:UNASSIGNED? (? cont) (? environment) (? name))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call code:compiler-unassigned? environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNBOUND? (? environment) (? name))
+  (INTERPRETER-CALL:UNBOUND? (? cont) (? environment) (? name))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call code:compiler-unbound? environment name))
 
 (define (lookup-call code environment name)
@@ -100,15 +149,17 @@ MIT in each case. |#
           ,@(invoke-interface-jsr code)))))
 \f
 (define-rule statement
-  (INTERPRETER-CALL:DEFINE (? environment) (? name) (? value))
+  (INTERPRETER-CALL:DEFINE (? cont) (? environment) (? name) (? value))
   (QUALIFIER (and (interpreter-call-argument? environment)
                  (interpreter-call-argument? value)))
+  cont                                 ; ignored
   (assignment-call code:compiler-define environment name value))
 
 (define-rule statement
-  (INTERPRETER-CALL:SET! (? environment) (? name) (? value))
+  (INTERPRETER-CALL:SET! (? cont) (? environment) (? name) (? value))
   (QUALIFIER (and (interpreter-call-argument? environment)
                  (interpreter-call-argument? value)))
+  cont                                 ; ignored
   (assignment-call code:compiler-set! environment name value))
 
 (define (assignment-call code environment name value)
@@ -120,39 +171,4 @@ MIT in each case. |#
             ,@set-value
             ,@clear-map
             ,@(load-constant name (INST-EA (D 3)))
-            ,@(invoke-interface-jsr code))))))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-REFERENCE (? extension) (? safe?))
-  (QUALIFIER (interpreter-call-argument? extension))
-  (let ((set-extension
-        (interpreter-call-argument->machine-register! extension d2)))
-    (let ((clear-map (clear-map!)))
-      (LAP ,@set-extension
-          ,@clear-map
-          (JSR ,(if safe?
-                    entry:compiler-safe-reference-trap
-                    entry:compiler-reference-trap))))))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-ASSIGNMENT (? extension) (? value))
-  (QUALIFIER (and (interpreter-call-argument? extension)
-                 (interpreter-call-argument? value)))
-  (let ((set-extension
-        (interpreter-call-argument->machine-register! extension d2)))
-    (let ((set-value (interpreter-call-argument->machine-register! value d3)))
-      (let ((clear-map (clear-map!)))
-       (LAP ,@set-extension
-            ,@set-value
-            ,@clear-map
-            (JSR ,entry:compiler-assignment-trap))))))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-UNASSIGNED? (? extension))
-  (QUALIFIER (interpreter-call-argument? extension))
-  (let ((set-extension
-        (interpreter-call-argument->machine-register! extension d2)))
-    (let ((clear-map (clear-map!)))
-      (LAP ,@set-extension
-          ,@clear-map
-          ,@(invoke-interface-jsr code:compiler-unassigned?-trap)))))
\ No newline at end of file
+            ,@(invoke-interface-jsr code))))))
\ No newline at end of file
index 6c05810cfeac82fd819256588cf4e5c97c83a678..9091e6e6014d6229c6ff828c2f431550152edde3 100644 (file)
@@ -1,7 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/i386/rules4.scm,v 1.6 1992/02/28 20:23:57 jinx Exp $
-$mc68020-Header: rules4.scm,v 4.12 90/05/03 15:17:38 GMT jinx Exp $
+$Id: rules4.scm,v 1.7 1992/11/09 18:47:02 jinx Exp $
 
 Copyright (c) 1992 Massachusetts Institute of Technology
 
@@ -38,27 +37,81 @@ MIT in each case. |#
 
 (declare (usual-integrations))
 \f
+;;;; Variable cache trap handling.
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-REFERENCE (? cont) (? extension) (? safe?))
+  (QUALIFIER (interpreter-call-argument? extension))
+  cont                                 ; ignored
+  (let ((set-extension
+        (interpreter-call-argument->machine-register! extension edx)))
+    (LAP ,@set-extension
+        ,@(clear-map!)
+        #|
+        ,@(invoke-interface/call
+           (if safe?
+               code:compiler-safe-reference-trap
+               code:compiler-reference-trap))
+        |#
+        ,@(invoke-hook/call (if safe?
+                                entry:compiler-safe-reference-trap
+                                entry:compiler-reference-trap)))))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-ASSIGNMENT (? cont) (? extension) (? value))
+  (QUALIFIER (and (interpreter-call-argument? extension)
+                 (interpreter-call-argument? value)))
+  cont                                 ; ignored
+  (let* ((set-extension
+         (interpreter-call-argument->machine-register! extension edx))
+        (set-value (interpreter-call-argument->machine-register! value ebx)))
+    (LAP ,@set-extension
+        ,@set-value
+        ,@(clear-map!)
+        #|
+        ,@(invoke-interface/call code:compiler-assignment-trap)
+        |#
+        ,@(invoke-hook/call entry:compiler-assignment-trap))))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-UNASSIGNED? (? cont) (? extension))
+  (QUALIFIER (interpreter-call-argument? extension))
+  cont                                 ; ignored
+  (let ((set-extension
+        (interpreter-call-argument->machine-register! extension edx)))
+    (LAP ,@set-extension
+        ,@(clear-map!)
+        ,@(invoke-interface/call code:compiler-unassigned?-trap))))
+\f
 ;;;; Interpreter Calls
 
+;;; All the code that follows is obsolete.  It hasn't been used in a while.
+;;; It is provided in case the relevant switches are turned off, but there
+;;; is no real reason to do this.  Perhaps the switches should be removed.
+
 (define-rule statement
-  (INTERPRETER-CALL:ACCESS (? environment) (? name))
+  (INTERPRETER-CALL:ACCESS (? cont) (? environment) (? name))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call code:compiler-access environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:LOOKUP (? environment) (? name) (? safe?))
+  (INTERPRETER-CALL:LOOKUP (? cont) (? environment) (? name) (? safe?))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call (if safe? code:compiler-safe-lookup code:compiler-lookup)
               environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNASSIGNED? (? environment) (? name))
+  (INTERPRETER-CALL:UNASSIGNED? (? cont) (? environment) (? name))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call code:compiler-unassigned? environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNBOUND? (? environment) (? name))
+  (INTERPRETER-CALL:UNBOUND? (? cont) (? environment) (? name))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call code:compiler-unbound? environment name))
 
 (define (lookup-call code environment name)
@@ -70,15 +123,17 @@ MIT in each case. |#
         ,@(invoke-interface/call code))))
 \f
 (define-rule statement
-  (INTERPRETER-CALL:DEFINE (? environment) (? name) (? value))
+  (INTERPRETER-CALL:DEFINE (? cont) (? environment) (? name) (? value))
   (QUALIFIER (and (interpreter-call-argument? environment)
                  (interpreter-call-argument? value)))
+  cont                                 ; ignored
   (assignment-call code:compiler-define environment name value))
 
 (define-rule statement
-  (INTERPRETER-CALL:SET! (? environment) (? name) (? value))
+  (INTERPRETER-CALL:SET! (? cont) (? environment) (? name) (? value))
   (QUALIFIER (and (interpreter-call-argument? environment)
                  (interpreter-call-argument? value)))
+  cont                                 ; ignored
   (assignment-call code:compiler-set! environment name value))
 
 (define (assignment-call code environment name value)
@@ -90,45 +145,4 @@ MIT in each case. |#
         ,@(clear-map!)
         (MOV W ,reg:utility-arg-4 (R ,eax))
         ,@(load-constant (INST-EA (R ,ebx)) name)
-        ,@(invoke-interface/call code))))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-REFERENCE (? extension) (? safe?))
-  (QUALIFIER (interpreter-call-argument? extension))
-  (let ((set-extension
-        (interpreter-call-argument->machine-register! extension edx)))
-    (LAP ,@set-extension
-        ,@(clear-map!)
-        #|
-        ,@(invoke-interface/call
-           (if safe?
-               code:compiler-safe-reference-trap
-               code:compiler-reference-trap))
-        |#
-        ,@(invoke-hook/call (if safe?
-                                entry:compiler-safe-reference-trap
-                                entry:compiler-reference-trap)))))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-ASSIGNMENT (? extension) (? value))
-  (QUALIFIER (and (interpreter-call-argument? extension)
-                 (interpreter-call-argument? value)))
-  (let* ((set-extension
-         (interpreter-call-argument->machine-register! extension edx))
-        (set-value (interpreter-call-argument->machine-register! value ebx)))
-    (LAP ,@set-extension
-        ,@set-value
-        ,@(clear-map!)
-        #|
-        ,@(invoke-interface/call code:compiler-assignment-trap)
-        |#
-        ,@(invoke-hook/call entry:compiler-assignment-trap))))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-UNASSIGNED? (? extension))
-  (QUALIFIER (interpreter-call-argument? extension))
-  (let ((set-extension
-        (interpreter-call-argument->machine-register! extension edx)))
-    (LAP ,@set-extension
-        ,@(clear-map!)
-        ,@(invoke-interface/call code:compiler-unassigned?-trap))))
\ No newline at end of file
+        ,@(invoke-interface/call code))))
\ No newline at end of file
index 0407a50251a14eed22761e844804f9d216f13925..7e07af13b61e9db3906edc4f8087938281a2cea6 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/rules4.scm,v 1.2 1991/10/25 00:13:33 cph Exp $
+$Id: rules4.scm,v 1.3 1992/11/09 18:47:45 jinx Exp $
 
-Copyright (c) 1988-91 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -33,29 +33,73 @@ promotional, or sales literature without prior written consent from
 MIT in each case. |#
 
 ;;;; LAP Generation Rules: Interpreter Calls
+;;; package: (compiler lap-syntaxer)
 
 (declare (usual-integrations))
 \f
+;;;; Variable cache trap handling.
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-REFERENCE (? cont)
+                                   (REGISTER (? extension))
+                                   (? safe?))
+  cont                                 ; ignored
+  (LAP ,@(load-interface-args! false extension false false)
+       ,@(link-to-interface
+         (if safe?
+             code:compiler-safe-reference-trap
+             code:compiler-reference-trap))))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-ASSIGNMENT (? cont)
+                                    (REGISTER (? extension))
+                                    (? value register-expression))
+  cont                                 ; ignored
+  (LAP ,@(load-interface-args! false extension value false)
+       ,@(link-to-interface code:compiler-assignment-trap)))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-UNASSIGNED? (? cont)
+                                     (REGISTER (? extension)))
+  cont                                 ; ignored
+  (LAP ,@(load-interface-args! false extension false false)
+       ,@(link-to-interface code:compiler-unassigned?-trap)))
+\f
 ;;;; Interpreter Calls
 
+;;; All the code that follows is obsolete.  It hasn't been used in a while.
+;;; It is provided in case the relevant switches are turned off, but there
+;;; is no real reason to do this.  Perhaps the switches should be removed.
+
 (define-rule statement
-  (INTERPRETER-CALL:ACCESS (? environment register-expression) (? name))
+  (INTERPRETER-CALL:ACCESS (? cont)
+                          (? environment register-expression)
+                          (? name))
+  cont                                 ; ignored
   (lookup-call code:compiler-access environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:LOOKUP (? environment register-expression)
+  (INTERPRETER-CALL:LOOKUP (? cont)
+                          (? environment register-expression)
                           (? name)
                           (? safe?))
+  cont                                 ; ignored
   (lookup-call (if safe? code:compiler-safe-lookup code:compiler-lookup)
               environment
               name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNASSIGNED? (? environment register-expression) (? name))
+  (INTERPRETER-CALL:UNASSIGNED? (? cont)
+                               (? environment register-expression)
+                               (? name))
+  cont                                 ; ignored
   (lookup-call code:compiler-unassigned? environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNBOUND? (? environment register-expression) (? name))
+  (INTERPRETER-CALL:UNBOUND? (? cont)
+                            (? environment register-expression)
+                            (? name))
+  cont                                 ; ignored
   (lookup-call code:compiler-unbound? environment name))
 
 (define (lookup-call code environment name)
@@ -64,37 +108,22 @@ MIT in each case. |#
        ,@(link-to-interface code)))
 
 (define-rule statement
-  (INTERPRETER-CALL:DEFINE (? environment register-expression)
+  (INTERPRETER-CALL:DEFINE (? cont)
+                          (? environment register-expression)
                           (? name)
                           (? value register-expression))
+  cont                                 ; ignored
   (assignment-call code:compiler-define environment name value))
 
 (define-rule statement
-  (INTERPRETER-CALL:SET! (? environment register-expression)
+  (INTERPRETER-CALL:SET! (? cont)
+                        (? environment register-expression)
                         (? name)
                         (? value register-expression))
+  cont                                 ; ignored
   (assignment-call code:compiler-set! environment name value))
 
 (define (assignment-call code environment name value)
   (LAP ,@(load-interface-args! false environment false value)
        ,@(load-constant regnum:third-arg name #F #F)
-       ,@(link-to-interface code)))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-REFERENCE (REGISTER (? extension)) (? safe?))
-  (LAP ,@(load-interface-args! false extension false false)
-       ,@(link-to-interface
-         (if safe?
-             code:compiler-safe-reference-trap
-             code:compiler-reference-trap))))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-ASSIGNMENT (REGISTER (? extension))
-                                    (? value register-expression))
-  (LAP ,@(load-interface-args! false extension value false)
-       ,@(link-to-interface code:compiler-assignment-trap)))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-UNASSIGNED? (REGISTER (? extension)))
-  (LAP ,@(load-interface-args! false extension false false)
-       ,@(link-to-interface code:compiler-unassigned?-trap)))
\ No newline at end of file
+       ,@(link-to-interface code)))
\ No newline at end of file
index db92bfa88b56b2fe1f06b3e01d11a9679384d613..27ddc4259dd6377fa6e3921a78a54d60e105df5b 100644 (file)
@@ -1,9 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/spectrum/rules4.scm,v 4.11 1990/01/25 16:43:39 jinx Rel $
-$MC68020-Header: rules4.scm,v 4.11 90/01/20 07:26:13 GMT cph Exp $
+$Id: rules4.scm,v 4.12 1992/11/09 18:41:58 jinx Exp $
 
-Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -34,29 +33,73 @@ promotional, or sales literature without prior written consent from
 MIT in each case. |#
 
 ;;;; LAP Generation Rules: Interpreter Calls
+;;; package: (compiler lap-syntaxer)
 
 (declare (usual-integrations))
 \f
+;;;; Variable cache trap handling.
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-REFERENCE (? cont)
+                                   (REGISTER (? extension))
+                                   (? safe?))
+  cont                                 ; ignored
+  (LAP ,@(load-interface-args! false extension false false)
+       ,@(invoke-interface-ble
+         (if safe?
+             code:compiler-safe-reference-trap
+             code:compiler-reference-trap))))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-ASSIGNMENT (? cont)
+                                    (REGISTER (? extension))
+                                    (? value register-expression))
+  cont                                 ; ignored
+  (LAP ,@(load-interface-args! false extension value false)
+       ,@(invoke-interface-ble code:compiler-assignment-trap)))
+
+(define-rule statement
+  (INTERPRETER-CALL:CACHE-UNASSIGNED? (? cont)
+                                     (REGISTER (? extension)))
+  cont                                 ; ignored
+  (LAP ,@(load-interface-args! false extension false false)
+       ,@(invoke-interface-ble code:compiler-unassigned?-trap)))
+\f
 ;;;; Interpreter Calls
 
+;;; All the code that follows is obsolete.  It hasn't been used in a while.
+;;; It is provided in case the relevant switches are turned off, but there
+;;; is no real reason to do this.  Perhaps the switches should be removed.
+
 (define-rule statement
-  (INTERPRETER-CALL:ACCESS (? environment register-expression) (? name))
+  (INTERPRETER-CALL:ACCESS (? cont)
+                          (? environment register-expression)
+                          (? name))
+  cont                                 ; ignored
   (lookup-call code:compiler-access environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:LOOKUP (? environment register-expression)
+  (INTERPRETER-CALL:LOOKUP (? cont)
+                          (? environment register-expression)
                           (? name)
                           (? safe?))
+  cont                                 ; ignored
   (lookup-call (if safe? code:compiler-safe-lookup code:compiler-lookup)
               environment
               name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNASSIGNED? (? environment register-expression) (? name))
+  (INTERPRETER-CALL:UNASSIGNED? (? cont)
+                               (? environment register-expression)
+                               (? name))
+  cont                                 ; ignored
   (lookup-call code:compiler-unassigned? environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNBOUND? (? environment register-expression) (? name))
+  (INTERPRETER-CALL:UNBOUND? (? cont)
+                            (? environment register-expression)
+                            (? name))
+  cont                                 ; ignored
   (lookup-call code:compiler-unbound? environment name))
 
 (define (lookup-call code environment name)
@@ -65,37 +108,22 @@ MIT in each case. |#
        ,@(invoke-interface-ble code)))
 
 (define-rule statement
-  (INTERPRETER-CALL:DEFINE (? environment register-expression)
+  (INTERPRETER-CALL:DEFINE (? cont)
+                          (? environment register-expression)
                           (? name)
                           (? value register-expression))
+  cont                                 ; ignored
   (assignment-call code:compiler-define environment name value))
 
 (define-rule statement
-  (INTERPRETER-CALL:SET! (? environment register-expression)
+  (INTERPRETER-CALL:SET! (? cont)
+                        (? environment register-expression)
                         (? name)
                         (? value register-expression))
+  cont                                 ; ignored
   (assignment-call code:compiler-set! environment name value))
 
 (define (assignment-call code environment name value)
   (LAP ,@(load-interface-args! false environment false value)
        ,@(load-constant name regnum:third-arg)
-       ,@(invoke-interface-ble code)))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-REFERENCE (REGISTER (? extension)) (? safe?))
-  (LAP ,@(load-interface-args! false extension false false)
-       ,@(invoke-interface-ble
-         (if safe?
-             code:compiler-safe-reference-trap
-             code:compiler-reference-trap))))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-ASSIGNMENT (REGISTER (? extension))
-                                    (? value register-expression))
-  (LAP ,@(load-interface-args! false extension value false)
-       ,@(invoke-interface-ble code:compiler-assignment-trap)))
-
-(define-rule statement
-  (INTERPRETER-CALL:CACHE-UNASSIGNED? (REGISTER (? extension)))
-  (LAP ,@(load-interface-args! false extension false false)
-       ,@(invoke-interface-ble code:compiler-unassigned?-trap)))
\ No newline at end of file
+       ,@(invoke-interface-ble code)))
\ No newline at end of file
index eac509f7e2e6d3065948a51ebf94fa04dcb35415..facd93c9b73deec2194e9de86e7c9afc991d6d93 100644 (file)
@@ -1,9 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/vax/rules4.scm,v 4.3 1991/02/15 00:42:38 jinx Exp $
-$MC68020-Header: rules4.scm,v 4.12 90/05/03 15:17:38 GMT jinx Exp $
+$Id: rules4.scm,v 4.4 1992/11/09 18:47:18 jinx Exp $
 
-Copyright (c) 1987, 1989, 1991 Massachusetts Institute of Technology
+Copyright (c) 1987-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -41,8 +40,9 @@ MIT in each case. |#
 ;;;; Variable cache trap handling.
 
 (define-rule statement
-  (INTERPRETER-CALL:CACHE-REFERENCE (? extension) (? safe?))
+  (INTERPRETER-CALL:CACHE-REFERENCE (? cont) (? extension) (? safe?))
   (QUALIFIER (interpreter-call-argument? extension))
+  cont                                 ; ignored
   (let* ((set-extension
          (interpreter-call-argument->machine-register! extension r2))
         (clear-map (clear-map!)))
@@ -59,9 +59,10 @@ MIT in each case. |#
                                     code:compiler-reference-trap)))))
 
 (define-rule statement
-  (INTERPRETER-CALL:CACHE-ASSIGNMENT (? extension) (? value))
+  (INTERPRETER-CALL:CACHE-ASSIGNMENT (? cont) (? extension) (? value))
   (QUALIFIER (and (interpreter-call-argument? extension)
                  (interpreter-call-argument? value)))
+  cont                                 ; ignored
   (let* ((set-extension
         (interpreter-call-argument->machine-register! extension r2))
         (set-value (interpreter-call-argument->machine-register! value r3))
@@ -76,8 +77,9 @@ MIT in each case. |#
         ,@(invoke-interface-jsb code:compiler-assignment-trap))))
 
 (define-rule statement
-  (INTERPRETER-CALL:CACHE-UNASSIGNED? (? extension))
+  (INTERPRETER-CALL:CACHE-UNASSIGNED? (? cont) (? extension))
   (QUALIFIER (interpreter-call-argument? extension))
+  cont                                 ; ignored
   (let* ((set-extension
          (interpreter-call-argument->machine-register! extension r2))
         (clear-map (clear-map!)))
@@ -92,24 +94,28 @@ MIT in each case. |#
 ;;; is no real reason to do this.  Perhaps the switches should be removed.
 
 (define-rule statement
-  (INTERPRETER-CALL:ACCESS (? environment) (? name))
+  (INTERPRETER-CALL:ACCESS (? cont) (? environment) (? name))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call code:compiler-access environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:LOOKUP (? environment) (? name) (? safe?))
+  (INTERPRETER-CALL:LOOKUP (? cont) (? environment) (? name) (? safe?))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call (if safe? code:compiler-safe-lookup code:compiler-lookup)
               environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNASSIGNED? (? environment) (? name))
+  (INTERPRETER-CALL:UNASSIGNED? (? cont) (? environment) (? name))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call code:compiler-unassigned? environment name))
 
 (define-rule statement
-  (INTERPRETER-CALL:UNBOUND? (? environment) (? name))
+  (INTERPRETER-CALL:UNBOUND? (? cont) (? environment) (? name))
   (QUALIFIER (interpreter-call-argument? environment))
+  cont                                 ; ignored
   (lookup-call code:compiler-unbound? environment name))
 
 (define (lookup-call code environment name)
@@ -122,15 +128,17 @@ MIT in each case. |#
         ,@(invoke-interface-jsb code))))
 
 (define-rule statement
-  (INTERPRETER-CALL:DEFINE (? environment) (? name) (? value))
+  (INTERPRETER-CALL:DEFINE (? environment) (? cont) (? name) (? value))
   (QUALIFIER (and (interpreter-call-argument? environment)
                  (interpreter-call-argument? value)))
+  cont                                 ; ignored
   (assignment-call code:compiler-define environment name value))
 
 (define-rule statement
-  (INTERPRETER-CALL:SET! (? environment) (? name) (? value))
+  (INTERPRETER-CALL:SET! (? environment) (? cont) (? name) (? value))
   (QUALIFIER (and (interpreter-call-argument? environment)
                  (interpreter-call-argument? value)))
+  cont                                 ; ignored
   (assignment-call code:compiler-set! environment name value))
 
 (define (assignment-call code environment name value)
index ed3266b5355841f8c08f912a8fe04bf934682e76..f306e95405324f7b02865721d89de1b2c16cf769 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlcon.scm,v 4.22 1991/10/25 00:14:14 cph Exp $
+$Id: rtlcon.scm,v 4.23 1992/11/09 18:42:25 jinx Exp $
 
-Copyright (c) 1988-91 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -166,10 +166,10 @@ MIT in each case. |#
 (define rtl:make-interpreter-call:unbound?)
 (let ((interpreter-lookup-maker
        (lambda (%make)
-        (lambda (environment name)
+        (lambda (cont environment name)
           (expression-simplify-for-statement environment
             (lambda (environment)
-              (%make environment name)))))))
+              (%make cont environment name)))))))
   (set! rtl:make-interpreter-call:access
        (interpreter-lookup-maker %make-interpreter-call:access))
   (set! rtl:make-interpreter-call:unassigned?
@@ -181,38 +181,38 @@ MIT in each case. |#
 (define rtl:make-interpreter-call:set!)
 (let ((interpreter-assignment-maker
        (lambda (%make)
-        (lambda (environment name value)
+        (lambda (cont environment name value)
           (expression-simplify-for-statement value
             (lambda (value)
               (expression-simplify-for-statement environment
                 (lambda (environment)
-                  (%make environment name value)))))))))
+                  (%make cont environment name value)))))))))
   (set! rtl:make-interpreter-call:define
        (interpreter-assignment-maker %make-interpreter-call:define))
   (set! rtl:make-interpreter-call:set!
        (interpreter-assignment-maker %make-interpreter-call:set!)))
 
-(define (rtl:make-interpreter-call:lookup environment name safe?)
+(define (rtl:make-interpreter-call:lookup cont environment name safe?)
   (expression-simplify-for-statement environment
     (lambda (environment)
-      (%make-interpreter-call:lookup environment name safe?))))
+      (%make-interpreter-call:lookup cont environment name safe?))))
 
-(define (rtl:make-interpreter-call:cache-assignment name value)
+(define (rtl:make-interpreter-call:cache-assignment cont name value)
   (expression-simplify-for-statement name
     (lambda (name)
       (expression-simplify-for-statement value
        (lambda (value)
-         (%make-interpreter-call:cache-assignment name value))))))
+         (%make-interpreter-call:cache-assignment cont name value))))))
 
-(define (rtl:make-interpreter-call:cache-reference name safe?)
+(define (rtl:make-interpreter-call:cache-reference cont name safe?)
   (expression-simplify-for-statement name
     (lambda (name)
-      (%make-interpreter-call:cache-reference name safe?))))
+      (%make-interpreter-call:cache-reference cont name safe?))))
 
-(define (rtl:make-interpreter-call:cache-unassigned? name)
+(define (rtl:make-interpreter-call:cache-unassigned? cont name)
   (expression-simplify-for-statement name
     (lambda (name)
-      (%make-interpreter-call:cache-unassigned? name))))
+      (%make-interpreter-call:cache-unassigned? cont name))))
 \f
 ;;;; Expression Simplification
 
index facf69d00164c38b8302cdeba272e3aabe1be830..e8f1a6807d9fbb0d3a1453bce1a38dbd24f64f99 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlty1.scm,v 4.19 1991/10/25 00:14:27 cph Exp $
+$Id: rtlty1.scm,v 4.20 1992/11/09 18:42:11 jinx Exp $
 
-Copyright (c) 1987-91 Massachusetts Institute of Technology
+Copyright (c) 1987-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -107,24 +107,30 @@ MIT in each case. |#
 (define-rtl-expression address->fixnum rtl: expression)
 
 ;;; Machine integer arithmetic operations
-(define-rtl-expression fixnum-1-arg rtl: operator operand overflow?)
-(define-rtl-expression fixnum-2-args rtl: operator operand-1 operand-2
-  overflow?)
+(define-rtl-expression fixnum-1-arg rtl:
+  operator operand overflow?)
+(define-rtl-expression fixnum-2-args rtl:
+  operator operand-1 operand-2 overflow?)
 \f
 ;;; Conversion between flonums and machine floats
 (define-rtl-expression float->object rtl: expression)
 (define-rtl-expression object->float rtl: expression)
 
 ;;; Floating-point arithmetic operations
-(define-rtl-expression flonum-1-arg rtl: operator operand overflow?)
-(define-rtl-expression flonum-2-args rtl: operator operand-1 operand-2
-  overflow?)
+(define-rtl-expression flonum-1-arg rtl:
+  operator operand overflow?)
+(define-rtl-expression flonum-2-args rtl:
+  operator operand-1 operand-2 overflow?)
 
-(define-rtl-predicate fixnum-pred-1-arg % predicate operand)
-(define-rtl-predicate fixnum-pred-2-args % predicate operand-1 operand-2)
+(define-rtl-predicate fixnum-pred-1-arg %
+  predicate operand)
+(define-rtl-predicate fixnum-pred-2-args %
+  predicate operand-1 operand-2)
 
-(define-rtl-predicate flonum-pred-1-arg % predicate operand)
-(define-rtl-predicate flonum-pred-2-args % predicate operand-1 operand-2)
+(define-rtl-predicate flonum-pred-1-arg %
+  predicate operand)
+(define-rtl-predicate flonum-pred-2-args %
+  predicate operand-1 operand-2)
 
 (define-rtl-predicate eq-test % expression-1 expression-2)
 (define-rtl-predicate type-test % expression type)
@@ -142,31 +148,50 @@ MIT in each case. |#
 (define-rtl-statement procedure-header rtl: procedure min max)
 (define-rtl-statement closure-header rtl: procedure nentries entry)
 
-(define-rtl-statement interpreter-call:access % environment name)
-(define-rtl-statement interpreter-call:define % environment name value)
-(define-rtl-statement interpreter-call:lookup % environment name safe?)
-(define-rtl-statement interpreter-call:set! % environment name value)
-(define-rtl-statement interpreter-call:unassigned? % environment name)
-(define-rtl-statement interpreter-call:unbound? % environment name)
-
-(define-rtl-statement interpreter-call:cache-assignment % name value)
-(define-rtl-statement interpreter-call:cache-reference % name safe?)
-(define-rtl-statement interpreter-call:cache-unassigned? % name)
-
-(define-rtl-statement invocation:apply rtl: pushed continuation)
-(define-rtl-statement invocation:jump rtl: pushed continuation procedure)
-(define-rtl-statement invocation:computed-jump rtl: pushed continuation)
-(define-rtl-statement invocation:lexpr rtl: pushed continuation procedure)
-(define-rtl-statement invocation:computed-lexpr rtl: pushed continuation)
-(define-rtl-statement invocation:uuo-link rtl: pushed continuation name)
-(define-rtl-statement invocation:global-link rtl: pushed continuation name)
-(define-rtl-statement invocation:primitive rtl: pushed continuation procedure)
-(define-rtl-statement invocation:special-primitive rtl: pushed continuation
-  procedure)
-(define-rtl-statement invocation:cache-reference rtl: pushed continuation name)
-(define-rtl-statement invocation:lookup rtl: pushed continuation environment
-  name)
-
-(define-rtl-statement invocation-prefix:move-frame-up rtl: frame-size locative)
-(define-rtl-statement invocation-prefix:dynamic-link rtl: frame-size locative
-  register)
\ No newline at end of file
+(define-rtl-statement interpreter-call:access %
+  continuation environment name)
+(define-rtl-statement interpreter-call:define %
+  continuation environment name value)
+(define-rtl-statement interpreter-call:lookup %
+  continuation environment name safe?)
+(define-rtl-statement interpreter-call:set! %
+  continuation environment name value)
+(define-rtl-statement interpreter-call:unassigned? %
+  continuation environment name)
+(define-rtl-statement interpreter-call:unbound? %
+  continuation environment name)
+
+(define-rtl-statement interpreter-call:cache-assignment %
+  continuation name value)
+(define-rtl-statement interpreter-call:cache-reference %
+  continuation name safe?)
+(define-rtl-statement interpreter-call:cache-unassigned? %
+  continuation name)
+
+(define-rtl-statement invocation:apply rtl:
+  pushed continuation)
+(define-rtl-statement invocation:jump rtl:
+  pushed continuation procedure)
+(define-rtl-statement invocation:computed-jump rtl:
+  pushed continuation)
+(define-rtl-statement invocation:lexpr rtl:
+  pushed continuation procedure)
+(define-rtl-statement invocation:computed-lexpr rtl:
+  pushed continuation)
+(define-rtl-statement invocation:uuo-link rtl:
+  pushed continuation name)
+(define-rtl-statement invocation:global-link rtl:
+  pushed continuation name)
+(define-rtl-statement invocation:primitive rtl:
+  pushed continuation procedure)
+(define-rtl-statement invocation:special-primitive rtl:
+  pushed continuation procedure)
+(define-rtl-statement invocation:cache-reference rtl:
+  pushed continuation name)
+(define-rtl-statement invocation:lookup rtl:
+  pushed continuation environment name)
+
+(define-rtl-statement invocation-prefix:move-frame-up rtl:
+  frame-size locative)
+(define-rtl-statement invocation-prefix:dynamic-link rtl:
+  frame-size locative register)
\ No newline at end of file
index 1dfa3ae9b886ce572fda008432eb87cd29f3061d..dcc031cad1c46f5828e5be6feeeae1e2af4dd5e5 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgproc.scm,v 4.12 1990/05/03 15:11:55 jinx Rel $
+$Id: rgproc.scm,v 4.13 1992/11/09 18:43:08 jinx Exp $
 
-Copyright (c) 1988, 1989, 1990 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -105,15 +105,17 @@ MIT in each case. |#
    (map (let ((block (procedure-block procedure)))
          (lambda (name value)
            (generate/rvalue value scfg*scfg->scfg!
-             (lambda (expression)
-               (load-temporary-register scfg*scfg->scfg! expression
-                 (lambda (expression)
-                   (wrap-with-continuation-entry
-                    context
+            (lambda (expression)
+              (load-temporary-register scfg*scfg->scfg! expression
+               (lambda (expression)
+                 (wrap-with-continuation-entry
+                  context
+                  (lambda (cont-label)
                     (rtl:make-interpreter-call:set!
+                     cont-label
                      (rtl:make-fetch register:environment)
                      (intern-scode-variable! block (variable-name name))
-                     expression))))))))
+                     expression)))))))))
        (procedure-names procedure)
        (procedure-values procedure))))
 
index 67c2d6251690f5d5ebb0784acb564fb71de88ee2..83c5d0c1b3c4254ba24cc82b2fe8a3ddcf36c099 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: rgrval.scm,v 4.18 1992/11/08 04:07:53 jinx Exp $
+$Id: rgrval.scm,v 4.19 1992/11/09 18:42:52 jinx Exp $
 
 Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
@@ -84,12 +84,14 @@ MIT in each case. |#
                      (lambda (environment)
                        (wrap-with-continuation-entry
                         context
-                        (rtl:make-interpreter-call:lookup
-                         environment
-                         (intern-scode-variable!
-                          (reference-context/block context)
-                          name)
-                         safe?))))
+                        (lambda (cont-label)
+                          (rtl:make-interpreter-call:lookup
+                           cont-label
+                           environment
+                           (intern-scode-variable!
+                            (reference-context/block context)
+                            name)
+                           safe?)))))
                    (rtl:interpreter-call-result:lookup)))
                 (lambda (name)
                   (if (memq 'IGNORE-REFERENCE-TRAPS
@@ -129,7 +131,9 @@ MIT in each case. |#
                 (n4
                  (wrap-with-continuation-entry
                   context
-                  (rtl:make-interpreter-call:cache-reference cell safe?)))
+                  (lambda (cont-label)
+                    (rtl:make-interpreter-call:cache-reference
+                     cont-label cell safe?))))
                 (n5
                  (rtl:make-assignment
                   result
index 5ce99ca64c9ab321e70ea0f2eddba64772dc50c9..8d03bf787e46f78aff8420b9b082e4f5f48048b4 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgstmt.scm,v 4.15 1990/05/03 15:12:04 jinx Rel $
+$Id: rgstmt.scm,v 4.16 1992/11/09 18:43:28 jinx Exp $
 
-Copyright (c) 1988, 1990 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -57,12 +57,14 @@ MIT in each case. |#
                      (lambda (expression)
                        (wrap-with-continuation-entry
                         context
-                        (rtl:make-interpreter-call:set!
-                         environment
-                         (intern-scode-variable!
-                          (reference-context/block context)
-                          name)
-                         expression)))))))
+                        (lambda (cont-label)
+                          (rtl:make-interpreter-call:set!
+                           cont-label
+                           environment
+                           (intern-scode-variable!
+                            (reference-context/block context)
+                            name)
+                           expression))))))))
              (lambda (name)
                (if (memq 'IGNORE-ASSIGNMENT-TRAPS
                          (variable-declarations lvalue))
@@ -88,7 +90,9 @@ MIT in each case. |#
                  (n5
                   (wrap-with-continuation-entry
                    context
-                   (rtl:make-interpreter-call:cache-assignment cell value)))
+                   (lambda (cont-label)
+                     (rtl:make-interpreter-call:cache-assignment
+                      cont-label cell value))))
                  ;; Copy prevents premature control merge which confuses CSE
                  (n6 (rtl:make-assignment cell value)))
              (pcfg-consequent-connect! n2 n3)
@@ -115,9 +119,12 @@ MIT in each case. |#
                  (lambda (expression)
                    (wrap-with-continuation-entry
                     context
-                    (rtl:make-interpreter-call:define environment
-                                                      name
-                                                      expression))))))))))))
+                    (lambda (cont-label)
+                      (rtl:make-interpreter-call:define
+                       cont-label
+                       environment
+                       name
+                       expression)))))))))))))
 \f
 ;;;; Virtual Returns
 
@@ -286,8 +293,11 @@ MIT in each case. |#
                     (lambda (environment)
                       (wrap-with-continuation-entry
                        context
-                       (rtl:make-interpreter-call:unassigned? environment
-                                                              name))))
+                       (lambda (cont-label)
+                         (rtl:make-interpreter-call:unassigned?
+                          cont-label
+                          environment
+                          name)))))
                   (rtl:make-true-test
                    (rtl:interpreter-call-result:unassigned?))))
                (lambda (name)
@@ -311,7 +321,10 @@ MIT in each case. |#
              (n4
               (wrap-with-continuation-entry
                context
-               (rtl:make-interpreter-call:cache-unassigned? cell)))
+               (lambda (cont-label)
+                 (rtl:make-interpreter-call:cache-unassigned?
+                  cont-label
+                  cell))))
              (n5
               (rtl:make-true-test
                (rtl:interpreter-call-result:cache-unassigned?))))
index 793b394d8458a1c49ef997c5d9afda2881cb2e54..7be0dccceb6e47f3e8f04d815c8e6823bd703c8c 100644 (file)
@@ -1,8 +1,8 @@
 #| -*-Scheme-*-
 
-$Id: rtlgen.scm,v 4.28 1992/09/30 21:02:16 cph Exp $
+$Id: rtlgen.scm,v 4.29 1992/11/09 18:42:41 jinx Exp $
 
-Copyright (c) 1988-92 Massachusetts Institute of Technology
+Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -33,6 +33,7 @@ promotional, or sales literature without prior written consent from
 MIT in each case. |#
 
 ;;;; RTL Generation
+;;; package: (compiler rtl-generator)
 
 (declare (usual-integrations))
 \f
@@ -204,11 +205,12 @@ MIT in each case. |#
         (and (primitive-procedure? obj)
              (special-primitive-handler obj)))))
 
-(define (wrap-with-continuation-entry context scfg)
+(define (wrap-with-continuation-entry context scfg-gen)
   (with-values (lambda () (generate-continuation-entry context))
     (lambda (label setup cleanup)
-      label
-      (scfg-append! setup scfg cleanup))))
+      (scfg-append! setup
+                   (scfg-gen label)
+                   cleanup))))
 
 (define (generate-continuation-entry context)
   (let ((label (generate-label))