equal
deleted
inserted
replaced
145 |
145 |
146 // Remembered sets support for the oops in the klasses. |
146 // Remembered sets support for the oops in the klasses. |
147 jbyte _modified_oops; // Card Table Equivalent (YC/CMS support) |
147 jbyte _modified_oops; // Card Table Equivalent (YC/CMS support) |
148 jbyte _accumulated_modified_oops; // Mod Union Equivalent (CMS support) |
148 jbyte _accumulated_modified_oops; // Mod Union Equivalent (CMS support) |
149 |
149 |
|
150 private: |
|
151 // This is an index into FileMapHeader::_classpath_entry_table[], to |
|
152 // associate this class with the JAR file where it's loaded from during |
|
153 // dump time. If a class is not loaded from the shared archive, this field is |
|
154 // -1. |
|
155 jshort _shared_class_path_index; |
|
156 |
|
157 friend class SharedClassUtil; |
|
158 protected: |
|
159 |
150 // Constructor |
160 // Constructor |
151 Klass(); |
161 Klass(); |
152 |
162 |
153 void* operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS) throw(); |
163 void* operator new(size_t size, ClassLoaderData* loader_data, size_t word_size, TRAPS) throw(); |
154 |
164 |
250 bool has_modified_oops() { return _modified_oops == 1; } |
260 bool has_modified_oops() { return _modified_oops == 1; } |
251 |
261 |
252 void accumulate_modified_oops() { if (has_modified_oops()) _accumulated_modified_oops = 1; } |
262 void accumulate_modified_oops() { if (has_modified_oops()) _accumulated_modified_oops = 1; } |
253 void clear_accumulated_modified_oops() { _accumulated_modified_oops = 0; } |
263 void clear_accumulated_modified_oops() { _accumulated_modified_oops = 0; } |
254 bool has_accumulated_modified_oops() { return _accumulated_modified_oops == 1; } |
264 bool has_accumulated_modified_oops() { return _accumulated_modified_oops == 1; } |
|
265 |
|
266 int shared_classpath_index() const { |
|
267 return _shared_class_path_index; |
|
268 }; |
|
269 |
|
270 void set_shared_classpath_index(int index) { |
|
271 _shared_class_path_index = index; |
|
272 }; |
|
273 |
255 |
274 |
256 protected: // internal accessors |
275 protected: // internal accessors |
257 void set_subklass(Klass* s); |
276 void set_subklass(Klass* s); |
258 void set_next_sibling(Klass* s); |
277 void set_next_sibling(Klass* s); |
259 |
278 |
420 virtual Klass* array_klass_impl(bool or_null, TRAPS); |
439 virtual Klass* array_klass_impl(bool or_null, TRAPS); |
421 |
440 |
422 public: |
441 public: |
423 // CDS support - remove and restore oops from metadata. Oops are not shared. |
442 // CDS support - remove and restore oops from metadata. Oops are not shared. |
424 virtual void remove_unshareable_info(); |
443 virtual void remove_unshareable_info(); |
425 virtual void restore_unshareable_info(TRAPS); |
444 virtual void restore_unshareable_info(ClassLoaderData* loader_data, Handle protection_domain, TRAPS); |
426 |
445 |
427 protected: |
446 protected: |
428 // computes the subtype relationship |
447 // computes the subtype relationship |
429 virtual bool compute_is_subtype_of(Klass* k); |
448 virtual bool compute_is_subtype_of(Klass* k); |
430 public: |
449 public: |