8029441: assert(!((nmethod*)_cb)->is_deopt_pc(_pc)) failed: invariant broken
Summary: move patchable check into patch_pc
Reviewed-by: dcubed
--- a/hotspot/src/cpu/sparc/vm/frame_sparc.cpp Mon Aug 01 22:34:23 2016 -0700
+++ b/hotspot/src/cpu/sparc/vm/frame_sparc.cpp Tue Aug 02 11:06:25 2016 -0700
@@ -357,12 +357,6 @@
_cb = CodeCache::find_blob(_pc);
}
_deopt_state = unknown;
-#ifdef ASSERT
- if ( _cb != NULL && _cb->is_compiled()) {
- // Without a valid unextended_sp() we can't convert the pc to "original"
- assert(!((CompiledMethod*)_cb)->is_deopt_pc(_pc), "invariant broken");
- }
-#endif // ASSERT
}
frame::frame(intptr_t* sp, unpatchable_t, address pc, CodeBlob* cb) {
@@ -534,6 +528,7 @@
void frame::patch_pc(Thread* thread, address pc) {
+ vmassert(_deopt_state != unknown, "frame is unpatchable");
if(thread == Thread::current()) {
StubRoutines::Sparc::flush_callers_register_windows_func()();
}