1.1 --- a/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Fri Jan 14 13:59:18 2011 -0800 1.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Tue Jan 18 08:37:05 2011 -0800 1.3 @@ -434,14 +434,19 @@ 1.4 } 1.5 case CONSTANT_Class: 1.6 case CONSTANT_String: 1.7 + case CONSTANT_MethodType: 1.8 bp = bp + 2; 1.9 break; 1.10 + case CONSTANT_MethodHandle: 1.11 + bp = bp + 3; 1.12 + break; 1.13 case CONSTANT_Fieldref: 1.14 case CONSTANT_Methodref: 1.15 case CONSTANT_InterfaceMethodref: 1.16 case CONSTANT_NameandType: 1.17 case CONSTANT_Integer: 1.18 case CONSTANT_Float: 1.19 + case CONSTANT_InvokeDynamic: 1.20 bp = bp + 4; 1.21 break; 1.22 case CONSTANT_Long: 1.23 @@ -510,6 +515,15 @@ 1.24 case CONSTANT_Double: 1.25 poolObj[i] = new Double(getDouble(index + 1)); 1.26 break; 1.27 + case CONSTANT_MethodHandle: 1.28 + skipBytes(4); 1.29 + break; 1.30 + case CONSTANT_MethodType: 1.31 + skipBytes(3); 1.32 + break; 1.33 + case CONSTANT_InvokeDynamic: 1.34 + skipBytes(5); 1.35 + break; 1.36 default: 1.37 throw badClassFile("bad.const.pool.tag", Byte.toString(tag)); 1.38 } 1.39 @@ -1821,6 +1835,13 @@ 1.40 sym.savedParameterNames = paramNames.reverse(); 1.41 } 1.42 1.43 + /** 1.44 + * skip n bytes 1.45 + */ 1.46 + void skipBytes(int n) { 1.47 + bp = bp + n; 1.48 + } 1.49 + 1.50 /** Skip a field or method 1.51 */ 1.52 void skipMember() {