Java 类org.objectweb.asm.Label 实例源码
项目:dacapobench
文件:AllocateInstrument.java
public void visitEnd() {
if (!methodDone && methodStartLabel != null && constructor) {
methodDone = true;
Label methodEndLabel = super.mark();
super.catchException(methodStartLabel, methodEndLabel, Type
.getType(RuntimeException.class));
super.visitMethodInsn(Opcodes.INVOKESTATIC, name,
LOG_INTERNAL_ALLOC_DEC, VOID_SIGNATURE);
super.visitInsn(Opcodes.ATHROW);
if (exceptions != null) {
for (String ex : exceptions) {
super.catchException(methodStartLabel, methodEndLabel,
Type.getObjectType(ex));
super.visitMethodInsn(Opcodes.INVOKESTATIC, name,
LOG_INTERNAL_ALLOC_DEC, VOID_SIGNATURE);
super.visitInsn(Opcodes.ATHROW);
}
}
}
super.visitEnd();
}
项目:fastAOP
文件:CheckMethodAdapter.java
/**
* Checks a stack frame value.
*
* @param value
* the value to be checked.
*/
void checkFrameValue(final Object value) {
if (value == Opcodes.TOP || value == Opcodes.INTEGER
|| value == Opcodes.FLOAT || value == Opcodes.LONG
|| value == Opcodes.DOUBLE || value == Opcodes.NULL
|| value == Opcodes.UNINITIALIZED_THIS) {
return;
}
if (value instanceof String) {
checkInternalName((String) value, "Invalid stack frame value");
return;
}
if (!(value instanceof Label)) {
throw new IllegalArgumentException("Invalid stack frame value: "
+ value);
} else {
usedLabels.add((Label) value);
}
}
项目:Aceso
文件:IntSwitch.java
private void visitx(GeneratorAdapter mv, List<String> strings) {
if (strings.size() == 1) {
visitCase(strings.get(0));
return;
}
for (String string : strings) {
Label label = new Label();
visitString();
mv.visitLdcInsn(string);
mv.invokeVirtual(STRING_TYPE, Method.getMethod("boolean equals(Object)"));
mv.visitJumpInsn(Opcodes.IFEQ, label);
visitCase(string);
mv.visitLabel(label);
}
visitDefault();
}
项目:DirectLeaks-AntiReleak-Remover
文件:CheckMethodAdapter.java
@Override
public void visitLookupSwitchInsn(final Label dflt, final int[] keys,
final Label[] labels) {
checkEndCode();
checkStartCode();
checkLabel(dflt, false, "default label");
checkNonDebugLabel(dflt);
if (keys == null || labels == null || keys.length != labels.length) {
throw new IllegalArgumentException(
"There must be the same number of keys and labels");
}
for (int i = 0; i < labels.length; ++i) {
checkLabel(labels[i], false, "label at index " + i);
checkNonDebugLabel(labels[i]);
}
super.visitLookupSwitchInsn(dflt, keys, labels);
usedLabels.add(dflt);
for (int i = 0; i < labels.length; ++i) {
usedLabels.add(labels[i]);
}
++insnCount;
}
项目:DirectLeaks-AntiReleak-Remover
文件:CheckMethodAdapter.java
@Override
public void visitTableSwitchInsn(final int min, final int max,
final Label dflt, final Label... labels) {
checkStartCode();
checkEndCode();
if (max < min) {
throw new IllegalArgumentException("Max = " + max
+ " must be greater than or equal to min = " + min);
}
checkLabel(dflt, false, "default label");
checkNonDebugLabel(dflt);
if (labels == null || labels.length != max - min + 1) {
throw new IllegalArgumentException(
"There must be max - min + 1 labels");
}
for (int i = 0; i < labels.length; ++i) {
checkLabel(labels[i], false, "label at index " + i);
checkNonDebugLabel(labels[i]);
}
super.visitTableSwitchInsn(min, max, dflt, labels);
for (int i = 0; i < labels.length; ++i) {
usedLabels.add(labels[i]);
}
++insnCount;
}
项目:primeval-reflex
文件:MethodArgumentssUpdaterGenerator.java
private static void generateUpdateMethod(ClassWriter cw, String selfClassInternalName, String selfClassDescriptor,
String argsClassInternalName,
String constDesc, Parameter[] parameters) {
MethodVisitor mv;
mv = cw.visitMethod(ACC_PUBLIC, "update", "()Lio/primeval/reflex/arguments/Arguments;", null, null);
mv.visitCode();
Label l0 = new Label();
mv.visitLabel(l0);
mv.visitTypeInsn(NEW, argsClassInternalName);
mv.visitInsn(DUP);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, selfClassInternalName, "parameters", "Ljava/util/List;");
for (int i = 0; i < parameters.length; i++) {
Parameter parameter = parameters[i];
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, selfClassInternalName, parameter.getName(), Type.getDescriptor(parameter.getType()));
}
mv.visitMethodInsn(INVOKESPECIAL, argsClassInternalName, "<init>", constDesc, false);
mv.visitInsn(ARETURN);
Label l1 = new Label();
mv.visitLabel(l1);
mv.visitLocalVariable("this", selfClassDescriptor, null, l0, l1, 0);
mv.visitMaxs(-1, -1);
mv.visitEnd();
}
项目:MeziLang
文件:OpDouble.java
@Override
public Container smaller(Container lval, Container rvalue, OpInfo opinfo) throws CompileException {
Label not_smaller_label = new Label();
Label end_label = new Label();
opinfo.mv.visitInsn(Opcodes.DCMPG);
opinfo.mv.visitJumpInsn(Opcodes.IFGE, not_smaller_label);
opinfo.mv.visitInsn(Opcodes.ICONST_1);
opinfo.mv.visitJumpInsn(Opcodes.GOTO, end_label);
opinfo.mv.visitLabel(not_smaller_label);
opinfo.mv.visitInsn(Opcodes.ICONST_0);
opinfo.mv.visitLabel(end_label);
Container anony_bool = new Container("anonymous", Container.FORM_OPSTACK_VAR, true, false);
anony_bool.initializeType((AbsType) cpLoader.findClassFull(TPrimitiveClass.NAME_BOOL));
anony_bool.setAssigned(true);
return anony_bool;
}
项目:MeziLang
文件:OpDouble.java
@Override
public Container bigger(Container lval, Container rvalue, OpInfo opinfo) throws CompileException {
Label not_bigger_label = new Label();
Label end_label = new Label();
opinfo.mv.visitInsn(Opcodes.DCMPL);
opinfo.mv.visitJumpInsn(Opcodes.IFLE, not_bigger_label);
opinfo.mv.visitInsn(Opcodes.ICONST_1);
opinfo.mv.visitJumpInsn(Opcodes.GOTO, end_label);
opinfo.mv.visitLabel(not_bigger_label);
opinfo.mv.visitInsn(Opcodes.ICONST_0);
opinfo.mv.visitLabel(end_label);
Container anony_bool = new Container("anonymous", Container.FORM_OPSTACK_VAR, true, false);
anony_bool.initializeType((AbsType) cpLoader.findClassFull(TPrimitiveClass.NAME_BOOL));
anony_bool.setAssigned(true);
return anony_bool;
}
项目:MeziLang
文件:OpDouble.java
@Override
public Container not_equal(Container lval, Container rvalue, OpInfo opinfo) throws CompileException {
Label not_eq_label = new Label();
Label end_label = new Label();
opinfo.mv.visitInsn(Opcodes.DCMPL);
opinfo.mv.visitJumpInsn(Opcodes.IFNE, not_eq_label);
opinfo.mv.visitInsn(Opcodes.ICONST_0);
opinfo.mv.visitJumpInsn(Opcodes.GOTO, end_label);
opinfo.mv.visitLabel(not_eq_label);
opinfo.mv.visitInsn(Opcodes.ICONST_1);
opinfo.mv.visitLabel(end_label);
Container anony_bool = new Container("anonymous", Container.FORM_OPSTACK_VAR, true, false);
anony_bool.initializeType((AbsType) cpLoader.findClassFull(TPrimitiveClass.NAME_BOOL));
anony_bool.setAssigned(true);
return anony_bool;
}
项目:faster-than-reflection
文件:ClassAccessFactory.java
private void visitAccessGetterLastPart(String memberType, Label firstLabel) {
mv.visitTypeInsn(NEW, "java/lang/IllegalArgumentException");
mv.visitInsn(DUP);
mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
mv.visitInsn(DUP);
mv.visitLdcInsn("No " + memberType + " with index: ");
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "(Ljava/lang/String;)V", false);
mv.visitVarInsn(ILOAD, 2);
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(I)Ljava/lang/StringBuilder;", false);
mv.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;", false);
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/IllegalArgumentException", "<init>", "(Ljava/lang/String;)V", false);
mv.visitInsn(ATHROW);
Label lastLabel = new Label();
mv.visitLabel(lastLabel);
mv.visitLocalVariable("this", classAccessTypeDescriptor, null, firstLabel, lastLabel, 0);
mv.visitLocalVariable("obj", classTypeDescriptor, null, firstLabel, lastLabel, 1);
mv.visitLocalVariable(memberType + "Index", "I", null, firstLabel, lastLabel, 2);
mv.visitMaxs(5, 3);
mv.visitEnd();
}
项目:MeziLang
文件:OpLong.java
@Override
public Container equal(Container lval, Container rvalue, OpInfo opinfo) throws CompileException {
Label not_eq_label = new Label();
Label end_label = new Label();
opinfo.mv.visitInsn(Opcodes.LCMP);
opinfo.mv.visitJumpInsn(Opcodes.IFNE, not_eq_label);
opinfo.mv.visitInsn(Opcodes.ICONST_1);
opinfo.mv.visitJumpInsn(Opcodes.GOTO, end_label);
opinfo.mv.visitLabel(not_eq_label);
opinfo.mv.visitInsn(Opcodes.ICONST_0);
opinfo.mv.visitLabel(end_label);
Container anony_bool = new Container("anonymous", Container.FORM_OPSTACK_VAR, true, false);
anony_bool.initializeType((AbsType) cpLoader.findClassFull(TPrimitiveClass.NAME_BOOL));
anony_bool.setAssigned(true);
return anony_bool;
}
项目:MeziLang
文件:OpShort.java
@Override
public Container smaller(Container lval, Container rvalue, OpInfo opinfo) throws CompileException {
Label greater_equal_label = new Label();
Label end_label = new Label();
opinfo.mv.visitJumpInsn(Opcodes.IF_ICMPGE, greater_equal_label);
opinfo.mv.visitInsn(Opcodes.ICONST_1);
opinfo.mv.visitJumpInsn(Opcodes.GOTO, end_label);
opinfo.mv.visitLabel(greater_equal_label);
opinfo.mv.visitInsn(Opcodes.ICONST_0);
opinfo.mv.visitLabel(end_label);
Container anony_bool = new Container("anonymous", Container.FORM_OPSTACK_VAR, true, false);
anony_bool.initializeType((AbsType) cpLoader.findClassFull(TPrimitiveClass.NAME_BOOL));
anony_bool.setAssigned(true);
return anony_bool;
}
项目:fastAOP
文件:SAXCodeAdapter.java
@Override
public final void visitTableSwitchInsn(final int min, final int max,
final Label dflt, final Label... labels) {
AttributesImpl attrs = new AttributesImpl();
attrs.addAttribute("", "min", "min", "", Integer.toString(min));
attrs.addAttribute("", "max", "max", "", Integer.toString(max));
attrs.addAttribute("", "dflt", "dflt", "", getLabel(dflt));
String o = Printer.OPCODES[Opcodes.TABLESWITCH];
sa.addStart(o, attrs);
for (int i = 0; i < labels.length; i++) {
AttributesImpl att2 = new AttributesImpl();
att2.addAttribute("", "name", "name", "", getLabel(labels[i]));
sa.addElement("label", att2);
}
sa.addEnd(o);
}
项目:Reer
文件:ManagedProxyClassGenerator.java
private void writeNonAbstractMethodWrapper(ClassVisitor visitor, Type generatedType, Class<?> managedTypeClass, Method method) {
Label start = new Label();
Label end = new Label();
Label handler = new Label();
MethodVisitor methodVisitor = declareMethod(visitor, method);
methodVisitor.visitTryCatchBlock(start, end, handler, null);
setCanCallSettersField(methodVisitor, generatedType, false);
methodVisitor.visitLabel(start);
invokeSuperMethod(methodVisitor, managedTypeClass, method);
methodVisitor.visitLabel(end);
setCanCallSettersField(methodVisitor, generatedType, true);
methodVisitor.visitInsn(ARETURN);
methodVisitor.visitLabel(handler);
setCanCallSettersField(methodVisitor, generatedType, true);
methodVisitor.visitInsn(ATHROW);
methodVisitor.visitMaxs(0, 0);
methodVisitor.visitEnd();
}
项目:fastAOP
文件:ASMifier.java
private void appendFrameTypes(final int n, final Object[] o) {
for (int i = 0; i < n; ++i) {
if (i > 0) {
buf.append(", ");
}
if (o[i] instanceof String) {
appendConstant(o[i]);
} else if (o[i] instanceof Integer) {
switch (((Integer) o[i]).intValue()) {
case 0:
buf.append("Opcodes.TOP");
break;
case 1:
buf.append("Opcodes.INTEGER");
break;
case 2:
buf.append("Opcodes.FLOAT");
break;
case 3:
buf.append("Opcodes.DOUBLE");
break;
case 4:
buf.append("Opcodes.LONG");
break;
case 5:
buf.append("Opcodes.NULL");
break;
case 6:
buf.append("Opcodes.UNINITIALIZED_THIS");
break;
}
} else {
appendLabel((Label) o[i]);
}
}
}
项目:DirectLeaks-AntiReleak-Remover
文件:CodeSizeEvaluator.java
@Override
public void visitJumpInsn(final int opcode, final Label label) {
minSize += 3;
if (opcode == GOTO || opcode == JSR) {
maxSize += 5;
} else {
maxSize += 8;
}
if (mv != null) {
mv.visitJumpInsn(opcode, label);
}
}
项目:fastAOP
文件:CheckMethodAdapter.java
@Override
public AnnotationVisitor visitLocalVariableAnnotation(int typeRef,
TypePath typePath, Label[] start, Label[] end, int[] index,
String desc, boolean visible) {
checkStartCode();
checkEndCode();
int sort = typeRef >>> 24;
if (sort != TypeReference.LOCAL_VARIABLE
&& sort != TypeReference.RESOURCE_VARIABLE) {
throw new IllegalArgumentException("Invalid type reference sort 0x"
+ Integer.toHexString(sort));
}
CheckClassAdapter.checkTypeRefAndPath(typeRef, typePath);
checkDesc(desc, false);
if (start == null || end == null || index == null
|| end.length != start.length || index.length != start.length) {
throw new IllegalArgumentException(
"Invalid start, end and index arrays (must be non null and of identical length");
}
for (int i = 0; i < start.length; ++i) {
checkLabel(start[i], true, "start label");
checkLabel(end[i], true, "end label");
checkUnsignedShort(index[i], "Invalid variable index");
int s = labels.get(start[i]).intValue();
int e = labels.get(end[i]).intValue();
if (e < s) {
throw new IllegalArgumentException(
"Invalid start and end labels (end must be greater than start)");
}
}
return super.visitLocalVariableAnnotation(typeRef, typePath, start,
end, index, desc, visible);
}
项目:DirectLeaks-AntiReleak-Remover
文件:ASMifier.java
private void appendFrameTypes(final int n, final Object[] o) {
for (int i = 0; i < n; ++i) {
if (i > 0) {
buf.append(", ");
}
if (o[i] instanceof String) {
appendConstant(o[i]);
} else if (o[i] instanceof Integer) {
switch (((Integer) o[i]).intValue()) {
case 0:
buf.append("Opcodes.TOP");
break;
case 1:
buf.append("Opcodes.INTEGER");
break;
case 2:
buf.append("Opcodes.FLOAT");
break;
case 3:
buf.append("Opcodes.DOUBLE");
break;
case 4:
buf.append("Opcodes.LONG");
break;
case 5:
buf.append("Opcodes.NULL");
break;
case 6:
buf.append("Opcodes.UNINITIALIZED_THIS");
break;
}
} else {
appendLabel((Label) o[i]);
}
}
}
项目:DirectLeaks-AntiReleak-Remover
文件:Textifier.java
@Override
public void visitLineNumber(final int line, final Label start) {
buf.setLength(0);
buf.append(tab2).append("LINENUMBER ").append(line).append(' ');
appendLabel(start);
buf.append('\n');
text.add(buf.toString());
}
项目:prometheus-metrics-agent
文件:GaugeInjector.java
@Override
public void injectAtMethodEnter() {
startFinally = new Label();
aa.visitLabel(startFinally);
aa.visitFieldInsn(GETSTATIC, className, staticFinalFieldName(metric), Type.getDescriptor(Gauged.getCoreType()));
injectLabelsToStack(metric);
aa.visitMethodInsn(INVOKESTATIC, METRIC_REPORTER_CLASSNAME, INC_METHOD, SIGNATURE, false);
}
项目:fastAOP
文件:CheckMethodAdapter.java
@Override
public void visitLineNumber(final int line, final Label start) {
checkStartCode();
checkEndCode();
checkUnsignedShort(line, "Invalid line number");
checkLabel(start, true, "start label");
super.visitLineNumber(line, start);
}
项目:MeziLang
文件:MatchCaseList.java
public Label[] getLabelList() {
int size = this.size();
Label[] label_arr = new Label[size];
MatchCaseEntry entry = null;
for (int i = 0; i < size; i++) {
entry = this.get(i);
label_arr[i] = entry.label;
}
return label_arr;
}
项目:Spigot-Attribute-Remover
文件:MethodNode.java
private LabelNode[] getLabelNodes(final Label[] l) {
LabelNode[] nodes = new LabelNode[l.length];
for (int i = 0; i < l.length; ++i) {
nodes[i] = getLabelNode(l[i]);
}
return nodes;
}
项目:Matcher
文件:AsmClassRemapper.java
@Override
public void visitTableSwitchInsn(final int min, final int max, final Label dflt, final Label... labels) {
checkState();
insnIndex++;
super.visitTableSwitchInsn(min, max, dflt, labels);
}
项目:prometheus-metrics-agent
文件:TimedExceptionCountedInjector.java
@Override
public void injectAtVisitMaxs(int maxStack, int maxLocals) {
Label endFinally = new Label();
aa.visitTryCatchBlock(startFinally, endFinally, endFinally, null);
aa.visitLabel(endFinally);
aa.visitFieldInsn(GETSTATIC, className, staticFinalFieldName(exceptionMetric), Type.getDescriptor(Counted.getCoreType()));
injectLabelsToStack(exceptionMetric);
aa.visitMethodInsn(INVOKESTATIC, METRIC_REPORTER_CLASSNAME, EXCEPTION_COUNT_METHOD,
EXCEPTION_COUNT_SIGNATURE, false);
onFinally(ATHROW);
aa.visitInsn(ATHROW);
}
项目:MeziLang
文件:ASTCompileVisitor.java
@Override
public Object visit(ASTForCondition node, Object data) throws CompileException {
LangUnitNode parent = (LangUnitNode) node.jjtGetParent();
Debug.assertion(parent != null, "parent should not be invalid");
Debug.assertion(parent.isNodeId(JJTCSTYLELOOPEXPR), "parent should be c style loop");
Label loop_body_label = parent.getLoopBodyLabel();
Debug.assertion(loop_body_label != null, "loop action label should not be invalid");
OpInfo opinfo = new OpInfo(getTopContext());
if (node.jjtGetNumChildren() == 0) {
opinfo.mv.visitJumpInsn(Opcodes.GOTO, loop_body_label);
} else if (node.jjtGetNumChildren() == 1) {
Reduction reduce = popReduction();
Debug.assertion(reduce != null, "Reductin should not be invalid");
opinfo.mv.visitJumpInsn(Opcodes.IFNE, loop_body_label);
} else {
throw new CompileException("This case is not considered");
}
Label loop_end_label = parent.getLoopEndLabel();
Debug.assertion(loop_end_label != null, "loop end label should not be invalid");
opinfo.mv.visitLabel(loop_end_label);
if (node.hasDefinitionRefernce()) { // this loop does not reduce instance
pushReduction(new Control(Control.FORM_LOOP));
} else { // this loop reduces list instance
AbsType stream_type = langstream_finish(opinfo);
Container stream_obj = new Container("anonymous stream", Container.FORM_OPSTACK_VAR, true, false);
stream_obj.initializeType(stream_type);
pushReduction(stream_obj); // reduced as a object
}
return null;
}
项目:faster-than-reflection
文件:ClassAccessFactory.java
private static Label[] getTableSwitchLabelsForAccess(
Label defaultCaseLabel,
List<? extends MemberInfo> members) {
return AsmUtils.getTableSwitchLabels(defaultCaseLabel, members.stream()
.mapToInt(m -> m.memberIndex)
.toArray());
}
项目:prometheus-metrics-agent
文件:TimerInjector.java
@Override
public void injectAtVisitMaxs(int maxStack, int maxLocals) {
Label endFinally = new Label();
aa.visitTryCatchBlock(startFinally, endFinally, endFinally, null);
aa.visitLabel(endFinally);
onFinally(ATHROW);
aa.visitInsn(ATHROW);
}
项目:Simple-JAR-Watermark
文件:TableSwitchInsnNode.java
@Override
public void accept(final MethodVisitor mv) {
Label[] labels = new Label[this.labels.size()];
for (int i = 0; i < labels.length; ++i) {
labels[i] = this.labels.get(i).getLabel();
}
mv.visitTableSwitchInsn(min, max, dflt.getLabel(), labels);
acceptAnnotations(mv);
}
项目:DirectLeaks-AntiReleak-Remover
文件:AdviceAdapter.java
@Override
public void visitJumpInsn(final int opcode, final Label label) {
mv.visitJumpInsn(opcode, label);
if (constructor) {
switch (opcode) {
case IFEQ:
case IFNE:
case IFLT:
case IFGE:
case IFGT:
case IFLE:
case IFNULL:
case IFNONNULL:
popValue();
break;
case IF_ICMPEQ:
case IF_ICMPNE:
case IF_ICMPLT:
case IF_ICMPGE:
case IF_ICMPGT:
case IF_ICMPLE:
case IF_ACMPEQ:
case IF_ACMPNE:
popValue();
popValue();
break;
case JSR:
pushValue(OTHER);
break;
}
addBranch(label);
}
}
项目:elasticsearch_my
文件:AStoreable.java
/**
* Writes the opcodes to flip a negative array index (meaning slots from the end of the array) into a 0-based one (meaning slots from
* the start of the array).
*/
static void writeIndexFlip(MethodWriter writer, Consumer<MethodWriter> writeGetLength) {
Label noFlip = new Label();
// Everywhere when it says 'array' below that could also be a list
// The stack after each instruction: array, unnormalized_index
writer.dup(); // array, unnormalized_index, unnormalized_index
writer.ifZCmp(Opcodes.IFGE, noFlip); // array, unnormalized_index
writer.swap(); // negative_index, array
writer.dupX1(); // array, negative_index, array
writeGetLength.accept(writer); // array, negative_index, length
writer.visitInsn(Opcodes.IADD); // array, noralized_index
writer.mark(noFlip); // array, noralized_index
}
项目:DirectLeaks-AntiReleak-Remover
文件:GeneratorAdapter.java
/**
* Marks the start of an exception handler.
*
* @param start
* beginning of the exception handler's scope (inclusive).
* @param end
* end of the exception handler's scope (exclusive).
* @param exception
* internal name of the type of exceptions handled by the
* handler.
*/
public void catchException(final Label start, final Label end,
final Type exception) {
Label doCatch = new Label();
if (exception == null) {
mv.visitTryCatchBlock(start, end, doCatch, null);
} else {
mv.visitTryCatchBlock(start, end, doCatch,
exception.getInternalName());
}
mark(doCatch);
}
项目:DirectLeaks-AntiReleak-Remover
文件:CodeSizeEvaluator.java
@Override
public void visitTableSwitchInsn(final int min, final int max,
final Label dflt, final Label... labels) {
minSize += 13 + labels.length * 4;
maxSize += 16 + labels.length * 4;
if (mv != null) {
mv.visitTableSwitchInsn(min, max, dflt, labels);
}
}
项目:DirectLeaks-AntiReleak-Remover
文件:AdviceAdapter.java
@Override
public void visitLabel(final Label label) {
mv.visitLabel(label);
if (constructor && branches != null) {
List<Object> frame = branches.get(label);
if (frame != null) {
stackFrame = frame;
branches.remove(label);
}
}
}
项目:Spigot-Nonce-ID-Finder
文件:TableSwitchInsnNode.java
@Override
public void accept(final MethodVisitor mv) {
Label[] labels = new Label[this.labels.size()];
for (int i = 0; i < labels.length; ++i) {
labels[i] = this.labels.get(i).getLabel();
}
mv.visitTableSwitchInsn(min, max, dflt.getLabel(), labels);
acceptAnnotations(mv);
}
项目:DirectLeaks-AntiReleak-Remover
文件:Textifier.java
@Override
public void visitTryCatchBlock(final Label start, final Label end,
final Label handler, final String type) {
buf.setLength(0);
buf.append(tab2).append("TRYCATCHBLOCK ");
appendLabel(start);
buf.append(' ');
appendLabel(end);
buf.append(' ');
appendLabel(handler);
buf.append(' ');
appendDescriptor(INTERNAL_NAME, type);
buf.append('\n');
text.add(buf.toString());
}
项目:fastAOP
文件:Textifier.java
@Override
public void visitJumpInsn(final int opcode, final Label label) {
buf.setLength(0);
buf.append(tab2).append(OPCODES[opcode]).append(' ');
appendLabel(label);
buf.append('\n');
text.add(buf.toString());
}
项目:DirectLeaks-AntiReleak-Remover
文件:SAXCodeAdapter.java
@Override
public final void visitLookupSwitchInsn(final Label dflt, final int[] keys,
final Label[] labels) {
AttributesImpl att = new AttributesImpl();
att.addAttribute("", "dflt", "dflt", "", getLabel(dflt));
String o = Printer.OPCODES[Opcodes.LOOKUPSWITCH];
sa.addStart(o, att);
for (int i = 0; i < labels.length; i++) {
AttributesImpl att2 = new AttributesImpl();
att2.addAttribute("", "name", "name", "", getLabel(labels[i]));
att2.addAttribute("", "key", "key", "", Integer.toString(keys[i]));
sa.addElement("label", att2);
}
sa.addEnd(o);
}
项目:DirectLeaks-AntiReleak-Remover
文件:AdviceAdapter.java
@Override
public void visitCode() {
mv.visitCode();
if (constructor) {
stackFrame = new ArrayList<Object>();
branches = new HashMap<Label, List<Object>>();
} else {
superInitialized = true;
onMethodEnter();
}
}
项目:DirectLeaks-AntiReleak-Remover
文件:ASMContentHandler.java
@Override
public final void end(final String name) {
HashMap<?, ?> vals = (HashMap<?, ?>) pop();
Label dflt = getLabel(vals.get("dflt"));
@SuppressWarnings("unchecked")
ArrayList<String> keyList = (ArrayList<String>) vals.get("keys");
ArrayList<?> lbls = (ArrayList<?>) vals.get("labels");
Label[] labels = lbls.toArray(new Label[lbls.size()]);
int[] keys = new int[keyList.size()];
for (int i = 0; i < keys.length; i++) {
keys[i] = Integer.parseInt(keyList.get(i));
}
getCodeVisitor().visitLookupSwitchInsn(dflt, keys, labels);
}