184 }
185
186 ciMetadata* get_metadata(Metadata* o) {
187 if (o == nullptr) {
188 return nullptr;
189 } else {
190 return _factory->get_metadata(o);
191 }
192 }
193
194 ciMetadata* cached_metadata(Metadata* o) {
195 return _factory->cached_metadata(o);
196 }
197
198 ciInstance* get_instance(oop o) {
199 if (o == nullptr) return nullptr;
200 return get_object(o)->as_instance();
201 }
202 ciObjArrayKlass* get_obj_array_klass(Klass* o) {
203 if (o == nullptr) return nullptr;
204 return get_metadata(o)->as_obj_array_klass();
205 }
206 ciTypeArrayKlass* get_type_array_klass(Klass* o) {
207 if (o == nullptr) return nullptr;
208 return get_metadata(o)->as_type_array_klass();
209 }
210 ciKlass* get_klass(Klass* o) {
211 if (o == nullptr) return nullptr;
212 return get_metadata(o)->as_klass();
213 }
214 ciInstanceKlass* get_instance_klass(Klass* o) {
215 if (o == nullptr) return nullptr;
216 return get_metadata(o)->as_instance_klass();
217 }
218 ciMethod* get_method(Method* o) {
219 if (o == nullptr) return nullptr;
220 return get_metadata(o)->as_method();
221 }
222 ciMethodData* get_method_data(MethodData* o) {
223 if (o == nullptr) return nullptr;
224 return get_metadata(o)->as_method_data();
225 }
483 void set_dyno_loc(const InstanceKlass* ik);
484 void record_best_dyno_loc(const InstanceKlass* ik);
485 bool print_dyno_loc(outputStream* out, const InstanceKlass* ik) const;
486
487 GrowableArray<const InstanceKlass*>* _dyno_klasses;
488 GrowableArray<const char *>* _dyno_locs;
489
490 #define MAX_DYNO_NAME_LENGTH 1024
491 char _dyno_name[MAX_DYNO_NAME_LENGTH+1];
492
493 public:
494 // Dump the compilation replay data for the ciEnv to the stream.
495 void dump_replay_data(int compile_id);
496 void dump_inline_data(int compile_id);
497 void dump_replay_data(outputStream* out);
498 void dump_replay_data_unsafe(outputStream* out);
499 void dump_replay_data_helper(outputStream* out);
500 void dump_compile_data(outputStream* out);
501 void dump_replay_data_version(outputStream* out);
502
503 const char *dyno_name(const InstanceKlass* ik) const;
504 const char *replay_name(const InstanceKlass* ik) const;
505 const char *replay_name(ciKlass* i) const;
506
507 void record_lambdaform(Thread* thread, oop obj);
508 void record_member(Thread* thread, oop obj);
509 void record_mh(Thread* thread, oop obj);
510 void record_call_site_obj(Thread* thread, oop obj);
511 void record_call_site_method(Thread* thread, Method* adapter);
512 void process_invokedynamic(const constantPoolHandle &cp, int index, JavaThread* thread);
513 void process_invokehandle(const constantPoolHandle &cp, int index, JavaThread* thread);
514 void find_dynamic_call_sites();
515 };
516
517 #endif // SHARE_CI_CIENV_HPP
|
184 }
185
186 ciMetadata* get_metadata(Metadata* o) {
187 if (o == nullptr) {
188 return nullptr;
189 } else {
190 return _factory->get_metadata(o);
191 }
192 }
193
194 ciMetadata* cached_metadata(Metadata* o) {
195 return _factory->cached_metadata(o);
196 }
197
198 ciInstance* get_instance(oop o) {
199 if (o == nullptr) return nullptr;
200 return get_object(o)->as_instance();
201 }
202 ciObjArrayKlass* get_obj_array_klass(Klass* o) {
203 if (o == nullptr) return nullptr;
204 assert(o->is_objArray_klass() && !o->is_flatArray_klass() && !o->is_refArray_klass(), "must be exact");
205 return get_metadata(o)->as_obj_array_klass();
206 }
207 ciFlatArrayKlass* get_flat_array_klass(Klass* o) {
208 if (o == nullptr) return nullptr;
209 return get_metadata(o)->as_flat_array_klass();
210 }
211 ciRefArrayKlass* get_ref_array_klass(Klass* o) {
212 if (o == nullptr) return nullptr;
213 return get_metadata(o)->as_ref_array_klass();
214 }
215 ciTypeArrayKlass* get_type_array_klass(Klass* o) {
216 if (o == nullptr) return nullptr;
217 return get_metadata(o)->as_type_array_klass();
218 }
219 ciKlass* get_klass(Klass* o) {
220 if (o == nullptr) return nullptr;
221 return get_metadata(o)->as_klass();
222 }
223 ciInstanceKlass* get_instance_klass(Klass* o) {
224 if (o == nullptr) return nullptr;
225 return get_metadata(o)->as_instance_klass();
226 }
227 ciMethod* get_method(Method* o) {
228 if (o == nullptr) return nullptr;
229 return get_metadata(o)->as_method();
230 }
231 ciMethodData* get_method_data(MethodData* o) {
232 if (o == nullptr) return nullptr;
233 return get_metadata(o)->as_method_data();
234 }
492 void set_dyno_loc(const InstanceKlass* ik);
493 void record_best_dyno_loc(const InstanceKlass* ik);
494 bool print_dyno_loc(outputStream* out, const InstanceKlass* ik) const;
495
496 GrowableArray<const InstanceKlass*>* _dyno_klasses;
497 GrowableArray<const char *>* _dyno_locs;
498
499 #define MAX_DYNO_NAME_LENGTH 1024
500 char _dyno_name[MAX_DYNO_NAME_LENGTH+1];
501
502 public:
503 // Dump the compilation replay data for the ciEnv to the stream.
504 void dump_replay_data(int compile_id);
505 void dump_inline_data(int compile_id);
506 void dump_replay_data(outputStream* out);
507 void dump_replay_data_unsafe(outputStream* out);
508 void dump_replay_data_helper(outputStream* out);
509 void dump_compile_data(outputStream* out);
510 void dump_replay_data_version(outputStream* out);
511
512 ciWrapper* make_early_larval_wrapper(ciType* type) {
513 return _factory->make_early_larval_wrapper(type);
514 }
515
516 ciWrapper* make_null_free_wrapper(ciType* type) {
517 return _factory->make_null_free_wrapper(type);
518 }
519
520 const char *dyno_name(const InstanceKlass* ik) const;
521 const char *replay_name(const InstanceKlass* ik) const;
522 const char *replay_name(ciKlass* i) const;
523
524 void record_lambdaform(Thread* thread, oop obj);
525 void record_member(Thread* thread, oop obj);
526 void record_mh(Thread* thread, oop obj);
527 void record_call_site_obj(Thread* thread, oop obj);
528 void record_call_site_method(Thread* thread, Method* adapter);
529 void process_invokedynamic(const constantPoolHandle &cp, int index, JavaThread* thread);
530 void process_invokehandle(const constantPoolHandle &cp, int index, JavaThread* thread);
531 void find_dynamic_call_sites();
532 };
533
534 #endif // SHARE_CI_CIENV_HPP
|