99 // the damaged entry. More seriously, the memory synchronization is needed |
99 // the damaged entry. More seriously, the memory synchronization is needed |
100 // to flush other fields (f1, f2) completely to memory before the bytecodes |
100 // to flush other fields (f1, f2) completely to memory before the bytecodes |
101 // are updated, lest other processors see a non-zero bytecode but zero f1/f2. |
101 // are updated, lest other processors see a non-zero bytecode but zero f1/f2. |
102 void ConstantPoolCacheEntry::set_field(Bytecodes::Code get_code, |
102 void ConstantPoolCacheEntry::set_field(Bytecodes::Code get_code, |
103 Bytecodes::Code put_code, |
103 Bytecodes::Code put_code, |
104 KlassHandle field_holder, |
104 Klass* field_holder, |
105 int field_index, |
105 int field_index, |
106 int field_offset, |
106 int field_offset, |
107 TosState field_type, |
107 TosState field_type, |
108 bool is_final, |
108 bool is_final, |
109 bool is_volatile, |
109 bool is_volatile, |
110 Klass* root_klass) { |
110 Klass* root_klass) { |
111 set_f1(field_holder()); |
111 set_f1(field_holder); |
112 set_f2(field_offset); |
112 set_f2(field_offset); |
113 assert((field_index & field_index_mask) == field_index, |
113 assert((field_index & field_index_mask) == field_index, |
114 "field index does not fit in low flag bits"); |
114 "field index does not fit in low flag bits"); |
115 set_field_flags(field_type, |
115 set_field_flags(field_type, |
116 ((is_volatile ? 1 : 0) << is_volatile_shift) | |
116 ((is_volatile ? 1 : 0) << is_volatile_shift) | |