From 3de1203cffba29ee1480e9de8469872ed03715b8 Mon Sep 17 00:00:00 2001 From: never Date: Mon, 30 Aug 2010 17:27:35 -0700 Subject: [PATCH] 6969586: OptimizeStringConcat: SIGSEGV in LoadNode::Value() Reviewed-by: kvn --- src/share/vm/opto/memnode.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/share/vm/opto/memnode.cpp b/src/share/vm/opto/memnode.cpp index 9b6e26f98..9297e4e22 100644 --- a/src/share/vm/opto/memnode.cpp +++ b/src/share/vm/opto/memnode.cpp @@ -1547,8 +1547,8 @@ const Type *LoadNode::Value( PhaseTransform *phase ) const { 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) { -- GitLab