[armedbear-devel] IRONCLAD cannot be compiled on ABCL now
Mark Evenson
evenson at panix.com
Fri Jul 8 08:52:32 UTC 2011
On 7/7/11 12:32 , Mark Evenson wrote:
> On 7/7/11 11:07 AM, Chun Tian (binghe) wrote:
>> (defconstant a #.(make-array '(8 256) :element-type '(unsigned-byte
>> 32) :initial-element 0))
>
> Reproduced and filed [as ticket #156][1]
>
> [1]: http://trac.common-lisp.net/armedbear/ticket/156
>
[r13380][1] addresses this ticket allowing the form to be compiled again.
[r13380]: http://trac.common-lisp.net/armedbear/changeset/13380
But the compilation of the form probably doesn't do what you want. The
ABCL compiler currently dumps such forms in their READ form to be read
at load time rather than constructing JVM code to initialize the value.
This has two consequences for your usage here: first, since the
string has to be derserialized by the Lisp reader there is almost no
conceivable JVM implementation that will make this usage faster. And
the potentially more serious problem is that since the Lisp reader
syntax doesn't specify the underlying array type, at runtime one gets an
array who's BASE-ELEMENT-TYPE is T rather than (UNSIGNED-BYTE 32) which
is probably less efficient.
Does anyone know if ANSI requires us to restore the compiled type at
runtime? Or is the requirement to have "at least" the type specified
in the MAKE-ARRAY call?
@Alan: I value your intuition that the sharpsign dot form here isn't
portable. But is there a specific part of CLHS that you are thinking
about here that I could pore over?
--
"A screaming comes across the sky. It has happened before, but there
is nothing to compare to it now."
More information about the armedbear-devel
mailing list