[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Problems compiling PCL under VAX LISP 3.0...



I'm installing PCL on a VAX under VAX Lisp 3.0, VMS 5.1, but I've
run into compilation problems.  I'm passing a description of what I've
done so far.  (I know there's hope for all my efforts.  Any help out
there?  I'd greatly appreciate it!)

1. I edited *pcl-directory* in defsys.lsp to reflect the directory
where I had the code residing.

2. I loaded defsys.lsp, then evaluated (pcl::compile-pcl).  All went
well compiling and loading the following files (I received no
errors and no warnings):
	pkg
	walk
	iterate
	macros
	low
 
3. The next file to be compiled was vaxl-low.lsp.  It compiled, but I
received warnings about two functions that are no longer defined in
VAX LISP:

	SYSTEM::FUNCTION-LAMBDA-VARS and
	SYSTEM::SLISP-COMPILED-FUNCTION-P.

		*	*	*	*

I looked in vaxl-low for any function definition changes that
occurred from version 2 to 3.  SYSTEM::*CRITICAL-SECTION-P*,
SYSTEM::%SP-INTERRUPT-DEQUEUER, SYSTEM::INTERRUPT-QUEUED-P, and
SYSTEM::%SP-B-STORE are still defined.  SYSTEM::%SP-POINTER->FIXNUM,
SYSTEM::FUNCTION-LAMBDA-VARS, AND SYSTEM::SLISP-COMPILED-FUNCTION-P
no longer have function definitions.  SYSTEM::FUNCTION-LAMBDA-VARS
seems to have been replaced by SYSTEM::FUNCTION-LAMBDA-LIST and 
SYSTEM::SLISP-COMPILED-FUNCTION-P by SYSTEM::COMPILE-FUNCTION-P.  I
can't figure out what would have replaced SYSTEM::%SP-POINTER->FIXNUM.
Can anyone else from the following evaluation?

Lisp> (apropos 'fixnum '(system))

Symbols in package SYSTEM containing the string "FIXNUM":
  SYSTEM::%SP-FIXNUM->LONG
  SYSTEM::%SP-FIXNUM->LONGWORD
  SYSTEM::%SP-SINGLE->FIXNUM
  SYSTEM::FIXNUMP, has a definition
  SYSTEM::%SP-FIXNUM->CHARACTER
  SYSTEM::%SP-CHARACTER->FIXNUM
  SYSTEM::%SP-FIXNUM->SINGLE
  SYSTEM::FIXNUMIZE, has a definition
  SYSTEM::%SP-LONG->FIXNUM
  SYSTEM::%SP-FIXNUM->DOUBLE
  SYSTEM::DUMP-FIXNUM, has a definition
  SYSTEM::*PRINT-FIXNUM-BUFFER*, has a value
  SYSTEM::%SP-DOUBLE->FIXNUM
  SYSTEM::%SP-POINTER->FIXNUM
  MOST-NEGATIVE-FIXNUM, has a value
  MOST-POSITIVE-FIXNUM, has a value
  FIXNUM)

		*	*	*	*

4. Compilation continued with no errors or warnings for fin.lsp.

I received several warnings for def.lsp, but they seem unrelated to
the problem.  Had to do with symbols bound but not used.

The compiler had trouble with the next file, boot.lsp, because of the
flet of "ignoredp" inside "make-parameter-references."  I got the
following error message: 

Error in MAKE-PARAMETER-REFERENCES
  Compile time fatal error while executing #:ADD-TO-&ENV-FOR-CLC-I2659
    Error signalled by ERROR
    Error message would have been:
"Invalid operation on lexical environment: #:G1541 #S(TYPE :NAME T :CODE 332
:BOXED-SIZE 0 :UNBOXED-SIZE 0 :CATEGORY :PREDEFINED-TYPE :COMMON NIL
:LAMBDA-LIST NIL :DEFTYPE-EXPANDER NIL :PRIMITIVE-TYPE NIL :PARENT-TYPE NIL
:NAMED NIL :INITIAL-OFFSET 0 :CONC-NAME NIL :CONSTRUCTOR NIL :COPIER NIL
:PRINT-FUNCTION NIL :SLOT-DESCRIPTORS #() :PREDICATE NIL :TYPEP-LIST NIL
:TYPE-OF NIL :ELEMENT-TYPE NIL :ELEMENT-SIZE 0 :OBJECT-LIST NIL :STANDARD-P
T :TYPEP-SYMBOL SYSTEM::TRUE :CANON-ARRAY-ELEMENT-TYPE T :CANON-TYPE


 :SELF :TYPEP-TRANSFORM NIL :SPARE29 NIL :SPARE30 NIL :SPARE31 NIL :SPARE32
NIL)"
  Surrounding forms:
    (FLET ((IGNOREDP # #))
      (GATHERING (#)
        (ITERATE #
          # 
          #)))
    (BLOCK MAKE-PARAMETER-REFERENCES (FLET (#) (GATHERING # #)))

Boot.lsp did compile, though, and loaded.

5. The next problems came in file "vector."  Something wrong with
function LOOKUP-PV-N:

Error in LOOKUP-PV-N
  Compile time fatal error while executing #:ADD-TO-&ENV-FOR-CLC-I2659
    Error signalled by ERROR
    Error message would have been:
"Invalid operation on lexical environment: #:G1541 #S(TYPE :NAME T :CODE 332
:BOXED-SIZE 0 :UNBOXED-SIZE 0 :CATEGORY :PREDEFINED-TYPE :COMMON NIL
:LAMBDA-LIST NIL :DEFTYPE-EXPANDER NIL :PRIMITIVE-TYPE NIL :PARENT-TYPE NIL
:NAMED NIL :INITIAL-OFFSET 0 :CONC-NAME NIL :CONSTRUCTOR NIL :COPIER NIL
:PRINT-FUNCTION NIL :SLOT-DESCRIPTORS #() :PREDICATE NIL :TYPEP-LIST NIL
:TYPE-OF NIL :ELEMENT-TYPE NIL :ELEMENT-SIZE 0 :OBJECT-LIST NIL :STANDARD-P
T :TYPEP-SYMBOL SYSTEM::TRUE :CANON-ARRAY-ELEMENT-TYPE T :CANON-TYPE


 :SELF :TYPEP-TRANSFORM NIL :SPARE29 NIL :SPARE30 NIL :SPARE31 NIL :SPARE32
NIL)"NIL
  Surrounding forms:
    (LET* ((CACHE *PV-CACHE-N*) 
           (MASK *PV-CACHE-N-MASK*) 
           (OFFSET #))
      (DOPLIST (WRAPPER INSTANCE) WRAPPERS-AND-INSTANCES (SETQ OFFSET #))
      (SETQ OFFSET (%LOGAND MASK OFFSET))...)
    (BLOCK LOOKUP-PV-N
      (LET* (# 
             # 
             #)
        (DOPLIST # WRAPPERS-AND-INSTANCES #)
        (SETQ OFFSET #)...))

However, the compiler continued.  For the rest of this session, I
received errors relating the the problem of compiling
"make-parameter-references."  The first of these errors came after the
error above:

LOOKUP-PV-MISS compiled.
Error between functions
  Compile time fatal error while executing SYSTEM::%SP-BAD-FUNCTION-ERROR
    Error signalled by ERROR
    Error message would have been:
"Undefined function called: MAKE-PARAMETER-REFERENCES
  with args: (((CLASS STANDARD-CLASS) SLOTS PV) (CLASS SLOTS PV) NIL
LOOKUP-PV-MISS-1 (STANDARD-CLASS T T))
            
  apparently called by:
	#<Compiled Function EXPAND-DEFMETHOD-INTERNAL #x1B513F>"
INTERN-PV compiled...

This same error occurred a total of six times in compiling vector.lsp,
and it continued throughout the compilation, popping up in files
slots, init, defclass, and std-class.  All these files loaded as a
binary version even with the errors, except for std-class.  At this
point, I entered the debugger with the following error:

Loading binary of STD-CLASS...

Error in SYMBOL-FUNCTION:
Symbol has no global function definition: MAKE-INSTANCE

Control Stack Debugger
Apply #48: (SYMBOL-FUNCTION MAKE-INSTANCE) 
Debug 1> 

6. I knew I had to fix "make-parameter-references" before I could
continue, so I rewrote it on the unlikely chance that VAX Lisp 3.0 was
choking on the flet statement within.  I rewrote the function, making
"ignoredp" a function in the top-level environment:

(defun ignoredp (symbol declarations) ; include "declarations" in
			 	      ; parameter list 
  (dolist (decl (cdar declarations))
	  (when (and (eq (car decl) 'ignore)
		     (memq symbol (cdr decl)))
		(return t))))
  
(defun make-parameter-references (specialized-lambda-list
				  required-parameters
				  declarations
				  generic-function-name
				  specializers)
  (gathering ((references (collecting)))
	     (iterate ((s (list-elements specialized-lambda-list))
		       (p (list-elements required-parameters)))
		      (progn p)
		      (cond ((not (listp s)))
			    ;; Call ignoredp with extra parameter.
			    ((ignoredp (car s) declarations)
			     (warn "In defmethod ~S ~S, there is a~%~
                      redundant ignore declaration for the parameter ~S."
				   generic-function-name
				   specializers
				   (car s)))
			    (t
			     (gather (car s) references))))))

7. I saved boot.lsp with this change, deleted all binaries generated by
the compilation, and tried recompiling.  I got rid of the errors
generated by "make-parameter-references," but I still ended up in the
debugger because of "lookup-pv-n."  I also still had compilation
errors because of functions in vaxl-low.

In my next message I'll send a dribble of a session after taking these
steps.

			Chris Williamson