org.objectweb.asm.Opcodes# AASTORE 源码实例Demo

下面列出了org.objectweb.asm.Opcodes# AASTORE 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。


@Override
public void visitInsn(int opcode) {
    switch (opcode) {
    case Opcodes.AALOAD:
    case Opcodes.LALOAD:
    case Opcodes.FALOAD:
    case Opcodes.DALOAD:
    case Opcodes.IALOAD:
        invokeBeforeSharedVariableRead();
        break;
    case Opcodes.AASTORE:
    case Opcodes.IASTORE:
    case Opcodes.LASTORE:
    case Opcodes.FASTORE:
    case Opcodes.DASTORE:
        invokeBeforeSharedVariableWrite();
        break;
    }
    super.visitInsn(opcode);
}
 
源代码2 项目: Hook-Manager   文件: MethodHookInjector.java

@Override
public void visitCode()
{
	super.visitCode();
	if(methodData.hasHookAt(HookPosition.METHOD_START))
	{
		HookData hookData = methodData.getHook(HookPosition.METHOD_START);
		super.visitLdcInsn(className + "." + methodName + "|start");
		
		if(hookData.collectsParams())
		{
			super.visitIntInsn(Opcodes.BIPUSH, paramCount);
			super.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object");
			for(byte i = 0; i < paramCount; i++)
			{
				super.visitInsn(Opcodes.DUP);
				super.visitIntInsn(Opcodes.BIPUSH, i);
				super.visitVarInsn(Opcodes.ALOAD, i);
				super.visitInsn(Opcodes.AASTORE);
			}
		}
		
		// TODO: Custom class path
		super.visitMethodInsn(Opcodes.INVOKESTATIC,
			"tk/wurst_client/hooks/HookManager", "hook",
			"(Ljava/lang/String;"
				+ (hookData.collectsParams() ? "[Ljava/lang/Object;" : "")
				+ ")V", false);
	}
}
 
源代码3 项目: Hook-Manager   文件: MethodHookInjector.java

@Override
public void visitInsn(int opcode)
{
	if(methodData.hasHookAt(HookPosition.METHOD_END) && opcode >= 172
		&& opcode <= 177)
	{
		HookData hookData = methodData.getHook(HookPosition.METHOD_END);
		super.visitLdcInsn(className + "." + methodName + "|end");
		
		if(hookData.collectsParams())
		{
			
			super.visitIntInsn(Opcodes.BIPUSH, paramCount);
			super.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object");
			for(byte i = 0; i < paramCount; i++)
			{
				super.visitInsn(Opcodes.DUP);
				super.visitIntInsn(Opcodes.BIPUSH, i);
				super.visitVarInsn(Opcodes.ALOAD, i);
				super.visitInsn(Opcodes.AASTORE);
			}
		}
		
		// TODO: Custom class path
		super.visitMethodInsn(Opcodes.INVOKESTATIC,
			"tk/wurst_client/hooks/HookManager", "hook",
			"(Ljava/lang/String;"
				+ (hookData.collectsParams() ? "[Ljava/lang/Object;" : "")
				+ ")V", false);
	}
	super.visitInsn(opcode);
}
 
源代码4 项目: es6draft   文件: InstructionAssembler.java

public final void astore(Type type) {
    switch (type.getOpcode(Opcodes.IASTORE)) {
    case Opcodes.IASTORE:
        iastore();
        return;
    case Opcodes.LASTORE:
        lastore();
        return;
    case Opcodes.FASTORE:
        fastore();
        return;
    case Opcodes.DASTORE:
        dastore();
        return;
    case Opcodes.AASTORE:
        aastore();
        return;
    case Opcodes.BASTORE:
        bastore();
        return;
    case Opcodes.CASTORE:
        castore();
        return;
    case Opcodes.SASTORE:
        sastore();
        return;
    default:
        throw new IllegalArgumentException();
    }
}
 
源代码5 项目: byte-buddy   文件: ArrayFactory.java

/**
 * {@inheritDoc}
 */
public int getStorageOpcode() {
    return Opcodes.AASTORE;
}
 
 方法所在类
 同类方法