comparison agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java @ 2011:dad31fc330cd

7001379: bootstrap method data needs to be moved from constant pool to a classfile attribute Reviewed-by: twisti
author jrose
date Fri, 03 Dec 2010 15:53:57 -0800
parents f42a2f0c16bb
children 3582bf76420e
comparison
equal deleted inserted replaced
2010:7601ab0e1e33 2011:dad31fc330cd
319 dos.writeShort(refIndex); 319 dos.writeShort(refIndex);
320 if (DEBUG) debugMessage("CP[" + ci + "] = MT index = " + refIndex); 320 if (DEBUG) debugMessage("CP[" + ci + "] = MT index = " + refIndex);
321 break; 321 break;
322 } 322 }
323 323
324 case JVM_CONSTANT_InvokeDynamicTrans:
324 case JVM_CONSTANT_InvokeDynamic: { 325 case JVM_CONSTANT_InvokeDynamic: {
325 dos.writeByte(cpConstType); 326 dos.writeByte(cpConstType);
326 int[] values = cpool.getMultiOperandsAt(ci); 327 int value = cpool.getIntAt(ci);
327 for (int vn = 0; vn < values.length; vn++) { 328 short bsmIndex = (short) extractLowShortFromInt(value);
328 dos.writeShort(values[vn]); 329 short nameAndTypeIndex = (short) extractHighShortFromInt(value);
329 } 330 dos.writeShort(bsmIndex);
330 if (DEBUG) debugMessage("CP[" + ci + "] = INDY indexes = " + Arrays.toString(values)); 331 dos.writeShort(nameAndTypeIndex);
332 if (DEBUG) debugMessage("CP[" + ci + "] = INDY bsm = " +
333 bsmIndex + ", N&T = " + nameAndTypeIndex);
331 break; 334 break;
332 } 335 }
333 336
334 default: 337 default:
335 throw new InternalError("Unknown tag: " + cpConstType); 338 throw new InternalError("Unknown tag: " + cpConstType);