List of usage examples for org.objectweb.asm Type DOUBLE_TYPE
Type DOUBLE_TYPE
To view the source code for org.objectweb.asm Type DOUBLE_TYPE.
Click Source Link
From source file:boilerplate.processor.adapters.ToStringMethodInsertion.java
License:Open Source License
private static List<BytecodeGenerator> createMethodList() { final Type objectType = Type.getType(Object.class); class ObjectMethodInsn extends ToStringMethodInsertion { ObjectMethodInsn() {// ww w . j av a 2s .co m super(objectType, "appendObject", "(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/Object;)V"); } @Override public boolean matches(Type type) { return true; } } BytecodeGenerator[] arr = { new ToStringMethodInsertion(Type.BOOLEAN_TYPE, "appendBoolean", "(Ljava/lang/StringBuilder;Ljava/lang/String;Z)V"), new ToStringMethodInsertion(Type.BYTE_TYPE, "appendByte", "(Ljava/lang/StringBuilder;Ljava/lang/String;B)V"), new ToStringMethodInsertion(Type.CHAR_TYPE, "appendChar", "(Ljava/lang/StringBuilder;Ljava/lang/String;C)V"), new ToStringMethodInsertion(Type.DOUBLE_TYPE, "appendDouble", "(Ljava/lang/StringBuilder;Ljava/lang/String;D)V"), new ToStringMethodInsertion(Type.FLOAT_TYPE, "appendFloat", "(Ljava/lang/StringBuilder;Ljava/lang/String;F)V"), new ToStringMethodInsertion(Type.INT_TYPE, "appendInt", "(Ljava/lang/StringBuilder;Ljava/lang/String;I)V"), new ToStringMethodInsertion(Type.LONG_TYPE, "appendLong", "(Ljava/lang/StringBuilder;Ljava/lang/String;J)V"), new ToStringMethodInsertion(Type.SHORT_TYPE, "appendShort", "(Ljava/lang/StringBuilder;Ljava/lang/String;S)V"), // default new ObjectMethodInsn(), }; List<BytecodeGenerator> list = Arrays.asList(arr); return Collections.unmodifiableList(list); }
From source file:boilerplate.processor.adapters.TypeInfo.java
License:Open Source License
public boolean hasFieldOfTypeDouble() { for (FieldInfo info : fields) { if (Type.DOUBLE_TYPE.equals(info.type)) { return true; }/* ww w . j a v a 2s .c om*/ } return false; }
From source file:ch.eiafr.cojac.FloatReplaceClassVisitor.java
License:Apache License
@Override public FieldVisitor visitField(int accessFlags, String fieldName, String fieldType, String genericSignature, Object initValStatic) {// ww w.j ava 2 s. c o m if (fieldType.equals("F")) { return super.visitField(accessFlags, fieldName, COJAC_FLOAT_WRAPPER_TYPE_DESCR, genericSignature, null); } else if (fieldType.equals("D")) { return super.visitField(accessFlags, fieldName, COJAC_DOUBLE_WRAPPER_TYPE_DESCR, genericSignature, null); } else if (fieldType.equals(Type.getType(Float.class).getDescriptor())) { return super.visitField(accessFlags, fieldName, COJAC_FLOAT_WRAPPER_TYPE_DESCR, genericSignature, null); } else if (fieldType.equals(Type.getType(Double.class).getDescriptor())) { return super.visitField(accessFlags, fieldName, COJAC_DOUBLE_WRAPPER_TYPE_DESCR, genericSignature, null); } Type type = Type.getType(fieldType); if (type.getSort() == Type.ARRAY) { if (type.getElementType().equals(Type.FLOAT_TYPE)) { String desc = arrayDescriptor(type.getDimensions(), COJAC_FLOAT_WRAPPER_TYPE_DESCR); return super.visitField(accessFlags, fieldName, desc, genericSignature, null); } else if (type.getElementType().equals(Type.DOUBLE_TYPE)) { String desc = arrayDescriptor(type.getDimensions(), COJAC_DOUBLE_WRAPPER_TYPE_DESCR); return super.visitField(accessFlags, fieldName, desc, genericSignature, null); } } return super.visitField(accessFlags, fieldName, fieldType, genericSignature, initValStatic); }
From source file:ch.eiafr.cojac.FloatVariablesSorter.java
License:Apache License
public FloatVariablesSorter(int access, String oldDesc, AnalyzerAdapter mv) { super(Opcodes.ASM5, mv); Type[] args = Type.getArgumentTypes(oldDesc); firstFrameMapping = new int[1 + args.length * 2]; // +1 for 'this' Arrays.fill(firstFrameMapping, -1); // so that erroneously using unwritten cells will cause problems... boolean hasTarget = (Opcodes.ACC_STATIC & access) == 0; // not static -> there is a 'this' param int oldVarIndex = 0; int newVarIndex = 0; int lastIndexSet = -1; if (hasTarget) { oldVarIndex = newVarIndex = 1;//from www. j a va2 s . c om firstFrameMapping[0] = 0; // 'this' remains 'this' after remapping... lastIndexSet = 0; } for (Type arg : args) { firstFrameMapping[oldVarIndex] = newVarIndex; lastIndexSet = oldVarIndex; oldVarIndex += arg.getSize(); newVarIndex += arg.getSize(); if (arg.equals(Type.DOUBLE_TYPE)) { newVarIndex--; } assert !arg.equals(COJAC_DOUBLE_WRAPPER_TYPE); // this would be strange (the descriptor is the old one) } maxRenumber = lastIndexSet; }
From source file:ch.eiafr.cojac.instrumenters.FloatProxyMethod.java
License:Apache License
public static void convertRealToCojacType(Type realType, MethodVisitor mv) { // WRAPPER SPEC: FW.fromFloat(float) -> FW, FW.fromRealFloatWrapper(Float) -> FW // WRAPPER SPEC: DW.fromDouble(double) -> DW, DW.fromRealDoubleWrapper(Double) -> DW if (realType.equals(Type.FLOAT_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, COJAC_FLOAT_WRAPPER_INTERNAL_NAME, "fromFloat", "(F)" + COJAC_FLOAT_WRAPPER_TYPE_DESCR, false); } else if (realType.equals(JWRAPPER_FLOAT_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, COJAC_FLOAT_WRAPPER_INTERNAL_NAME, "fromRealFloatWrapper", "(" + JWRAPPER_FLOAT_TYPE.getDescriptor() + ")" + COJAC_FLOAT_WRAPPER_TYPE_DESCR, false); } else if (realType.equals(Type.DOUBLE_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, COJAC_DOUBLE_WRAPPER_INTERNAL_NAME, "fromDouble", "(D)" + COJAC_DOUBLE_WRAPPER_TYPE_DESCR, false); } else if (realType.equals(JWRAPPER_DOUBLE_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, COJAC_DOUBLE_WRAPPER_INTERNAL_NAME, "fromRealDoubleWrapper", "(" + JWRAPPER_DOUBLE_TYPE.getDescriptor() + ")" + COJAC_DOUBLE_WRAPPER_TYPE_DESCR, false); } else if (isPrimitiveFloatOrDoubleArray(realType)) { mv.visitTypeInsn(CHECKCAST, OBJ_TYPE.getInternalName()); mv.visitLdcInsn(realType.getDimensions()); if (realType.getElementType().equals(Type.FLOAT_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, FN_NAME, "convertPrimitiveArrayToCojac", "(" + OBJ_DESC + "I)" + OBJ_DESC, false); } else if (realType.getElementType().equals(Type.DOUBLE_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, DN_NAME, "convertPrimitiveArrayToCojac", "(" + OBJ_DESC + "I)" + OBJ_DESC, false); }//from w w w . ja va 2s.c o m mv.visitTypeInsn(CHECKCAST, afterFloatReplacement(realType).getInternalName()); } }
From source file:ch.eiafr.cojac.instrumenters.FloatProxyMethod.java
License:Apache License
private static boolean isPrimitiveFloatOrDoubleArray(Type realType) { if (realType.getSort() != Type.ARRAY) return false; Type t = realType.getElementType(); if (t.equals(Type.FLOAT_TYPE) || t.equals(Type.DOUBLE_TYPE)) return true; return false; }
From source file:ch.eiafr.cojac.instrumenters.FloatProxyMethod.java
License:Apache License
public static void convertCojacToRealType(Type realType, MethodVisitor mv) { if (realType.equals(Type.FLOAT_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, COJAC_FLOAT_WRAPPER_INTERNAL_NAME, "toFloat", "(" + COJAC_FLOAT_WRAPPER_TYPE_DESCR + ")F", false); } else if (realType.equals(JWRAPPER_FLOAT_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, COJAC_FLOAT_WRAPPER_INTERNAL_NAME, "toRealFloatWrapper", "(" + COJAC_FLOAT_WRAPPER_TYPE_DESCR + ")" + FL_DESCR, false); } else if (realType.equals(Type.DOUBLE_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, COJAC_DOUBLE_WRAPPER_INTERNAL_NAME, "toDouble", "(" + COJAC_DOUBLE_WRAPPER_TYPE_DESCR + ")D", false); } else if (realType.equals(JWRAPPER_DOUBLE_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, COJAC_DOUBLE_WRAPPER_INTERNAL_NAME, "toRealDoubleWrapper", "(" + COJAC_DOUBLE_WRAPPER_TYPE_DESCR + ")" + DL_DESCR, false); } else if (isPrimitiveFloatOrDoubleArray(realType) || isJWrapperFloatOrDoubleArray(realType)) { mv.visitTypeInsn(CHECKCAST, OBJ_TYPE.getInternalName()); mv.visitLdcInsn(realType.getDimensions()); Type eType = realType.getElementType(); if (eType.equals(Type.FLOAT_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, FN_NAME, "convertArrayToPrimitive", "(" + OBJ_DESC + "I)" + OBJ_DESC, false); } else if (eType.equals(Type.DOUBLE_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, DN_NAME, "convertArrayToPrimitive", "(" + OBJ_DESC + "I)" + OBJ_DESC, false); } else if (eType.equals(JWRAPPER_FLOAT_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, FN_NAME, "convertArrayToJWrapper", "(" + OBJ_DESC + "I)" + OBJ_DESC, false); } else if (eType.equals(JWRAPPER_DOUBLE_TYPE)) { mv.visitMethodInsn(INVOKESTATIC, DN_NAME, "convertArrayToJWrapper", "(" + OBJ_DESC + "I)" + OBJ_DESC, false); }/*from ww w.j a va 2 s . com*/ mv.visitTypeInsn(CHECKCAST, realType.getInternalName()); } }
From source file:ch.eiafr.cojac.instrumenters.InvokableMethod.java
License:Apache License
/** Float|float|Double|double [array] -> CojacWrapper */ public static Type afterFloatReplacement(Type type) { if (type.equals(Type.getType(Float.class))) return COJAC_FLOAT_WRAPPER_TYPE; if (type.equals(Type.FLOAT_TYPE)) return COJAC_FLOAT_WRAPPER_TYPE; if (type.equals(Type.getType(Double.class))) return COJAC_DOUBLE_WRAPPER_TYPE; if (type.equals(Type.DOUBLE_TYPE)) return COJAC_DOUBLE_WRAPPER_TYPE; if (type.getSort() == Type.ARRAY) { Type newType = afterFloatReplacement(type.getElementType()); if (type.equals(newType)) return type; String desc = ""; for (int i = 0; i < type.getDimensions(); i++) desc += "["; desc += newType.getDescriptor(); return Type.getType(desc); }/*from w w w. jav a2s . com*/ return type; }
From source file:cl.inria.stiq.instrumenter.BCIUtils.java
License:Open Source License
public static Type getTypeForSig(char aSig) { switch (aSig) { case 'I': return Type.INT_TYPE; case 'J': return Type.LONG_TYPE; case 'F': return Type.FLOAT_TYPE; case 'D': return Type.DOUBLE_TYPE; case 'L': return TYPE_OBJECTID; default:/*from w ww . j ava 2s .co m*/ throw new RuntimeException("Not handled: " + aSig); } }
From source file:com.android.build.gradle.internal.incremental.ByteCodeUtils.java
License:Apache License
/** * Given a *STORE opcode, it returns the type associated to the variable, or null if * not a valid opcode./*from w ww .j a va 2 s. c o m*/ */ static Type getTypeForStoreOpcode(int opcode) { switch (opcode) { case Opcodes.ISTORE: return Type.INT_TYPE; case Opcodes.LSTORE: return Type.LONG_TYPE; case Opcodes.FSTORE: return Type.FLOAT_TYPE; case Opcodes.DSTORE: return Type.DOUBLE_TYPE; case Opcodes.ASTORE: return Type.getType(Object.class); } return null; }