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

下面列出了org.objectweb.asm.Opcodes# IASTORE 实例代码,或者点击链接到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 项目: Concurnas   文件: Utils.java

public static void applyArrayStore(BytecodeOutputter mv, Type origType, BytecodeGennerator bcv, boolean onInit) {
	if(origType instanceof PrimativeType && origType.getArrayLevels() == 1 )
	{
		PrimativeTypeEnum ee = ((PrimativeType)origType).type;
		int op;
		switch(ee)
		{
			case BOOLEAN: op = Opcodes.BASTORE; break; 
			case CHAR: op = Opcodes.CASTORE; break; 
			case FLOAT: op = Opcodes.FASTORE; break; 
			case DOUBLE: op = Opcodes.DASTORE; break; 
			case SHORT: op = Opcodes.SASTORE; break; 
			case INT: op = Opcodes.IASTORE; break; 
			case BYTE: op = Opcodes.BASTORE; break; 
			default: op = Opcodes.LASTORE; break;//long 
		}
		mv.visitInsn(op);
		
		
	}
	else
	{
		if(!onInit && TypeCheckUtils.hasRefLevelsAndIsArray(origType)){
			int tempSlot = bcv.createNewLocalVar(bcv.getTempVarName(), origType, false);
			mv.visitVarInsn(ASTORE, tempSlot);
			
			mv.visitInsn(Opcodes.SWAP);
			extractAndCastArrayRef(mv, origType);
			//mv.visitFieldInsn(GETFIELD, "com/concurnas/bootstrap/runtime/ref/LocalArray", "ar", "[Ljava/lang/Object;");
			//mv.visitTypeInsn(CHECKCAST, "[Lcom/concurnas/runtime/ref/Local;");
			mv.visitInsn(Opcodes.SWAP);
			
			mv.visitVarInsn(ALOAD, tempSlot);
		}
		
		mv.visitInsn(Opcodes.AASTORE);
	}
}
 
源代码3 项目: Mixin   文件: BeforeFieldAccess.java

public BeforeFieldAccess(InjectionPointData data) {
    super(data);
    this.opcode = data.getOpcode(-1, Opcodes.GETFIELD, Opcodes.PUTFIELD, Opcodes.GETSTATIC, Opcodes.PUTSTATIC, -1);
    
    String array = data.get("array", "");
    this.arrOpcode = BeforeFieldAccess.ARRAY_GET.equalsIgnoreCase(array) ? Opcodes.IALOAD
            : BeforeFieldAccess.ARRAY_SET.equalsIgnoreCase(array) ? Opcodes.IASTORE
            : BeforeFieldAccess.ARRAY_LENGTH.equalsIgnoreCase(array) ? Opcodes.ARRAYLENGTH : 0;
    this.fuzzFactor = Math.min(Math.max(data.get("fuzz", BeforeFieldAccess.ARRAY_SEARCH_FUZZ_DEFAULT), 1), 32);
}
 
源代码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();
    }
}
 
 方法所在类
 同类方法