public class org.objectweb.asm.Label extends java.lang.Object
{
static final int FLAG_DEBUG_ONLY;
static final int FLAG_JUMP_TARGET;
static final int FLAG_RESOLVED;
static final int FLAG_REACHABLE;
static final int FLAG_SUBROUTINE_CALLER;
static final int FLAG_SUBROUTINE_START;
static final int FLAG_SUBROUTINE_END;
static final int FLAG_LINE_NUMBER;
static final int LINE_NUMBERS_CAPACITY_INCREMENT;
static final int FORWARD_REFERENCES_CAPACITY_INCREMENT;
static final int FORWARD_REFERENCE_TYPE_MASK;
static final int FORWARD_REFERENCE_TYPE_SHORT;
static final int FORWARD_REFERENCE_TYPE_WIDE;
static final int FORWARD_REFERENCE_HANDLE_MASK;
static final org.objectweb.asm.Label EMPTY_LIST;
public java.lang.Object info;
short flags;
private short lineNumber;
private int[] otherLineNumbers;
int bytecodeOffset;
private int[] forwardReferences;
short inputStackSize;
short outputStackSize;
short outputStackMax;
short subroutineId;
org.objectweb.asm.Frame frame;
org.objectweb.asm.Label nextBasicBlock;
org.objectweb.asm.Edge outgoingEdges;
org.objectweb.asm.Label nextListElement;
public void <init>()
{
org.objectweb.asm.Label v;
v := @this: org.objectweb.asm.Label;
specialinvoke v.<java.lang.Object: void <init>()>();
return;
}
public int getOffset()
{
java.lang.IllegalStateException v;
short v, v;
int v;
org.objectweb.asm.Label v;
v := @this: org.objectweb.asm.Label;
v = v.<org.objectweb.asm.Label: short flags>;
v = v & 4;
if v != 0 goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Label offset position has not been resolved yet");
throw v;
label:
v = v.<org.objectweb.asm.Label: int bytecodeOffset>;
return v;
}
final org.objectweb.asm.Label getCanonicalInstance()
{
org.objectweb.asm.Label v, v;
org.objectweb.asm.Frame v, v;
v := @this: org.objectweb.asm.Label;
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Frame frame>;
if v != null goto label;
v = v;
goto label;
label:
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Frame frame>;
v = v.<org.objectweb.asm.Frame: org.objectweb.asm.Label owner>;
label:
return v;
}
final void addLineNumber(int)
{
org.objectweb.asm.Label v;
short v, v, v, v;
int[] v, v, v, v, v, v, v, v, v;
int v, v, v, v, v, v, v;
v := @this: org.objectweb.asm.Label;
v := @parameter: int;
v = v.<org.objectweb.asm.Label: short flags>;
v = v & 128;
if v != 0 goto label;
v = v.<org.objectweb.asm.Label: short flags>;
v = v | 128;
v.<org.objectweb.asm.Label: short flags> = v;
v.<org.objectweb.asm.Label: short lineNumber> = v;
goto label;
label:
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
if v != null goto label;
v = newarray (int)[4];
v.<org.objectweb.asm.Label: int[] otherLineNumbers> = v;
label:
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
v = v[0];
v = v + 1;
v[0] = v;
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
v = lengthof v;
if v < v goto label;
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
v = lengthof v;
v = v + 4;
v = newarray (int)[v];
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
v = lengthof v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, 0, v);
v.<org.objectweb.asm.Label: int[] otherLineNumbers> = v;
label:
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
v[v] = v;
label:
return;
}
final void accept(org.objectweb.asm.MethodVisitor, boolean)
{
org.objectweb.asm.MethodVisitor v;
org.objectweb.asm.Label v;
short v, v, v;
int[] v, v, v;
int v, v, v, v, v;
boolean v;
v := @this: org.objectweb.asm.Label;
v := @parameter: org.objectweb.asm.MethodVisitor;
v := @parameter: boolean;
virtualinvoke v.<org.objectweb.asm.MethodVisitor: void visitLabel(org.objectweb.asm.Label)>(v);
if v == 0 goto label;
v = v.<org.objectweb.asm.Label: short flags>;
v = v & 128;
if v == 0 goto label;
v = v.<org.objectweb.asm.Label: short lineNumber>;
v = (int) 65535;
v = v & v;
virtualinvoke v.<org.objectweb.asm.MethodVisitor: void visitLineNumber(int,org.objectweb.asm.Label)>(v, v);
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
if v == null goto label;
v = 1;
label:
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
v = v[0];
if v > v goto label;
v = v.<org.objectweb.asm.Label: int[] otherLineNumbers>;
v = v[v];
virtualinvoke v.<org.objectweb.asm.MethodVisitor: void visitLineNumber(int,org.objectweb.asm.Label)>(v, v);
v = v + 1;
goto label;
label:
return;
}
final void put(org.objectweb.asm.ByteVector, int, boolean)
{
org.objectweb.asm.ByteVector v;
org.objectweb.asm.Label v;
short v, v;
int v, v, v, v, v, v, v, v, v;
boolean v;
v := @this: org.objectweb.asm.Label;
v := @parameter: org.objectweb.asm.ByteVector;
v := @parameter: int;
v := @parameter: boolean;
v = v.<org.objectweb.asm.Label: short flags>;
v = v & 4;
if v != 0 goto label;
if v == 0 goto label;
v = v.<org.objectweb.asm.ByteVector: int length>;
specialinvoke v.<org.objectweb.asm.Label: void addForwardReference(int,int,int)>(v, 536870912, v);
v = (int) -1;
virtualinvoke v.<org.objectweb.asm.ByteVector: org.objectweb.asm.ByteVector putInt(int)>(v);
goto label;
label:
v = v.<org.objectweb.asm.ByteVector: int length>;
specialinvoke v.<org.objectweb.asm.Label: void addForwardReference(int,int,int)>(v, 268435456, v);
v = (int) -1;
virtualinvoke v.<org.objectweb.asm.ByteVector: org.objectweb.asm.ByteVector putShort(int)>(v);
goto label;
label:
if v == 0 goto label;
v = v.<org.objectweb.asm.Label: int bytecodeOffset>;
v = v - v;
virtualinvoke v.<org.objectweb.asm.ByteVector: org.objectweb.asm.ByteVector putInt(int)>(v);
goto label;
label:
v = v.<org.objectweb.asm.Label: int bytecodeOffset>;
v = v - v;
virtualinvoke v.<org.objectweb.asm.ByteVector: org.objectweb.asm.ByteVector putShort(int)>(v);
label:
return;
}
private void addForwardReference(int, int, int)
{
org.objectweb.asm.Label v;
int[] v, v, v, v, v, v, v, v, v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v;
v := @this: org.objectweb.asm.Label;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
if v != null goto label;
v = newarray (int)[6];
v.<org.objectweb.asm.Label: int[] forwardReferences> = v;
label:
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = v[0];
v = v + 2;
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = lengthof v;
if v < v goto label;
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = lengthof v;
v = v + 6;
v = newarray (int)[v];
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = lengthof v;
staticinvoke <java.lang.System: void arraycopy(java.lang.Object,int,java.lang.Object,int,int)>(v, 0, v, 0, v);
v.<org.objectweb.asm.Label: int[] forwardReferences> = v;
label:
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = v + 1;
v[v] = v;
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = v + 1;
v = v | v;
v[v] = v;
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v[0] = v;
return;
}
final boolean resolve(byte[], int)
{
byte[] v;
org.objectweb.asm.Label v;
short v, v, v;
byte v;
int[] v, v, v, v;
int v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v, v;
boolean v;
v := @this: org.objectweb.asm.Label;
v := @parameter: byte[];
v := @parameter: int;
v = v.<org.objectweb.asm.Label: short flags>;
v = v | 4;
v.<org.objectweb.asm.Label: short flags> = v;
v.<org.objectweb.asm.Label: int bytecodeOffset> = v;
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
if v != null goto label;
return 0;
label:
v = 0;
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = v[0];
label:
if v <= 0 goto label;
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = v - 1;
v = v[v];
v = v.<org.objectweb.asm.Label: int[] forwardReferences>;
v = v[v];
v = v - v;
v = v & 268435455;
v = v & -268435456;
if v != 268435456 goto label;
v = (int) -32768;
if v < v goto label;
if v <= 32767 goto label;
label:
v = v[v];
v = v & 255;
if v >= 198 goto label;
v = v + 49;
v[v] = v;
goto label;
label:
v = v + 20;
v[v] = v;
label:
v = 1;
label:
v = v + 1;
v = v >>> 8;
v[v] = v;
v[v] = v;
goto label;
label:
v = v + 1;
v = v >>> 24;
v[v] = v;
v = v + 1;
v = v >>> 16;
v[v] = v;
v = v + 1;
v = v >>> 8;
v[v] = v;
v[v] = v;
label:
v = v - 2;
goto label;
label:
return v;
}
final void markSubroutine(short)
{
short v, v;
org.objectweb.asm.Label v, v, v, v, v;
v := @this: org.objectweb.asm.Label;
v := @parameter: short;
v = v;
v = <org.objectweb.asm.Label: org.objectweb.asm.Label EMPTY_LIST>;
v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement> = v;
label:
v = <org.objectweb.asm.Label: org.objectweb.asm.Label EMPTY_LIST>;
if v == v goto label;
v = v;
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement>;
v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement> = null;
v = v.<org.objectweb.asm.Label: short subroutineId>;
if v != 0 goto label;
v.<org.objectweb.asm.Label: short subroutineId> = v;
v = specialinvoke v.<org.objectweb.asm.Label: org.objectweb.asm.Label pushSuccessors(org.objectweb.asm.Label)>(v);
goto label;
label:
return;
}
final void addSubroutineRetSuccessors(org.objectweb.asm.Label)
{
org.objectweb.asm.Edge v, v, v;
org.objectweb.asm.Label v, v, v, v, v, v, v, v, v, v, v;
short v, v, v, v, v;
v := @this: org.objectweb.asm.Label;
v := @parameter: org.objectweb.asm.Label;
v = <org.objectweb.asm.Label: org.objectweb.asm.Label EMPTY_LIST>;
v = v;
v = <org.objectweb.asm.Label: org.objectweb.asm.Label EMPTY_LIST>;
v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement> = v;
label:
v = <org.objectweb.asm.Label: org.objectweb.asm.Label EMPTY_LIST>;
if v == v goto label;
v = v;
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement>;
v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement> = v;
v = v;
v = v.<org.objectweb.asm.Label: short flags>;
v = v & 64;
if v == 0 goto label;
v = v.<org.objectweb.asm.Label: short subroutineId>;
v = v.<org.objectweb.asm.Label: short subroutineId>;
if v == v goto label;
v = new org.objectweb.asm.Edge;
v = v.<org.objectweb.asm.Label: short outputStackSize>;
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Edge outgoingEdges>;
v = v.<org.objectweb.asm.Edge: org.objectweb.asm.Label successor>;
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Edge outgoingEdges>;
specialinvoke v.<org.objectweb.asm.Edge: void <init>(int,org.objectweb.asm.Label,org.objectweb.asm.Edge)>(v, v, v);
v.<org.objectweb.asm.Label: org.objectweb.asm.Edge outgoingEdges> = v;
label:
v = specialinvoke v.<org.objectweb.asm.Label: org.objectweb.asm.Label pushSuccessors(org.objectweb.asm.Label)>(v);
goto label;
label:
v = <org.objectweb.asm.Label: org.objectweb.asm.Label EMPTY_LIST>;
if v == v goto label;
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement>;
v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement> = null;
v = v;
goto label;
label:
return;
}
private org.objectweb.asm.Label pushSuccessors(org.objectweb.asm.Label)
{
org.objectweb.asm.Edge v, v, v;
org.objectweb.asm.Label v, v, v, v, v, v;
short v, v;
boolean v;
v := @this: org.objectweb.asm.Label;
v := @parameter: org.objectweb.asm.Label;
v = v;
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Edge outgoingEdges>;
label:
if v == null goto label;
v = v.<org.objectweb.asm.Label: short flags>;
v = v & 16;
if v == 0 goto label;
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Edge outgoingEdges>;
v = v.<org.objectweb.asm.Edge: org.objectweb.asm.Edge nextEdge>;
if v != v goto label;
v = 1;
goto label;
label:
v = 0;
label:
if v != 0 goto label;
v = v.<org.objectweb.asm.Edge: org.objectweb.asm.Label successor>;
v = v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement>;
if v != null goto label;
v = v.<org.objectweb.asm.Edge: org.objectweb.asm.Label successor>;
v.<org.objectweb.asm.Label: org.objectweb.asm.Label nextListElement> = v;
v = v.<org.objectweb.asm.Edge: org.objectweb.asm.Label successor>;
label:
v = v.<org.objectweb.asm.Edge: org.objectweb.asm.Edge nextEdge>;
goto label;
label:
return v;
}
public java.lang.String toString()
{
int v;
org.objectweb.asm.Label v;
java.lang.String v;
v := @this: org.objectweb.asm.Label;
v = staticinvoke <java.lang.System: int identityHashCode(java.lang.Object)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("L\u0001");
return v;
}
static void <clinit>()
{
org.objectweb.asm.Label v;
v = new org.objectweb.asm.Label;
specialinvoke v.<org.objectweb.asm.Label: void <init>()>();
<org.objectweb.asm.Label: org.objectweb.asm.Label EMPTY_LIST> = v;
return;
}
}