gcl-devel
[Top][All Lists]
Advanced

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

Re: [Gcl-devel] ANSI on Windows build failure.


From: Camm Maguire
Subject: Re: [Gcl-devel] ANSI on Windows build failure.
Date: 30 Sep 2003 00:06:47 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings!

"Mike Thomas" <address@hidden> writes:

> Hi Camm.
> 
> I think I may be onto something.
> 

Great!

> In a message to James Amundsen a few minutes ago re this issue in relation
> to Maxima, I looked at the cut and pasted error message and thought, "Hang
> on, safety is zero, speed three".
> 
> 
> So I reversed these values in the PCL code and look what happens:
> 
> ===========================================================================
> ......
> Finished compiling c:/cvs/stable/gcl-2.6.1.ansi/unixport/../pcl/pcl_boot.o.
>  Loading binary of PCL_BOOT...
> 
>  Error: The function |SYSTEM:%SET-COMPILED-FUNCTION-NAME inline| is
> undefined.
>  Fast links are on: do (si::use-fast-links nil) for debugging
>  Error signalled by SYSTEM:%SET-COMPILED-FUNCTION-NAME.
>  Broken at SYSTEM:%SET-COMPILED-FUNCTION-NAME.  Type :H for Help.
>  PCL>>

1)  I proclaimed safety to 3 and speed to 0, then saved the trad image
    before compiling pcl.  Subsequent build of pcl went fine, but I'm
    thinking now that I must have left optimizations on somehow.  This symbol
    is defined in pcl_gcl_low.lisp -- it is a compiler 'inline',
    meaning a function-like symbol that will be rewritten by the optimizer, it 
