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 and Description
`StackFrame(ClassMethod method)` Creates the initial stack frame
`StackFrame(StackState stackState, LocalVariableState localVariableState, StackFrameType type)`

### Method Summary

Methods
`StackFrame` `aconstNull()` pushes a null type onto the stack
`StackFrame` `constructorCall(int initializedValueStackPosition)` marks the value in potition initializedValueStackPosition as initialized.
`StackFrame` `dup()`
`StackFrame` `dup2()`
`StackFrame` `dup2X1()`
`StackFrame` `dup2X2()`
`StackFrame` `dupX1()`
`StackFrame` `dupX2()`
`LocalVariableState` `getLocalVariableState()`
`StackState` `getStackState()`
`StackFrameType` `getType()`
`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(StackEntry entry)` push an operand of the given type onto the stack.
`StackFrame` `push(String type)` 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 Detail

#### StackFrame

    public StackFrame(ClassMethod method)

Creates the initial stack frame

#### StackFrame

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

### Method Detail

#### 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()

#### getType

    public StackFrameType getType()