invokedynamic

    2热度

    2回答

    为了支持动态类型和方法调度,我的编程语言引入了一种称为dynamic的类型。在类型为dynamic的被调用方上调用方法时,编译器首先将被调用方和堆栈中的所有参数推送,然后生成invokedynamic指令,而不是正常的invoke*指令。该指令指向一个名为DynamicLinker的类中的特殊引导方法,但在调用它时只有静态类型可用。 我的问题:如何获得传递给invokedynamic指令的参数的运

    0热度

    1回答

    TL; DR 请写在一些知名的动态语言(如Java描述语言),以及如何代码看起来像Java字节码使用invokedynamic和解释一段代码,为什么invokedynamic的使用是向前迈进了一步这里。 背景 我用Google搜索和阅读了很多有关的未说,新了invokedynamic指令,每个人都在互联网上同意上,这将有助于在JVM上速度的动态语言。 Thanks to stackoverflow

    2热度

    1回答

    我和Groovy代码的下面的代码片段一些意想不到的基准测试结果: class A{ def n(){ return 1 } } class B{ def n(){ return 2 } } class C{ def n(){ return 3 } } class D{ def n(

    1热度

    1回答

    我一直在拨打invokedynamic和MethodHandles信息最近。 看来,两个Linkage.registerBootstrapMethod()和@BootstrapMethod不赞成作为标记自举方法的手段。 他们如何注册到常量池?

    9热度

    1回答

    我真的很喜欢Grails,但我想知道如何获得Groovy 2的性能优势。 问题是如何配置开发和生产环境以获得“接近Java”的性能提升。 所以,如果我设置: * JDK 7 * Groovy 2 (indie JAR to use invokedynamic) * Grails 2.2 在那里,才能真正加快我的webapp 任何指引外的开箱? 我是否需要在我的Grails webapp代码

    1热度

    1回答

    是否可以配置用lang命名空间声明的Groovy bean,或者以这种方式手动使用GroovyScriptFactory以便它们使用invoke动态支持? <lang:groovy id="messenger" script-source="classpath:Messenger.groovy"> 我还没有找到任何可靠的文件在这种情况下。 而且,groovy-all提供了一个GroovyCla

    1热度

    1回答

    我正在努力确定是什么导致中等规模的Groovy应用程序在生产中缓慢执行。当服用运行的应用程序的线程转储我看到奇怪的是大量的线程有这样的堆栈跟踪: at java.lang.invoke.MethodHandleNatives.setCallSiteTargetNormal(Native Method) at java.lang.invoke.CallSite.setTargetNorma

    0热度

    1回答

    Here它说: Since 2.1 : [..] added the invokedynamic instruction 因此我想,所以能够写出含有茉莉invokedynamics指令代码。但是我找不到任何有关jasmin语法的文档,我只是想出了如何使用invokedynamic来获取Jasmin的VerifyErrors,但不知道如何创建一个工作示例。 这条指令在Jasmin中如何正确使

    1热度

    1回答

    我就可得知用于捕获lambda表达式,存在需要的对象分配(它是Object[]或一些abc$Lambda$xyz类型)。无论如何可以自定义这个过程吗?比方说,我有这样的代码: private void test() { int x = 5; Supplier<Integer> supplier =() -> x; foo(supplier); // potential

    0热度

    1回答

    我在窗口中做得很好,但在Linux中失败。 我想要做的是编译Ruby脚本与-Xcompile.invokedynamic = TRUE参数Java字节码: [[email protected]** rubyscript]$ jrubyc -Xcompile.invokedynamic=true hello.rb OptionParser::InvalidOption: