// visitor functions void do_StoreField (StoreField* x) { if (x->is_init_point()) { // putstatic is an initialization point so treat it as a wide kill kill_memory(); } else { kill_field(x->field()); } }
// visitor functions void do_StoreField (StoreField* x) { if (x->is_init_point() || // putstatic is an initialization point so treat it as a wide kill // This is actually too strict and the JMM doesn't require // this in all cases (e.g. load a; volatile store b; load a) // but possible future optimizations might require this. x->field()->is_volatile()) { kill_memory(); } else { kill_field(x->field(), x->needs_patching()); } }