src/share/vm/code/dependencyContext.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/code/dependencyContext.hpp Wed Nov 25 15:13:13 2015
--- new/src/share/vm/code/dependencyContext.hpp Wed Nov 25 15:13:13 2015
*** 112,134 ****
--- 112,131 ----
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();
}
+ // 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() {
// Base oop relocation invalidates _dependency_context_addr.
assert(_base_oop == _base(), "base oop relocation is forbidden");
+ 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