Mercurial > hg > truffle
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 |