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
-
public class NewClassRefForm extends ClassRefForm
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 org.apache.commons.compress.harmony.unpack200.bytecode.forms.ClassRefForm
widened
-
Fields inherited from class org.apache.commons.compress.harmony.unpack200.bytecode.forms.ByteCodeForm
byteCodeArray, byteCodesByName, WIDENED
-
-
Constructor Summary
Constructors Constructor Description NewClassRefForm(int opcode, java.lang.String name, int[] rewrite)Constructs a new instance with the specified opcode, name, operandType and rewrite.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidsetByteCodeOperands(ByteCode byteCode, OperandManager operandManager, int codeLength)Sets the rewrite of the byteCode.-
Methods inherited from class org.apache.commons.compress.harmony.unpack200.bytecode.forms.ClassRefForm
getOffset, getPoolID, setNestedEntries
-
Methods inherited from class org.apache.commons.compress.harmony.unpack200.bytecode.forms.ByteCodeForm
calculateOperandPosition, firstOperandIndex, fixUpByteCodeTargets, get, getName, getOpcode, getRewrite, getRewriteCopy, hasMultipleByteCodes, hasNoOperand, nestedMustStartClassPool, operandLength, toString
-
-
-
-
Constructor Detail
-
NewClassRefForm
public NewClassRefForm(int opcode, java.lang.String name, int[] rewrite)
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 Detail
-
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].
-
-