Байт-код: LOOKUPSWITCH и TABLESWITCH - PullRequest
       35

Байт-код: LOOKUPSWITCH и TABLESWITCH

4 голосов
/ 04 марта 2010

В настоящее время я использую байт-код, используя BCEL. В API BCEL два типа команд LOOKUPSWITCH и TABLESWITCH (package org.apache.bcel.generic) реализуют интерфейс StackProducer. Я знаю, что эти две инструкции извлекают стек операндов (то есть потребляют его) и не производят ничего в стеке, так почему же они реализуют StackProducer вместо StackConsumer? Это ошибка? Спасибо

(ps: я пытался опубликовать этот вопрос в списке рассылки BCEL без ответа. Надеюсь, мне здесь больше повезет)

1 Ответ

3 голосов
/ 05 октября 2012

Это была ошибка . Но это было исправлено некоторое время назад.

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 является базовым классом для LOOKUPSWITCH и TABLESWITCH.

...