comparison src/share/vm/opto/memnode.cpp @ 605:98cb887364d3

6810672: Comment typos Summary: I have collected some typos I have found while looking at the code. Reviewed-by: kvn, never
author twisti
date Fri, 27 Feb 2009 13:27:09 -0800
parents 5d75ab5f6698
children 337400e7a5dd
comparison
equal deleted inserted replaced
604:ec59443af135 605:98cb887364d3
98 Node *prev = NULL; 98 Node *prev = NULL;
99 Node *result = mchain; 99 Node *result = mchain;
100 while (prev != result) { 100 while (prev != result) {
101 prev = result; 101 prev = result;
102 if (result == start_mem) 102 if (result == start_mem)
103 break; // hit one of our sentinals 103 break; // hit one of our sentinels
104 // skip over a call which does not affect this memory slice 104 // skip over a call which does not affect this memory slice
105 if (result->is_Proj() && result->as_Proj()->_con == TypeFunc::Memory) { 105 if (result->is_Proj() && result->as_Proj()->_con == TypeFunc::Memory) {
106 Node *proj_in = result->in(0); 106 Node *proj_in = result->in(0);
107 if (proj_in->is_Allocate() && proj_in->_idx == instance_id) { 107 if (proj_in->is_Allocate() && proj_in->_idx == instance_id) {
108 break; // hit one of our sentinals 108 break; // hit one of our sentinels
109 } else if (proj_in->is_Call()) { 109 } else if (proj_in->is_Call()) {
110 CallNode *call = proj_in->as_Call(); 110 CallNode *call = proj_in->as_Call();
111 if (!call->may_modify(t_adr, phase)) { 111 if (!call->may_modify(t_adr, phase)) {
112 result = call->in(TypeFunc::Memory); 112 result = call->in(TypeFunc::Memory);
113 } 113 }
196 tinst->offset() == Type::OffsetBot) ) { 196 tinst->offset() == Type::OffsetBot) ) {
197 // compress paths and change unreachable cycles to TOP 197 // compress paths and change unreachable cycles to TOP
198 // If not, we can update the input infinitely along a MergeMem cycle 198 // If not, we can update the input infinitely along a MergeMem cycle
199 // Equivalent code in PhiNode::Ideal 199 // Equivalent code in PhiNode::Ideal
200 Node* m = phase->transform(mmem); 200 Node* m = phase->transform(mmem);
201 // If tranformed to a MergeMem, get the desired slice 201 // If transformed to a MergeMem, get the desired slice
202 // Otherwise the returned node represents memory for every slice 202 // Otherwise the returned node represents memory for every slice
203 mem = (m->is_MergeMem())? m->as_MergeMem()->memory_at(alias_idx) : m; 203 mem = (m->is_MergeMem())? m->as_MergeMem()->memory_at(alias_idx) : m;
204 // Update input if it is progress over what we have now 204 // Update input if it is progress over what we have now
205 } 205 }
206 return mem; 206 return mem;
968 // usually runs first, producing the singleton type of the Con.) 968 // usually runs first, producing the singleton type of the Con.)
969 return value; 969 return value;
970 } 970 }
971 971
972 // Search for an existing data phi which was generated before for the same 972 // Search for an existing data phi which was generated before for the same
973 // instance's field to avoid infinite genertion of phis in a loop. 973 // instance's field to avoid infinite generation of phis in a loop.
974 Node *region = mem->in(0); 974 Node *region = mem->in(0);
975 if (is_instance_field_load_with_local_phi(region)) { 975 if (is_instance_field_load_with_local_phi(region)) {
976 const TypePtr *addr_t = in(MemNode::Address)->bottom_type()->isa_ptr(); 976 const TypePtr *addr_t = in(MemNode::Address)->bottom_type()->isa_ptr();
977 int this_index = phase->C->get_alias_index(addr_t); 977 int this_index = phase->C->get_alias_index(addr_t);
978 int this_offset = addr_t->offset(); 978 int this_offset = addr_t->offset();
1252 // Make sure that the type array is big enough for 1252 // Make sure that the type array is big enough for
1253 // our new node, even though we may throw the node away. 1253 // our new node, even though we may throw the node away.
1254 // (This tweaking with igvn only works because x is a new node.) 1254 // (This tweaking with igvn only works because x is a new node.)
1255 igvn->set_type(x, t); 1255 igvn->set_type(x, t);
1256 // If x is a TypeNode, capture any more-precise type permanently into Node 1256 // If x is a TypeNode, capture any more-precise type permanently into Node
1257 // othewise it will be not updated during igvn->transform since 1257 // otherwise it will be not updated during igvn->transform since
1258 // igvn->type(x) is set to x->Value() already. 1258 // igvn->type(x) is set to x->Value() already.
1259 x->raise_bottom_type(t); 1259 x->raise_bottom_type(t);
1260 Node *y = x->Identity(igvn); 1260 Node *y = x->Identity(igvn);
1261 if( y != x ) { 1261 if( y != x ) {
1262 wins++; 1262 wins++;
2589 // may also be created at that point to represent any required zeroing. 2589 // may also be created at that point to represent any required zeroing.
2590 // The InitializeNode is then marked 'complete', prohibiting further 2590 // The InitializeNode is then marked 'complete', prohibiting further
2591 // capturing of nearby memory operations. 2591 // capturing of nearby memory operations.
2592 // 2592 //
2593 // During macro-expansion, all captured initializations which store 2593 // During macro-expansion, all captured initializations which store
2594 // constant values of 32 bits or smaller are coalesced (if advantagous) 2594 // constant values of 32 bits or smaller are coalesced (if advantageous)
2595 // into larger 'tiles' 32 or 64 bits. This allows an object to be 2595 // into larger 'tiles' 32 or 64 bits. This allows an object to be
2596 // initialized in fewer memory operations. Memory words which are 2596 // initialized in fewer memory operations. Memory words which are
2597 // covered by neither tiles nor non-constant stores are pre-zeroed 2597 // covered by neither tiles nor non-constant stores are pre-zeroed
2598 // by explicit stores of zero. (The code shape happens to do all 2598 // by explicit stores of zero. (The code shape happens to do all
2599 // zeroing first, then all other stores, with both sequences occurring 2599 // zeroing first, then all other stores, with both sequences occurring
3676 new_mem = (new_base == this || new_base == empty_mem)? empty_mem : new_base; 3676 new_mem = (new_base == this || new_base == empty_mem)? empty_mem : new_base;
3677 } 3677 }
3678 else if (old_mmem != NULL) { 3678 else if (old_mmem != NULL) {
3679 new_mem = old_mmem->memory_at(i); 3679 new_mem = old_mmem->memory_at(i);
3680 } 3680 }
3681 // else preceeding memory was not a MergeMem 3681 // else preceding memory was not a MergeMem
3682 3682
3683 // replace equivalent phis (unfortunately, they do not GVN together) 3683 // replace equivalent phis (unfortunately, they do not GVN together)
3684 if (new_mem != NULL && new_mem != new_base && 3684 if (new_mem != NULL && new_mem != new_base &&
3685 new_mem->req() == phi_len && new_mem->in(0) == phi_reg) { 3685 new_mem->req() == phi_len && new_mem->in(0) == phi_reg) {
3686 if (new_mem->is_Phi()) { 3686 if (new_mem->is_Phi()) {