[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
eclipse problem
Date: Wed, 13 Nov 1991 14:22 EST
From: bruno@oz.geology.washington.edu (Steve Willis)
Hello. I think that we're the last site still running the Scope system -
the Pixar Image Computer connected to a symbolics 3670. We're trying to upgrade
the Eclipse pseudo lisp compiler to run under 8.1, and are having a bit of
difficulty.
Eclipse takes a pseudo lisp language and compiles it to pixar executables
and a lisp stub that invokes the pixar code. The main form that we use
is (defun-pixar ...). The following code compiled (and worked) correctly
under gen 8.0, and fails under 8.1.
(defun-pixar interleave-inside-pixar (in-pw out-pw in-array o-array band nbands qw
&optional (strt 0))
(declare (fixnum in-pw out-pw band nbands qw strt)
((fixnum :pixel t :dimensions 1) in-array)
((fixnum :pixel t :dimensions 1) o-array))
(loop with iwidth = (pwwidth in-pw)
with owidth = (pwwidth out-pw)
for y from 0 below (pwheight in-pw) do
...
(loop for x1 from strt below (+ strt qw)
for x2 from ...
for x3 from ...
for x4 from ...
for xi from band by nbands do
(setf (aref o-array xi) (make-pixel (red-component (aref in-array x1))
(red-component (aref in-array x2))
(red-component (aref in-array x3))
(red-component (aref in-array x4)))))
...))
When the form (defun-pixar ...) is compiled, we get the following error:
Error> While compiling (SETF (AREF O-ARRAY XI)
(MAKE-PIXEL (RED-COMPONENT (AREF IN-ARRAY X1))
(RED-COMPONENT (AREF IN-ARRAY X2))
(RED-COMPONENT (AREF IN-ARRAY X3))
(RED-COMPONENT (AREF IN-ARRAY X4)))):
Unknown declaration keyword VARIABLE-INLINABLE
Note that this one does not say COMPILER:VARIABLE-INLINABLE.
Error> While compiling (SETF (AREF O-ARRAY XI)
(MAKE-PIXEL (RED-COMPONENT (AREF IN-ARRAY X1))
(RED-COMPONENT (AREF IN-ARRAY X2))
(RED-COMPONENT (AREF IN-ARRAY X3))
(RED-COMPONENT (AREF IN-ARRAY X4)))):
COMPILER:VARIABLE-INLINABLE is not a known type.
Error> While compiling (SETF (AREF O-ARRAY XI)
(MAKE-PIXEL (RED-COMPONENT (AREF IN-ARRAY X1))
(RED-COMPONENT (AREF IN-ARRAY X2))
(RED-COMPONENT (AREF IN-ARRAY X3))
(RED-COMPONENT (AREF IN-ARRAY X4)))):
COMPILER:VARIABLE-INLINABLE is not a known type.
The form itself macro-expands into:
(LET* ((#:G19432 O-ARRAY)
(#:G19433 XI))
(DECLARE (COMPILER:VARIABLE-INLINABLE #:G19432 #:G19433))
(ZL:ASET (VALUES (MAKE-PIXEL (COMPONENT (VALUES (AREF IN-ARRAY X1)) 0)
(COMPONENT (VALUES (AREF IN-ARRAY X2)) 0)
(COMPONENT (VALUES (AREF IN-ARRAY X3)) 0)
(COMPONENT (VALUES (AREF IN-ARRAY X4)) 0)))
#:G19432
#:G19433))
Evidently the problem is in the (declare ..) in the macro expansion. Is
this something that has changed from 8.0 to 8.1?? Is there a simple way
to make compiler:variable-inlinable a known type??
COMPILER:VARIABLE-INLINABLE is not SUPPOSED to be a type.
I've tried to locate
the defsetf call without success. Any hints on where to find it?? The
get-setf-method that I tried requires the appropriate environment and I
can't figure out how to stuff that in at compile time (in fact, I'm not
even convinced this is a correct way to proceed).
When I replace ... with xxx or ;xxx, and DEFUN-PIXAR with DEFUN,
and comment out the weird declarations:
(declare ((fixnum :pixel t :dimensions 1) in-array)
((fixnum :pixel t :dimensions 1) o-array))
I find it compiles fine for me. I get the same expansion
of the SETF as you do.
I have a suspicion that DEFUN-PIXAR is doing some code-walking
and some incorrect declaration processing. There's no way
the Lisp compiler should be getting confused into thinking
that COMPILER:VARIABLE-INLINABLE is supposed to be a type.