120 |
120 |
121 VerificationType VerificationType::get_component(ClassVerifier *context, TRAPS) const { |
121 VerificationType VerificationType::get_component(ClassVerifier *context, TRAPS) const { |
122 assert(is_array() && name()->utf8_length() >= 2, "Must be a valid array"); |
122 assert(is_array() && name()->utf8_length() >= 2, "Must be a valid array"); |
123 Symbol* component; |
123 Symbol* component; |
124 switch (name()->char_at(1)) { |
124 switch (name()->char_at(1)) { |
125 case 'Z': return VerificationType(Boolean); |
125 case JVM_SIGNATURE_BOOLEAN: return VerificationType(Boolean); |
126 case 'B': return VerificationType(Byte); |
126 case JVM_SIGNATURE_BYTE: return VerificationType(Byte); |
127 case 'C': return VerificationType(Char); |
127 case JVM_SIGNATURE_CHAR: return VerificationType(Char); |
128 case 'S': return VerificationType(Short); |
128 case JVM_SIGNATURE_SHORT: return VerificationType(Short); |
129 case 'I': return VerificationType(Integer); |
129 case JVM_SIGNATURE_INT: return VerificationType(Integer); |
130 case 'J': return VerificationType(Long); |
130 case JVM_SIGNATURE_LONG: return VerificationType(Long); |
131 case 'F': return VerificationType(Float); |
131 case JVM_SIGNATURE_FLOAT: return VerificationType(Float); |
132 case 'D': return VerificationType(Double); |
132 case JVM_SIGNATURE_DOUBLE: return VerificationType(Double); |
133 case '[': |
133 case JVM_SIGNATURE_ARRAY: |
134 component = context->create_temporary_symbol( |
134 component = context->create_temporary_symbol( |
135 name(), 1, name()->utf8_length()); |
135 name(), 1, name()->utf8_length()); |
136 return VerificationType::reference_type(component); |
136 return VerificationType::reference_type(component); |
137 case 'L': |
137 case JVM_SIGNATURE_CLASS: |
138 component = context->create_temporary_symbol( |
138 component = context->create_temporary_symbol( |
139 name(), 2, name()->utf8_length() - 1); |
139 name(), 2, name()->utf8_length() - 1); |
140 return VerificationType::reference_type(component); |
140 return VerificationType::reference_type(component); |
141 default: |
141 default: |
142 // Met an invalid type signature, e.g. [X |
142 // Met an invalid type signature, e.g. [X |