482 } else if (tag.is_float()) { |
482 } else if (tag.is_float()) { |
483 return ciConstant((jfloat)cpool->float_at(index)); |
483 return ciConstant((jfloat)cpool->float_at(index)); |
484 } else if (tag.is_double()) { |
484 } else if (tag.is_double()) { |
485 return ciConstant((jdouble)cpool->double_at(index)); |
485 return ciConstant((jdouble)cpool->double_at(index)); |
486 } else if (tag.is_string() || tag.is_unresolved_string()) { |
486 } else if (tag.is_string() || tag.is_unresolved_string()) { |
487 oop string = cpool->string_at(index, THREAD); |
487 oop string = NULL; |
488 if (HAS_PENDING_EXCEPTION) { |
488 if (cpool->is_pseudo_string_at(index)) { |
489 CLEAR_PENDING_EXCEPTION; |
489 string = cpool->pseudo_string_at(index); |
490 record_out_of_memory_failure(); |
490 } else { |
491 return ciConstant(); |
491 string = cpool->string_at(index, THREAD); |
|
492 if (HAS_PENDING_EXCEPTION) { |
|
493 CLEAR_PENDING_EXCEPTION; |
|
494 record_out_of_memory_failure(); |
|
495 return ciConstant(); |
|
496 } |
492 } |
497 } |
493 ciObject* constant = get_object(string); |
498 ciObject* constant = get_object(string); |
494 assert (constant->is_instance(), "must be an instance, or not? "); |
499 assert (constant->is_instance(), "must be an instance, or not? "); |
495 return ciConstant(T_OBJECT, constant); |
500 return ciConstant(T_OBJECT, constant); |
496 } else if (tag.is_klass() || tag.is_unresolved_klass()) { |
501 } else if (tag.is_klass() || tag.is_unresolved_klass()) { |