<< Back to previous view

[CLJ-713] Upgrade ASM to a more current version Created: 11/Jan/11  Updated: 11/Mar/13

Status: Open
Project: Clojure
Component/s: None
Affects Version/s: None
Fix Version/s: Approved Backlog

Type: Enhancement Priority: Minor
Reporter: Aaron Bedra Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None

Attachments: Text File asm-split.txt    
Patch: Code

 Description   
  • Move to the latest ASM (currently 3.3.1)
  • No longer subset-ed
  • Still re-rooted it under clojure.asm


 Comments   
Comment by Ghadi Shayban [ 10/Mar/13 6:34 AM ]

Attached is a patch that externalizes and moves the ASM lib to the latest version (4.1), which has support for invokeDynamic if a brave soul wants to emit that instruction. Heed fogus's caveats [3].

ASM in this patch is not re-rooted, but an external Maven dependency. It does have the disadvantage of possibly conflicting with other dependents of ASM, but this is the same approach is used by other JVM langs.

Can classloaders mitigate that problem?

[1] Recent post on clojure-dev, oblivious of [2] https://groups.google.com/d/msg/clojure-dev/iX-ZFPk_zyE/Es3mDOdG3bYJ
[2] https://groups.google.com/d/msg/clojure-dev/ahJXBT1vG68/_fEEM6Lc7LcJ
[3] http://blog.fogus.me/2011/10/14/why-clojure-doesnt-need-invokedynamic-but-it-might-be-nice/

Comment by Ghadi Shayban [ 11/Mar/13 10:41 AM ]

Ran some of Andy Fingerhut's expression microbenchmarks on -master with the patch. There is no difference between performance compared to 1.5.1.

Comment by Andy Fingerhut [ 11/Mar/13 3:43 PM ]

Ghadi, out of curiosity, if you do AOT compilation of some Clojure class files, does it produce byte-for-byte identical .class files after your changes vs. before your changes? If so, that would be pretty high assurance of no problems. If not, it would be good to understand what changed.

Generated at Fri May 24 09:38:40 CDT 2013 using JIRA 4.4#649-r158309.