Reads a CONSTANT_Dynamic constant pool entry in #b. @param constantPoolEntryIndex the index of a CONSTANT_Dynamic entry in the class's constant pool table. @param charBuffer the buffer to be used to read the string. This buffer must be sufficiently large. It is not automatically res
(
final int constantPoolEntryIndex, final char[] charBuffer)
| 3496 | * @return the ConstantDynamic corresponding to the specified CONSTANT_Dynamic entry. |
| 3497 | */ |
| 3498 | private ConstantDynamic readConstantDynamic( |
| 3499 | final int constantPoolEntryIndex, final char[] charBuffer) { |
| 3500 | ConstantDynamic constantDynamic = (ConstantDynamic) cpInfoValues[constantPoolEntryIndex]; |
| 3501 | if (constantDynamic != null) { |
| 3502 | return constantDynamic; |
| 3503 | } |
| 3504 | int cpInfoOffset = cpInfoOffsets[constantPoolEntryIndex]; |
| 3505 | int nameAndTypeCpInfoOffset = cpInfoOffsets[readUnsignedShort(cpInfoOffset + 2)]; |
| 3506 | String name = readUTF8(nameAndTypeCpInfoOffset, charBuffer); |
| 3507 | String descriptor = readUTF8(nameAndTypeCpInfoOffset + 2, charBuffer); |
| 3508 | int bootstrapMethodOffset = bootstrapMethodOffsets[readUnsignedShort(cpInfoOffset)]; |
| 3509 | Handle handle = (Handle) readConst(readUnsignedShort(bootstrapMethodOffset), charBuffer); |
| 3510 | Object[] bootstrapMethodArguments = new Object[readUnsignedShort(bootstrapMethodOffset + 2)]; |
| 3511 | bootstrapMethodOffset += 4; |
| 3512 | for (int i = 0; i < bootstrapMethodArguments.length; i++) { |
| 3513 | bootstrapMethodArguments[i] = readConst(readUnsignedShort(bootstrapMethodOffset), charBuffer); |
| 3514 | bootstrapMethodOffset += 2; |
| 3515 | } |
| 3516 | constantDynamic = new ConstantDynamic(name, descriptor, handle, bootstrapMethodArguments); |
| 3517 | cpInfoValues[constantPoolEntryIndex] = constantDynamic; |
| 3518 | return constantDynamic; |
| 3519 | } |
| 3520 | |
| 3521 | /** |
| 3522 | * Reads a numeric or string constant pool entry in {@link #b}. <i>This method is intended for |
no test coverage detected