The version of ASM that is bundled in Clojure is very old. This will likely cause problems. You are correct in looking to ASM 4 since it has started supported the JSR-292 stuff and other Java 7 changes. I am planning on doing an extraction, update, and re-packaging of ASM in Clojure as soon as Programming Clojure hits the printers. This most likely won't get started until October though because of conferences.
Cheers, Aaron Bedra -- Clojure/core http://clojure.com On 08/29/2011 05:53 PM, Tal Liron wrote: > Progress... is slow. > > I encouraged other people to try, so the least I can do now is to > point you at some of the serious challenges. > > Right now I have what I think is a nice semi-generic mechanism for > invokedynamic. It's called the "Linker": it handles finding the target > method handle, bootstrapping, and what I call "restrapping", which is > what happens when you guard it with an "ILinkable" (another new > interface) and it fallbacks when a SwitchPoint is invalidated. There > some various MethodHandle composing to make sure caller and target are > both happy. I hope the "Linker" will make is easier to add > invokedynamic in Clojure, and possibly in other projects. > > My real challenge is not there, however, but with adapting Clojure to > JVM 7 more generally. invokedynamic requires V1.7 classes, and for > V1.7 the stack frame map that was optional in V1.6 is now a > requirement. This is overall a very good idea for moving the JVM > forward (these maps are a huge help for HotSpot), but I have no doubt > that it will create serious pain for any project that generates JVM > bytecode and until JVM 7 now could afford to be sloppier with stack > frames. The V1.7 verifier will simply not let you load classes that > don't have perfectly aligned maps. > > ASM has very nice support for doing the stack frame arithmetic for > you, but this is still being worked on in ASM 4 (trunk), and is not > working in Clojure. I'm getting VerifyErrors specifically having to do > with the mapping of try-catch blocks, and am working on debugging this > via close look at CheckClassAdapter dumps. It's about as much fun as > filling in tax forms. :/ > > (I've added support for two new defines, -Dclojure.jvm7=true and > -Dclojure.invokedynamic=true, so each can be turned on separately. To > be clear, my problems right now are in -Dclojure.jvm7=true and > -Dclojure.invokedynamic=false.) > > I've already patched one tiny part of ASM commons in order to add > support for invokedynamic, and my work on debugging this may result in > a more major patch to ASM. Assuming I do manage a fix. :/ > > So, what can I say? It's the cutting edge, baby. In for a penny, in > for a pound. > > -Tal > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient > with your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en