org.objectweb.asm.Type.getSort()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(7.4k)|赞(0)|评价(0)|浏览(119)

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

Type.getSort介绍

[英]Returns the sort of this Java type.
[中]返回这种Java类型的排序。

代码示例

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

public static boolean isPrimitive(Type type) {
  switch (type.getSort()) {
  case Type.ARRAY:
  case Type.OBJECT:
    return false;
  default:
    return true;
  }
}

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

private static Type remap(Type type) {
  switch (type.getSort()) {
  case Type.OBJECT:
  case Type.ARRAY:
    return Constants.TYPE_OBJECT;
  default:
    return type;
  }
}

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

private static Type remap(Type type) {
  switch (type.getSort()) {
  case Type.OBJECT:
  case Type.ARRAY:
    return Constants.TYPE_OBJECT;
  default:
    return type;
  }
}

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

public static boolean isArray(Type type) {
  return type.getSort() == Type.ARRAY;
}

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

public static boolean isPrimitive(Type type) {
  switch (type.getSort()) {
  case Type.ARRAY:
  case Type.OBJECT:
    return false;
  default:
    return true;
  }
}

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

public static boolean isArray(Type type) {
  return type.getSort() == Type.ARRAY;
}

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

public static int NEWARRAY(Type type) {
  switch (type.getSort()) {
  case Type.BYTE:
    return Constants.T_BYTE;
  case Type.CHAR:
    return Constants.T_CHAR;
  case Type.DOUBLE:
    return Constants.T_DOUBLE;
  case Type.FLOAT:
    return Constants.T_FLOAT;
  case Type.INT:
    return Constants.T_INT;
  case Type.LONG:
    return Constants.T_LONG;
  case Type.SHORT:
    return Constants.T_SHORT;
  case Type.BOOLEAN:
    return Constants.T_BOOLEAN;
  default:
    return -1; // error
  }
}

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

public static Type getBoxedType(Type type) {
  switch (type.getSort()) {
  case Type.CHAR:
    return Constants.TYPE_CHARACTER;
  case Type.BOOLEAN:
    return Constants.TYPE_BOOLEAN;
  case Type.DOUBLE:
    return Constants.TYPE_DOUBLE;
  case Type.FLOAT:
    return Constants.TYPE_FLOAT;
  case Type.LONG:
    return Constants.TYPE_LONG;
  case Type.INT:
    return Constants.TYPE_INTEGER;
  case Type.SHORT:
    return Constants.TYPE_SHORT;
  case Type.BYTE:
    return Constants.TYPE_BYTE;
  default:
    return type;
  }
}

代码示例来源:origin: scouter-project/scouter

public void visitInsn(int opcode) {
    if ((opcode >= IRETURN && opcode <= RETURN)) {
      Type tp = returnType;
      if (tp.getSort() == Type.ARRAY && tp.getElementType().getSort() == Type.BYTE) {
        mv.visitInsn(Opcodes.DUP);
        mv.visitVarInsn(Opcodes.ALOAD, 1);// stat
        mv.visitMethodInsn(Opcodes.INVOKESTATIC, TRACEMAIN, START_METHOD, START_SIGNATURE, false);
      }
    }
    mv.visitInsn(opcode);
  }
}

代码示例来源:origin: scouter-project/scouter

public void visitInsn(int opcode) {
    if ((opcode >= IRETURN && opcode <= RETURN)) {
      Type tp = returnType;
      if (tp.getSort() == Type.ARRAY && tp.getElementType().getSort() == Type.BYTE) {
        mv.visitInsn(Opcodes.DUP);
        mv.visitVarInsn(ALOAD, 0);
        mv.visitFieldInsn(GETFIELD, this.className, KEY_ELEMENT_FIELD, "Ljava/lang/Object;");
        mv.visitMethodInsn(Opcodes.INVOKESTATIC, TRACEMAIN, START_METHOD, START_SIGNATURE, false);
      }
    }
    mv.visitInsn(opcode);
  }
}

代码示例来源:origin: pxb1988/dex2jar

Class<?> toJavaType(Type t) throws ClassNotFoundException {
    switch (t.getSort()) {
      case Type.BOOLEAN:
        return boolean.class;
      case Type.BYTE:
        return byte.class;
      case Type.SHORT:
        return short.class;
      case Type.CHAR:
        return char.class;
      case Type.INT:
        return int.class;
      case Type.FLOAT:
        return float.class;
      case Type.LONG:
        return long.class;
      case Type.DOUBLE:
        return double.class;
      case Type.OBJECT:
        return Class.forName(t.getClassName());
      case Type.ARRAY:
        return Class.forName(t.getDescriptor());
      case Type.VOID:
        return void.class;
    }
    throw new RuntimeException();
  }
}

