Pergunta

Atualmente, estou instrumentando bytecode usando o BCEL. Na API BCEL, os dois tipos de instruções LOOKUPSWITCH e TABLESWITCH (package org.apache.bcel.generic) estão implementando interface StackProducer. Eu sei que essas duas instruções aparecem na pilha de operando (ou seja, consome -a) e não produzem nada na pilha, então como é que eles implementam StackProducer ao invés de StackConsumer? Isso é um inseto? obrigada

(PS: tentei postar esta pergunta na lista de discussão BCEL sem resposta. Espero encontrar mais sorte aqui)

Foi útil?

Solução

Era um inseto. Mas já foi corrigido há um tempo atrás.

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 é a classe base para LOOKUPSWITCH e TABLESWITCH.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top