private void pop(final String descriptor) { char firstDescriptorChar = descriptor.charAt(0); if (firstDescriptorChar == '(') { int numSlots = 0; Type[] types = Type.getArgumentTypes(descriptor); for (Type type : types) { numSlots += type.getSize(); } pop(numSlots); } else if (firstDescriptorChar == 'J' || firstDescriptorChar == 'D') { pop(2); } else { pop(1); } }
private void pop(final String descriptor) { char firstDescriptorChar = descriptor.charAt(0); if (firstDescriptorChar == '(') { int numSlots = 0; Type[] types = Type.getArgumentTypes(descriptor); for (Type type : types) { numSlots += type.getSize(); } pop(numSlots); } else if (firstDescriptorChar == 'J' || firstDescriptorChar == 'D') { pop(2); } else { pop(1); } }
private void pop(final String descriptor) { char firstDescriptorChar = descriptor.charAt(0); if (firstDescriptorChar == '(') { int numSlots = 0; Type[] types = Type.getArgumentTypes(descriptor); for (Type type : types) { numSlots += type.getSize(); } pop(numSlots); } else if (firstDescriptorChar == 'J' || firstDescriptorChar == 'D') { pop(2); } else { pop(1); } }
@Override public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { if (mv != null) { mv.visitInvokeDynamicInsn(name, desc, bsm, bsmArgs); } if (this.locals == null) { labels = null; return; } pop(desc); pushDesc(desc); labels = null; }
@Override public void visitInvokeDynamicInsn( final String name, final String descriptor, final Handle bootstrapMethodHandle, final Object... bootstrapMethodArguments) { super.visitInvokeDynamicInsn(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments); if (this.locals == null) { labels = null; return; } pop(descriptor); pushDescriptor(descriptor); labels = null; }
@Override public void visitInvokeDynamicInsn( final String name, final String descriptor, final Handle bootstrapMethodHandle, final Object... bootstrapMethodArguments) { super.visitInvokeDynamicInsn(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments); if (this.locals == null) { labels = null; return; } pop(descriptor); pushDescriptor(descriptor); labels = null; }
@Override public void visitInvokeDynamicInsn( final String name, final String descriptor, final Handle bootstrapMethodHandle, final Object... bootstrapMethodArguments) { super.visitInvokeDynamicInsn(name, descriptor, bootstrapMethodHandle, bootstrapMethodArguments); if (this.locals == null) { labels = null; return; } pop(descriptor); pushDescriptor(descriptor); labels = null; }
case Opcodes.LALOAD: case Opcodes.D2L: pop(2); push(Opcodes.LONG); push(Opcodes.TOP); case Opcodes.DALOAD: case Opcodes.L2D: pop(2); push(Opcodes.DOUBLE); push(Opcodes.TOP); break; case Opcodes.AALOAD: pop(1); value1 = pop(); if (value1 instanceof String) { pushDescriptor(((String) value1).substring(1)); case Opcodes.FSTORE: case Opcodes.ASTORE: value1 = pop(); set(intArg, value1); if (intArg > 0) { case Opcodes.LSTORE: case Opcodes.DSTORE: pop(1); value1 = pop(); set(intArg, value1);
case Opcodes.LALOAD: case Opcodes.D2L: pop(2); push(Opcodes.LONG); push(Opcodes.TOP); case Opcodes.DALOAD: case Opcodes.L2D: pop(2); push(Opcodes.DOUBLE); push(Opcodes.TOP); break; case Opcodes.AALOAD: pop(1); value1 = pop(); if (value1 instanceof String) { pushDescriptor(((String) value1).substring(1)); case Opcodes.FSTORE: case Opcodes.ASTORE: value1 = pop(); set(intArg, value1); if (intArg > 0) { case Opcodes.LSTORE: case Opcodes.DSTORE: pop(1); value1 = pop(); set(intArg, value1);
case Opcodes.CALOAD: case Opcodes.SALOAD: pop(2); push(Opcodes.INTEGER); break; case Opcodes.LALOAD: case Opcodes.D2L: pop(2); push(Opcodes.LONG); push(Opcodes.TOP); break; case Opcodes.FALOAD: pop(2); push(Opcodes.FLOAT); break; case Opcodes.DALOAD: case Opcodes.L2D: pop(2); push(Opcodes.DOUBLE); push(Opcodes.TOP); break; case Opcodes.AALOAD: pop(1); t1 = pop(); if (t1 instanceof String) { pushDesc(((String) t1).substring(1)); case Opcodes.FSTORE: case Opcodes.ASTORE:
case Opcodes.LALOAD: case Opcodes.D2L: pop(2); push(Opcodes.LONG); push(Opcodes.TOP); case Opcodes.DALOAD: case Opcodes.L2D: pop(2); push(Opcodes.DOUBLE); push(Opcodes.TOP); break; case Opcodes.AALOAD: pop(1); value1 = pop(); if (value1 instanceof String) { pushDescriptor(((String) value1).substring(1)); case Opcodes.FSTORE: case Opcodes.ASTORE: value1 = pop(); set(intArg, value1); if (intArg > 0) { case Opcodes.LSTORE: case Opcodes.DSTORE: pop(1); value1 = pop(); set(intArg, value1);