Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/stringopts.cpp @ 24094:9b69cec6d01b
Merge with jdk8u121-b13
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Mon, 06 Feb 2017 17:18:57 +0100 |
parents | f13e777eb255 173a1f83c930 |
children |
comparison
equal
deleted
inserted
replaced
23997:9a740aa0d87b | 24094:9b69cec6d01b |
---|---|
1639 kit.store_String_offset(kit.control(), result, __ intcon(0)); | 1639 kit.store_String_offset(kit.control(), result, __ intcon(0)); |
1640 kit.store_String_length(kit.control(), result, length); | 1640 kit.store_String_length(kit.control(), result, length); |
1641 } | 1641 } |
1642 kit.store_String_value(kit.control(), result, char_array); | 1642 kit.store_String_value(kit.control(), result, char_array); |
1643 | 1643 |
1644 // Do not let stores that initialize this object be reordered with | 1644 // The value field is final. Emit a barrier here to ensure that the effect |
1645 // a subsequent store that would make this object accessible by | 1645 // of the initialization is committed to memory before any code publishes |
1646 // other threads. | 1646 // a reference to the newly constructed object (see Parse::do_exits()). |
1647 // Record what AllocateNode this StoreStore protects so that | 1647 assert(AllocateNode::Ideal_allocation(result, _gvn) != NULL, "should be newly allocated"); |
1648 // escape analysis can go from the MemBarStoreStoreNode to the | 1648 kit.insert_mem_bar(Op_MemBarRelease, result); |
1649 // AllocateNode and eliminate the MemBarStoreStoreNode if possible | |
1650 // based on the escape status of the AllocateNode. | |
1651 AllocateNode* alloc = AllocateNode::Ideal_allocation(result, _gvn); | |
1652 assert(alloc != NULL, "should be newly allocated"); | |
1653 kit.insert_mem_bar(Op_MemBarStoreStore, alloc->proj_out(AllocateNode::RawAddress)); | |
1654 } else { | 1649 } else { |
1655 result = C->top(); | 1650 result = C->top(); |
1656 } | 1651 } |
1657 // hook up the outgoing control and result | 1652 // hook up the outgoing control and result |
1658 kit.replace_call(sc->end(), result); | 1653 kit.replace_call(sc->end(), result); |