org.objectweb.asm.tree.FieldInsnNode类的使用及代码示例

x33g5p2x  于2022-01-19 转载在 其他  
字(15.2k)|赞(0)|评价(0)|浏览(182)

本文整理了Java中org.objectweb.asm.tree.FieldInsnNode类的一些代码示例,展示了FieldInsnNode类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。FieldInsnNode类的具体详情如下:
包路径:org.objectweb.asm.tree.FieldInsnNode
类名称:FieldInsnNode

FieldInsnNode介绍

[英]A node that represents a field instruction. A field instruction is an instruction that loads or stores the value of a field of an object.
[中]表示字段指令的节点。字段指令是加载或存储对象字段值的指令。

代码示例

代码示例来源:origin: jphp-group/jphp

public void writePushBooleanAsMemory(boolean value) {
  if (value)
    code.add(new FieldInsnNode(
        GETSTATIC, Type.getInternalName(Memory.class), "TRUE", Type.getDescriptor(Memory.class)
    ));
  else
    code.add(new FieldInsnNode(
        GETSTATIC, Type.getInternalName(Memory.class), "FALSE", Type.getDescriptor(Memory.class)
    ));
  stackPush(Memory.Type.REFERENCE);
}

代码示例来源:origin: jooby-project/jooby

return null;
 return loadType(loader, ((Type) cst).getClassName());
