< prev index next >
src/share/vm/code/nmethod.hpp
Print this page
@@ -205,11 +205,11 @@
unsigned int _has_method_handle_invokes:1; // Has this method MethodHandle invokes?
unsigned int _lazy_critical_native:1; // Lazy JNI critical native
unsigned int _has_wide_vectors:1; // Preserve wide vectors at safepoints
// Protected by Patching_lock
- volatile unsigned char _state; // {alive, not_entrant, zombie, unloaded}
+ volatile unsigned char _state; // {in_use, not_entrant, zombie, unloaded}
volatile unsigned char _unloading_clock; // Incremented after GC unloaded/cleaned the nmethod
#ifdef ASSERT
bool _oops_are_stale; // indicates that it's no longer safe to access oops section
@@ -438,10 +438,23 @@
bool is_alive() const { return _state == in_use || _state == not_entrant; }
bool is_not_entrant() const { return _state == not_entrant; }
bool is_zombie() const { return _state == zombie; }
bool is_unloaded() const { return _state == unloaded; }
+ // returns a string version of the nmethod state
+ const char* state() const {
+ switch(_state) {
+ case in_use: return "in use";
+ case not_entrant: return "not_entrant";
+ case zombie: return "zombie";
+ case unloaded: return "unloaded";
+ default:
+ ShouldNotReachHere();
+ return NULL;
+ }
+ }
+
#if INCLUDE_RTM_OPT
// rtm state accessing and manipulating
RTMState rtm_state() const { return _rtm_state; }
void set_rtm_state(RTMState state) { _rtm_state = state; }
#endif
< prev index next >