207 void set_constant_pool(ConstantPool* pool) { _constant_pool = pool; }
208 ConstantPool* constant_pool() const { return _constant_pool; }
209
210 // Code generation
211 static ByteSize base_offset() { return in_ByteSize(sizeof(ConstantPoolCache)); }
212
213 #if INCLUDE_JVMTI
214 // RedefineClasses() API support:
215 // If any entry of this ConstantPoolCache points to any of
216 // old_methods, replace it with the corresponding new_method.
217 // trace_name_printed is set to true if the current call has
218 // printed the klass name so that other routines in the adjust_*
219 // group don't print the klass name.
220 void adjust_method_entries(bool* trace_name_printed);
221 bool check_no_old_or_obsolete_entries();
222 void dump_cache();
223 #endif // INCLUDE_JVMTI
224
225 #if INCLUDE_CDS
226 void remove_resolved_field_entries_if_non_deterministic();
227 void remove_resolved_method_entries_if_non_deterministic();
228 bool can_archive_resolved_method(ResolvedMethodEntry* method_entry);
229 #endif
230
231 // RedefineClasses support
232 DEBUG_ONLY(bool on_stack() { return false; })
233 void deallocate_contents(ClassLoaderData* data);
234 bool is_klass() const { return false; }
235 void record_gc_epoch();
236 uint64_t gc_epoch() { return _gc_epoch; }
237
238 // Return TRUE if resolution failed and this thread got to record the failure
239 // status. Return FALSE if another thread succeeded or failed in resolving
240 // the method and recorded the success or failure before this thread had a
241 // chance to record its failure.
242 bool save_and_throw_indy_exc(const constantPoolHandle& cpool, int cpool_index, int index, constantTag tag, TRAPS);
243 oop set_dynamic_call(const CallInfo &call_info, int index);
244 oop appendix_if_resolved(int method_index) const;
245 oop appendix_if_resolved(ResolvedMethodEntry* method_entry) const;
246
247 // Printing
248 void print_on(outputStream* st) const;
|
207 void set_constant_pool(ConstantPool* pool) { _constant_pool = pool; }
208 ConstantPool* constant_pool() const { return _constant_pool; }
209
210 // Code generation
211 static ByteSize base_offset() { return in_ByteSize(sizeof(ConstantPoolCache)); }
212
213 #if INCLUDE_JVMTI
214 // RedefineClasses() API support:
215 // If any entry of this ConstantPoolCache points to any of
216 // old_methods, replace it with the corresponding new_method.
217 // trace_name_printed is set to true if the current call has
218 // printed the klass name so that other routines in the adjust_*
219 // group don't print the klass name.
220 void adjust_method_entries(bool* trace_name_printed);
221 bool check_no_old_or_obsolete_entries();
222 void dump_cache();
223 #endif // INCLUDE_JVMTI
224
225 #if INCLUDE_CDS
226 void remove_resolved_field_entries_if_non_deterministic();
227 void remove_resolved_indy_entries_if_non_deterministic();
228 void remove_resolved_method_entries_if_non_deterministic();
229 bool can_archive_resolved_method(ConstantPool* src_cp, ResolvedMethodEntry* method_entry);
230 bool can_archive_invokehandle(ResolvedMethodEntry* rme);
231 #endif
232
233 // RedefineClasses support
234 DEBUG_ONLY(bool on_stack() { return false; })
235 void deallocate_contents(ClassLoaderData* data);
236 bool is_klass() const { return false; }
237 void record_gc_epoch();
238 uint64_t gc_epoch() { return _gc_epoch; }
239
240 // Return TRUE if resolution failed and this thread got to record the failure
241 // status. Return FALSE if another thread succeeded or failed in resolving
242 // the method and recorded the success or failure before this thread had a
243 // chance to record its failure.
244 bool save_and_throw_indy_exc(const constantPoolHandle& cpool, int cpool_index, int index, constantTag tag, TRAPS);
245 oop set_dynamic_call(const CallInfo &call_info, int index);
246 oop appendix_if_resolved(int method_index) const;
247 oop appendix_if_resolved(ResolvedMethodEntry* method_entry) const;
248
249 // Printing
250 void print_on(outputStream* st) const;
|