equal
deleted
inserted
replaced
76 // will be false if the referent is initialized to a |
76 // will be false if the referent is initialized to a |
77 // HotSpotNMethod object whose isDefault field is true. |
77 // HotSpotNMethod object whose isDefault field is true. |
78 // That is, installed code other than a "default" |
78 // That is, installed code other than a "default" |
79 // HotSpotNMethod causes nmethod unloading. |
79 // HotSpotNMethod causes nmethod unloading. |
80 // This field is ignored once _jvmci_installed_code is NULL. |
80 // This field is ignored once _jvmci_installed_code is NULL. |
81 bool _jvmci_installed_code_triggers_unloading; |
81 bool _jvmci_installed_code_triggers_invalidation; |
82 #endif |
82 #endif |
83 |
83 |
84 // To support simple linked-list chaining of nmethods: |
84 // To support simple linked-list chaining of nmethods: |
85 nmethod* _osr_link; // from InstanceKlass::osr_nmethods_head |
85 nmethod* _osr_link; // from InstanceKlass::osr_nmethods_head |
86 |
86 |
454 oop jvmci_installed_code(); |
454 oop jvmci_installed_code(); |
455 |
455 |
456 // Copies the value of the name field in the InstalledCode |
456 // Copies the value of the name field in the InstalledCode |
457 // object (if any) associated with this nmethod into buf. |
457 // object (if any) associated with this nmethod into buf. |
458 // Returns the value of buf if it was updated otherwise NULL. |
458 // Returns the value of buf if it was updated otherwise NULL. |
459 char* jvmci_installed_code_name(char* buf, size_t buflen); |
459 char* jvmci_installed_code_name(char* buf, size_t buflen) const; |
460 |
460 |
461 // Updates the state of the InstalledCode (if any) associated with |
461 // Updates the state of the InstalledCode (if any) associated with |
462 // this nmethod based on the current value of _state. |
462 // this nmethod based on the current value of _state. |
463 void maybe_invalidate_installed_code(); |
463 void maybe_invalidate_installed_code(); |
464 |
464 |
484 #endif |
484 #endif |
485 |
485 |
486 protected: |
486 protected: |
487 virtual bool do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive); |
487 virtual bool do_unloading_oops(address low_boundary, BoolObjectClosure* is_alive); |
488 #if INCLUDE_JVMCI |
488 #if INCLUDE_JVMCI |
489 // See comment for _jvmci_installed_code_triggers_unloading field. |
489 // See comment for _jvmci_installed_code_triggers_invalidation field. |
490 // Returns whether this nmethod was unloaded. |
490 // Returns whether this nmethod was unloaded. |
491 virtual bool do_unloading_jvmci(); |
491 virtual bool do_unloading_jvmci(); |
492 #endif |
492 #endif |
493 |
493 |
494 private: |
494 private: |
553 void print_on(outputStream* st, const char* msg) const; |
553 void print_on(outputStream* st, const char* msg) const; |
554 |
554 |
555 // Logging |
555 // Logging |
556 void log_identity(xmlStream* log) const; |
556 void log_identity(xmlStream* log) const; |
557 void log_new_nmethod() const; |
557 void log_new_nmethod() const; |
558 void log_state_change() const; |
558 void log_state_change(oop cause = NULL) const; |
559 |
559 |
560 // Prints block-level comments, including nmethod specific block labels: |
560 // Prints block-level comments, including nmethod specific block labels: |
561 virtual void print_block_comment(outputStream* stream, address block_begin) const { |
561 virtual void print_block_comment(outputStream* stream, address block_begin) const { |
562 print_nmethod_labels(stream, block_begin); |
562 print_nmethod_labels(stream, block_begin); |
563 CodeBlob::print_block_comment(stream, block_begin); |
563 CodeBlob::print_block_comment(stream, block_begin); |