diff -r ba912ef24b27 -r 4b09a4b689a4 rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Wed Apr 30 15:04:10 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeParser.java Thu Jun 26 23:54:17 2014 +0200 @@ -58,6 +58,9 @@ public static final int CONSTANT_METHOD = 10; public static final int CONSTANT_INTERFACEMETHOD = 11; public static final int CONSTANT_NAMEANDTYPE = 12; + public static final int CONSTANT_METHODHANDLE = 15; + public static final int CONSTANT_METHODTYPE = 16; + public static final int CONSTANT_INVOKEDYNAMIC = 18; /* Access Flags */ public static final int ACC_PUBLIC = 0x00000001; @@ -668,7 +671,17 @@ case CONSTANT_NAMEANDTYPE: cpool[i] = new CPX2(in.readUnsignedShort(), in.readUnsignedShort()); break; - + case CONSTANT_METHODHANDLE: + in.readByte(); + in.readUnsignedShort(); + break; + case CONSTANT_METHODTYPE: + in.readUnsignedShort(); + break; + case CONSTANT_INVOKEDYNAMIC: + in.readUnsignedShort(); + in.readUnsignedShort(); + break; case 0: default: throw new ClassFormatError("invalid constant type: " + (int) tags[i]);