| java.lang.Object org.apache.harmony.pack200.bytecode.ClassFileEntry org.apache.harmony.pack200.bytecode.ByteCode
Method Summary | |
public void | applyByteCodeTargetFixup(CodeAttribute codeAttribute) Some ByteCodes (in particular, those with labels
need to be fixed up after all the bytecodes in the
CodeAttribute have been added. | protected void | doWrite(DataOutputStream dos) | public boolean | equals(Object obj) | public void | extractOperands(OperandManager operandManager, Segment segment, int codeLength) | public static ByteCode | getByteCode(int opcode) | protected ByteCodeForm | getByteCodeForm() | public int | getByteCodeIndex() | public int[] | getByteCodeTargets() | public int | getLength() | public String | getName() | public ClassFileEntry[] | getNestedClassFileEntries() | public int[] | getNestedPosition(int index) | public int[][] | getNestedPositions() | public int | getOpcode() | public int | getOperandType() | public int[] | getRewrite() Some bytecodes (the ones with variable lengths) can't
have a static rewrite array - they need the ability to
update the array. | public boolean | hasMultipleByteCodes() This method will answer true if the receiver is
a multi-bytecode instruction (such as
aload0_putfield_super); otherwise, it will answer
false. | public int | hashCode() | protected void | resolve(ClassConstantPool pool) | public void | setByteCodeIndex(int byteCodeOffset) ByteCodes may need to know their position in the
code array (in particular, label byte codes need
to know where they are in order to calculate their
targets). | public void | setByteCodeTargets(int[] byteCodeTargets) Some ByteCodes (in particular, those with labels)
have to keep track of byteCodeTargets. | public void | setNested(ClassFileEntry[] nested) | public void | setNestedPositions(int[][] nestedPositions) nestedPositions is an array of arrays of ints. | public void | setOperand2Bytes(int operand, int position) Given an int operand, set the rewrite bytes for
that position and the one immediately following it
to a high-byte, low-byte encoding of the operand.
Parameters: operand - int to set the rewrite bytes to Parameters: position - int position in the operands of therewrite bytes. | public void | setOperandByte(int operand, int position) Given an int operand, treat it as a byte and set
the rewrite byte for that position to that value.
Mask of anything beyond 0xFF.
Parameters: operand - int to set the rewrite byte to (unsigned) Parameters: position - int position in the operands of therewrite bytes. | public void | setOperandBytes(int[] operands) Given an array of ints which correspond to bytes in the
operand of the bytecode, set the rewrite bytes of the
operand to be the appropriate values. | public void | setOperandSigned2Bytes(int operand, int position) This is just like setOperandInt, but takes special care when the
operand is less than 0 to make sure it's written correctly. | public void | setRewrite(int[] rewrite) Some bytecodes (the ones with variable lengths) can't
have a static rewrite array - they need the ability to
update the array. | public String | toString() |
ByteCode | protected ByteCode(int opcode)(Code) | | |
applyByteCodeTargetFixup | public void applyByteCodeTargetFixup(CodeAttribute codeAttribute)(Code) | | Some ByteCodes (in particular, those with labels
need to be fixed up after all the bytecodes in the
CodeAttribute have been added. (This can't
be done beforehand because the CodeAttribute needs
to be complete before targets can be assigned.)
|
getByteCodeIndex | public int getByteCodeIndex()(Code) | | |
getByteCodeTargets | public int[] getByteCodeTargets()(Code) | | |
getLength | public int getLength()(Code) | | |
getNestedPosition | public int[] getNestedPosition(int index)(Code) | | |
getNestedPositions | public int[][] getNestedPositions()(Code) | | |
getOpcode | public int getOpcode()(Code) | | |
getOperandType | public int getOperandType()(Code) | | |
getRewrite | public int[] getRewrite()(Code) | | Some bytecodes (the ones with variable lengths) can't
have a static rewrite array - they need the ability to
update the array. This method permits their associated
bytecode formst to query their rewrite array.
Note that this should not be called from bytecodes
which have a static rewrite; use the table in ByteCodeForm
instead to specify those rewrites.
|
hasMultipleByteCodes | public boolean hasMultipleByteCodes()(Code) | | This method will answer true if the receiver is
a multi-bytecode instruction (such as
aload0_putfield_super); otherwise, it will answer
false.
boolean true if multibytecode, false otherwise |
hashCode | public int hashCode()(Code) | | |
setByteCodeIndex | public void setByteCodeIndex(int byteCodeOffset)(Code) | | ByteCodes may need to know their position in the
code array (in particular, label byte codes need
to know where they are in order to calculate their
targets). This method lets the CodeAttribute specify
where the byte code is.
Since there are no aload0+label instructions, this
method doesn't worry about multioperation bytecodes.
Parameters: byteCodeOffset - int position in code array. |
setByteCodeTargets | public void setByteCodeTargets(int[] byteCodeTargets)(Code) | | Some ByteCodes (in particular, those with labels)
have to keep track of byteCodeTargets. These are
initially offsets in the CodeAttribute array
relative to the byteCodeOffset, but later get fixed
up to point to the absolute position in the CodeAttribute
array. This method sets the targets.
Parameters: byteCodeTarget - int index in array |
setNestedPositions | public void setNestedPositions(int[][] nestedPositions)(Code) | | nestedPositions is an array of arrays of ints. Each
subarray specifies a position of a nested
element (from the nested[] array) and the length of
that element.
For instance, one might have a nested of:
{CPClass java/lang/Foo, CPFloat 3.14}
The nestedPositions would then be:
{{0,2},{2,2}}
In other words, when the bytecode is resolved, the
CPClass will be resolved to an int and inserted
at position 0 and 1 of the rewrite arguments (the first
occurrences of -1). The CPFloat will be resolved to
an int position and inserted at positions 2 and 3 of
the rewrite arguments.
Parameters: nestedPositions - |
setOperand2Bytes | public void setOperand2Bytes(int operand, int position)(Code) | | Given an int operand, set the rewrite bytes for
that position and the one immediately following it
to a high-byte, low-byte encoding of the operand.
Parameters: operand - int to set the rewrite bytes to Parameters: position - int position in the operands of therewrite bytes. For a rewrite array of {100, -1, -1, -1}position 0 is the first -1, position 1 is the second -1,etc. |
setOperandByte | public void setOperandByte(int operand, int position)(Code) | | Given an int operand, treat it as a byte and set
the rewrite byte for that position to that value.
Mask of anything beyond 0xFF.
Parameters: operand - int to set the rewrite byte to (unsigned) Parameters: position - int position in the operands of therewrite bytes. For a rewrite array of {100, -1, -1, -1}position 0 is the first -1, position 1 is the second -1,etc. |
setOperandBytes | public void setOperandBytes(int[] operands)(Code) | | Given an array of ints which correspond to bytes in the
operand of the bytecode, set the rewrite bytes of the
operand to be the appropriate values. All values in
operands[] will be masked with 0xFF so they fit into
a byte.
Parameters: operands - int[] rewrite operand bytes |
setOperandSigned2Bytes | public void setOperandSigned2Bytes(int operand, int position)(Code) | | This is just like setOperandInt, but takes special care when the
operand is less than 0 to make sure it's written correctly.
Parameters: operand - int to set the rewrite bytes to Parameters: position - int position of the operands in the rewrite bytes |
setRewrite | public void setRewrite(int[] rewrite)(Code) | | Some bytecodes (the ones with variable lengths) can't
have a static rewrite array - they need the ability to
update the array. This method permits that.
Note that this should not be called from bytecodes
which have a static rewrite; use the table in ByteCodeForm
instead to specify those rewrites.
Parameters: rewrite - |
|
|