blob: 1dd534c1afea0ff3371b77f96e057c628cc1f0d7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.util;
/**
* Description of a stack map frame as specified in the JVM specifications.
*
* This interface may be implemented by clients.
*
* @since 3.2
*/
public interface IStackMapFrame {
/**
* Answer back the frame type for this entry.
* <table>
* <tr>
* <th align="left">Type</th>
* <th align="left">Range</th>
* </tr>
* <tr>
* <td>SAME</td>
* <td>0-63</td>
* </tr>
* <tr>
* <td>SAME_LOCALS_1_STACK_ITEM</td>
* <td>64-127</td>
* </tr>
* <tr>
* <td>SAME_LOCALS_1_STACK_ITEM_EXTENDED</td>
* <td>247</td>
* </tr>
* <tr>
* <td>CHOP</td>
* <td>248-250</td>
* </tr>
* <tr>
* <td>SAME_FRAME_EXTENDED</td>
* <td>251</td>
* </tr>
* <tr>
* <td>APPEND</td>
* <td>252-254</td>
* </tr>
* <tr>
* <td>FULL_FRAME</td>
* <td>255</td>
* </tr>
* </table>
*
* @return the frame type for this entry
*/
int getFrameType();
/**
* Answer back the offset delta.
* <p>This is not defined only for the frame types SAME and SAME_LOCALS_1_STACK_ITEM.</p>
*
* @return the offset delta
*/
int getOffsetDelta();
/**
* Answer back the number of locals.
* <p>This is defined only for the frame type FULL_FRAME.</p>
*
* @return the number of locals
*/
int getNumberOfLocals();
/**
* Answer back verification infos for the defined locals.
* <p>This is defined only for frame types APPEND and FULL_FRAME.
*
* @return verification infos for the defined locals
*/
IVerificationTypeInfo[] getLocals();
/**
* Answer back the number of stack items
* <p>This is defined only for the frame types SAME_LOCALS_1_STACK_ITEM, SAME_LOCALS_1_STACK_ITEM_EXTENDED and FULL_FRAME.
* For SAME_LOCALS_1_STACK_ITEM and SAME_LOCALS_1_STACK_ITEM_EXTENDED, the answer is implicitely 1.</p>
*
* @return the number of stack items
*/
int getNumberOfStackItems();
/**
* Answer back the verification infos for the stack items.
*
* @return the verification infos for the stack items
*/
IVerificationTypeInfo[] getStackItems();
}