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

### Method Summary

All Methods Instance Methods Concrete Methods
`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 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​()

#### mergeStack

    public StackFrame mergeStack​(int pos,
                                 StackEntry frame)

#### mergeLocals

    public StackFrame mergeLocals​(int pos,
                                  StackEntry frame)

#### getType

    public StackFrameType getType​()

#### createFull

    public StackFrame createFull​()