Mercurial > hg > graal-jvmci-8
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 } |