When decompling java.util.Hashtable i get an VerifyException whit
this output
locals:[0:Njava/util/Hashtable$EntrySet;,1:Ljava/util/Hashtable;], stack:
[Njava/util/Hashtable$EntrySet;,Ljava/util/Hashtable;]
2_1846aed: putfield Ljava/util/Hashtable$EntrySet; this$0
Ljava/util/Hashtable;
5_882dfc: aload 0
6_82fba9: invokespecial Ljava/util/AbstractSet; <init> ()V
9_1584be7: return
jode.jvm.VerifyException: Njava/util/Hashtable$EntrySet; !=
Ljava/util/Hashtable$EntrySet; 2_1846aed: putfield
Ljava/util/Hashtable$EntrySet; this$0 Ljava/util/Hashtable;
"Njava/util/Hashtable$EntrySet; != Ljava/util/Hashtable$EntrySet;" is
my extra verbos exception code.
I also get this when trying to decomplie java.util.Collections.
My guse is that its legal do field acces on a uninizilide objectref.
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)
Logged In: YES
user_id=18252
This is a known problem. A fix is in the CVS in the main branch.
As a workaround you can turn off bytecode verification (with
--verify=no). However, the internal field this$0 of EntrySet will
probably not correctly be optimized away.
BTW: after reading the VM spec again, I can still find no reason
why this code is legal bytecode...