org.objectweb.asm.tree.TypeInsnNode.<init>()方法的使用及代码示例

x33g5p2x  于2022-01-30 转载在 其他  
字(8.1k)|赞(0)|评价(0)|浏览(70)

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

TypeInsnNode.<init>介绍

[英]Constructs a new TypeInsnNode.
[中]构造一个新的TypeInNode。

代码示例

代码示例来源:origin: robolectric/robolectric

static void box(final Type type, ListIterator<AbstractInsnNode> instructions) {
 if (type.getSort() == OBJECT || type.getSort() == ARRAY) {
  return;
 }
 if (Type.VOID_TYPE.equals(type)) {
  instructions.add(new InsnNode(Opcodes.ACONST_NULL));
 } else {
  Type boxed = getBoxedType(type);
  instructions.add(new TypeInsnNode(Opcodes.NEW, boxed.getInternalName()));
  if (type.getSize() == 2) {
   // Pp -> Ppo -> oPpo -> ooPpo -> ooPp -> o
   instructions.add(new InsnNode(Opcodes.DUP_X2));
   instructions.add(new InsnNode(Opcodes.DUP_X2));
   instructions.add(new InsnNode(Opcodes.POP));
  } else {
   // p -> po -> opo -> oop -> o
   instructions.add(new InsnNode(Opcodes.DUP_X1));
   instructions.add(new InsnNode(Opcodes.SWAP));
  }
  instructions.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, boxed.getInternalName(),
    "<init>", "(" + type.getDescriptor() + ")V", false));
 }
}

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

public void writePushNewObject(Class clazz) {
  code.add(new TypeInsnNode(NEW, Type.getInternalName(clazz)));
  stackPush(Memory.Type.REFERENCE);
  writePushDup();
  writeSysCall(clazz, INVOKESPECIAL, Constants.INIT_METHOD, void.class);
  stackPop();
}

代码示例来源:origin: robolectric/robolectric

instructions.add(new TypeInsnNode(Opcodes.ANEWARRAY, "java/lang/Object"));
  instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, remappedType));
  break;
 case VOID:
  break;
 case Type.LONG:
  instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, Type.getInternalName(Long.class)));
  instructions.add(new MethodInsnNode(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Long.class), "longValue", Type.getMethodDescriptor(Type.LONG_TYPE), false));
  break;
 case Type.FLOAT:
  instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, Type.getInternalName(Float.class)));
  instructions.add(new MethodInsnNode(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Float.class), "floatValue", Type.getMethodDescriptor(Type.FLOAT_TYPE), false));
  break;
 case Type.DOUBLE:
  instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, Type.getInternalName(Double.class)));
  instructions.add(new MethodInsnNode(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Double.class), "doubleValue", Type.getMethodDescriptor(Type.DOUBLE_TYPE), false));
  break;
 case Type.BOOLEAN:
  instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, Type.getInternalName(Boolean.class)));
  instructions.add(new MethodInsnNode(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Boolean.class), "booleanValue", Type.getMethodDescriptor(Type.BOOLEAN_TYPE), false));
  break;
 case Type.INT:
  instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, Type.getInternalName(Integer.class)));
  instructions.add(new MethodInsnNode(Opcodes.INVOKEVIRTUAL, Type.getInternalName(Integer.class), "intValue", Type.getMethodDescriptor(Type.INT_TYPE), false));
  break;
 case Type.SHORT:
  instructions.add(new TypeInsnNode(Opcodes.CHECKCAST, Type.getInternalName(Short.class)));

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

public void writePushNewObject(String internalName, Class... paramClasses) {
  code.add(new TypeInsnNode(NEW, internalName));
  stackPush(Memory.Type.REFERENCE);
  writePushDup();
  writeSysCall(internalName, INVOKESPECIAL, Constants.INIT_METHOD, void.class, paramClasses);
  stackPop();
}

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

public void writePushParameters(Collection<Memory> memories) {
  writePushSmallInt(memories.size());
  code.add(new TypeInsnNode(ANEWARRAY, Type.getInternalName(Memory.class)));
  stackPop();
  stackPush(Memory.Type.REFERENCE);
  int i = 0;
  for (Memory param : memories) {
    writePushDup();
    writePushSmallInt(i);
    writePushMemory(param);
    writePopBoxing(true, false);
    code.add(new InsnNode(AASTORE));
    stackPop();
    stackPop();
    stackPop();
    i++;
  }
}

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

code.add(new TypeInsnNode(ANEWARRAY, Type.getInternalName(Memory.class)));
stackPop();
stackPush(Memory.Type.REFERENCE);

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

