int previousOffset = visitor.getPreviousOffset(); ConstantParserVisitor constantVisitor = new ConstantParserVisitor(); int arrayLength = 0; visitor.visitNewarray(offset, 2, type, null); return 2; } else { visitor.visitNewarray(offset, lastOffset - offset, type, initVals); return lastOffset - offset;
/** * Processes the given "work set" by repeatedly finding the lowest bit * in the set, clearing it, and parsing and visiting the instruction at * the indicated offset (that is, the bit index), repeating until the * work set is empty. It is expected that the visitor will regularly * set new bits in the work set during the process. * * @param workSet {@code non-null;} the work set to process * @param visitor {@code non-null;} visitor to call back to for * each instruction */ public void processWorkSet(int[] workSet, Visitor visitor) { if (visitor == null) { throw new NullPointerException("visitor == null"); } for (;;) { int offset = Bits.findFirst(workSet, 0); if (offset < 0) { break; } Bits.clear(workSet, offset); parseInstruction(offset, visitor); visitor.setPreviousOffset(offset); } }
visitor.visitNoArgs(opcode, offset, 1, Type.VOID); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstKnownNull.THE_ONE, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_M1, -1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_0, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_1, 1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_2, 2); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_3, 3); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_4, 4);
visitor.visitNoArgs(opcode, offset, 1, Type.VOID); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstKnownNull.THE_ONE, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_M1, -1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_0, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_1, 1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_2, 2); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_3, 3); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_4, 4);
visitor.visitNoArgs(opcode, offset, 1, Type.VOID); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstKnownNull.THE_ONE, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_M1, -1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_0, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_1, 1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_2, 2); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_3, 3); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_4, 4);
visitor.visitNoArgs(opcode, offset, 1, Type.VOID); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstKnownNull.THE_ONE, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_M1, -1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_0, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_1, 1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_2, 2); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_3, 3); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_4, 4);
visitor.visitNoArgs(opcode, offset, 1, Type.VOID); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstKnownNull.THE_ONE, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_M1, -1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_0, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_1, 1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_2, 2); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_3, 3); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_4, 4);
visitor.visitNoArgs(opcode, offset, 1, Type.VOID); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstKnownNull.THE_ONE, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_M1, -1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_0, 0); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_1, 1); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_2, 2); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_3, 3); return 1; visitor.visitConstant(ByteOps.LDC, offset, 1, CstInteger.VALUE_4, 4);
int previousOffset = visitor.getPreviousOffset(); ConstantParserVisitor constantVisitor = new ConstantParserVisitor(); int arrayLength = 0; visitor.visitNewarray(offset, 2, type, null); return 2; } else { visitor.visitNewarray(offset, lastOffset - offset, type, initVals); return lastOffset - offset;
int previousOffset = visitor.getPreviousOffset(); ConstantParserVisitor constantVisitor = new ConstantParserVisitor(); int arrayLength = 0; visitor.visitNewarray(offset, 2, type, null); return 2; } else { visitor.visitNewarray(offset, lastOffset - offset, type, initVals); return lastOffset - offset;
int previousOffset = visitor.getPreviousOffset(); ConstantParserVisitor constantVisitor = new ConstantParserVisitor(); int arrayLength = 0; visitor.visitNewarray(offset, 2, type, null); return 2; } else { visitor.visitNewarray(offset, lastOffset - offset, type, initVals); return lastOffset - offset;
int previousOffset = visitor.getPreviousOffset(); ConstantParserVisitor constantVisitor = new ConstantParserVisitor(); int arrayLength = 0; visitor.visitNewarray(offset, 2, type, null); return 2; } else { visitor.visitNewarray(offset, lastOffset - offset, type, initVals); return lastOffset - offset;
int previousOffset = visitor.getPreviousOffset(); ConstantParserVisitor constantVisitor = new ConstantParserVisitor(); int arrayLength = 0; visitor.visitNewarray(offset, 2, type, null); return 2; } else { visitor.visitNewarray(offset, lastOffset - offset, type, initVals); return lastOffset - offset;
switch (opcode) { case ByteOps.ILOAD: { visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.LONG, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.FLOAT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.DOUBLE, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.OBJECT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.LONG, 0); return 4;
switch (opcode) { case ByteOps.ILOAD: { visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.LONG, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.FLOAT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.DOUBLE, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.OBJECT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.LONG, 0); return 4;
switch (opcode) { case ByteOps.ILOAD: { visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.LONG, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.FLOAT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.DOUBLE, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.OBJECT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.LONG, 0); return 4;
switch (opcode) { case ByteOps.ILOAD: { visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.LONG, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.FLOAT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.DOUBLE, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.OBJECT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.LONG, 0); return 4;
switch (opcode) { case ByteOps.ILOAD: { visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.LONG, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.FLOAT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.DOUBLE, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.OBJECT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.LONG, 0); return 4;
switch (opcode) { case ByteOps.ILOAD: { visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.LONG, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.FLOAT, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.DOUBLE, 0); return 4; visitor.visitLocal(ByteOps.ILOAD, offset, 4, idx, Type.OBJECT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.INT, 0); return 4; visitor.visitLocal(ByteOps.ISTORE, offset, 4, idx, Type.LONG, 0); return 4;
visitor.visitSwitch(ByteOps.LOOKUPSWITCH, offset, length, cases, padding);