comparison src/share/vm/utilities/constantTag.cpp @ 1602:136b78722a08

6939203: JSR 292 needs method handle constants Summary: Add new CP types CONSTANT_MethodHandle, CONSTANT_MethodType; extend 'ldc' bytecode. Reviewed-by: twisti, never
author jrose
date Wed, 09 Jun 2010 18:50:45 -0700
parents c18cbe5936b8
children 083fde3b838e
comparison
equal deleted inserted replaced
1585:49fac4acd688 1602:136b78722a08
26 # include "incls/_constantTag.cpp.incl" 26 # include "incls/_constantTag.cpp.incl"
27 27
28 #ifndef PRODUCT 28 #ifndef PRODUCT
29 29
30 void constantTag::print_on(outputStream* st) const { 30 void constantTag::print_on(outputStream* st) const {
31 st->print(internal_name());
32 }
33
34 #endif // PRODUCT
35
36 BasicType constantTag::basic_type() const {
31 switch (_tag) { 37 switch (_tag) {
38 case JVM_CONSTANT_Integer :
39 return T_INT;
40 case JVM_CONSTANT_Float :
41 return T_FLOAT;
42 case JVM_CONSTANT_Long :
43 return T_LONG;
44 case JVM_CONSTANT_Double :
45 return T_DOUBLE;
46
32 case JVM_CONSTANT_Class : 47 case JVM_CONSTANT_Class :
33 st->print("Class");
34 break;
35 case JVM_CONSTANT_Fieldref :
36 st->print("Field");
37 break;
38 case JVM_CONSTANT_Methodref :
39 st->print("Method");
40 break;
41 case JVM_CONSTANT_InterfaceMethodref :
42 st->print("InterfaceMethod");
43 break;
44 case JVM_CONSTANT_String : 48 case JVM_CONSTANT_String :
45 st->print("String");
46 break;
47 case JVM_CONSTANT_Integer :
48 st->print("Integer");
49 break;
50 case JVM_CONSTANT_Float :
51 st->print("Float");
52 break;
53 case JVM_CONSTANT_Long :
54 st->print("Long");
55 break;
56 case JVM_CONSTANT_Double :
57 st->print("Double");
58 break;
59 case JVM_CONSTANT_NameAndType :
60 st->print("NameAndType");
61 break;
62 case JVM_CONSTANT_Utf8 :
63 st->print("Utf8");
64 break;
65 case JVM_CONSTANT_UnresolvedClass : 49 case JVM_CONSTANT_UnresolvedClass :
66 st->print("Unresolved class"); 50 case JVM_CONSTANT_UnresolvedClassInError :
67 break;
68 case JVM_CONSTANT_ClassIndex : 51 case JVM_CONSTANT_ClassIndex :
69 st->print("Unresolved class index");
70 break;
71 case JVM_CONSTANT_UnresolvedString : 52 case JVM_CONSTANT_UnresolvedString :
72 st->print("Unresolved string");
73 break;
74 case JVM_CONSTANT_StringIndex : 53 case JVM_CONSTANT_StringIndex :
75 st->print("Unresolved string index"); 54 case JVM_CONSTANT_MethodHandle :
76 break; 55 case JVM_CONSTANT_MethodType :
56 case JVM_CONSTANT_Object :
57 return T_OBJECT;
77 default: 58 default:
78 ShouldNotReachHere(); 59 ShouldNotReachHere();
79 break; 60 return T_ILLEGAL;
80 } 61 }
81 } 62 }
82 63
83 #endif // PRODUCT 64
65
66 const char* constantTag::internal_name() const {
67 switch (_tag) {
68 case JVM_CONSTANT_Invalid :
69 return "Invalid index";
70 case JVM_CONSTANT_Class :
71 return "Class";
72 case JVM_CONSTANT_Fieldref :
73 return "Field";
74 case JVM_CONSTANT_Methodref :
75 return "Method";
76 case JVM_CONSTANT_InterfaceMethodref :
77 return "InterfaceMethod";
78 case JVM_CONSTANT_String :
79 return "String";
80 case JVM_CONSTANT_Integer :
81 return "Integer";
82 case JVM_CONSTANT_Float :
83 return "Float";
84 case JVM_CONSTANT_Long :
85 return "Long";
86 case JVM_CONSTANT_Double :
87 return "Double";
88 case JVM_CONSTANT_NameAndType :
89 return "NameAndType";
90 case JVM_CONSTANT_MethodHandle :
91 return "MethodHandle";
92 case JVM_CONSTANT_MethodType :
93 return "MethodType";
94 case JVM_CONSTANT_Object :
95 return "Object";
96 case JVM_CONSTANT_Utf8 :
97 return "Utf8";
98 case JVM_CONSTANT_UnresolvedClass :
99 return "Unresolved Class";
100 case JVM_CONSTANT_UnresolvedClassInError :
101 return "Unresolved Class Error";
102 case JVM_CONSTANT_ClassIndex :
103 return "Unresolved Class Index";
104 case JVM_CONSTANT_UnresolvedString :
105 return "Unresolved String";
106 case JVM_CONSTANT_StringIndex :
107 return "Unresolved String Index";
108 default:
109 ShouldNotReachHere();
110 return "Illegal";
111 }
112 }