Examples of FieldInsnNode


Examples of org.objectweb.asm.tree.FieldInsnNode

      case IF_ACMPNE:
        expected1 = BasicValue.REFERENCE_VALUE;
        expected2 = BasicValue.REFERENCE_VALUE;
        break;
      case PUTFIELD:
        FieldInsnNode fin = (FieldInsnNode)insn;
        expected1 = newValue(Type.getType("L" + fin.owner + ";"));
        expected2 = newValue(Type.getType(fin.desc));
        break;
      default:
        throw new RuntimeException("Internal error.");
View Full Code Here

Examples of org.objectweb.asm.tree.FieldInsnNode

    boolean shouldDoSetter = true;
    for (int i = 0; instructions.size() > i; i++) {
      AbstractInsnNode node = instructions.get(i);
      switch(node.getType()) {
        case AbstractInsnNode.FIELD_INSN:
          FieldInsnNode f = (FieldInsnNode)node;
          if (shouldDoSetter && isSettingFieldWithPrimitive(f)) {
            if (LOG) System.out.println(">> SETTING FIELD index=" + i);
            i = on(instructions, f)
              .insertAtOffset(2,
                new VarInsnNode(ALOAD, 0),
                new FieldInsnNode(GETFIELD, owner, "$data", BYTEBUFFER_DESC))
              .insertAtOffset(1,
                new FieldInsnNode(GETFIELD, owner, "$stride", "I"),
                fieldOffsetInstruction(f.name),
                new InsnNode(IADD))
              .insertAtOffset(0,
                bufferHelper.invokePutter(f.name),
                new InsnNode(POP))
              .delete(0)
              .transform();
          } else if (!shouldDoSetter && isSettingFieldWithPrimitive(f)) {
            if (LOG) System.out.println(">> SETTING FIELD index=" + i);
            i = on(instructions, f)
              .insertAtOffset(0,
                bufferHelper.invokePutter(f.name),
                new InsnNode(POP))
              .delete(0)
              .transform();
          } else if (isSettingFieldWithObject(f)) {
            if (LOG) System.out.println(">> SETTING FIELD FROM OBJECT index=" + i);
            i = on(instructions, f)
              .insertAtOffset(3,
                new VarInsnNode(ALOAD, 0),
                new FieldInsnNode(GETFIELD, owner, "$data", BYTEBUFFER_DESC))
              .insertAtOffset(2,
                new FieldInsnNode(GETFIELD, owner, "$stride", "I"),
                fieldOffsetInstruction(f.name),
                new InsnNode(IADD))
              .insertAtOffset(0,
                bufferHelper.invokePutter(f.name),
                new InsnNode(POP))
              .delete(0)
              .transform();
          } else if (isModifyingFieldWithObject(f)) {
            if (LOG) System.out.println(">> SETTING-MODIFYING FIELD FROM OBJECT index=" + i);
            i = on(instructions, f)
              .insertAtOffset(6,
                new VarInsnNode(ALOAD, 0),
                new FieldInsnNode(GETFIELD, owner, "$data", BYTEBUFFER_DESC))
              .insertAtOffset(5,
                new FieldInsnNode(GETFIELD, owner, "$stride", "I"),
                fieldOffsetInstruction(f.name),
                new InsnNode(IADD),
                new InsnNode(DUP2),
                bufferHelper.invokeGetter(f.name))
              .insertAtOffset(0,
                bufferHelper.invokePutter(f.name),
                new InsnNode(POP))
              .delete(5)
              .delete(4)
              .delete(0)
              .transform();
          } else if (isLoadingFromField(f)) {
            if (LOG) System.out.println("<< LOAD FIELD index=" + i);
            i = on(instructions, f)
              .insertAtOffset(2,
                new VarInsnNode(ALOAD, 0),
                new FieldInsnNode(GETFIELD, owner, "$data", BYTEBUFFER_DESC))
              .insertAtOffset(0,
                new FieldInsnNode(GETFIELD, owner, "$stride", "I"),
                fieldOffsetInstruction(f.name),
                new InsnNode(IADD),
                new InsnNode(DUP2),
                bufferHelper.invokeGetter(f.name))
              .delete(1)
              .delete(0)
              .transform();
            shouldDoSetter = false;
          } else if (isGettingField(f)) {
            if (LOG) System.out.println("<< GETTING FIELD index=" + i);
            i = on(instructions, f)
              .insertAtOffset(1,
                new VarInsnNode(ALOAD, 0),
                new FieldInsnNode(GETFIELD, owner, "$data", BYTEBUFFER_DESC))
              .insertAtOffset(0,
                new FieldInsnNode(GETFIELD, owner, "$stride", "I"),
                fieldOffsetInstruction(f.name),
                new InsnNode(IADD),
                bufferHelper.invokeGetter(f.name))
              .delete(0)
              .transform();
View Full Code Here

Examples of org.objectweb.asm.tree.FieldInsnNode

    for (int i = 0; instructions.size() > i; i++) {
      AbstractInsnNode node = instructions.get(i);
      if (AbstractInsnNode.FIELD_INSN != node.getType())
        continue;
     
      FieldInsnNode fn = (FieldInsnNode)node;
      if (className.equals(fn.owner))
        continue;
     
      if (PUTFIELD == fn.getOpcode() && components.containsKey(fn.owner)) {
        changed = true;
        i = InstructionMutator.on(instructions, fn)
          .insertAtOffset(0,
            new MethodInsnNode(INVOKEVIRTUAL, fn.owner, fn.name, param(fn)))
          .delete(0)
          .transform();
      } else if (GETFIELD == fn.getOpcode() && components.containsKey(fn.owner)) {
        changed = true;
       
        i = on(instructions, fn)
          .insertAtOffset(0,
            new MethodInsnNode(INVOKEVIRTUAL, fn.owner, fn.name, "()" + fn.desc))
View Full Code Here

Examples of org.objectweb.asm.tree.FieldInsnNode

                continue;

            // Make sure we're talking about access to a field of this class, not some other
            // visible field of another class.

            FieldInsnNode fnode = (FieldInsnNode) node;

            if (!fnode.owner.equals(classNode.name))
                continue;

            Map<String, String> fieldToMethod = opcode == GETFIELD ? fieldToReadMethod : fieldToWriteMethod;
View Full Code Here

Examples of org.objectweb.asm.tree.FieldInsnNode

    private void verifyAccess(InstructionGraphNode node) {
        switch (node.getInstruction().getOpcode()) {
            case GETFIELD:
            case GETSTATIC:
                FieldInsnNode field = (FieldInsnNode) node.getInstruction();
                Checks.ensure(!isPrivateField(field.owner, field.name),
                        "Rule method '%s' contains an illegal access to private field '%s'.\n" +
                                "Mark the field protected or package-private if you want to prevent public access!",
                        method.name, field.name);
                break;
View Full Code Here

Examples of org.objectweb.asm.tree.FieldInsnNode

    private void verifyAccess(InstructionGraphNode node) {
        switch (node.getInstruction().getOpcode()) {
            case GETFIELD:
            case GETSTATIC:
                FieldInsnNode field = (FieldInsnNode) node.getInstruction();
                Checks.ensure(!isPrivateField(field.owner, field.name),
                        "Rule method '%s' contains an illegal access to private field '%s'.\n" +
                                "Mark the field protected or package-private if you want to prevent public access!",
                        method.name, field.name);
                break;
View Full Code Here

Examples of org.objectweb.asm.tree.FieldInsnNode

        "java/lang/Object"));
  }

  @Test
  public void testFieldInsn() {
    testInstructionBetweenFrames(new FieldInsnNode(Opcodes.GETFIELD, "Foo",
        "f", "I"));
  }
View Full Code Here

Examples of org.objectweb.asm.tree.FieldInsnNode

            case IF_ACMPNE:
                expected1 = BasicValue.REFERENCE_VALUE;
                expected2 = BasicValue.REFERENCE_VALUE;
                break;
            case PUTFIELD:
                FieldInsnNode fin = (FieldInsnNode) insn;
                expected1 = newValue(Type.getObjectType(fin.owner));
                expected2 = newValue(Type.getType(fin.desc));
                break;
            default:
                throw new Error("Internal error.");
View Full Code Here

Examples of org.objectweb.asm.tree.FieldInsnNode

            case IF_ACMPNE:
                expected1 = BasicValue.REFERENCE_VALUE;
                expected2 = BasicValue.REFERENCE_VALUE;
                break;
            case PUTFIELD:
                FieldInsnNode fin = (FieldInsnNode) insn;
                expected1 = newValue(Type.getObjectType(fin.owner));
                expected2 = newValue(Type.getType(fin.desc));
                break;
            default:
                throw new Error("Internal error.");
View Full Code Here

Examples of org.objectweb.asm.tree.FieldInsnNode

        }
        case JSR:
            throw new UnsupportedOperationException(
                    "Do not support instruction types JSR - Deprecated in Java 6");
        case GETSTATIC: {
            final FieldInsnNode f = (FieldInsnNode) insn;
            return new StaticField(f.owner, f.name, f.desc);
        }
        case NEW: {
            final TypeInsnNode type = (TypeInsnNode) insn;
            return new ObjectRef(Type.getObjectType(type.desc));
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.