public class SegmentConstantPool extends Object
Modifier and Type | Field and Description |
---|---|
static int |
ALL |
static int |
CP_CLASS |
static int |
CP_DESCR |
static int |
CP_DOUBLE |
static int |
CP_FIELD |
static int |
CP_FLOAT |
static int |
CP_IMETHOD |
static int |
CP_INT |
static int |
CP_LONG |
static int |
CP_METHOD |
static int |
CP_STRING |
protected static String |
INITSTRING |
protected static String |
REGEX_MATCH_ALL |
protected static String |
REGEX_MATCH_INIT |
static int |
SIGNATURE |
static int |
UTF_8 |
Constructor and Description |
---|
SegmentConstantPool(CpBands bands) |
Modifier and Type | Method and Description |
---|---|
ConstantPoolEntry |
getClassPoolEntry(String name)
Given the name of a class, answer the CPClass associated with that class.
|
ConstantPoolEntry |
getClassSpecificPoolEntry(int cp,
long desiredIndex,
String desiredClassName)
Subset the constant pool of the specified type to be just that which has the specified class name.
|
ConstantPoolEntry |
getConstantPoolEntry(int cp,
long value) |
ConstantPoolEntry |
getInitMethodPoolEntry(int cp,
long value,
String desiredClassName)
Answer the init method for the specified class.
|
ClassFileEntry |
getValue(int cp,
long value) |
protected int |
matchSpecificPoolEntryIndex(String[] primaryArray,
String[] secondaryArray,
String primaryCompareString,
String secondaryCompareRegex,
int desiredIndex)
This method's function is to look through pairs of arrays.
|
protected int |
matchSpecificPoolEntryIndex(String[] nameArray,
String compareString,
int desiredIndex)
A number of things make use of subsets of structures.
|
protected static boolean |
regexMatches(String regexString,
String compareString)
We don't want a dependency on regex in Pack200.
|
public static final int ALL
public static final int UTF_8
public static final int CP_INT
public static final int CP_FLOAT
public static final int CP_LONG
public static final int CP_DOUBLE
public static final int CP_STRING
public static final int CP_CLASS
public static final int SIGNATURE
public static final int CP_DESCR
public static final int CP_FIELD
public static final int CP_METHOD
public static final int CP_IMETHOD
protected static final String REGEX_MATCH_ALL
protected static final String INITSTRING
protected static final String REGEX_MATCH_INIT
public SegmentConstantPool(CpBands bands)
bands
- TODOpublic ClassFileEntry getValue(int cp, long value) throws Pack200Exception
Pack200Exception
public ConstantPoolEntry getClassSpecificPoolEntry(int cp, long desiredIndex, String desiredClassName) throws Pack200Exception
cp
- type of constant pool array to searchdesiredIndex
- index of the constant pooldesiredClassName
- class to use to generate a subset of the poolPack200Exception
- TODOpublic ConstantPoolEntry getClassPoolEntry(String name)
name
- Class name to look for (form: java/lang/Object)public ConstantPoolEntry getInitMethodPoolEntry(int cp, long value, String desiredClassName) throws Pack200Exception
cp
- constant pool to search (must be CP_METHOD)value
- index of init methoddesiredClassName
- String class name of the init methodPack200Exception
- TODOprotected int matchSpecificPoolEntryIndex(String[] nameArray, String compareString, int desiredIndex)
<init>
.
This method takes an array of names, a String to match for, an index and a boolean as parameters, and answers the
array position in the array of the indexth element which matches (or equals) the String (depending on the state
of the boolean)
In other words, if the class array consists of: Object [position 0, 0th instance of Object] String [position 1,
0th instance of String] String [position 2, 1st instance of String] Object [position 3, 1st instance of Object]
Object [position 4, 2nd instance of Object] then matchSpecificPoolEntryIndex(..., "Object", 2, false) will answer
4. matchSpecificPoolEntryIndex(..., "String", 0, false) will answer 1.nameArray
- Array of Strings against which the compareString is testedcompareString
- String for which to searchdesiredIndex
- nth element with that match (counting from 0)protected int matchSpecificPoolEntryIndex(String[] primaryArray, String[] secondaryArray, String primaryCompareString, String secondaryCompareRegex, int desiredIndex)
primaryArray
- The first array to searchsecondaryArray
- The second array (must be same .length as primaryArray)primaryCompareString
- The String to compare against primaryArray using .equals()secondaryCompareRegex
- The String to compare against secondaryArray using .matches()desiredIndex
- The nth hit whose position we're seekingprotected static boolean regexMatches(String regexString, String compareString)
^<init>;.*
(aka REGEX_MATCH_INIT) and will answer correctly if those
are passed as the regexString.regexString
- String against which the compareString will be matchedcompareString
- String to match against the regexStringpublic ConstantPoolEntry getConstantPoolEntry(int cp, long value) throws Pack200Exception
Pack200Exception
Copyright © 2002–2022 The Apache Software Foundation. All rights reserved.