`make-non-pointer-literal' was not being careful to handle negative
authorChris Hanson <org/chris-hanson/cph>
Mon, 27 Apr 1987 14:21:48 +0000 (14:21 +0000)
committerChris Hanson <org/chris-hanson/cph>
Mon, 27 Apr 1987 14:21:48 +0000 (14:21 +0000)
`datum' values correctly, resulting in the type code of the literal
being off by one.

v7/src/compiler/machines/bobcat/lapgen.scm

index 0af2af79511366a8dfabedb3b42c5ab9797ca61f..8e529de7643f63727837407299e53cab18171736 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 1.157 1987/04/17 10:55:17 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/lapgen.scm,v 1.158 1987/04/27 14:21:48 cph Exp $
 
 Copyright (c) 1987 Massachusetts Institute of Technology
 
@@ -123,7 +123,9 @@ MIT in each case. |#
 (define make-non-pointer-literal
   (let ((type-scale-factor (expt 2 24)))
     (lambda (type datum)
-      (+ (* type type-scale-factor) datum))))
+      (+ (* (if (negative? datum) (1+ type) type)
+           type-scale-factor)
+        datum))))
 
 (define (set-standard-branches! cc)
   (set-current-branches! (lambda (label)