207 bool is_check() const { return (_u._data & TypeQuery) == TypeQuery; } |
207 bool is_check() const { return (_u._data & TypeQuery) == TypeQuery; } |
208 |
208 |
209 bool is_x_array(char sig) const { |
209 bool is_x_array(char sig) const { |
210 return is_null() || (is_array() && (name()->char_at(1) == sig)); |
210 return is_null() || (is_array() && (name()->char_at(1) == sig)); |
211 } |
211 } |
212 bool is_int_array() const { return is_x_array('I'); } |
212 bool is_int_array() const { return is_x_array(JVM_SIGNATURE_INT); } |
213 bool is_byte_array() const { return is_x_array('B'); } |
213 bool is_byte_array() const { return is_x_array(JVM_SIGNATURE_BYTE); } |
214 bool is_bool_array() const { return is_x_array('Z'); } |
214 bool is_bool_array() const { return is_x_array(JVM_SIGNATURE_BOOLEAN); } |
215 bool is_char_array() const { return is_x_array('C'); } |
215 bool is_char_array() const { return is_x_array(JVM_SIGNATURE_CHAR); } |
216 bool is_short_array() const { return is_x_array('S'); } |
216 bool is_short_array() const { return is_x_array(JVM_SIGNATURE_SHORT); } |
217 bool is_long_array() const { return is_x_array('J'); } |
217 bool is_long_array() const { return is_x_array(JVM_SIGNATURE_LONG); } |
218 bool is_float_array() const { return is_x_array('F'); } |
218 bool is_float_array() const { return is_x_array(JVM_SIGNATURE_FLOAT); } |
219 bool is_double_array() const { return is_x_array('D'); } |
219 bool is_double_array() const { return is_x_array(JVM_SIGNATURE_DOUBLE); } |
220 bool is_object_array() const { return is_x_array('L'); } |
220 bool is_object_array() const { return is_x_array(JVM_SIGNATURE_CLASS); } |
221 bool is_array_array() const { return is_x_array('['); } |
221 bool is_array_array() const { return is_x_array(JVM_SIGNATURE_ARRAY); } |
222 bool is_reference_array() const |
222 bool is_reference_array() const |
223 { return is_object_array() || is_array_array(); } |
223 { return is_object_array() || is_array_array(); } |
224 bool is_object() const |
224 bool is_object() const |
225 { return (is_reference() && !is_null() && name()->utf8_length() >= 1 && |
225 { return (is_reference() && !is_null() && name()->utf8_length() >= 1 && |
226 name()->char_at(0) != '['); } |
226 name()->char_at(0) != JVM_SIGNATURE_ARRAY); } |
227 bool is_array() const |
227 bool is_array() const |
228 { return (is_reference() && !is_null() && name()->utf8_length() >= 2 && |
228 { return (is_reference() && !is_null() && name()->utf8_length() >= 2 && |
229 name()->char_at(0) == '['); } |
229 name()->char_at(0) == JVM_SIGNATURE_ARRAY); } |
230 bool is_uninitialized() const |
230 bool is_uninitialized() const |
231 { return ((_u._data & Uninitialized) == Uninitialized); } |
231 { return ((_u._data & Uninitialized) == Uninitialized); } |
232 bool is_uninitialized_this() const |
232 bool is_uninitialized_this() const |
233 { return is_uninitialized() && bci() == BciForThis; } |
233 { return is_uninitialized() && bci() == BciForThis; } |
234 |
234 |
320 VerificationType get_component(ClassVerifier* context, TRAPS) const; |
320 VerificationType get_component(ClassVerifier* context, TRAPS) const; |
321 |
321 |
322 int dimensions() const { |
322 int dimensions() const { |
323 assert(is_array(), "Must be an array"); |
323 assert(is_array(), "Must be an array"); |
324 int index = 0; |
324 int index = 0; |
325 while (name()->char_at(index) == '[') index++; |
325 while (name()->char_at(index) == JVM_SIGNATURE_ARRAY) index++; |
326 return index; |
326 return index; |
327 } |
327 } |
328 |
328 |
329 void print_on(outputStream* st) const; |
329 void print_on(outputStream* st) const; |
330 |
330 |