mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-23 20:44:41 +02:00
6920346: G1: "must avoid base_memory and AliasIdxTop"
Reviewed-by: kvn
This commit is contained in:
parent
6e4af7581c
commit
0b2600abcd
1 changed files with 14 additions and 1 deletions
|
@ -583,9 +583,22 @@ public:
|
|||
// Preceeding equivalent StoreCMs may be eliminated.
|
||||
class StoreCMNode : public StoreNode {
|
||||
private:
|
||||
virtual uint hash() const { return StoreNode::hash() + _oop_alias_idx; }
|
||||
virtual uint cmp( const Node &n ) const {
|
||||
return _oop_alias_idx == ((StoreCMNode&)n)._oop_alias_idx
|
||||
&& StoreNode::cmp(n);
|
||||
}
|
||||
virtual uint size_of() const { return sizeof(*this); }
|
||||
int _oop_alias_idx; // The alias_idx of OopStore
|
||||
|
||||
public:
|
||||
StoreCMNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val, Node *oop_store, int oop_alias_idx ) : StoreNode(c,mem,adr,at,val,oop_store), _oop_alias_idx(oop_alias_idx) {}
|
||||
StoreCMNode( Node *c, Node *mem, Node *adr, const TypePtr* at, Node *val, Node *oop_store, int oop_alias_idx ) :
|
||||
StoreNode(c,mem,adr,at,val,oop_store),
|
||||
_oop_alias_idx(oop_alias_idx) {
|
||||
assert(_oop_alias_idx >= Compile::AliasIdxRaw ||
|
||||
_oop_alias_idx == Compile::AliasIdxBot && Compile::current()->AliasLevel() == 0,
|
||||
"bad oop alias idx");
|
||||
}
|
||||
virtual int Opcode() const;
|
||||
virtual Node *Identity( PhaseTransform *phase );
|
||||
virtual Node *Ideal(PhaseGVN *phase, bool can_reshape);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue