< prev index next >

src/hotspot/cpu/aarch64/templateInterpreterGenerator_aarch64.cpp

Print this page
*** 571,11 ***
--- 571,13 ---
  address TemplateInterpreterGenerator::generate_safept_entry_for(
          TosState state,
          address runtime_entry) {
    address entry = __ pc();
    __ push(state);
+   __ push_cont_fastpath(rthread);
    __ call_VM(noreg, runtime_entry);
+   __ pop_cont_fastpath(rthread);
    __ membar(Assembler::AnyAny);
    __ dispatch_via(vtos, Interpreter::_normal_table.table_for(vtos));
    return entry;
  }
  

*** 784,10 ***
--- 786,11 ---
    __ str(rscratch1, monitor_block_top);  // set new monitor block top
    // store object
    __ str(r0, Address(esp, BasicObjectLock::obj_offset_in_bytes()));
    __ mov(c_rarg1, esp); // object address
    __ lock_object(c_rarg1);
+   __ inc_held_monitor_count(rthread);
  }
  
  // Generate a fixed interpreter frame. This is identical setup for
  // interpreted methods and for native methods hence the shared code.
  //

*** 849,10 ***
--- 852,20 ---
    }
  }
  
  // End of helpers
  
+ address TemplateInterpreterGenerator::generate_Continuation_doYield_entry(void) {
+   address entry = __ pc();
+   assert(StubRoutines::cont_doYield() != NULL, "stub not yet generated");
+ 
+   __ push_cont_fastpath(rthread);
+   __ far_jump(RuntimeAddress(CAST_FROM_FN_PTR(address, StubRoutines::cont_doYield())));
+ 
+   return entry;
+ }
+ 
  // Various method entries
  //------------------------------------------------------------------------------------------------------------------------
  //
  //
  

*** 1457,10 ***
--- 1470,11 ---
                     InterpreterRuntime::throw_illegal_monitor_state_exception));
        __ should_not_reach_here();
  
        __ bind(unlock);
        __ unlock_object(c_rarg1);
+       __ dec_held_monitor_count(rthread);
      }
      __ bind(L);
    }
  
    // jvmti support
< prev index next >