代码示例来源:origin: pxb1988/dex2jar

static private void box(Type arg, MethodVisitor mv) {
  switch (arg.getSort()) {
    case Type.OBJECT:
    case Type.ARRAY:

代码示例来源:origin: scouter-project/scouter

public static void main(String[] args) {
  Type type = Type.getReturnType("(Z)[I");
  System.out.println("type = " + type.getSort());
  System.out.println("dim = " + type.getDimensions());
  System.out.println("element = " + type.getElementType());
}

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

private String remapParamType(Type type) {
  String remappedName;
  String internalName;

  switch (type.getSort()) {
   case ARRAY:
    internalName = type.getInternalName();
    int count = 0;
    while (internalName.charAt(count) == '[') count++;

    remappedName = remapParamType(internalName.substring(count));
    if (remappedName != null) {
     return Type.getObjectType(internalName.substring(0, count) + remappedName).getDescriptor();
    }
    break;

   case OBJECT:
    type = mappedType(type);
    break;

   default:
    break;
  }
  return type.getDescriptor();
 }
}

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

private void addType(Type t) {
  switch (t.getSort()) {
  case Type.ARRAY:
    addType(t.getElementType());
    break;
  case Type.OBJECT:
    parseClassName(t.getClassName().replace('.', '/'));
    break;
  default:
    // Do nothing
    break;
  }
}

代码示例来源: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: cglib/cglib

private static void hash_primitive(CodeEmitter e, Type type) {
  switch (type.getSort()) {
  case Type.BOOLEAN:
    // f ? 0 : 1
    e.push(1);
    e.math(e.XOR, Type.INT_TYPE);
    break;
  case Type.FLOAT:
    // Float.floatToIntBits(f)
    e.invoke_static(Constants.TYPE_FLOAT, FLOAT_TO_INT_BITS);
    break;
  case Type.DOUBLE:
    // Double.doubleToLongBits(f), hash_code(Long.TYPE)
    e.invoke_static(Constants.TYPE_DOUBLE, DOUBLE_TO_LONG_BITS);
    // fall through
  case Type.LONG:
    hash_long(e);
  }
}

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

/**
 * Forces a return of a default value, depending on the method's return type
 *
 * @param type The method's return type
 */
public void pushDefaultReturnValueToStack(Type type) {
 if (type.equals(Type.BOOLEAN_TYPE)) {
  push(false);
 } else if (type.equals(Type.INT_TYPE) || type.equals(Type.SHORT_TYPE) || type.equals(Type.BYTE_TYPE) || type.equals(Type.CHAR_TYPE)) {
  push(0);
 } else if (type.equals(Type.LONG_TYPE)) {
  push(0L);
 } else if (type.equals(Type.FLOAT_TYPE)) {
  push(0f);
 } else if (type.equals(Type.DOUBLE_TYPE)) {
  push(0d);
 } else if (type.getSort() == ARRAY || type.getSort() == OBJECT) {
  loadNull();
 }
}

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

/**
 * Pushes a zero onto the stack if the argument is a primitive class, or a null otherwise.
 */
public void zero_or_null(Type type) {
  if (TypeUtils.isPrimitive(type)) {
    switch (type.getSort()) {
    case Type.DOUBLE:
      push(0d);
      break;
    case Type.LONG:
      push(0L);
      break;
    case Type.FLOAT:
      push(0f);
      break;
    case Type.VOID:
      aconst_null();
    default:
      push(0);
    }
  } else {
    aconst_null();
  }
}

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

private static Type getBoxedType(final Type type) {
  switch (type.getSort()) {
   case Type.BYTE:
    return Type.getObjectType("java/lang/Byte");
   case Type.BOOLEAN:
    return Type.getObjectType("java/lang/Boolean");
   case Type.SHORT:
    return Type.getObjectType("java/lang/Short");
   case Type.CHAR:
    return Type.getObjectType("java/lang/Character");
   case Type.INT:
    return Type.getObjectType("java/lang/Integer");
   case Type.FLOAT:
    return Type.getObjectType("java/lang/Float");
   case Type.LONG:
    return Type.getObjectType("java/lang/Long");
   case Type.DOUBLE:
    return Type.getObjectType("java/lang/Double");
   default:
    // no boxing required
    return type;
  }
 }
}

相关文章