[armedbear-devel] patch for bug: function JVM::%FLOAT-BITS is undefined

Anton Vodonosov avodonosov at gmail.com
Fri Jul 17 23:33:54 UTC 2009


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