[armedbear-devel] patch for bug: function JVM::%FLOAT-BITS is undefined
Anton Vodonosov
avodonosov at gmail.com
Sat Jul 18 05:32:18 UTC 2009
Hello,
Please ignore the previous message. Looks like I just had somewhat broken ABCL.
Freshly built ABCL (without my fix) works OK.
Best regards,
- Anton
2009/7/18 Anton Vodonosov <avodonosov at gmail.com>:
> Hello,
>
> Consider the following java snippet:
>
> public static void main(String[] args) throws Throwable
> {
> Interpreter interpreter = Interpreter.createInstance();
> interpreter.eval("(compile nil '(lambda () 0.1))");
> }
>
> It fails with error:
>
> Debugger invoked on condition of type UNDEFINED-FUNCTION:
> The function JVM::%FLOAT-BITS is undefined.
>
> In the REPL (compile nil '(lambda () 0.1)) works normally.
>
> I do not understand what is the difference in environment between
> ABCL REPL and embedded ABCL, but the following trivial patch
> fixes the problem in for the embedded case.
>
> Index: src/org/armedbear/lisp/compiler-pass2.lisp
> ===================================================================
> --- src/org/armedbear/lisp/compiler-pass2.lisp (revision 12050)
> +++ src/org/armedbear/lisp/compiler-pass2.lisp (working copy)
> @@ -132,7 +132,7 @@
> (defknown pool-float (single-float) (integer 1 65535))
> (defun pool-float (n)
> (declare (optimize speed))
> - (pool-get (list 4 (%float-bits n))))
> + (pool-get (list 4 (sys::%float-bits n))))
>
> (defun pool-long/double (entry)
> (let* ((ht *pool-entries*)
> @@ -163,7 +163,7 @@
> (defknown pool-double (double-float) (integer 1 65535))
> (defun pool-double (n)
> (declare (optimize speed))
> - (let* ((n (%float-bits n))
> + (let* ((n (sys::%float-bits n))
> (entry (list 6
> (logand (ash n -32) #xffffffff)
> (logand n #xffffffff))))
>
> Best regards,
> - Anton
>
More information about the armedbear-devel
mailing list