// ASM: a very small and fast Java bytecode manipulation framework
// Copyright (c) 2000-2011 INRIA, France Telecom
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the distribution.
// 3. Neither the name of the copyright holders nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
// THE POSSIBILITY OF SUCH DAMAGE.
package jersey.repackaged.org.objectweb.asm;
Information about a class being parsed in a ClassReader
. Author: Eric Bruneton
/**
* Information about a class being parsed in a {@link ClassReader}.
*
* @author Eric Bruneton
*/
final class Context {
The prototypes of the attributes that must be parsed in this class. /** The prototypes of the attributes that must be parsed in this class. */
Attribute[] attributePrototypes;
The options used to parse this class. One or more of ClassReader.SKIP_CODE
, ClassReader.SKIP_DEBUG
, ClassReader.SKIP_FRAMES
, ClassReader.EXPAND_FRAMES
or ClassReader.EXPAND_ASM_INSNS
. /**
* The options used to parse this class. One or more of {@link ClassReader#SKIP_CODE}, {@link
* ClassReader#SKIP_DEBUG}, {@link ClassReader#SKIP_FRAMES}, {@link ClassReader#EXPAND_FRAMES} or
* {@link ClassReader#EXPAND_ASM_INSNS}.
*/
int parsingOptions;
The buffer used to read strings in the constant pool. /** The buffer used to read strings in the constant pool. */
char[] charBuffer;
// Information about the current method, i.e. the one read in the current (or latest) call
// to {@link ClassReader#readMethod()}.
The access flags of the current method. /** The access flags of the current method. */
int currentMethodAccessFlags;
The name of the current method. /** The name of the current method. */
String currentMethodName;
The descriptor of the current method. /** The descriptor of the current method. */
String currentMethodDescriptor;
The labels of the current method, indexed by bytecode offset (only bytecode offsets for which a
label is needed have a non null associated Label).
/**
* The labels of the current method, indexed by bytecode offset (only bytecode offsets for which a
* label is needed have a non null associated Label).
*/
Label[] currentMethodLabels;
// Information about the current type annotation target, i.e. the one read in the current
// (or latest) call to {@link ClassReader#readAnnotationTarget()}.
The target_type and target_info of the current type annotation target, encoded as described in TypeReference
. /**
* The target_type and target_info of the current type annotation target, encoded as described in
* {@link TypeReference}.
*/
int currentTypeAnnotationTarget;
The target_path of the current type annotation target. /** The target_path of the current type annotation target. */
TypePath currentTypeAnnotationTargetPath;
The start of each local variable range in the current local variable annotation. /** The start of each local variable range in the current local variable annotation. */
Label[] currentLocalVariableAnnotationRangeStarts;
The end of each local variable range in the current local variable annotation. /** The end of each local variable range in the current local variable annotation. */
Label[] currentLocalVariableAnnotationRangeEnds;
The local variable index of each local variable range in the current local variable annotation.
/**
* The local variable index of each local variable range in the current local variable annotation.
*/
int[] currentLocalVariableAnnotationRangeIndices;
// Information about the current stack map frame, i.e. the one read in the current (or latest)
// call to {@link ClassReader#readFrame()}.
The bytecode offset of the current stack map frame. /** The bytecode offset of the current stack map frame. */
int currentFrameOffset;
The type of the current stack map frame. One of Opcodes.F_FULL
, Opcodes.F_APPEND
, Opcodes.F_CHOP
, Opcodes.F_SAME
or Opcodes.F_SAME1
. /**
* The type of the current stack map frame. One of {@link Opcodes#F_FULL}, {@link
* Opcodes#F_APPEND}, {@link Opcodes#F_CHOP}, {@link Opcodes#F_SAME} or {@link Opcodes#F_SAME1}.
*/
int currentFrameType;
The number of local variable types in the current stack map frame. Each type is represented
with a single array element (even long and double).
/**
* The number of local variable types in the current stack map frame. Each type is represented
* with a single array element (even long and double).
*/
int currentFrameLocalCount;
The delta number of local variable types in the current stack map frame (each type is
represented with a single array element - even long and double). This is the number of local
variable types in this frame, minus the number of local variable types in the previous frame.
/**
* The delta number of local variable types in the current stack map frame (each type is
* represented with a single array element - even long and double). This is the number of local
* variable types in this frame, minus the number of local variable types in the previous frame.
*/
int currentFrameLocalCountDelta;
The types of the local variables in the current stack map frame. Each type is represented with a single array element (even long and double), using the format described in MethodVisitor.visitFrame
. Depending on currentFrameType
, this contains the types of all the local variables, or only those of the additional ones (compared to the previous frame). /**
* The types of the local variables in the current stack map frame. Each type is represented with
* a single array element (even long and double), using the format described in {@link
* MethodVisitor#visitFrame}. Depending on {@link #currentFrameType}, this contains the types of
* all the local variables, or only those of the additional ones (compared to the previous frame).
*/
Object[] currentFrameLocalTypes;
The number stack element types in the current stack map frame. Each type is represented with a
single array element (even long and double).
/**
* The number stack element types in the current stack map frame. Each type is represented with a
* single array element (even long and double).
*/
int currentFrameStackCount;
The types of the stack elements in the current stack map frame. Each type is represented with a single array element (even long and double), using the format described in MethodVisitor.visitFrame
. /**
* The types of the stack elements in the current stack map frame. Each type is represented with a
* single array element (even long and double), using the format described in {@link
* MethodVisitor#visitFrame}.
*/
Object[] currentFrameStackTypes;
}