質問

私は現在、BCELを使ってバイトコードをインストルメントしています。 BCEL APIでは、2つの命令タイプLOOKUPSWITCHTABLESWITCHpackage org.apache.bcel.generic)インターフェイスStackProducerを実装しています。私は、これら2つの命令は、オペランドスタックをポップすることを知っている(すなわち、それを消費する)と、彼らはStackProducer代わりのStackConsumerを実装する方法来るので、スタック上に何も生産しませんか?これはバグですか?

ありがとう

(PS:私は無応答とBCELのメーリングリストでこの質問を投稿しようとした私は、私はここに多くの幸運を見つけることができます願っています)。

役に立ちましたか?

解決

これはバグのでした。しかし、それは今しばらく前に修正されています。

tree:generic jbevain$ svn log -c 1081190 && svn diff -c 1081190
------------------------------------------------------------------------
r1081190 | dbrosius | 2011-03-13 19:41:20 +0100 (Sun, 13 Mar 2011) | 1 line

Bug 48908 - Select instructions should implement StackConsumer instead of StackProducer
------------------------------------------------------------------------
Index: Select.java
===================================================================
--- Select.java (revision 1081189)
+++ Select.java (revision 1081190)
@@ -33,7 +33,7 @@
  * @see InstructionList
  */
 public abstract class Select extends BranchInstruction implements VariableLengthInstruction,
-        StackProducer {
+        StackConsumer {

     private static final long serialVersionUID = 2806771744559217250L;
     protected int[] match; // matches, i.e., case 1: ...

Select LOOKUPSWITCHTABLESWITCHの基本クラスである。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top