* Introduce new RTL expression type CONS-NON-POINTER and change
authorChris Hanson <org/chris-hanson/cph>
Fri, 25 Oct 1991 12:57:32 +0000 (12:57 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 25 Oct 1991 12:57:32 +0000 (12:57 +0000)
  appropriate instances of CONS-POINTER to use the new type.

* Replace RTL expression type @ADDRESS->FLOAT with new type
  OBJECT->FLOAT.

* Introduce new internal switch USE-PRE/POST-INCREMENT?.  Change code
  generation of in-line consing to pay attention to this switch.

* Merge common parts of "machine/make" into new file "base/make".

On MIPS:

* Change code sequence that assigns type codes to assume that the type
  field has a known value.  This eliminates one instruction in every
  type-code assignment.  It assumes that the data segment bits have a
  certain value, but the microcode already does this.

* Cache immediate constants in registers, and remember which registers
  contain which constants.  (This should be improved by noticing when
  arithmetic operations are done on known constants and cacheing the
  results.)

* Set USE-PRE/POST-INCREMENT? to false, saving one instruction in
  every CONS, and multiple instructions in each call to VECTOR.

v7/src/compiler/machines/vax/machin.scm
v7/src/compiler/machines/vax/make.scm
v7/src/compiler/machines/vax/rulrew.scm

index d72aa70eaff02bb912995f6bde273c9de4c3402d..a85a0ea0d3ed5f449773a9b2832f8e1a5ccae7ec 100644 (file)
@@ -1,9 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/vax/machin.scm,v 4.7 1991/02/15 00:42:01 jinx Exp $
-$MC68020-Header: machin.scm,v 4.23 1991/02/05 03:50:50 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/vax/machin.scm,v 4.8 1991/10/25 12:57:26 cph Exp $
 
-Copyright (c) 1987, 1989, 1991 Massachusetts Institute of Technology
+Copyright (c) 1987-91 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -40,6 +39,7 @@ MIT in each case. |#
 \f
 ;;;; Architecture Parameters
 
+(define use-pre/post-increment? true)
 (define-integrable endianness 'LITTLE)
 (define-integrable addressing-granularity 8)
 (define-integrable scheme-object-width 32)
@@ -81,7 +81,7 @@ MIT in each case. |#
 
 (define-integrable (stack->memory-offset offset) offset)
 (define-integrable ic-block-first-parameter-offset 2)
-
+\f
 ;; This must return a word based offset.
 ;; On the VAX, to save space, entries can be at 2 mod 4 addresses,
 ;; which makes it impossible if the closure object used for
index 0bdd7ab6d0dcfcdfa51579a1a857a100ab06e488..2f46076cd6f312f4eb4af2924245f43c1923c820 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/vax/make.scm,v 4.87 1991/10/18 11:17:13 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/vax/make.scm,v 4.88 1991/10/25 12:57:30 cph Exp $
 
 Copyright (c) 1987-91 Massachusetts Institute of Technology
 
@@ -36,10 +36,6 @@ MIT in each case. |#
 
 (declare (usual-integrations))
 
-(package/system-loader "comp" '() 'QUERY)
-(for-each (lambda (name)
-           ((package/reference (find-package name) 'INITIALIZE-PACKAGE!)))
-         '((COMPILER MACROS)
-           (COMPILER DECLARATIONS)
-           (COMPILER DISASSEMBLER MACROS)))
-(add-system! (make-system "Liar (DEC VAX)" 4 87 '()))
\ No newline at end of file
+((load "base/make") "DEC VAX")
+((environment-lookup (->environment '(COMPILER DISASSEMBLER MACROS))
+                    'INITIALIZE-PACKAGE!))
\ No newline at end of file
index bb4650579387efc29a3cb69f2967a68d11341c3b..b36467b4b400df7d249fd8be39e360448fb2533e 100644 (file)
@@ -1,9 +1,8 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/vax/rulrew.scm,v 1.1 1991/02/15 00:40:13 jinx Exp $
-$MC68020-Header: rulrew.scm,v 1.3 90/05/03 15:17:42 GMT jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/vax/rulrew.scm,v 1.2 1991/10/25 12:57:32 cph Exp $
 
-Copyright (c) 1990, 1991 Massachusetts Institute of Technology
+Copyright (c) 1990-91 Massachusetts Institute of Technology
 
 This material was developed by the Scheme project at the Massachusetts
 Institute of Technology, Department of Electrical Engineering and
@@ -40,6 +39,13 @@ MIT in each case. |#
 \f
 ;;;; Synthesized Data
 
+(define-rule rewriting
+  (CONS-NON-POINTER (? type) (? datum))
+  ;; On the VAX, there's no difference between an address and a datum,
+  ;; so the rules for constructing non-pointer objects are the same as
+  ;; those for pointer objects.
+  (rtl:make-cons-pointer type datum))
+
 (define-rule rewriting
   (CONS-POINTER (REGISTER (? type register-known-value)) (? datum))
   (QUALIFIER (rtl:machine-constant? type))