is
    not a function.  There is a (define-inlines) macro call in this
    lisp file, which expands the inline definitions as (for example):


  (EVAL-WHEN (COMPILE EVAL LOAD)
    (MAKE-FUNCTION-INLINE
        '(|SYSTEM:%SET-COMPILED-FUNCTION-NAME inline| (T T) T T NIL
             "((#0)->cf.cf_name)=(#1)")))
  (DEFUN SYSTEM:%SET-COMPILED-FUNCTION-NAME (#:G1379 #:G1380)
    (THE T
      (|SYSTEM:%SET-COMPILED-FUNCTION-NAME inline| #:G1379 #:G1380)))
  (MAKE-FUNCTION-INLINE
      '(SYSTEM:%SET-COMPILED-FUNCTION-NAME (T T) T T NIL
           "((#0)->cf.cf_name)=(#1)"))
 
    make-inline is also defined right above this call.  The gist of
    this being that the call to si::%set-compiled-function-name gets
    rewritten as ...->cf.cf_name=.....  If one disables function
    inlining via disabling the optimizer, I'm not sure what will
    happen.  If my guess is right (i.e. that we can currently only
    compile pcl with optimization), this situation should obviously not
    persist, but the short end is that I'd expect a function not
    defined error to be probable.  I've not yet reproduced it myself.
    Will try to look at this some more.


> ===========================================================================
> 
> 
> Earlier on I get a bunch of warnings from pcl_pkg.lisp which implies that
> this function is not actually being exported:
> 
> 
> 

2) These are due to GCL's moving 'package-operations' to the top of
   the init file.  We should really rework this, but it is likely not
   simple, as it would require toggling between reading interpreted
   init code and compiled function initialization code in the same
   initialization sequence for a given file.  Right now GCL moves such
   non-compiled top-level package forms to the effective top of the
   file, and stores them in the .data file.  Compiled functions only
   are in the .o file.  The init process therefore has only two places
   with which to distinguish and order init code -- we'd have to come
   up with some way of interspersing the .data and .o to preserve the
   strict meaning of any non-trivial top-level sequence.   I get
   exactly the same warnings as you do.  These warnings are often more
   alarming than necessary, as any package-op form which does not
   depend on code above it in a source file can be safely moved to the
   top, yet GCL currently complains for all such cases without
   distinguishing safe from non-safe moves.  Maybe there is a nice
   algorithm for this?  But again, the short end is that these exports
   (I think) work just fine when moved to the top despite the warning,
   and alas probably do not shed light on your situation.

3) There are quite a few pending ansi fixes which need to go in the
   pcl code, and this is also the most difficult section to debug and
   modify, IMHO.  Luckily, cmucl uses pcl too.  I thought at one point
   that pcl was a finished product and that we'd just as soon work
   with Dr. Schelter's last copy as any, but to the contrary, I
   believe now that Paul's tests have sparked quite a bit of
   successful work on pcl in the cmucl camp.  I can see absolutely no
   reason for us to maintain any separate pcl tree apart from the
   pcl_gcl_low.lisp file -- therefore I think a very fruitful exercise
   is to attempt to load the cmucl pcl tree into gcl on an interpreted
   basis at first, and then compile, and then replace what we have
   with that.  cmucl's public domain license is perfectly compatible
   with out lgpl.  If anyone would like to help with this, one can
   look at the init sequence in sys_pcl_gcl.c in unixport, and replace
   the pcl binary object init calls with lsp_init source calls, as in
   sys_pre_gcl.c.  One hopefully can then obtain an interpreted-only
   pcl image and go from there.  I will also be attempting this in the
   days to come.

Take care,


> ===========================================================================
> 
> Compiling PCL_PKG...
>  Compiling c:/cvs/stable/gcl-2.6.1.ansi/unixport/../pcl/pcl_pkg.lisp.
>  ; (EXPORT (INTERN # ...) ...) is being compiled.
>  ;; Warning: The package operation (EXPORT (INTERN
>                                             (SYMBOL-NAME :ITERATE)
>                                             (FIND-PACKAGE :ITERATE))
>                                            (FIND-PACKAGE :ITERATE)) was in a
> bad place.
>  ; (IN-PACKAGE :WALKER) is being compiled.
>  ;; Warning: The package operation (IN-PACKAGE :WALKER) was in a bad place.
>  ; (EXPORT '(DEFINE-WALKER-TEMPLATE WALK-FORM ...)) is being compiled.
>  ;; Warning: The package operation (EXPORT '(DEFINE-WALKER-TEMPLATE
>                                              WALK-FORM
>                                              WALK-FORM-EXPAND-MACROS-P
>                                              NESTED-WALK-FORM
>                                              VARIABLE-LEXICAL-P
>                                              VARIABLE-SPECIAL-P
>                                              VARIABLE-GLOBALLY-SPECIAL-P
>                                              *VARIABLE-DECLARATIONS*
>                                              VARIABLE-DECLARATION
>                                              MACROEXPAND-ALL)) was in a bad
> place.
>  ; (IN-PACKAGE :ITERATE) is being compiled.
>  ;; Warning: The package operation (IN-PACKAGE :ITERATE) was in a bad place.
>  ; (EXPORT '(ITERATE ITERATE* ...)) is being compiled.
>  ;; Warning: The package operation (EXPORT '(ITERATE ITERATE* GATHERING
>                                              GATHER WITH-GATHERING
>                                              INTERVAL ELEMENTS
>                                              LIST-ELEMENTS LIST-TAILS
>                                              PLIST-ELEMENTS EACHTIME
>                                              WHILE UNTIL COLLECTING
>                                              JOINING MAXIMIZING
>                                              MINIMIZING SUMMING
>                                              *ITERATE-WARNINGS*)) was in a
> bad place.
>  ; (IN-PACKAGE :PCL) is being compiled.
>  ;; Warning: The package operation (IN-PACKAGE :PCL) was in a bad place.
>  ; (IMPORT '(STRUCTUREP STRUCTURE-DEF ...)) is being compiled.
>  ;; Warning: The package operation (IMPORT '(STRUCTUREP STRUCTURE-DEF
>                                              STRUCTURE-REF)) was in a bad
> place.
>  ; (SHADOW 'DOTIMES) is being compiled.
>  ;; Warning: The package operation (SHADOW 'DOTIMES) was in a bad place.
>  ; (IN-PACKAGE "SI") is being compiled.
>  ;; Warning: The package operation (IN-PACKAGE "SI") was in a bad place.
>  ; (EXPORT '(%STRUCTURE-NAME %COMPILED-FUNCTION-NAME ...)) is being
> compiled.
>  ;; Warning: The package operation (EXPORT '(%STRUCTURE-NAME
>                                              %COMPILED-FUNCTION-NAME
>                                              %SET-COMPILED-FUNCTION-NAME
>                                              %INSTANCE-REF
>                                              %SET-INSTANCE-REF)) was in a
> bad place.
>  ; (IN-PACKAGE 'PCL) is being compiled.
>  ;; Warning: The package operation (IN-PACKAGE 'PCL) was in a bad place.
>  ; (SHADOW 'DOCUMENTATION) is being compiled.
>  ;; Warning: The package operation (SHADOW 'DOCUMENTATION) was in a bad
> place.
>  End of Pass 1.
>  End of Pass 2.
>  OPTIMIZE levels: Safety=3, Space=0, Speed=1
>  Finished compiling c:/cvs/stable/gcl-2.6.1.ansi/unixport/../pcl/pcl_pkg.o.
> ===========================================================================
> 
> 
> 
> Any ideas about this missing function?  Do you get the same problem on
> Linux?
> 
> 
> Cheers
> 
> Mike Thomas.
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Gcl-devel mailing list
> address@hidden
> http://mail.gnu.org/mailman/listinfo/gcl-devel
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]