6969586: OptimizeStringConcat: SIGSEGV in LoadNode::Value()
authornever
Mon Aug 30 17:27:35 2010 -0700 (2 years ago)
changeset 19640652d205acda
parent 1963be2b508a60cb
child 196504323991c395
6969586: OptimizeStringConcat: SIGSEGV in LoadNode::Value()
Reviewed-by: kvn
src/share/vm/opto/memnode.cpp
--- a/src/share/vm/opto/memnode.cpp Fri Oct 08 11:07:14 2010 -0400
+++ b/src/share/vm/opto/memnode.cpp Mon Aug 30 17:27:35 2010 -0700
@@ -1547,8 +1547,8 @@ const Type *LoadNode::Value( PhaseTransf
adr->is_AddP() && off != Type::OffsetBot) {
// For constant Strings treat the fields as compile time constants.
Node* base = adr->in(AddPNode::Base);
- if (base->Opcode() == Op_ConP) {
- const TypeOopPtr* t = phase->type(base)->isa_oopptr();
+ const TypeOopPtr* t = phase->type(base)->isa_oopptr();
+ if (t != NULL && t->singleton()) {
ciObject* string = t->const_oop();
ciConstant constant = string->as_instance()->field_value_by_offset(off);
if (constant.basic_type() == T_INT) {