Module org.jboss.classfilewriter
Package org.jboss.classfilewriter.code

# Class StackFrame

java.lang.Object
org.jboss.classfilewriter.code.StackFrame

public class StackFrame extends Object
Represents a stack frame in the virtual machine. Holds the state of the local variable array and the stack

Author:
  Stuart Douglas

## Constructor Summary

Constructors
Constructor
Description
`StackFrame(ClassMethod method)`
Creates the initial stack frame
`StackFrame(StackState stackState, LocalVariableState localVariableState, StackFrameType type)`

## Method Summary

Modifier and Type
Method
Description
`StackFrame`
`aconstNull()`
pushes a null type onto the stack
`StackFrame`
`constructorCall(int initializedValueStackPosition)`
marks the value in potition initializedValueStackPosition as initialized.
`StackFrame`
`createFull()`
`StackFrame`
`dup()`
`StackFrame`
`dup2()`
`StackFrame`
`dup2X1()`
`StackFrame`
`dup2X2()`
`StackFrame`
`dupX1()`
`StackFrame`
`dupX2()`
`LocalVariableState`
`getLocalVariableState()`
`StackState`
`getStackState()`
`StackFrameType`
`getType()`
`StackFrame`
`mergeLocals(int pos, StackEntry frame)`
`StackFrame`
`mergeStack(int pos, StackEntry frame)`
`StackFrame`
`pop()`
pops an operand from the stack
`StackFrame`
`pop(int no)`
`StackFrame`
`pop2()`
pops 2 operands from the stack
`StackFrame`
`pop2push1(String type)`
remote the top two operands and replace them with an different operand
`StackFrame`
`pop3()`
pops 3 operands from the stack
`StackFrame`
`pop4()`
pops 4 operands from the stack
`StackFrame`
`pop4push1(String type)`
remote the top two operands and replace them with an different operand
`StackFrame`
`push(String type)`
push an operand of the given type onto the stack
`StackFrame`
`push(StackEntry entry)`
push an operand of the given type onto the stack.
`StackFrame`
`replace(String type)`
replace the operand at the top of the stack with the given operand
`StackFrame`
`store(int no)`
Store the variable on top of the stack into a local variable, poping the variable from the stack.
`StackFrame`
`swap()`
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### StackFrame

public StackFrame(ClassMethod method)
Creates the initial stack frame

### StackFrame

public StackFrame(StackState stackState, LocalVariableState localVariableState, StackFrameType type)

## Method Details

### getStackState

public StackState getStackState()

### getLocalVariableState

public LocalVariableState getLocalVariableState()

### push

public StackFrame push(String type)
push an operand of the given type onto the stack

If the entry is wide then a corresponding TOP type will be created

### push

public StackFrame push(StackEntry entry)
push an operand of the given type onto the stack.

If the entry is wide then a corresponding TOP type will be created

### aconstNull

public StackFrame aconstNull()
pushes a null type onto the stack

Returns:

### pop

public StackFrame pop(int no)

### pop

public StackFrame pop()
pops an operand from the stack

### pop2

public StackFrame pop2()
pops 2 operands from the stack

### pop3

public StackFrame pop3()
pops 3 operands from the stack

### pop4

public StackFrame pop4()
pops 4 operands from the stack

### replace

public StackFrame replace(String type)
replace the operand at the top of the stack with the given operand

### dup

public StackFrame dup()

### dupX1

public StackFrame dupX1()

### dupX2

public StackFrame dupX2()

### dup2

public StackFrame dup2()

### dup2X1

public StackFrame dup2X1()

### dup2X2

public StackFrame dup2X2()

### store

public StackFrame store(int no)
Store the variable on top of the stack into a local variable, poping the variable from the stack. Wide types are handled automatically

### pop2push1

public StackFrame pop2push1(String type)
remote the top two operands and replace them with an different operand

### pop4push1

public StackFrame pop4push1(String type)
remote the top two operands and replace them with an different operand

### toString

public String toString()

Overrides:
  `toString` in class `Object`

### constructorCall

public StackFrame constructorCall(int initializedValueStackPosition)
marks the value in potition initializedValueStackPosition as initialized. This also pops this value and everything above it

### swap

public StackFrame swap()

### mergeStack

public StackFrame mergeStack(int pos, StackEntry frame)

### mergeLocals

public StackFrame mergeLocals(int pos, StackEntry frame)

### getType

public StackFrameType getType()

### createFull

public StackFrame createFull()