src/share/vm/code/dependencyContext.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/share/vm/code/dependencyContext.hpp

src/share/vm/code/dependencyContext.hpp

Print this page

        

*** 112,134 **** static PerfCounter* _perf_total_buckets_stale_count; static PerfCounter* _perf_total_buckets_stale_acc_count; public: #ifdef ASSERT ! // Verification for dependency contexts rooted at Java objects. ! Handle _base; // non-NULL if dependency context resides in an oop (e.g. CallSite). ! oop _base_oop; ! ! DependencyContext(intptr_t* addr, Handle base = Handle()) ! : _dependency_context_addr(addr), _base(base) ! { ! _base_oop = _base(); ! } ~DependencyContext() { ! // Base oop relocation invalidates _dependency_context_addr. ! assert(_base_oop == _base(), "base oop relocation is forbidden"); } #else DependencyContext(intptr_t* addr) : _dependency_context_addr(addr) {} #endif // ASSERT --- 112,131 ---- static PerfCounter* _perf_total_buckets_stale_count; static PerfCounter* _perf_total_buckets_stale_acc_count; public: #ifdef ASSERT ! // Safepoints are forbidden during DC lifetime. GC can invalidate ! // _dependency_context_addr if it relocates the holder ! // (e.g. CallSiteContext Java object). ! int _safepoint_counter; ! ! DependencyContext(intptr_t* addr) : _dependency_context_addr(addr), ! _safepoint_counter(SafepointSynchronize::_safepoint_counter) {} ~DependencyContext() { ! assert(_safepoint_counter == SafepointSynchronize::_safepoint_counter, "safepoint happened"); } #else DependencyContext(intptr_t* addr) : _dependency_context_addr(addr) {} #endif // ASSERT
src/share/vm/code/dependencyContext.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File