Howdy guys,

Some issues I've seen with 19a-pre3 on Debian/x86:

1. Efficiency notes on any old deftype. If you compile this in a file:

    (declaim (optimize (speed 2)))
    (deftype foo () 'number)

  You get:

  ; In: DEFTYPE FOO

  ;   (DEFTYPE FOO () 'NUMBER)
  ; --> EVAL-WHEN LISP::%DEFTYPE LISP::%DEFTYPE FUNCTION BLOCK LET* UNLESS COND 
  ; --> IF NOT IF <= 
  ; --> (LAMBDA (#:G3 #:G2 #:G1) (IF (> #:G3 #:G2) NIL (IF # NIL T))) 
  ; --> LISP::DOTTED-LIST-LENGTH BLOCK LOOP BLOCK LET LET ANSI-LOOP::LOOP-BODY 
  ; --> TAGBODY WHEN COND IF PROGN 
  ; ==>
  ;   (SETQ #:G4 (1+ #:G4))
  ; Note: Doing signed word to integer coercion (cost 20), for:
  ;     The first argument of CHECK-FIXNUM.

  This appears to happen with any deftype at all.

2. Spurious-looking notes when using WITH-SLOTS on structures.
   Example:

     (defpackage :test)
     (in-package :test)

     (defstruct s (a "default value"))

     (defun test ()
       (with-slots (a) (make-s)
         a))

   When compiling:

   ; In: DEFUN TEST

   ;   (WITH-SLOTS (A) (MAKE-S) A)
   ; --> LET SYMBOL-MACROLET A SLOT-VALUE PCL::ACCESSOR-SLOT-VALUE LET FUNCALL 
   ; --> C::%FUNCALL 
   ; ==>
   ;   #'(PCL:SLOT-ACCESSOR :GLOBAL A PCL::READER)
   ; Warning: Undefined function (PCL:SLOT-ACCESSOR :GLOBAL A
   ;                              PCL::READER) as the argument to FUNCTION
   ; ; 

   ; Warning: This function is undefined:
   ;   (PCL:SLOT-ACCESSOR :GLOBAL A PCL::READER)
   ; 

   Though it actually works:

     CL-USER> (test::test)
     "default value"

   And if you recompile the file after loading it then the warnings
   disappear.

-Luke

Reply via email to