4

invokedynamicJVM7で「ダックタイピング」を実装しようとしています。2 つの異なるクラスを作成しましたが、どちらもgreet()を返すメソッドを持っていますString。そのうちの 1 つをランダムに選択し、インスタンスをスタックに格納してinvokedynamic(ASM を使用して) 呼び出します。

ブートストラップメソッドで引数にアクセスできるのだろうか。どのオブジェクトがスタック上にあり、どのメソッドを返す必要があるかを知らずに適切CallSiteに返すことができないためです。targetgreet()

私のアプローチが間違っている場合、正しいアプローチは何ですか?

4

1 に答える 1

2

自分で答えます。

  1. 独自の静的メソッドでバインドCallSiteします(たとえばlookup(CallSite cs, Object[] args)
  2. args[0]受信者であり、残りは引数です。ルックアップメソッドで好きなことをしてください。

インラインキャッシング(私はそうだった)に興味がある場合は、次の2つのリンクをご覧ください。

于 2011-11-28T17:37:53.457 に答える