Export to GitHub

clojure - issue #98

proxy emits bytecode improperly referring to 21- & 22-arg overloads of IFn.invoke (Regression?)


Posted on Mar 15, 2009 by Happy Monkey

Attempting to obfuscate a jar that includes clojure.jar's contents using proguard results in two errors:

[proguard] Warning: clojure.proxy.clojure.lang.APersistentMap: can't find referenced method 'java.lang.Object invoke(java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object)' in class clojure.lang.IFn [proguard] Warning: clojure.proxy.clojure.lang.APersistentMap: can't find referenced method 'java.lang.Object invoke(java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object)' in class clojure.lang.IFn

This is almost identical to a previously reported (and fixed) problem with gen-class, where it used to emit 21- and 22-argument overloads of IFn.invoke that delegated to the gen-class' superclass' implementation (which obviously doesn't provide IFn.invoke overloads with greater than 20 arguments). This issue was reported and fixed last August:

http://groups.google.com/group/clojure/browse_thread/thread/b3698314084d8f54

Looks like the problem has cropped up again, only this time in conjunction with AOT compiled proxies.

Comment #1

Posted on Mar 16, 2009 by Happy Monkey

Fixed in r1330 -- thanks, Rich!

Comment #2

Posted on Mar 16, 2009 by Massive Dog

(No comment was entered for this change.)

Status: Fixed

Labels:
Type-Defect Priority-Low