protected void writePushUses(Collection<ArgumentStmtToken> parameters){
  if (parameters.isEmpty()){
    add(new InsnNode(ACONST_NULL));
    expr.stackPush(Memory.Type.REFERENCE);
    return;
  }
  expr.writePushSmallInt(parameters.size());
  add(new TypeInsnNode(ANEWARRAY, Type.getInternalName(Memory.class)));
  expr.stackPop();
  expr.stackPush(Memory.Type.REFERENCE);
  int i = 0;
  for(ArgumentStmtToken param : parameters){
    expr.writePushDup();
    expr.writePushSmallInt(i);
    LocalVariable local = method.getLocalVariable(param.getName().getName());
    if (local == null)
      expr.writePushNull();
    else
      expr.writeVarLoad(local);
    if (!param.isReference())
      expr.writePopBoxing(true);
    add(new InsnNode(AASTORE));
    expr.stackPop();
    expr.stackPop();
    expr.stackPop();
    i++;
  }
}

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

node.instructions.add(new TypeInsnNode(ANEWARRAY, Type.getInternalName(TraceInfo.class)));
expressionCompiler.stackPush(Memory.Type.REFERENCE);
node.instructions.add(new TypeInsnNode(ANEWARRAY, Type.getInternalName(Memory.class)));
expressionCompiler.stackPush(Memory.Type.REFERENCE);
node.instructions.add(new TypeInsnNode(ANEWARRAY, Type.getInternalName(Memory[].class)));
expressionCompiler.stackPush(Memory.Type.REFERENCE);

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

);
} else {
  add(new TypeInsnNode(NEW, entity.getInternalName()));
  expr.stackPush(Memory.Type.REFERENCE);
  expr.writePushDup();

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

code.add(new TypeInsnNode(ANEWARRAY, Type.getInternalName(Memory.class)));
stackPop();
stackPush(Memory.Type.REFERENCE);

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

return;
} else if (memory instanceof ReferenceMemory) {
  code.add(new TypeInsnNode(NEW, Type.getInternalName(ReferenceMemory.class)));
  code.add(new InsnNode(DUP));
  code.add(new MethodInsnNode(INVOKESPECIAL, Type.getInternalName(ReferenceMemory.class), Constants.INIT_METHOD, "()V", false));

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

expr.makeUnknown(new TypeInsnNode(NEW, entity.getGeneratorEntity().getInternalName()));
expr.stackPush(Memory.Type.REFERENCE);
expr.writePushDup();

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

@Override
  public AbstractInsnNode clone(final Map<LabelNode, LabelNode> labels) {
    return new TypeInsnNode(opcode, desc).cloneAnnotations(this);
  }
}

代码示例来源:origin: net.sourceforge.cobertura/cobertura

@Override
public void visitTypeInsn(int arg0, String arg1) {
  super.visitTypeInsn(arg0, arg1);
  appendToBacklog(new TypeInsnNode(arg0, arg1));
}

代码示例来源:origin: fge/grappa

public CodeBlock newobj(final String desc)
{
  instructionList.add(new TypeInsnNode(NEW, desc));
  return this;
}

代码示例来源:origin: fge/grappa

public CodeBlock checkcast(final String typeDesc)
{
  instructionList.add(new TypeInsnNode(CHECKCAST, typeDesc));
  return this;
}

代码示例来源:origin: fge/grappa

public CodeBlock visitTypeInsn(final int opcode, final String desc)
{
  instructionList.add(new TypeInsnNode(opcode, desc));
  return this;
}

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

private void generateStoreNewProxyMatcher() {
  String proxyMatcherType = Types.PROXY_MATCHER.getInternalName();
  // stack:
  insert(new TypeInsnNode(NEW, proxyMatcherType));
  // stack: <proxyMatcher>
  insert(new InsnNode(DUP));
  // stack: <proxyMatcher> :: <proxyMatcher>
  insert(new MethodInsnNode(INVOKESPECIAL, proxyMatcherType, "<init>", "()V", false));
  // stack: <proxyMatcher>
  generateStoreInCache();
  // stack: <proxyMatcher>
}

代码示例来源:origin: net.ledem/brennus-asm

public void unbox(PrimitiveType primitiveType, Object... comment) {
 String boxedClassIdentifier = primitiveType.getBoxedType().getClassIdentifier();
 addInstruction(new TypeInsnNode(CHECKCAST, boxedClassIdentifier), addComment(comment, "unboxing", primitiveType));
 addInstruction(new MethodInsnNode(
   INVOKEVIRTUAL,
   boxedClassIdentifier,
   primitiveType.getName()+"Value",
   "()"+primitiveType.getClassIdentifier()), addComment(comment, "unboxing", primitiveType));
}

代码示例来源:origin: com.github.bingoohuang/blackcat-instrument

private void addGetCallback(InsnList insnList) {
  insnList.add(new TypeInsnNode(NEW, p(Blackcat.class)));
  insnList.add(new InsnNode(DUP));
  insnList.add(new MethodInsnNode(INVOKESPECIAL,
      p(Blackcat.class), "<init>", sig(void.class), false));
  catVarIndex = getFistAvailablePosition();
  insnList.add(new VarInsnNode(ASTORE, catVarIndex));
  methodNode.maxLocals++;
}

相关文章

微信公众号

最新文章

更多