From 3dc5b530a10f0368ea15de96713b79c55cd70104 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Fri, 25 Oct 1991 12:57:32 +0000 Subject: [PATCH] * Introduce new RTL expression type CONS-NON-POINTER and change 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 | 8 ++++---- v7/src/compiler/machines/vax/make.scm | 12 ++++-------- v7/src/compiler/machines/vax/rulrew.scm | 12 +++++++++--- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/v7/src/compiler/machines/vax/machin.scm b/v7/src/compiler/machines/vax/machin.scm index d72aa70ea..a85a0ea0d 100644 --- a/v7/src/compiler/machines/vax/machin.scm +++ b/v7/src/compiler/machines/vax/machin.scm @@ -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. |# ;;;; 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) - + ;; 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 diff --git a/v7/src/compiler/machines/vax/make.scm b/v7/src/compiler/machines/vax/make.scm index 0bdd7ab6d..2f46076cd 100644 --- a/v7/src/compiler/machines/vax/make.scm +++ b/v7/src/compiler/machines/vax/make.scm @@ -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 diff --git a/v7/src/compiler/machines/vax/rulrew.scm b/v7/src/compiler/machines/vax/rulrew.scm index bb4650579..b36467b4b 100644 --- a/v7/src/compiler/machines/vax/rulrew.scm +++ b/v7/src/compiler/machines/vax/rulrew.scm @@ -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. |# ;;;; 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)) -- 2.25.1