682 }
683
684 inline bool is_signed_subword_type(BasicType t) {
685 return (t == T_BYTE || t == T_SHORT);
686 }
687
688 // Convert a char from a classfile signature to a BasicType
689 inline BasicType char2type(char c) {
690 switch( c ) {
691 case 'B': return T_BYTE;
692 case 'C': return T_CHAR;
693 case 'D': return T_DOUBLE;
694 case 'F': return T_FLOAT;
695 case 'I': return T_INT;
696 case 'J': return T_LONG;
697 case 'S': return T_SHORT;
698 case 'Z': return T_BOOLEAN;
699 case 'V': return T_VOID;
700 case 'L': return T_OBJECT;
701 case '[': return T_ARRAY;
702 case 'Q':return T_VALUETYPE;
703 }
704 return T_ILLEGAL;
705 }
706
707 extern char type2char_tab[T_CONFLICT+1]; // Map a BasicType to a jchar
708 inline char type2char(BasicType t) { return (uint)t < T_CONFLICT+1 ? type2char_tab[t] : 0; }
709 extern int type2size[T_CONFLICT+1]; // Map BasicType to result stack elements
710 extern const char* type2name_tab[T_CONFLICT+1]; // Map a BasicType to a jchar
711 inline const char* type2name(BasicType t) { return (uint)t < T_CONFLICT+1 ? type2name_tab[t] : NULL; }
712 extern BasicType name2type(const char* name);
713
714 // Auxiliary math routines
715 // least common multiple
716 extern size_t lcm(size_t a, size_t b);
717
718
719 // NOTE: replicated in SA in vm/agent/sun/jvm/hotspot/runtime/BasicType.java
720 enum BasicTypeSize {
721 T_BOOLEAN_size = 1,
722 T_CHAR_size = 1,
|
682 }
683
684 inline bool is_signed_subword_type(BasicType t) {
685 return (t == T_BYTE || t == T_SHORT);
686 }
687
688 // Convert a char from a classfile signature to a BasicType
689 inline BasicType char2type(char c) {
690 switch( c ) {
691 case 'B': return T_BYTE;
692 case 'C': return T_CHAR;
693 case 'D': return T_DOUBLE;
694 case 'F': return T_FLOAT;
695 case 'I': return T_INT;
696 case 'J': return T_LONG;
697 case 'S': return T_SHORT;
698 case 'Z': return T_BOOLEAN;
699 case 'V': return T_VOID;
700 case 'L': return T_OBJECT;
701 case '[': return T_ARRAY;
702 case 'Q': return T_VALUETYPE;
703 }
704 return T_ILLEGAL;
705 }
706
707 extern char type2char_tab[T_CONFLICT+1]; // Map a BasicType to a jchar
708 inline char type2char(BasicType t) { return (uint)t < T_CONFLICT+1 ? type2char_tab[t] : 0; }
709 extern int type2size[T_CONFLICT+1]; // Map BasicType to result stack elements
710 extern const char* type2name_tab[T_CONFLICT+1]; // Map a BasicType to a jchar
711 inline const char* type2name(BasicType t) { return (uint)t < T_CONFLICT+1 ? type2name_tab[t] : NULL; }
712 extern BasicType name2type(const char* name);
713
714 // Auxiliary math routines
715 // least common multiple
716 extern size_t lcm(size_t a, size_t b);
717
718
719 // NOTE: replicated in SA in vm/agent/sun/jvm/hotspot/runtime/BasicType.java
720 enum BasicTypeSize {
721 T_BOOLEAN_size = 1,
722 T_CHAR_size = 1,
|