--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Fri Jan 14 13:59:18 2011 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassReader.java Tue Jan 18 08:37:05 2011 -0800
@@ -434,14 +434,19 @@
}
case CONSTANT_Class:
case CONSTANT_String:
+ case CONSTANT_MethodType:
bp = bp + 2;
break;
+ case CONSTANT_MethodHandle:
+ bp = bp + 3;
+ break;
case CONSTANT_Fieldref:
case CONSTANT_Methodref:
case CONSTANT_InterfaceMethodref:
case CONSTANT_NameandType:
case CONSTANT_Integer:
case CONSTANT_Float:
+ case CONSTANT_InvokeDynamic:
bp = bp + 4;
break;
case CONSTANT_Long:
@@ -510,6 +515,15 @@
case CONSTANT_Double:
poolObj[i] = new Double(getDouble(index + 1));
break;
+ case CONSTANT_MethodHandle:
+ skipBytes(4);
+ break;
+ case CONSTANT_MethodType:
+ skipBytes(3);
+ break;
+ case CONSTANT_InvokeDynamic:
+ skipBytes(5);
+ break;
default:
throw badClassFile("bad.const.pool.tag", Byte.toString(tag));
}
@@ -1821,6 +1835,13 @@
sym.savedParameterNames = paramNames.reverse();
}
+ /**
+ * skip n bytes
+ */
+ void skipBytes(int n) {
+ bp = bp + n;
+ }
+
/** Skip a field or method
*/
void skipMember() {