changeset 11770:1de5545462c9

8029441: assert(!((nmethod*)_cb)->is_deopt_pc(_pc)) failed: invariant broken Summary: move patchable check into patch_pc Reviewed-by: dcubed
author dlong
date Tue, 02 Aug 2016 11:06:25 -0700
parents 2d959c8d4804
children f2ff307e3e36 b616b5fa5da1
files src/cpu/sparc/vm/frame_sparc.cpp
diffstat 1 files changed, 1 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/sparc/vm/frame_sparc.cpp	Mon Aug 01 22:34:23 2016 -0700
+++ b/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()();
   }