- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我目前正在使用 BCEL 检测字节码。在 BCEL API 中,LOOKUPSWITCH
和 TABLESWITCH
这两种指令类型(package org.apache.bcel.generic
)正在实现接口(interface) StackProducer
。我知道这两条指令会弹出操作数堆栈(即使用它)并且不会在堆栈上产生任何内容,那么它们如何实现 StackProducer
而不是 StackConsumer
呢?这是一个错误吗?谢谢
(ps:我试图在 BCEL 邮件列表上发布这个问题,但没有得到答复。我希望我能在这里找到更多的运气)
最佳答案
它是 a bug .不过现在已经修复了。
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
的基类。
关于java - 字节码:LOOKUPSWITCH 和 TABLESWITCH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2382682/
假设我有以下 switch 语句: switch (i) { case 0: ...; return ...; case 1: ...; return ...; case 2:
上下文:我一直在对使用 invokedynamic 之间的差异进行基准测试并手动生成字节码(这是在决定面向 JVM 的编译器是否应该发出更冗长的“传统”字节码或仅使用智能引导方法调用 invokedy
我目前正在使用 BCEL 检测字节码。在 BCEL API 中,LOOKUPSWITCH 和 TABLESWITCH 这两种指令类型(package org.apache.bcel.generic)正
Scala 2.11 将相对密集的 Int 范围内的 match 表达式编译成 lookupswitch: lookupswitch { // 21 -12: 200 -11: 200
对于给定的字节码,当遇到switch 指令时,我想知道下一条指令在哪里(无需运行代码)。为了做到这一点,我在想我应该计算指令的总大小,包括跳转偏移量或匹配偏移量对。这可能吗?如果不是,怎么可能知道下一
我在理解 Java 字节码中的 LookUpSwitch 和 TableSwitch 时有些困难。 如果我理解得很好,LookUpSwitch 和 TableSwitch 都对应于 switch Ja
当我这样做的时候 val oldId :Long = 123; val i = 1 val newId = (oldId: @switch) match { case 1 => 1234
我是一名优秀的程序员,十分优秀!