javap本地表输出中的“伪造”条目

时间:2011-10-29 10:57:48

标签: java javap

我正在使用javap来研究为我的某个类生成的代码,并注意到以下输出:

...
frame_type = 255 /* full_frame */
  offset_delta = 11
  locals = [ class Test, double, int, double, double, bogus, bogus, int, int, class "[D" ]
  stack = []
...

locals表中那些“假”类型/变量条目的含义是什么?它们是如何造成的?它们对生成的代码有什么影响?

类文件是使用Eclipse 3.7编译器生成的,javap来自OpenJDK-1.6b22。

1 个答案:

答案 0 :(得分:2)

我在查看this little gem文档时遇到了Javassist

  

<强> BOGUS

     

public static final类型 BOGUS

     

表示不可访问的值。代码无法访问此值   类型代表。当字节码重用本地变量表时会发生这种情况   具有非可合并类型的位置。一个例子是编译代码   它在一个分支中使用相同位置作为基本类型,并且a   另一个分支中的引用类型。

我认为这种歧义导致locals表中的“虚假”条目也是......