Java Code Examples for org.objectweb.asm.Opcodes#F_SAME
The following examples show how to use
org.objectweb.asm.Opcodes#F_SAME .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: FrameNode.java From Cafebabe with GNU General Public License v3.0 | 6 votes |
@Override public void accept(final MethodVisitor methodVisitor) { switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: methodVisitor.visitFrame(type, local.size(), asArray(local), stack.size(), asArray(stack)); break; case Opcodes.F_APPEND: methodVisitor.visitFrame(type, local.size(), asArray(local), 0, null); break; case Opcodes.F_CHOP: methodVisitor.visitFrame(type, local.size(), null, 0, null); break; case Opcodes.F_SAME: methodVisitor.visitFrame(type, 0, null, 0, null); break; case Opcodes.F_SAME1: methodVisitor.visitFrame(type, 0, null, 1, asArray(stack)); break; default: throw new IllegalArgumentException(); } }
Example 2
Source File: FrameNode.java From Concurnas with MIT License | 6 votes |
@Override public void accept(final MethodVisitor methodVisitor) { switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: methodVisitor.visitFrame(type, local.size(), asArray(local), stack.size(), asArray(stack)); break; case Opcodes.F_APPEND: methodVisitor.visitFrame(type, local.size(), asArray(local), 0, null); break; case Opcodes.F_CHOP: methodVisitor.visitFrame(type, local.size(), null, 0, null); break; case Opcodes.F_SAME: methodVisitor.visitFrame(type, 0, null, 0, null); break; case Opcodes.F_SAME1: methodVisitor.visitFrame(type, 0, null, 1, asArray(stack)); break; default: throw new IllegalArgumentException(); } }
Example 3
Source File: FrameNode.java From Cafebabe with GNU General Public License v3.0 | 6 votes |
/** * Constructs a new {@link FrameNode}. * * @param type * the type of this frame. Must be {@link Opcodes#F_NEW} for expanded frames, or {@link Opcodes#F_FULL}, {@link Opcodes#F_APPEND}, {@link Opcodes#F_CHOP}, {@link Opcodes#F_SAME} or {@link Opcodes#F_APPEND}, {@link Opcodes#F_SAME1} for compressed frames. * @param numLocal * number of local variables of this stack map frame. * @param local * the types of the local variables of this stack map frame. Elements of this list can be Integer, String or LabelNode objects (for primitive, reference and uninitialized types respectively - see {@link MethodVisitor}). * @param numStack * number of operand stack elements of this stack map frame. * @param stack * the types of the operand stack elements of this stack map frame. Elements of this list can be Integer, String or LabelNode objects (for primitive, reference and uninitialized types respectively - see {@link MethodVisitor}). */ public FrameNode(final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { super(-1); this.type = type; switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: this.local = Util.asArrayList(numLocal, local); this.stack = Util.asArrayList(numStack, stack); break; case Opcodes.F_APPEND: this.local = Util.asArrayList(numLocal, local); break; case Opcodes.F_CHOP: this.local = Util.asArrayList(numLocal); break; case Opcodes.F_SAME: break; case Opcodes.F_SAME1: this.stack = Util.asArrayList(1, stack); break; default: throw new IllegalArgumentException(); } }
Example 4
Source File: FrameNode.java From JByteMod-Beta with GNU General Public License v2.0 | 6 votes |
/** * Makes the given visitor visit this stack map frame. * * @param mv * a method visitor. */ @Override public void accept(final MethodVisitor mv) { switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: mv.visitFrame(type, local.size(), asArray(local), stack.size(), asArray(stack)); break; case Opcodes.F_APPEND: mv.visitFrame(type, local.size(), asArray(local), 0, null); break; case Opcodes.F_CHOP: mv.visitFrame(type, local.size(), null, 0, null); break; case Opcodes.F_SAME: mv.visitFrame(type, 0, null, 0, null); break; case Opcodes.F_SAME1: mv.visitFrame(type, 0, null, 1, asArray(stack)); break; } }
Example 5
Source File: Locals.java From Mixin with MIT License | 6 votes |
/** * Compute a new frame size based on the supplied frame type and the size of * locals contained in the frame (this may differ from the number of actual * frame slots if the frame contains doubles or longs) * * @param currentSize current frame size * @param type frame entry type * @param size frame entry size * @return new frame size */ private static int getAdjustedFrameSize(int currentSize, int type, int size) { switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: return size; case Opcodes.F_APPEND: return currentSize + size; case Opcodes.F_CHOP: return currentSize - size; case Opcodes.F_SAME: case Opcodes.F_SAME1: return currentSize; default: return currentSize; } }
Example 6
Source File: FrameNode.java From JReFrameworker with MIT License | 6 votes |
@Override public void accept(final MethodVisitor methodVisitor) { switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: methodVisitor.visitFrame(type, local.size(), asArray(local), stack.size(), asArray(stack)); break; case Opcodes.F_APPEND: methodVisitor.visitFrame(type, local.size(), asArray(local), 0, null); break; case Opcodes.F_CHOP: methodVisitor.visitFrame(type, local.size(), null, 0, null); break; case Opcodes.F_SAME: methodVisitor.visitFrame(type, 0, null, 0, null); break; case Opcodes.F_SAME1: methodVisitor.visitFrame(type, 0, null, 1, asArray(stack)); break; default: throw new IllegalArgumentException(); } }
Example 7
Source File: CodeBlock.java From grappa with Apache License 2.0 | 6 votes |
/** * adds a compressed frame to the stack * * @param stackArguments the argument types on the stack, represented as * "class path names" e.g java/lang/RuntimeException */ public CodeBlock frame_same(final Object... stackArguments) { final int type; switch (stackArguments.length) { case 0: type = Opcodes.F_SAME; break; case 1: type = Opcodes.F_SAME1; break; default: throw new IllegalArgumentException("same frame should have 0" + " or 1 arguments on stack"); } instructionList.add(new FrameNode(type, 0, null, stackArguments.length, stackArguments)); return this; }
Example 8
Source File: FrameNode.java From Concurnas with MIT License | 5 votes |
/** * Constructs a new {@link FrameNode}. * * @param type the type of this frame. Must be {@link Opcodes#F_NEW} for expanded frames, or * {@link Opcodes#F_FULL}, {@link Opcodes#F_APPEND}, {@link Opcodes#F_CHOP}, {@link * Opcodes#F_SAME} or {@link Opcodes#F_APPEND}, {@link Opcodes#F_SAME1} for compressed frames. * @param numLocal number of local variables of this stack map frame. * @param local the types of the local variables of this stack map frame. Elements of this list * can be Integer, String or LabelNode objects (for primitive, reference and uninitialized * types respectively - see {@link MethodVisitor}). * @param numStack number of operand stack elements of this stack map frame. * @param stack the types of the operand stack elements of this stack map frame. Elements of this * list can be Integer, String or LabelNode objects (for primitive, reference and * uninitialized types respectively - see {@link MethodVisitor}). */ public FrameNode( final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { super(-1); this.type = type; switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: this.local = Util.asArrayList(numLocal, local); this.stack = Util.asArrayList(numStack, stack); break; case Opcodes.F_APPEND: this.local = Util.asArrayList(numLocal, local); break; case Opcodes.F_CHOP: this.local = Util.asArrayList(numLocal); break; case Opcodes.F_SAME: break; case Opcodes.F_SAME1: this.stack = Util.asArrayList(1, stack); break; default: throw new IllegalArgumentException(); } }
Example 9
Source File: Textifier.java From Concurnas with MIT License | 5 votes |
@Override public void visitFrame( final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { stringBuilder.setLength(0); stringBuilder.append(ltab); stringBuilder.append("FRAME "); switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: stringBuilder.append("FULL ["); appendFrameTypes(numLocal, local); stringBuilder.append("] ["); appendFrameTypes(numStack, stack); stringBuilder.append(']'); break; case Opcodes.F_APPEND: stringBuilder.append("APPEND ["); appendFrameTypes(numLocal, local); stringBuilder.append(']'); break; case Opcodes.F_CHOP: stringBuilder.append("CHOP ").append(numLocal); break; case Opcodes.F_SAME: stringBuilder.append("SAME"); break; case Opcodes.F_SAME1: stringBuilder.append("SAME1 "); appendFrameTypes(1, stack); break; default: throw new IllegalArgumentException(); } stringBuilder.append('\n'); text.add(stringBuilder.toString()); }
Example 10
Source File: Textifier.java From JReFrameworker with MIT License | 5 votes |
@Override public void visitFrame( final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { stringBuilder.setLength(0); stringBuilder.append(ltab); stringBuilder.append("FRAME "); switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: stringBuilder.append("FULL ["); appendFrameTypes(numLocal, local); stringBuilder.append("] ["); appendFrameTypes(numStack, stack); stringBuilder.append(']'); break; case Opcodes.F_APPEND: stringBuilder.append("APPEND ["); appendFrameTypes(numLocal, local); stringBuilder.append(']'); break; case Opcodes.F_CHOP: stringBuilder.append("CHOP ").append(numLocal); break; case Opcodes.F_SAME: stringBuilder.append("SAME"); break; case Opcodes.F_SAME1: stringBuilder.append("SAME1 "); appendFrameTypes(1, stack); break; default: throw new IllegalArgumentException(); } stringBuilder.append('\n'); text.add(stringBuilder.toString()); }
Example 11
Source File: SAXCodeAdapter.java From JByteMod-Beta with GNU General Public License v2.0 | 5 votes |
@Override public void visitFrame(final int type, final int nLocal, final Object[] local, final int nStack, final Object[] stack) { AttributesImpl attrs = new AttributesImpl(); switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: if (type == Opcodes.F_NEW) { attrs.addAttribute("", "type", "type", "", "NEW"); } else { attrs.addAttribute("", "type", "type", "", "FULL"); } sa.addStart("frame", attrs); appendFrameTypes(true, nLocal, local); appendFrameTypes(false, nStack, stack); break; case Opcodes.F_APPEND: attrs.addAttribute("", "type", "type", "", "APPEND"); sa.addStart("frame", attrs); appendFrameTypes(true, nLocal, local); break; case Opcodes.F_CHOP: attrs.addAttribute("", "type", "type", "", "CHOP"); attrs.addAttribute("", "count", "count", "", Integer.toString(nLocal)); sa.addStart("frame", attrs); break; case Opcodes.F_SAME: attrs.addAttribute("", "type", "type", "", "SAME"); sa.addStart("frame", attrs); break; case Opcodes.F_SAME1: attrs.addAttribute("", "type", "type", "", "SAME1"); sa.addStart("frame", attrs); appendFrameTypes(false, 1, stack); break; } sa.addEnd("frame"); }
Example 12
Source File: Textifier.java From JReFrameworker with MIT License | 5 votes |
@Override public void visitFrame( final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { stringBuilder.setLength(0); stringBuilder.append(ltab); stringBuilder.append("FRAME "); switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: stringBuilder.append("FULL ["); appendFrameTypes(numLocal, local); stringBuilder.append("] ["); appendFrameTypes(numStack, stack); stringBuilder.append(']'); break; case Opcodes.F_APPEND: stringBuilder.append("APPEND ["); appendFrameTypes(numLocal, local); stringBuilder.append(']'); break; case Opcodes.F_CHOP: stringBuilder.append("CHOP ").append(numLocal); break; case Opcodes.F_SAME: stringBuilder.append("SAME"); break; case Opcodes.F_SAME1: stringBuilder.append("SAME1 "); appendFrameTypes(1, stack); break; default: throw new IllegalArgumentException(); } stringBuilder.append('\n'); text.add(stringBuilder.toString()); }
Example 13
Source File: Textifier.java From JByteMod-Beta with GNU General Public License v2.0 | 5 votes |
@Override public void visitFrame(final int type, final int nLocal, final Object[] local, final int nStack, final Object[] stack) { buf.setLength(0); buf.append(ltab); buf.append("FRAME "); switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: buf.append("FULL ["); appendFrameTypes(nLocal, local); buf.append("] ["); appendFrameTypes(nStack, stack); buf.append(']'); break; case Opcodes.F_APPEND: buf.append("APPEND ["); appendFrameTypes(nLocal, local); buf.append(']'); break; case Opcodes.F_CHOP: buf.append("CHOP ").append(nLocal); break; case Opcodes.F_SAME: buf.append("SAME"); break; case Opcodes.F_SAME1: buf.append("SAME1 "); appendFrameTypes(1, stack); break; } buf.append('\n'); text.add(buf.toString()); }
Example 14
Source File: FrameNode.java From JReFrameworker with MIT License | 5 votes |
/** * Constructs a new {@link FrameNode}. * * @param type the type of this frame. Must be {@link Opcodes#F_NEW} for expanded frames, or * {@link Opcodes#F_FULL}, {@link Opcodes#F_APPEND}, {@link Opcodes#F_CHOP}, {@link * Opcodes#F_SAME} or {@link Opcodes#F_APPEND}, {@link Opcodes#F_SAME1} for compressed frames. * @param numLocal number of local variables of this stack map frame. * @param local the types of the local variables of this stack map frame. Elements of this list * can be Integer, String or LabelNode objects (for primitive, reference and uninitialized * types respectively - see {@link MethodVisitor}). * @param numStack number of operand stack elements of this stack map frame. * @param stack the types of the operand stack elements of this stack map frame. Elements of this * list can be Integer, String or LabelNode objects (for primitive, reference and * uninitialized types respectively - see {@link MethodVisitor}). */ public FrameNode( final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { super(-1); this.type = type; switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: this.local = Util.asArrayList(numLocal, local); this.stack = Util.asArrayList(numStack, stack); break; case Opcodes.F_APPEND: this.local = Util.asArrayList(numLocal, local); break; case Opcodes.F_CHOP: this.local = Util.asArrayList(numLocal); break; case Opcodes.F_SAME: break; case Opcodes.F_SAME1: this.stack = Util.asArrayList(1, stack); break; default: throw new IllegalArgumentException(); } }
Example 15
Source File: CheckMethodAdapter.java From JReFrameworker with MIT License | 4 votes |
@Override public void visitFrame( final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { if (insnCount == lastFrameInsnIndex) { throw new IllegalStateException("At most one frame can be visited at a given code location."); } lastFrameInsnIndex = insnCount; int maxNumLocal; int maxNumStack; switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: maxNumLocal = Integer.MAX_VALUE; maxNumStack = Integer.MAX_VALUE; break; case Opcodes.F_SAME: maxNumLocal = 0; maxNumStack = 0; break; case Opcodes.F_SAME1: maxNumLocal = 0; maxNumStack = 1; break; case Opcodes.F_APPEND: case Opcodes.F_CHOP: maxNumLocal = 3; maxNumStack = 0; break; default: throw new IllegalArgumentException("Invalid frame type " + type); } if (numLocal > maxNumLocal) { throw new IllegalArgumentException( "Invalid numLocal=" + numLocal + " for frame type " + type); } if (numStack > maxNumStack) { throw new IllegalArgumentException( "Invalid numStack=" + numStack + " for frame type " + type); } if (type != Opcodes.F_CHOP) { if (numLocal > 0 && (local == null || local.length < numLocal)) { throw new IllegalArgumentException("Array local[] is shorter than numLocal"); } for (int i = 0; i < numLocal; ++i) { checkFrameValue(local[i]); } } if (numStack > 0 && (stack == null || stack.length < numStack)) { throw new IllegalArgumentException("Array stack[] is shorter than numStack"); } for (int i = 0; i < numStack; ++i) { checkFrameValue(stack[i]); } if (type == Opcodes.F_NEW) { ++numExpandedFrames; } else { ++numCompressedFrames; } if (numExpandedFrames > 0 && numCompressedFrames > 0) { throw new IllegalArgumentException("Expanded and compressed frames must not be mixed."); } super.visitFrame(type, numLocal, local, numStack, stack); }
Example 16
Source File: CheckMethodAdapter.java From JReFrameworker with MIT License | 4 votes |
@Override public void visitFrame( final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { if (insnCount == lastFrameInsnIndex) { throw new IllegalStateException("At most one frame can be visited at a given code location."); } lastFrameInsnIndex = insnCount; int maxNumLocal; int maxNumStack; switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: maxNumLocal = Integer.MAX_VALUE; maxNumStack = Integer.MAX_VALUE; break; case Opcodes.F_SAME: maxNumLocal = 0; maxNumStack = 0; break; case Opcodes.F_SAME1: maxNumLocal = 0; maxNumStack = 1; break; case Opcodes.F_APPEND: case Opcodes.F_CHOP: maxNumLocal = 3; maxNumStack = 0; break; default: throw new IllegalArgumentException("Invalid frame type " + type); } if (numLocal > maxNumLocal) { throw new IllegalArgumentException( "Invalid numLocal=" + numLocal + " for frame type " + type); } if (numStack > maxNumStack) { throw new IllegalArgumentException( "Invalid numStack=" + numStack + " for frame type " + type); } if (type != Opcodes.F_CHOP) { if (numLocal > 0 && (local == null || local.length < numLocal)) { throw new IllegalArgumentException("Array local[] is shorter than numLocal"); } for (int i = 0; i < numLocal; ++i) { checkFrameValue(local[i]); } } if (numStack > 0 && (stack == null || stack.length < numStack)) { throw new IllegalArgumentException("Array stack[] is shorter than numStack"); } for (int i = 0; i < numStack; ++i) { checkFrameValue(stack[i]); } if (type == Opcodes.F_NEW) { ++numExpandedFrames; } else { ++numCompressedFrames; } if (numExpandedFrames > 0 && numCompressedFrames > 0) { throw new IllegalArgumentException("Expanded and compressed frames must not be mixed."); } super.visitFrame(type, numLocal, local, numStack, stack); }
Example 17
Source File: ASMifier.java From JByteMod-Beta with GNU General Public License v2.0 | 4 votes |
@Override public void visitFrame(final int type, final int nLocal, final Object[] local, final int nStack, final Object[] stack) { buf.setLength(0); switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: declareFrameTypes(nLocal, local); declareFrameTypes(nStack, stack); if (type == Opcodes.F_NEW) { buf.append(name).append(".visitFrame(Opcodes.F_NEW, "); } else { buf.append(name).append(".visitFrame(Opcodes.F_FULL, "); } buf.append(nLocal).append(", new Object[] {"); appendFrameTypes(nLocal, local); buf.append("}, ").append(nStack).append(", new Object[] {"); appendFrameTypes(nStack, stack); buf.append('}'); break; case Opcodes.F_APPEND: declareFrameTypes(nLocal, local); buf.append(name).append(".visitFrame(Opcodes.F_APPEND,").append(nLocal).append(", new Object[] {"); appendFrameTypes(nLocal, local); buf.append("}, 0, null"); break; case Opcodes.F_CHOP: buf.append(name).append(".visitFrame(Opcodes.F_CHOP,").append(nLocal).append(", null, 0, null"); break; case Opcodes.F_SAME: buf.append(name).append(".visitFrame(Opcodes.F_SAME, 0, null, 0, null"); break; case Opcodes.F_SAME1: declareFrameTypes(1, stack); buf.append(name).append(".visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"); appendFrameTypes(1, stack); buf.append('}'); break; } buf.append(");\n"); text.add(buf.toString()); }
Example 18
Source File: FrameNode.java From JByteMod-Beta with GNU General Public License v2.0 | 4 votes |
/** * Constructs a new {@link FrameNode}. * * @param type * the type of this frame. Must be {@link Opcodes#F_NEW} for expanded * frames, or {@link Opcodes#F_FULL}, {@link Opcodes#F_APPEND}, * {@link Opcodes#F_CHOP}, {@link Opcodes#F_SAME} or * {@link Opcodes#F_APPEND}, {@link Opcodes#F_SAME1} for compressed * frames. * @param nLocal * number of local variables of this stack map frame. * @param local * the types of the local variables of this stack map frame. Elements * of this list can be Integer, String or LabelNode objects (for * primitive, reference and uninitialized types respectively - see * {@link MethodVisitor}). * @param nStack * number of operand stack elements of this stack map frame. * @param stack * the types of the operand stack elements of this stack map frame. * Elements of this list can be Integer, String or LabelNode objects * (for primitive, reference and uninitialized types respectively - * see {@link MethodVisitor}). */ public FrameNode(final int type, final int nLocal, final Object[] local, final int nStack, final Object[] stack) { super(-1); this.type = type; switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: this.local = asList(nLocal, local); this.stack = asList(nStack, stack); break; case Opcodes.F_APPEND: this.local = asList(nLocal, local); break; case Opcodes.F_CHOP: this.local = new ArrayList<Object>(Arrays.asList(new Object[nLocal])); break; case Opcodes.F_SAME: break; case Opcodes.F_SAME1: this.stack = asList(1, stack); break; } }
Example 19
Source File: CheckMethodAdapter.java From Concurnas with MIT License | 4 votes |
@Override public void visitFrame( final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { if (insnCount == lastFrameInsnIndex) { throw new IllegalStateException("At most one frame can be visited at a given code location."); } lastFrameInsnIndex = insnCount; int maxNumLocal; int maxNumStack; switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: maxNumLocal = Integer.MAX_VALUE; maxNumStack = Integer.MAX_VALUE; break; case Opcodes.F_SAME: maxNumLocal = 0; maxNumStack = 0; break; case Opcodes.F_SAME1: maxNumLocal = 0; maxNumStack = 1; break; case Opcodes.F_APPEND: case Opcodes.F_CHOP: maxNumLocal = 3; maxNumStack = 0; break; default: throw new IllegalArgumentException("Invalid frame type " + type); } if (numLocal > maxNumLocal) { throw new IllegalArgumentException( "Invalid numLocal=" + numLocal + " for frame type " + type); } if (numStack > maxNumStack) { throw new IllegalArgumentException( "Invalid numStack=" + numStack + " for frame type " + type); } if (type != Opcodes.F_CHOP) { if (numLocal > 0 && (local == null || local.length < numLocal)) { throw new IllegalArgumentException("Array local[] is shorter than numLocal"); } for (int i = 0; i < numLocal; ++i) { checkFrameValue(local[i]); } } if (numStack > 0 && (stack == null || stack.length < numStack)) { throw new IllegalArgumentException("Array stack[] is shorter than numStack"); } for (int i = 0; i < numStack; ++i) { checkFrameValue(stack[i]); } if (type == Opcodes.F_NEW) { ++numExpandedFrames; } else { ++numCompressedFrames; } if (numExpandedFrames > 0 && numCompressedFrames > 0) { throw new IllegalArgumentException("Expanded and compressed frames must not be mixed."); } super.visitFrame(type, numLocal, local, numStack, stack); }
Example 20
Source File: ASMifier.java From Concurnas with MIT License | 4 votes |
@Override public void visitFrame( final int type, final int numLocal, final Object[] local, final int numStack, final Object[] stack) { stringBuilder.setLength(0); switch (type) { case Opcodes.F_NEW: case Opcodes.F_FULL: declareFrameTypes(numLocal, local); declareFrameTypes(numStack, stack); if (type == Opcodes.F_NEW) { stringBuilder.append(name).append(".visitFrame(Opcodes.F_NEW, "); } else { stringBuilder.append(name).append(".visitFrame(Opcodes.F_FULL, "); } stringBuilder.append(numLocal).append(NEW_OBJECT_ARRAY); appendFrameTypes(numLocal, local); stringBuilder.append("}, ").append(numStack).append(NEW_OBJECT_ARRAY); appendFrameTypes(numStack, stack); stringBuilder.append('}'); break; case Opcodes.F_APPEND: declareFrameTypes(numLocal, local); stringBuilder .append(name) .append(".visitFrame(Opcodes.F_APPEND,") .append(numLocal) .append(NEW_OBJECT_ARRAY); appendFrameTypes(numLocal, local); stringBuilder.append("}, 0, null"); break; case Opcodes.F_CHOP: stringBuilder .append(name) .append(".visitFrame(Opcodes.F_CHOP,") .append(numLocal) .append(", null, 0, null"); break; case Opcodes.F_SAME: stringBuilder.append(name).append(".visitFrame(Opcodes.F_SAME, 0, null, 0, null"); break; case Opcodes.F_SAME1: declareFrameTypes(1, stack); stringBuilder .append(name) .append(".visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"); appendFrameTypes(1, stack); stringBuilder.append('}'); break; default: throw new IllegalArgumentException(); } stringBuilder.append(");\n"); text.add(stringBuilder.toString()); }