[Ecls-list] logior/ash and fixnum inlining

Matthew Mondor mm_lists at pulsar-zone.net
Thu Jul 28 00:26:12 UTC 2011


On Wed, 27 Jul 2011 23:35:52 +0200
Juan Jose Garcia-Ripoll <juanjose.garciaripoll at googlemail.com> wrote:

> On Wed, Jul 27, 2011 at 12:19 AM, Matthew Mondor
> <mm_lists at pulsar-zone.net>wrote:
> 
> > And the following works.  I assume that ASH calls are not getting
> > inlined in relation to the comment in the code about undefined C
> > compiler behaviour in some circumstances, which would require the
> > inlining code to be more complex to only inline in appropriate
> > circumstances... and using c::shift<< makes it easier in this case.
> >
> 
> If possible, please refrain from using c::shift<< It is a remnant from the
> former ASH optimizer. If you need it in your code, define it as your own
> macro wrapping around C-INLINE, but this function will disappear (In general
> anything outside CL, EXT and the SB-SOCKETS and other SB-* packages should
> not be used).
> 
> I had to fix something in the compiler and used this chance to add a
> candidate for an optimizer of ASH. Seems to work with your example, please
> report any problems.

Thanks!  I updated and started the build, yet I got the following error:


[...]
;;; Warning:
;;;   in file DEPENDENT.LISP, position 4360
;;;   at (DEFUN AREF-INT8 ...)
;;;   ! Unable to coerce lisp object from type ((UNSIGNED-BYTE 8),:UINT8-T)
;;; to C/C++ type ((UNSIGNED-BYTE 8),:UNSIGNED-BYTE)
;;; Emitting code for ASET-INT8.
;;; Emitting code for AREF-CARD16.

Condition of type: SIMPLE-TYPE-ERROR
In function ABS, the value of the only argument is
  (8)
which is not of the expected type NUMBER
Available restarts:

1. (ABORT) ABORT

Top level in: #<process TOP-LEVEL>.
> 



Also, I noticed that there's a debug printf in main.d:
	printf("HOLA\n");



I'll try again later or tomorrow,
-- 
Matt




More information about the ecl-devel mailing list