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

Reply via email to