1.1 --- a/src/share/vm/opto/memnode.cpp Wed Sep 19 16:50:26 2012 -0700 1.2 +++ b/src/share/vm/opto/memnode.cpp Thu Sep 20 16:49:17 2012 +0200 1.3 @@ -2552,14 +2552,38 @@ 1.4 } 1.5 1.6 //============================================================================= 1.7 -LoadStoreNode::LoadStoreNode( Node *c, Node *mem, Node *adr, Node *val, Node *ex ) : Node(5) { 1.8 +//----------------------------------LoadStoreNode------------------------------ 1.9 +LoadStoreNode::LoadStoreNode( Node *c, Node *mem, Node *adr, Node *val, const TypePtr* at, const Type* rt, uint required ) 1.10 + : Node(required), 1.11 + _type(rt), 1.12 + _adr_type(at) 1.13 +{ 1.14 init_req(MemNode::Control, c ); 1.15 init_req(MemNode::Memory , mem); 1.16 init_req(MemNode::Address, adr); 1.17 init_req(MemNode::ValueIn, val); 1.18 - init_req( ExpectedIn, ex ); 1.19 init_class_id(Class_LoadStore); 1.20 - 1.21 +} 1.22 + 1.23 +uint LoadStoreNode::ideal_reg() const { 1.24 + return _type->ideal_reg(); 1.25 +} 1.26 + 1.27 +bool LoadStoreNode::result_not_used() const { 1.28 + for( DUIterator_Fast imax, i = fast_outs(imax); i < imax; i++ ) { 1.29 + Node *x = fast_out(i); 1.30 + if (x->Opcode() == Op_SCMemProj) continue; 1.31 + return false; 1.32 + } 1.33 + return true; 1.34 +} 1.35 + 1.36 +uint LoadStoreNode::size_of() const { return sizeof(*this); } 1.37 + 1.38 +//============================================================================= 1.39 +//----------------------------------LoadStoreConditionalNode-------------------- 1.40 +LoadStoreConditionalNode::LoadStoreConditionalNode( Node *c, Node *mem, Node *adr, Node *val, Node *ex ) : LoadStoreNode(c, mem, adr, val, NULL, TypeInt::BOOL, 5) { 1.41 + init_req(ExpectedIn, ex ); 1.42 } 1.43 1.44 //=============================================================================