Class NewClassRefForm
java.lang.Object
org.apache.commons.compress.harmony.unpack200.bytecode.forms.ByteCodeForm
org.apache.commons.compress.harmony.unpack200.bytecode.forms.ReferenceForm
org.apache.commons.compress.harmony.unpack200.bytecode.forms.ClassRefForm
org.apache.commons.compress.harmony.unpack200.bytecode.forms.NewClassRefForm
This class is an extension of the ClassRefForm. It has two purposes: 1. To keep track of the last type used in a new() instruction in the current class. 2.
To allow the sender to create instances of either a specified class (which then becomes the new class) or the last used new class.
-
Field Summary
Fields inherited from class ClassRefForm
widenedFields inherited from class ByteCodeForm
byteCodeArray, byteCodesByName, WIDENED -
Constructor Summary
ConstructorsConstructorDescriptionNewClassRefForm(int opcode, String name, int[] rewrite) Constructs a new instance with the specified opcode, name, operandType and rewrite. -
Method Summary
Modifier and TypeMethodDescriptionvoidsetByteCodeOperands(ByteCode byteCode, OperandManager operandManager, int codeLength) Sets the rewrite of the byteCode.Methods inherited from class ClassRefForm
getOffset, getPoolID, setNestedEntriesMethods inherited from class ByteCodeForm
calculateOperandPosition, firstOperandIndex, fixUpByteCodeTargets, get, getName, getOpcode, getRewrite, getRewriteCopy, hasMultipleByteCodes, hasNoOperand, nestedMustStartClassPool, operandLength, toString
-
Constructor Details
-
NewClassRefForm
Constructs a new instance with the specified opcode, name, operandType and rewrite.- Parameters:
opcode- index corresponding to the opcode's value.name- String printable name of the opcode.rewrite- Operand positions (which will later be rewritten in ByteCodes) are indicated by -1.
-
-
Method Details
-
setByteCodeOperands
public void setByteCodeOperands(ByteCode byteCode, OperandManager operandManager, int codeLength) throws Pack200Exception Description copied from class:ByteCodeFormSets the rewrite of the byteCode.- Overrides:
setByteCodeOperandsin classReferenceForm- Parameters:
byteCode- ByteCode to be updated (!)operandManager- OperandTable from which to draw infocodeLength- Length of bytes (excluding this bytecode) from the beginning of the method. Used in calculating padding for some variable-length bytecodes (such as lookupswitch, tableswitch).- Throws:
Pack200Exception- if a type is not supported or an index not in the range [0,Integer.MAX_VALUE].
-