src/share/vm/c1/c1_ValueMap.hpp

changeset 3835
4d8787136e08
parent 3592
701a83c86f28
child 3969
1d7922586cf6
equal deleted inserted replaced
3834:8f6ce6f1049b 3835:4d8787136e08
139 virtual void kill_field(ciField* field) = 0; 139 virtual void kill_field(ciField* field) = 0;
140 virtual void kill_array(ValueType* type) = 0; 140 virtual void kill_array(ValueType* type) = 0;
141 141
142 // visitor functions 142 // visitor functions
143 void do_StoreField (StoreField* x) { 143 void do_StoreField (StoreField* x) {
144 if (x->is_init_point()) { 144 if (x->is_init_point() || // putstatic is an initialization point so treat it as a wide kill
145 // putstatic is an initialization point so treat it as a wide kill 145 // This is actually too strict and the JMM doesn't require
146 // this in all cases (e.g. load a; volatile store b; load a)
147 // but possible future optimizations might require this.
148 x->field()->is_volatile()) {
146 kill_memory(); 149 kill_memory();
147 } else { 150 } else {
148 kill_field(x->field()); 151 kill_field(x->field());
149 } 152 }
150 } 153 }
158 161
159 void do_Phi (Phi* x) { /* nothing to do */ } 162 void do_Phi (Phi* x) { /* nothing to do */ }
160 void do_Local (Local* x) { /* nothing to do */ } 163 void do_Local (Local* x) { /* nothing to do */ }
161 void do_Constant (Constant* x) { /* nothing to do */ } 164 void do_Constant (Constant* x) { /* nothing to do */ }
162 void do_LoadField (LoadField* x) { 165 void do_LoadField (LoadField* x) {
163 if (x->is_init_point()) { 166 if (x->is_init_point() || // getstatic is an initialization point so treat it as a wide kill
164 // getstatic is an initialization point so treat it as a wide kill 167 x->field()->is_volatile()) { // the JMM requires this
165 kill_memory(); 168 kill_memory();
166 } 169 }
167 } 170 }
168 void do_ArrayLength (ArrayLength* x) { /* nothing to do */ } 171 void do_ArrayLength (ArrayLength* x) { /* nothing to do */ }
169 void do_LoadIndexed (LoadIndexed* x) { /* nothing to do */ } 172 void do_LoadIndexed (LoadIndexed* x) { /* nothing to do */ }

mercurial