< prev index next >

src/hotspot/share/jvmci/jvmciCodeInstaller.cpp

Print this page

        

@@ -638,11 +638,11 @@
     JVMCIObject mirror = installed_code;
     nmethod* nm = NULL;
     result = runtime()->register_method(jvmci_env(), method, nm, entry_bci, &_offsets, _orig_pc_offset, &buffer,
                                         stack_slots, _debug_recorder->_oopmaps, &_exception_handler_table, &_implicit_exception_table,
                                         compiler, _debug_recorder, _dependencies, id,
-                                        has_unsafe_access, _has_wide_vector, compiled_code, mirror,
+                                        _has_monitors, has_unsafe_access, _has_wide_vector, compiled_code, mirror,
                                         failed_speculations, speculations, speculations_len);
     cb = nm->as_codeblob_or_null();
     if (nm != NULL && compile_state == NULL) {
       DirectiveSet* directive = DirectivesStack::getMatchingDirective(method, compiler);
       bool printnmethods = directive->PrintAssemblyOption || directive->PrintNMethodsOption;

@@ -1096,10 +1096,13 @@
 
   if (frame.is_non_null()) {
     jint local_count = jvmci_env()->get_BytecodeFrame_numLocals(frame);
     jint expression_count = jvmci_env()->get_BytecodeFrame_numStack(frame);
     jint monitor_count = jvmci_env()->get_BytecodeFrame_numLocks(frame);
+    if (monitor_count > 0 && !_has_monitors) {
+      _has_monitors = true;
+    }
     JVMCIObjectArray values = jvmci_env()->get_BytecodeFrame_values(frame);
     JVMCIObjectArray slotKinds = jvmci_env()->get_BytecodeFrame_slotKinds(frame);
 
     if (values.is_null() || slotKinds.is_null()) {
       JVMCI_THROW(NullPointerException);
< prev index next >