4

我正在尝试invokedynamic在 JVM7 中实现“鸭子打字”。我创建了两个不同的类,它们都有greet()返回的方法String。我在其中一个之间随机选择,将实例存储在堆栈上并调用invokedynamic(使用 ASM)。

我想知道我是否可以在引导方法中访问参数。因为我不能在不知道堆栈上的对象以及应该返回哪些方法的情况下返回CallSite适当的targetgreet()

如果我的方法是错误的,那么正确的方法是什么?

4

1 回答 1

2

我会自己回答。

  1. 使用您自己的静态方法绑定CallSite(例如lookup(CallSite cs, Object[] args)
  2. args[0]是接收者,其余的是参数。在查找方法中做任何你想做的事情。

如果您对内联缓存感兴趣(我曾经),请查看以下两个链接:

于 2011-11-28T17:37:53.457 回答