< prev index next >

src/hotspot/cpu/s390/compiledIC_s390.cpp

Print this page

        

@@ -108,14 +108,18 @@
 #ifdef ASSERT
   // A generated lambda form might be deleted from the Lambdaform
   // cache in MethodTypeForm.  If a jit compiled lambdaform method
   // becomes not entrant and the cache access returns null, the new
   // resolve will lead to a new generated LambdaForm.
-  volatile intptr_t data = method_holder->data();
-  volatile address destination = jump->jump_destination();
-  assert(data == 0 || data == (intptr_t)callee() || callee->is_compiled_lambda_form(),
+  Method* volatile old_method = reinterpret_cast<Method*>(method_holder->data());
+  assert(old_method == NULL || old_method == callee() ||
+         callee->is_compiled_lambda_form() ||
+         !old_method->method_holder()->is_loader_alive() ||
+         old_method->is_old(),  // may be race patching deoptimized nmethod due to redefinition.
          "a) MT-unsafe modification of inline cache");
+
+  volatile address destination = jump->jump_destination();
   assert(destination == (address)-1 || destination == entry,
          "b) MT-unsafe modification of inline cache");
 #endif
 
   // Update stub.
< prev index next >