本文整理汇总了Java中com.sun.org.apache.bcel.internal.generic.LocalVariableGen.getIndex方法的典型用法代码示例。如果您正苦于以下问题:Java LocalVariableGen.getIndex方法的具体用法?Java LocalVariableGen.getIndex怎么用?Java LocalVariableGen.getIndex使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.sun.org.apache.bcel.internal.generic.LocalVariableGen
的用法示例。
在下文中一共展示了LocalVariableGen.getIndex方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: releaseSlot
import com.sun.org.apache.bcel.internal.generic.LocalVariableGen; //导入方法依赖的package包/类
public void releaseSlot(LocalVariableGen lvg) {
final int size = lvg.getType().getSize();
final int slot = lvg.getIndex();
final int limit = _free;
for (int i = 0; i < limit; i++) {
if (_slotsTaken[i] == slot) {
int j = i + size;
while (j < limit) {
_slotsTaken[i++] = _slotsTaken[j++];
}
_free -= size;
return;
}
}
String state = "Variable slot allocation error"+
"(size="+size+", slot="+slot+", limit="+limit+")";
ErrorMsg err = new ErrorMsg(ErrorMsg.INTERNAL_ERR, state);
throw new Error(err.toString());
}
示例2: CompareGenerator
import com.sun.org.apache.bcel.internal.generic.LocalVariableGen; //导入方法依赖的package包/类
public CompareGenerator(int access_flags, Type return_type,
Type[] arg_types, String[] arg_names,
String method_name, String class_name,
InstructionList il, ConstantPoolGen cp) {
super(access_flags, return_type, arg_types, arg_names, method_name,
class_name, il, cp);
_iloadCurrent = new ILOAD(CURRENT_INDEX);
_istoreCurrent = new ISTORE(CURRENT_INDEX);
_aloadDom = new ALOAD(DOM_INDEX);
_iloadLast = new ILOAD(LAST_INDEX);
LocalVariableGen iterator =
addLocalVariable("iterator",
Util.getJCRefType(Constants.NODE_ITERATOR_SIG),
null, null);
ITERATOR_INDEX = iterator.getIndex();
_aloadIterator = new ALOAD(ITERATOR_INDEX);
_astoreIterator = new ASTORE(ITERATOR_INDEX);
il.append(new ACONST_NULL());
il.append(storeIterator());
}
示例3: registerLocalVariable
import com.sun.org.apache.bcel.internal.generic.LocalVariableGen; //导入方法依赖的package包/类
/**
* Registers a {@link org.apache.bcel.generic.LocalVariableGen}
* for this method.
* <p><b>Preconditions:</b>
* <ul>
* <li>The range of instructions for <code>lvg</code> does not
* overlap with the range of instructions for any
* <code>LocalVariableGen</code> with the same slot index previously
* registered for this method. <b><em>(Unchecked.)</em></b></li>
* </ul></p>
* @param lvg The variable to be registered
*/
protected void registerLocalVariable(LocalVariableGen lvg) {
int slot = lvg.getIndex();
int registrySize = _variables.size();
// If the LocalVariableGen uses a slot index beyond any previously
// encountered, expand the _variables, padding with intervening null
// entries as required.
if (slot >= registrySize) {
for (int i = registrySize; i < slot; i++) {
_variables.add(null);
}
_variables.add(lvg);
} else {
// If the LocalVariableGen reuses a slot, make sure the entry
// in _variables contains an ArrayList and add the newly
// registered LocalVariableGen to the list. If the entry in
// _variables just contains null padding, store the
// LocalVariableGen directly.
Object localsInSlot = _variables.get(slot);
if (localsInSlot != null) {
if (localsInSlot instanceof LocalVariableGen) {
ArrayList listOfLocalsInSlot = new ArrayList();
listOfLocalsInSlot.add(localsInSlot);
listOfLocalsInSlot.add(lvg);
_variables.set(slot, listOfLocalsInSlot);
} else {
((ArrayList) localsInSlot).add(lvg);
}
} else {
_variables.set(slot, lvg);
}
}
registerByName(lvg);
}
示例4: translate
import com.sun.org.apache.bcel.internal.generic.LocalVariableGen; //导入方法依赖的package包/类
public void translate(ClassGenerator classGen, MethodGenerator methodGen) {
final ConstantPoolGen cpg = classGen.getConstantPool();
final InstructionList il = methodGen.getInstructionList();
final LocalVariableGen local =
methodGen.addLocalVariable2("ppt",
Util.getJCRefType(NODE_SIG),
null);
final com.sun.org.apache.bcel.internal.generic.Instruction loadLocal =
new ILOAD(local.getIndex());
final com.sun.org.apache.bcel.internal.generic.Instruction storeLocal =
new ISTORE(local.getIndex());
if (_right.isWildcard()) {
il.append(methodGen.loadDOM());
il.append(SWAP);
}
else if (_right instanceof StepPattern) {
il.append(DUP);
local.setStart(il.append(storeLocal));
_right.translate(classGen, methodGen);
il.append(methodGen.loadDOM());
local.setEnd(il.append(loadLocal));
}
else {
_right.translate(classGen, methodGen);
if (_right instanceof AncestorPattern) {
il.append(methodGen.loadDOM());
il.append(SWAP);
}
}
final int getParent = cpg.addInterfaceMethodref(DOM_INTF,
GET_PARENT,
GET_PARENT_SIG);
il.append(new INVOKEINTERFACE(getParent, 2));
final SyntaxTreeNode p = getParent();
if (p == null || p instanceof Instruction ||
p instanceof TopLevelElement)
{
_left.translate(classGen, methodGen);
}
else {
il.append(DUP);
InstructionHandle storeInst = il.append(storeLocal);
if (local.getStart() == null) {
local.setStart(storeInst);
}
_left.translate(classGen, methodGen);
il.append(methodGen.loadDOM());
local.setEnd(il.append(loadLocal));
}
methodGen.removeLocalVariable(local);
/*
* If _right is an ancestor pattern, backpatch _left false
* list to the loop that searches for more ancestors.
*/
if (_right instanceof AncestorPattern) {
final AncestorPattern ancestor = (AncestorPattern) _right;
_left.backPatchFalseList(ancestor.getLoopHandle()); // clears list
}
_trueList.append(_right._trueList.append(_left._trueList));
_falseList.append(_right._falseList.append(_left._falseList));
}