[armedbear-devel] Stack overflow when compiler macro with fallback is triggered

James M. Lawrence llmjjmll at gmail.com
Sun Jun 3 20:19:49 UTC 2012


(eval-when (:compile-toplevel :load-toplevel :execute)
  (defun foo () 99)

  (define-compiler-macro foo ()
    `(locally (declare (notinline foo))
       (foo))))

(defun call-foo ()
  (foo))

Of course, the use case is a compiler macro that says, "OK, let's
optimize! ... Never mind, I don't want to optimize that."

Armed Bear Common Lisp 1.0.1-svn-13750-13751
Java 1.7.0_04 Oracle Corporation
[...]
; (DEFUN FOO ...)
; (DEFINE-COMPILER-MACRO FOO ...)
; (DEFUN CALL-FOO ...)
java.lang.StackOverflowError
	at org.armedbear.lisp.StructureObject$pf_make_structure.execute(StructureObject.java:671)
	at org.armedbear.lisp.Symbol.execute(Symbol.java:865)
	at org.armedbear.lisp.LispThread.execute(LispThread.java:760)
	at org.armedbear.lisp.jvm_714.execute(jvm.lisp:567)
	at org.armedbear.lisp.CompiledClosure.execute(CompiledClosure.java:92)
	at org.armedbear.lisp.Symbol.execute(Symbol.java:775)
	at org.armedbear.lisp.LispThread.execute(LispThread.java:633)
	at org.armedbear.lisp.jvm_746.execute(jvm.lisp:572)
	at org.armedbear.lisp.Symbol.execute(Symbol.java:775)
	at org.armedbear.lisp.LispThread.execute(LispThread.java:633)
	at org.armedbear.lisp.compiler_pass1_26.execute(compiler-pass1.lisp:487)
	at org.armedbear.lisp.Symbol.execute(Symbol.java:785)
	at org.armedbear.lisp.LispThread.execute(LispThread.java:649)
	at org.armedbear.lisp.compiler_pass1_61.execute(compiler-pass1.lisp:1204)
	at org.armedbear.lisp.LispThread.execute(LispThread.java:649)
	at org.armedbear.lisp.compiler_pass1_61.execute(compiler-pass1.lisp:1204)
	at org.armedbear.lisp.Symbol.execute(Symbol.java:785)
	at org.armedbear.lisp.compiler_pass1_20.execute(compiler-pass1.lisp:383)
	at org.armedbear.lisp.Symbol.execute(Symbol.java:785)
	at org.armedbear.lisp.LispThread.execute(LispThread.java:649)
	at org.armedbear.lisp.compiler_pass1_26.execute(compiler-pass1.lisp:487)
	at org.armedbear.lisp.Symbol.execute(Symbol.java:785)
	at org.armedbear.lisp.LispThread.execute(LispThread.java:649)
	at org.armedbear.lisp.compiler_pass1_61.execute(compiler-pass1.lisp:1204)
	at org.armedbear.lisp.LispThread.execute(LispThread.java:649)
	at org.armedbear.lisp.compiler_pass1_61.execute(compiler-pass1.lisp:1204)
	at org.armedbear.lisp.Symbol.execute(Symbol.java:785)
	at org.armedbear.lisp.compiler_pass1_20.execute(compiler-pass1.lisp:383)
	at org.armedbear.lisp.Symbol.execute(Symbol.java:785)
	at org.armedbear.lisp.LispThread.execute(LispThread.java:649)
	at org.armedbear.lisp.compiler_pass1_26.execute(compiler-pass1.lisp:487)
        [...]




More information about the armedbear-devel mailing list