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