本文整理了Java中org.objectweb.asm.tree.TypeInsnNode.<init>()
方法的一些代码示例,展示了TypeInsnNode.<init>()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。TypeInsnNode.<init>()
方法的具体详情如下:
包路径:org.objectweb.asm.tree.TypeInsnNode
类名称: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++;
}
内容来源于网络,如有侵权,请联系作者删除!