comparison src/share/vm/opto/macro.cpp @ 20627:e7b3d177adda

8057622: java/util/stream/test/org/openjdk/tests/java/util/stream/InfiniteStreamWithLimitOpTest: SEGV inside compiled code (sparc) Summary: In Parse::array_store_check(), add control edge FROM IfTrue branch of runtime type check of the destination array TO loading _element_klass from destination array. Reviewed-by: kvn, roland, anoll Contributed-by: Zoltan Majo <zoltan.majo@oracle.com>
author zmajo
date Mon, 10 Nov 2014 17:14:59 +0100
parents f8afcfbdbf1c
children d3f3f7677537
comparison
equal deleted inserted replaced
20626:1a2069ede139 20627:e7b3d177adda
2192 2192
2193 // Special-case a fresh allocation to avoid building nodes: 2193 // Special-case a fresh allocation to avoid building nodes:
2194 Node* klass_node = AllocateNode::Ideal_klass(obj, &_igvn); 2194 Node* klass_node = AllocateNode::Ideal_klass(obj, &_igvn);
2195 if (klass_node == NULL) { 2195 if (klass_node == NULL) {
2196 Node* k_adr = basic_plus_adr(obj, oopDesc::klass_offset_in_bytes()); 2196 Node* k_adr = basic_plus_adr(obj, oopDesc::klass_offset_in_bytes());
2197 klass_node = transform_later( LoadKlassNode::make(_igvn, mem, k_adr, _igvn.type(k_adr)->is_ptr()) ); 2197 klass_node = transform_later(LoadKlassNode::make(_igvn, NULL, mem, k_adr, _igvn.type(k_adr)->is_ptr()));
2198 #ifdef _LP64 2198 #ifdef _LP64
2199 if (UseCompressedClassPointers && klass_node->is_DecodeNKlass()) { 2199 if (UseCompressedClassPointers && klass_node->is_DecodeNKlass()) {
2200 assert(klass_node->in(1)->Opcode() == Op_LoadNKlass, "sanity"); 2200 assert(klass_node->in(1)->Opcode() == Op_LoadNKlass, "sanity");
2201 klass_node->in(1)->init_req(0, ctrl); 2201 klass_node->in(1)->init_req(0, ctrl);
2202 } else 2202 } else