95 private: |
95 private: |
96 // Keep this private so as to catch violations at build time. |
96 // Keep this private so as to catch violations at build time. |
97 virtual void write_ref_field_pre_work( void* field, oop new_val) { guarantee(false, "Not needed"); }; |
97 virtual void write_ref_field_pre_work( void* field, oop new_val) { guarantee(false, "Not needed"); }; |
98 protected: |
98 protected: |
99 virtual void write_ref_field_pre_work( oop* field, oop new_val) { |
99 virtual void write_ref_field_pre_work( oop* field, oop new_val) { |
100 #ifdef MIPS |
100 #if defined MIPS && !defined ZERO |
101 if (UseSyncLevel >= 2000) OrderAccess::fence(); |
101 if (UseSyncLevel >= 2000) OrderAccess::fence(); |
102 #endif |
102 #endif |
103 }; |
103 }; |
104 virtual void write_ref_field_pre_work(narrowOop* field, oop new_val) { |
104 virtual void write_ref_field_pre_work(narrowOop* field, oop new_val) { |
105 #ifdef MIPS |
105 #if defined MIPS && !defined ZERO |
106 if (UseSyncLevel >= 2000) OrderAccess::fence(); |
106 if (UseSyncLevel >= 2000) OrderAccess::fence(); |
107 #endif |
107 #endif |
108 }; |
108 }; |
109 public: |
109 public: |
110 |
110 |
140 virtual void read_prim_array(MemRegion mr) = 0; |
140 virtual void read_prim_array(MemRegion mr) = 0; |
141 |
141 |
142 // Below length is the # array elements being written |
142 // Below length is the # array elements being written |
143 virtual void write_ref_array_pre(oop* dst, int length, |
143 virtual void write_ref_array_pre(oop* dst, int length, |
144 bool dest_uninitialized = false) { |
144 bool dest_uninitialized = false) { |
145 #ifdef MIPS |
145 #if defined MIPS && !defined ZERO |
146 if (UseSyncLevel >= 2000) OrderAccess::fence(); |
146 if (UseSyncLevel >= 2000) OrderAccess::fence(); |
147 #endif |
147 #endif |
148 } |
148 } |
149 virtual void write_ref_array_pre(narrowOop* dst, int length, |
149 virtual void write_ref_array_pre(narrowOop* dst, int length, |
150 bool dest_uninitialized = false) { |
150 bool dest_uninitialized = false) { |
151 #ifdef MIPS |
151 #if defined MIPS && !defined ZERO |
152 if (UseSyncLevel >= 2000) OrderAccess::fence(); |
152 if (UseSyncLevel >= 2000) OrderAccess::fence(); |
153 #endif |
153 #endif |
154 } |
154 } |
155 // Below count is the # array elements being written, starting |
155 // Below count is the # array elements being written, starting |
156 // at the address "start", which may not necessarily be HeapWord-aligned |
156 // at the address "start", which may not necessarily be HeapWord-aligned |