if (finsn.getOpcode() == GETSTATIC) {
 java.lang.reflect.Type possibleEnum = loadType(loader, finsn.owner);
 if (MoreTypes.getRawType(possibleEnum).isEnum()) {

代码示例来源:origin: org.multiverse/multiverse-alpha-unborn

int tranlocalVar = indexOfTranlocalVariable(methodNode.name, methodNode.desc);
InsnList newInstructions = new InsnList();
newInstructions.add(startLabelNode);
newInstructions.add(new LineNumberNode(debugInfo.beginLine, startLabelNode));
for (int k = 0; k < methodNode.instructions.size(); k++) {
          newInstructions.add(new MethodInsnNode(
              INVOKEVIRTUAL,
              Type.getType(AlphaTranlocal.class).getInternalName(),
              "isCommitted",
              "()Z"
        newInstructions.add(new MethodInsnNode(
            INVOKEINTERFACE,
            getInternalName(AlphaTransaction.class),
            "openForWrite",
            format("(%s)%s", getDescriptor(AlphaTransactionalObject.class), getDescriptor(AlphaTranlocal.class))));
        newInsn = new FieldInsnNode(PUTFIELD,
            ownerMetadata.getTranlocalName(),
            originalFieldInsnNode.name,
        newInstructions.add(continueGetFieldLabel);
        newInstructions.add(new FieldInsnNode(GETFIELD, ownerMetadata.getTranlocalName(), originalFieldInsnNode.name, originalFieldInsnNode.desc));

代码示例来源:origin: org.multiverse/multiverse-alpha-unborn

private InsnList fixInstructions(MethodNode originalMethod, CloneMap cloneMap) {
  InsnList instructions = new InsnList();
  for (int k = 0; k < originalMethod.instructions.size(); k++) {
    AbstractInsnNode originalInsn = originalMethod.instructions.get(k);
    switch (originalInsn.getOpcode()) {
        ClassMetadata ownerMetadata = metadataRepository.loadClassMetadata(classLoader, fieldInsn.owner);
        FieldMetadata fieldMetadata = ownerMetadata.getFieldMetadata(fieldInsn.name);
        Type originalFieldType = Type.getType(fieldMetadata.getDesc());
          String referenceName = Type.getType(referenceDesc).getInternalName();
          instructions.add(new FieldInsnNode(
              GETFIELD,
              fieldInsn.owner,
          instructions.add(new FieldInsnNode(
              GETFIELD,
              fieldInsn.owner,

代码示例来源:origin: org.multiverse/multiverse-alpha-unborn

for (Type argType : getArgumentTypes(originalMethod.desc)) {
  LocalVariableNode clonedVar = new LocalVariableNode(
      "arg" + result.localVariables.size(),
      argType.getDescriptor(),
  var += argType.getSize();
  result.localVariables.add(clonedVar);
result.instructions.add(startScope);
for (ListIterator<AbstractInsnNode> it = (ListIterator<AbstractInsnNode>) donorMethodNode.instructions.iterator(); it.hasNext();) {
  AbstractInsnNode donorInsn = it.next();
  switch (donorInsn.getOpcode()) {
        result.instructions.add(cloned);
        result.instructions.add(new FieldInsnNode(
            GETSTATIC, classNode.name, txFactoryFieldNode.name, donorFieldInsnNode.desc));
      } else {

代码示例来源:origin: ItzSomebody/Radon

MethodNode methodNode = methodWrapper.methodNode;
for (AbstractInsnNode insn : methodNode.instructions.toArray()) {
  if (insn instanceof MethodInsnNode) {
    MethodInsnNode methodInsnNode = (MethodInsnNode) insn;
      String newSig = isStatic ? methodInsnNode.desc : methodInsnNode.desc.replace("(",
          "(Ljava/lang/Object;");
      Type returnType = Type.getReturnType(methodInsnNode.desc);
      Type[] args = Type.getArgumentTypes(newSig);
      for (int i = 0; i < args.length; i++) {
        Type arg = args[i];
        if (arg.getSort() == Type.OBJECT) {
          args[i] = Type.getType("Ljava/lang/Object;");
      );
      methodNode.instructions.set(insn, indy);
      if (returnType.getSort() == Type.ARRAY) {
        methodNode.instructions.insert(indy, new TypeInsnNode(CHECKCAST,
            returnType.getInternalName()));
    boolean isStatic = (fieldInsnNode.getOpcode() == GETSTATIC
        || fieldInsnNode.getOpcode() == PUTSTATIC);
    boolean isSetter = (fieldInsnNode.getOpcode() == PUTFIELD
        || fieldInsnNode.getOpcode() == PUTSTATIC);
    String newSig = (isSetter) ? "(" + fieldInsnNode.desc + ")V" : "()" + fieldInsnNode.desc;
    if (!isStatic)

代码示例来源:origin: EvoSuite/evosuite

if (Type.getType(fieldNode.desc).equals(Type.BOOLEAN_TYPE)) {
  if (fieldNode.getOpcode() == Opcodes.PUTFIELD
      || fieldNode.getOpcode() == Opcodes.PUTSTATIC) {
    MethodInsnNode n = new MethodInsnNode(Opcodes.INVOKESTATIC,
        Type.getInternalName(BooleanHelper.class), "intToBoolean",
        Type.getMethodDescriptor(Type.BOOLEAN_TYPE,
                     new Type[] { Type.INT_TYPE }));
    TransformationStatistics.transformBackToBooleanField();
    mn.instructions.insertBefore(fieldNode, n);
  } else {
    MethodInsnNode n = new MethodInsnNode(Opcodes.INVOKESTATIC,
        Type.getMethodDescriptor(Type.INT_TYPE,
                     new Type[] { Type.BOOLEAN_TYPE }));
    mn.instructions.insert(fieldNode, n);
    TransformationStatistics.transformBackToBooleanField();
    return n;

代码示例来源:origin: org.multiverse/multiverse-alpha-unborn

InsnList extraInstructions = new InsnList();
for (FieldNode fieldNode : (List<FieldNode>) classNode.fields) {
  FieldMetadata fieldMetadata = classMetadata.getFieldMetadata(fieldNode.name);
    extraInstructions.add(new VarInsnNode(ALOAD, 0));
    String referenceName = Type.getType(referenceDesc).getInternalName();
    extraInstructions.add(new TypeInsnNode(NEW, referenceName));
    extraInstructions.add(new InsnNode(DUP));
        new MethodInsnNode(INVOKESPECIAL, referenceName, "<init>", "()V"));
    extraInstructions.add(new FieldInsnNode(
        PUTFIELD,
        classNode.name,

代码示例来源:origin: org.activecomponents.jadex/jadex-kernel-bdiv3

Type    ret    = Type.getReturnType(mn.desc);
InsnList nl = new InsnList();
nl.add(new VarInsnNode(Opcodes.ALOAD, 0));
nl.add(new FieldInsnNode(Opcodes.GETFIELD, iclname, AGENT_FIELD_NAME, "Ljadex/bridge/IInternalAccess;"));
nl.add(new VarInsnNode(Opcodes.ALOAD, 0));
nl.add(new FieldInsnNode(Opcodes.GETFIELD, iclname, GLOBALNAME_FIELD_NAME, "Ljava/lang/String;"));
if(ret.getClassName().equals("byte"))
  nl.add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/Byte", "TYPE", "Ljava/lang/Class;"));
else if(ret.getClassName().equals("short"))
  nl.add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/Short", "TYPE", "Ljava/lang/Class;"));
  nl.add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/Integer", "TYPE", "Ljava/lang/Class;"));
  nl.add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/Character", "TYPE", "Ljava/lang/Class;"));
  nl.add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/Boolean", "TYPE", "Ljava/lang/Class;"));
  nl.add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/Long", "TYPE", "Ljava/lang/Class;"));
  nl.add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/Float", "TYPE", "Ljava/lang/Class;"));
  nl.add(new FieldInsnNode(Opcodes.GETSTATIC, "java/lang/Double", "TYPE", "Ljava/lang/Class;"));

代码示例来源:origin: org.activecomponents.jadex/jadex-kernel-bdiv3

if(name.indexOf(Type.getInternalName(IBDIAgent.class))!=-1)
    MethodNode mnode = new MethodNode(Opcodes.ACC_PUBLIC, m.getName(), Type.getMethodDescriptor(m), null, null);
    Type ret = Type.getReturnType(mnode.desc);
    InsnList nl = new InsnList();
    nl.add(new VarInsnNode(Opcodes.ALOAD, 0));
    nl.add(new FieldInsnNode(Opcodes.GETFIELD, iclname, IBDIClassGenerator.AGENT_FIELD_NAME, "Ljadex/bridge/IInternalAccess;"));
    if(m.getDeclaringClass().equals(IBDIAgentFeature.class))

代码示例来源:origin: org.activecomponents.jadex/jadex-kernel-bdiv3

Type[] args = Type.getArgumentTypes(mn.desc);
InsnList nl = new InsnList();
nl.add(new VarInsnNode(Opcodes.ALOAD, 0)); // loads the object
nl.add(new FieldInsnNode(Opcodes.GETFIELD, iclname, AGENT_FIELD_NAME, Type.getDescriptor(IInternalAccess.class)));
nl.add(new LdcInsnNode(belname));
nl.add(new MethodInsnNode(Opcodes.INVOKESTATIC, "jadex/bdiv3/features/impl/BDIAgentFeature", "unobserveValue", 
nl.add(new VarInsnNode(Opcodes.ALOAD, 0)); // loads the agent object
nl.add(new FieldInsnNode(Opcodes.GETFIELD, iclname, AGENT_FIELD_NAME, Type.getDescriptor(IInternalAccess.class)));
nl.add(new LdcInsnNode(belname));

代码示例来源:origin: jphp-group/jphp

public void writePutDynamic(String name, Class fieldClass) {
  code.add(new FieldInsnNode(
      PUTFIELD,
      method.clazz.node.name,
      name,
      Type.getDescriptor(fieldClass)
  ));
  stackPop();
}

代码示例来源:origin: org.parboiled/parboiled-java

@SuppressWarnings( {"unchecked"})
private void generateGetFromCache() {
  Type[] paramTypes = Type.getArgumentTypes(method.desc);
  cacheFieldName = findUnusedCacheFieldName();
  insert(new FieldInsnNode(GETFIELD, classNode.name, cacheFieldName, cacheFieldDesc));
  insert(new FieldInsnNode(PUTFIELD, classNode.name, cacheFieldName, cacheFieldDesc));
  if (paramTypes.length > 1 || paramTypes[0].getSort() == Type.ARRAY) {
    String arguments = Type.getInternalName(Arguments.class);

代码示例来源:origin: EvoSuite/evosuite

List<Mutation> mutations) {
InsnList instructions = new InsnList();
  instructions.add(mutation.getInfectionDistance());
  instructions.add(new LdcInsnNode(mutation.getId()));
  MethodInsnNode touched = new MethodInsnNode(Opcodes.INVOKESTATIC,
      Type.getInternalName(ExecutionTracer.class), "passedMutation",
      Type.getMethodDescriptor(Type.VOID_TYPE, new Type[] {
          Type.DOUBLE_TYPE, Type.INT_TYPE }), false);
  instructions.add(touched);
  instructions.add(mutationId);
  FieldInsnNode activeId = new FieldInsnNode(Opcodes.GETSTATIC,
      Type.getInternalName(MutationObserver.class), "activeMutation", "I");
  instructions.add(activeId);
  instructions.add(new JumpInsnNode(Opcodes.IF_ICMPNE, nextLabel));

代码示例来源:origin: EvoSuite/evosuite

private void addCaptureEnableStatement(final String className, final MethodNode mn, final InsnList il, final int returnValueVar)
  il.add(new LdcInsnNode(this.captureId));
    il.add(new LdcInsnNode(className));
    il.add(new MethodInsnNode(Opcodes.INVOKESTATIC,
        PackageInfo.getNameWithSlash(CaptureUtil.class),
         "loadClass", 
  final Type returnType = Type.getReturnType(mn.desc);
  if(returnType.equals(Type.VOID_TYPE))
    il.add(new FieldInsnNode(Opcodes.GETSTATIC, PackageInfo.getNameWithSlash(CaptureLog.class),
                 "RETURN_TYPE_VOID", 
                 Type.getDescriptor(Object.class)));

代码示例来源:origin: squeek502/VeganOption

InsnList toInject = new InsnList();
LabelNode ifNotCanceled = new LabelNode();
toInject.add(new VarInsnNode(Opcodes.ALOAD, 1));
toInject.add(new VarInsnNode(Opcodes.ALOAD, 2));
toInject.add(new VarInsnNode(Opcodes.ALOAD, 3));
toInject.add(new VarInsnNode(Opcodes.ILOAD, 4));
toInject.add(new MethodInsnNode(Opcodes.INVOKESTATIC, Type.getInternalName(Hooks.class), "onFlowIntoBlock", "(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/state/IBlockState;I)Z", false));
toInject.add(new JumpInsnNode(Opcodes.IFEQ, ifNotCanceled));
toInject.add(new InsnNode(Opcodes.RETURN));
InsnList toInject = new InsnList();
toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
toInject.add(new FieldInsnNode(Opcodes.GETFIELD, isObfuscated ? "aqk" : "net/minecraft/tileentity/TileEntity", isObfuscated ? "b" : "worldObj", isObfuscated ? "Laid;" : "Lnet/minecraft/world/World;"));
toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
toInject.add(new FieldInsnNode(Opcodes.GETFIELD, isObfuscated ? "aqk" : "net/minecraft/tileentity/TileEntity", isObfuscated ? "c" : "pos", isObfuscated ? "Lcm;" : "Lnet/minecraft/util/math/BlockPos;"));
toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
toInject.add(new FieldInsnNode(Opcodes.GETFIELD, isObfuscated ? "arm" : "net/minecraft/tileentity/TileEntityPiston", isObfuscated ? "i" : "progress", "F"));
toInject.add(new VarInsnNode(Opcodes.ALOAD, 0));
toInject.add(new FieldInsnNode(Opcodes.GETFIELD, isObfuscated ? "arm" : "net/minecraft/tileentity/TileEntityPiston", isObfuscated ? "g" : "extending", "Z"));
toInject.add(new MethodInsnNode(Opcodes.INVOKESTATIC, Type.getInternalName(Hooks.class), "onPistonTileUpdate", "(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;FZ)V", false));
method.instructions.insertBefore(findFirstInstruction(method), toInject);
toInject.add(new VarInsnNode(Opcodes.ALOAD, 3));
toInject.add(new VarInsnNode(Opcodes.ILOAD, 4));
toInject.add(new MethodInsnNode(Opcodes.INVOKESTATIC, Type.getInternalName(Hooks.class), "onPistonMove", "(Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/EnumFacing;Z)V", false));
method.instructions.insertBefore(findFirstInstruction(method), toInject);

代码示例来源:origin: mjanicek/rembulan

public static AbstractInsnNode loadBoxedBoolean(boolean value) {
  return new FieldInsnNode(
      GETSTATIC,
      Type.getInternalName(Boolean.class),
      value ? "TRUE" : "FALSE",
      Type.getDescriptor(Boolean.class));
}

代码示例来源:origin: org.parboiled/parboiled-java

protected void convertXLoads(InstructionGroup group) {
  String owner = group.getGroupClassType().getInternalName();
  for (InstructionGraphNode node : group.getNodes()) {
    if (!node.isXLoad()) continue;
    VarInsnNode insn = (VarInsnNode) node.getInstruction();
    FieldNode field = group.getFields().get(insn.var);
    // insert the correct GETFIELD after the xLoad
    group.getInstructions().insert(insn, new FieldInsnNode(GETFIELD, owner, field.name, field.desc));
    // change the load to ALOAD 0
    group.getInstructions().set(insn, new VarInsnNode(ALOAD, 0));
  }
}

代码示例来源:origin: TeamWizardry/Wizardry

newInstructions.add(new InsnNode(DUP));
newInstructions.add(new InsnNode(DUP));
newInstructions.add(new FieldInsnNode(GETFIELD, CLASS_MOVE_EVENT, "type", "L" + CLASS_MOVER_TYPE + ";"));
newInstructions.add(new VarInsnNode(ASTORE, 1));
newInstructions.add(new FieldInsnNode(GETFIELD, CLASS_MOVE_EVENT, "x", "D"));
newInstructions.add(new VarInsnNode(DSTORE, 2));
newInstructions.add(new FieldInsnNode(GETFIELD, CLASS_MOVE_EVENT, "y", "D"));
newInstructions.add(new VarInsnNode(DSTORE, 4));
newInstructions.add(new FieldInsnNode(GETFIELD, CLASS_MOVE_EVENT, "z", "D"));
newInstructions.add(new VarInsnNode(DSTORE, 6));
newInstructions.add(new InsnNode(DUP));
newInstructions.add(new InsnNode(DUP));
newInstructions.add(new FieldInsnNode(GETFIELD, CLASS_TRAVEL_EVENT, "strafe", "F"));
newInstructions.add(new VarInsnNode(FSTORE, 1));
newInstructions.add(new FieldInsnNode(GETFIELD, CLASS_TRAVEL_EVENT, "vertical", "F"));
newInstructions.add(new VarInsnNode(FSTORE, 2));
newInstructions.add(new FieldInsnNode(GETFIELD, CLASS_TRAVEL_EVENT, "forward", "F"));
newInstructions.add(new VarInsnNode(FSTORE, 3));
  if (insnNode instanceof FieldInsnNode) {
    FieldInsnNode fInsnNode = (FieldInsnNode) insnNode;
    if (fInsnNode.getOpcode() == Opcodes.PUTFIELD
        && fInsnNode.owner.equals(CLASS_ENTITY_PLAYER)
        && equalsEither(fInsnNode.name, "field_70145_X", "noClip")

代码示例来源:origin: org.ow2.asm/asm-tree

@Override
public void visitFieldInsn(
  final int opcode, final String owner, final String name, final String descriptor) {
 instructions.add(new FieldInsnNode(opcode, owner, name, descriptor));
}

相关文章

微信公众号

最新文章

更多