繁体   English   中英

需要CallSite解释

[英]CallSite explanation needed

来自CallSite文档

CallSite 是一个变量 MethodHandle 的持有者,它被称为它的目标。 链接到 CallSite 的调用动态指令将所有调用委托给站点的当前目标。 一个 CallSite 可能与多个调用动态指令相关联,或者它可能是“自由浮动的”,不与任何相关联。 在任何情况下,它都可以通过称为其动态调用程序的关联方法句柄来调用。

问题:

  1. 可以更改 CallSite 中的目标吗? 如何? 请提供代码示例。

  2. CallSite 如何与多个invokedynamic指令相关联?

  3. “自由浮动”CallSite 是什么意思? 如何创建?

编辑:注意:我想知道编写代码/lambda 的不同方法,以便在程序中出现这 3 点。

  1. 是的。 可以通过CallSite#setTarget更改MutableCallSiteVolatileCallSite的目标
  2. JVM 规范的这一部分定义了如何初始化动态计算的 CallSites。 但是要回答这个问题,我认为这是设计使然。 即 JVM 规范说它应该用于 JVM 实现,编译器可能会利用它来获取优势
  3. 您不会直接在代码中创建 CallSites,因为编译器会这样做,并且只是在那里声明可能存在“自由浮动”的CallSite

编辑:我想你误解的文档,我想你永远不应该初始化CallSite直接从你的代码,因为没有使用和文档的存在是为了告诉它做什么,以及JVM使用它来为提供MethodHandle invokedynamic指令.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM