After doing much reading on invokeDynamic, i am still a bit confused.One repeating theme seems to be how Clojure doesn't really need it, or at least need it less than other dynamic language implementations on the JVM (Jruby,JPython,Groovy etc.).I didn't understand all the details but it seems that having type annotations is the main reason, which simply eliminate the dynamic dispatch problem.
1- Is it safe to describe invoke-dynamic as way to efficiently implement complex method dispatch scenarios ? (is there more to it ?)
2- Shouldn't having a jit eliminate the need for invoke-dynamic ? The problem seems to arise from the lack of runtime type informations and a jit should have this information.
3-JRuby seems to booth have a jit and use invokdynamic,Why ?