本文整理了Java中org.objectweb.asm.tree.LocalVariableNode
类的一些代码示例,展示了LocalVariableNode
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。LocalVariableNode
类的具体详情如下:
包路径:org.objectweb.asm.tree.LocalVariableNode
类名称:LocalVariableNode
[英]A node that represents a local variable declaration.
[中]表示局部变量声明的节点。
代码示例来源:origin: jphp-group/jphp
@SuppressWarnings("unchecked")
void writeFooter(){
LabelNode endL = new LabelNode();
node.instructions.add(endL);
for(LocalVariable variable : localVariables.values()){
String description = Type.getDescriptor(variable.getClazz() == null ? Object.class : variable.getClazz());
if (variable.name.equals("~this")) {
//if (variable.getClazz() != Memory.class && !clazz.statement.isTrait()) {
description = "L" + clazz.entity.getCompiledInternalName() + ";";
//}
}
node.localVariables.add(new LocalVariableNode(
variable.name,
description,
null,
variable.label == null ? labelStart : variable.label,
variable.getEndLabel() == null ? endL : variable.getEndLabel(),
variable.index
));
}
//node.maxStack = this.stackMaxSize; !!! we don't need this, see: ClassWriter.COMPUTE_FRAMES
//node.maxLocals = this.localVariables.size();
}
代码示例来源:origin: kilim/kilim
private void visitLocals(MethodVisitor mv) {
for (Object l: methodFlow.localVariables) {
((LocalVariableNode)l).accept(mv);
}
}
代码示例来源:origin: gradle.plugin.com.xk/wormhole-gradle
if (!startsInBody && !endsInBody) {
if (variable.index != 0) { // '#0' on init$args is not 'this'
variable.accept(initArgs);
variable.accept(body);
} else if (!startsInBody && endsInBody) {
LocalVariableNode var0 = new LocalVariableNode(variable.name,
variable.desc, variable.signature,
variable.start, labelBefore, variable.index);
var0.accept(initArgs);
LocalVariableNode var1 = new LocalVariableNode(variable.name,
variable.desc, variable.signature,
labelAfter, variable.end, variable.index);
var1.accept(body);
} else {
throw new IllegalStateException("Local variable starts after it ends.");
代码示例来源:origin: com.android.tools.build/gradle-core
if (!startsInBody && !endsInBody) {
if (variable.index != 0) { // '#0' on init$args is not 'this'
variable.accept(initArgs);
variable.accept(body);
} else if (!startsInBody && endsInBody) {
LocalVariableNode var0 = new LocalVariableNode(variable.name,
variable.desc, variable.signature,
variable.start, labelBefore, variable.index);
var0.accept(initArgs);
LocalVariableNode var1 = new LocalVariableNode(variable.name,
variable.desc, variable.signature,
labelAfter, variable.end, variable.index);
var1.accept(body);
} else {
throw new IllegalStateException("Local variable starts after it ends.");
代码示例来源:origin: qmx/jitescript
public CodeBlock visitLocalVariable(final String varName, final String varDesc, final String signature, final LabelNode scopeStart,
final LabelNode scopeEnd, final int varIndex) {
localVariableList.add(new LocalVariableNode(varName, varDesc, signature, scopeStart, scopeEnd, varIndex));
return this;
}
代码示例来源:origin: org.ow2.asm/asm-debug-all
localVariables.get(i).accept(mv);
代码示例来源:origin: apache/felix
public void addLocalVariable(String name, String desc, String signature, int index) {
m_locals.put(index, new LocalVariableNode(name, desc, signature, null, null, index));
if (index >= m_argsVarLength) {
// keep only argument-related local variables definitions (others relate to code which isn't in this method)
return;
}
if (m_argLocalVariables == null) {
m_argLocalVariables = new ArrayList<LocalVariableNode>();
}
m_argLocalVariables.add(new LocalVariableNode(name, desc, signature, null, null, index));
}
代码示例来源:origin: co.paralleluniverse/quasar
((LocalVariableNode) o).accept(mv);
代码示例来源:origin: fge/grappa
public CodeBlock visitLocalVariable(final String varName,
final String varDesc, @Nullable final String signature,
final LabelNode scopeStart, final LabelNode scopeEnd,
final int varIndex)
{
localVariableList.add(new LocalVariableNode(varName, varDesc, signature,
scopeStart, scopeEnd, varIndex));
return this;
}
代码示例来源:origin: org.ow2.asm/asm-tree
localVariables.get(i).accept(methodVisitor);
代码示例来源:origin: org.parboiled/parboiled-java
@Override
public void visitLocalVariable(String name, String desc, String signature, Label start, Label end, int index) {
// only remember the local variables of Type org.parboiled.support.Var that are not parameters
if (index > parameterCount && Var.class.isAssignableFrom(getClassForType(Type.getType(desc)))) {
if (localVarVariables == null) localVarVariables = new ArrayList<LocalVariableNode>();
localVarVariables.add(new LocalVariableNode(name, desc, null, null, null, index));
}
}
代码示例来源:origin: fge/grappa
@Override
public void visitLocalVariable(final String name, final String desc,
final String signature, final Label start, final Label end,
final int index)
{
// only remember the local variables of Type com.github.fge.grappa.support.Var that are not parameters
final Type type = Type.getType(desc);
if (index > parameterCount
&& Var.class.isAssignableFrom(getClassForType(type)))
localVarVariables.add(new LocalVariableNode(name, desc, null, null,
null, index));
}
代码示例来源:origin: mjanicek/rembulan
private List<LocalVariableNode> baseLocals(LabelNode l_begin, LabelNode l_end) {
List<LocalVariableNode> locals = new ArrayList<>();
locals.add(new LocalVariableNode("this", context.thisClassType().getDescriptor(), null, l_begin, l_end, 0));
locals.add(new LocalVariableNode("context", Type.getDescriptor(ExecutionContext.class), null, l_begin, l_end, LV_CONTEXT));
locals.add(new LocalVariableNode("rp", Type.INT_TYPE.getDescriptor(), null, l_begin, l_end, LV_RESUME));
if (context.isVararg()) {
locals.add(new LocalVariableNode(
"varargs",
ASMUtils.arrayTypeFor(Object.class).getDescriptor(),
null,
l_begin,
l_end,
LV_VARARGS
));
}
for (int i = 0; i < numOfRegisters(); i++) {
locals.add(new LocalVariableNode("s_" + i, Type.getDescriptor(Object.class), null, l_begin, l_end, slotOffset() + i));
}
return locals;
}
代码示例来源:origin: org.ow2.asm/asm-debug-all
@Override
public void visitLocalVariable(final String name, final String desc,
final String signature, final Label start, final Label end,
final int index) {
localVariables.add(new LocalVariableNode(name, desc, signature,
getLabelNode(start), getLabelNode(end), index));
}
代码示例来源:origin: org.ow2.asm/asm-tree
@Override
public void visitLocalVariable(
final String name,
final String descriptor,
final String signature,
final Label start,
final Label end,
final int index) {
localVariables.add(
new LocalVariableNode(
name, descriptor, signature, getLabelNode(start), getLabelNode(end), index));
}
代码示例来源:origin: org.multiverse/multiverse-instrumentation
public static List cloneVariableTable(MethodNode methodNode, CloneMap cloneMap) {
List<LocalVariableNode> result = new LinkedList<LocalVariableNode>();
//copy all the rest of the local variables.
for (LocalVariableNode originalLocalVar : (List<LocalVariableNode>) methodNode.localVariables) {
LocalVariableNode clonedLocalVar = new LocalVariableNode(
originalLocalVar.name,
originalLocalVar.desc,
originalLocalVar.signature,
cloneMap.get(originalLocalVar.start),
cloneMap.get(originalLocalVar.end),
originalLocalVar.index);
result.add(clonedLocalVar);
}
return result;
}
代码示例来源:origin: org.multiverse/multiverse-instrumentation
public static List<LocalVariableNode> cloneLocalVariableTable(MethodNode originalMethod, CloneMap cloneMap) {
if (originalMethod.localVariables == null) {
return null;
}
List<LocalVariableNode> localVariableTable = new LinkedList<LocalVariableNode>();
for (LocalVariableNode localVariableNode : (List<LocalVariableNode>) originalMethod.localVariables) {
LocalVariableNode cloned = new LocalVariableNode(
localVariableNode.name,
localVariableNode.desc,
localVariableNode.signature,
cloneMap.get(localVariableNode.start),
cloneMap.get(localVariableNode.end),
localVariableNode.index
);
localVariableTable.add(cloned);
}
return localVariableTable;
}
代码示例来源:origin: org.multiverse/multiverse-alpha-unborn
LocalVariableNode transactionVar = new LocalVariableNode(
"transaction",
Type.getDescriptor(AlphaTransaction.class),
LocalVariableNode tranlocalVar = new LocalVariableNode(
"tranlocalThis",
internalToDesc(tranlocalName),
LocalVariableNode clonedLocalVar = new LocalVariableNode(
originalLocalVar.name,
originalLocalVar.desc,
代码示例来源:origin: usethesource/rascal
List<LocalVariableNode> buildLocalVariables(IList iList) {
ArrayList<LocalVariableNode> al = new ArrayList<LocalVariableNode>();
for (IValue v : iList) {
al.add(new LocalVariableNode(((IString)((IConstructor)v).get(0)).getValue(),
((IString)((IConstructor)v).get(1)).getValue(),
emptyIsNull(((IString)((IConstructor)v).get(2)).getValue()),
getLabel(((IInteger)((IConstructor)v).get(3)).intValue()),
getLabel(((IInteger)((IConstructor)v).get(4)).intValue()),
((IInteger)((IConstructor)v).get(5)).intValue()));
}
return al;
}
代码示例来源:origin: mjanicek/rembulan
locals.add(new LocalVariableNode("this", context.thisClassType().getDescriptor(), null, begin, end, 0));
locals.add(new LocalVariableNode("rp", Type.INT_TYPE.getDescriptor(), null, begin, end, 1));
if (context.isVararg()) {
locals.add(new LocalVariableNode("varargs", ASMUtils.arrayTypeFor(Object.class).getDescriptor(), null, begin, end, 2));
locals.add(new LocalVariableNode("r_" + i, Type.getDescriptor(Object.class), null, begin, end, regOffset + i));
内容来源于网络,如有侵权,请联系作者删除!