< prev index next >

src/hotspot/share/prims/jvmtiExport.hpp

Print this page

        

*** 168,190 **** const void *code_begin, const jint map_length, const jvmtiAddrLocationMap* map) NOT_JVMTI_RETURN; static void post_dynamic_code_generated(JvmtiEnv* env, const char *name, const void *code_begin, const void *code_end) NOT_JVMTI_RETURN; - // The RedefineClasses() API breaks some invariants in the "regular" - // system. For example, there are sanity checks when GC'ing nmethods - // that require the containing class to be unloading. However, when a - // method is redefined, the old method and nmethod can become GC'able - // without the containing class unloading. The state of becoming - // GC'able can be asynchronous to the RedefineClasses() call since - // the old method may still be running and cannot be GC'ed until - // after all old invocations have finished. Additionally, a method - // that has not been redefined may have an nmethod that depends on - // the redefined method. The dependent nmethod will get deopted in - // this case and may also be GC'able without the containing class - // being unloaded. - // // This flag indicates whether RedefineClasses() has ever redefined // one or more classes during the lifetime of the VM. The flag should // only be set by the friend class and can be queried by other sub // systems as needed to relax invariant checks. static bool _has_redefined_a_class; --- 168,177 ----
< prev index next >