< prev index next >

src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp

Print this page

1519 
1520   bang_stack_shadow_pages(false);
1521 
1522   // reset the _do_not_unlock_if_synchronized flag
1523   __ sb(zr, do_not_unlock_if_synchronized);
1524 
1525   // check for synchronized methods
1526   // Must happen AFTER invocation_counter check and stack overflow check,
1527   // so method is not locked if overflows.
1528   if (synchronized) {
1529     // Allocate monitor and lock method
1530     lock_method();
1531   } else {
1532     // no synchronization necessary
1533 #ifdef ASSERT
1534     __ load_unsigned_short(x10, access_flags);
1535     __ verify_access_flags(x10, JVM_ACC_SYNCHRONIZED, "method needs synchronization");
1536 #endif
1537   }
1538 






1539   // start execution
1540   __ verify_frame_setup();
1541 
1542   // jvmti support
1543   __ notify_method_entry();
1544 
1545   __ dispatch_next(vtos);
1546 
1547   // invocation counter overflow
1548   if (inc_counter) {
1549     // Handle overflow of counter and compile method
1550     __ bind(invocation_counter_overflow);
1551     generate_counter_overflow(continue_after_compile);
1552   }
1553 
1554   return entry_point;
1555 }
1556 
1557 // Method entry for java.lang.Thread.currentThread
1558 address TemplateInterpreterGenerator::generate_currentThread() {

1519 
1520   bang_stack_shadow_pages(false);
1521 
1522   // reset the _do_not_unlock_if_synchronized flag
1523   __ sb(zr, do_not_unlock_if_synchronized);
1524 
1525   // check for synchronized methods
1526   // Must happen AFTER invocation_counter check and stack overflow check,
1527   // so method is not locked if overflows.
1528   if (synchronized) {
1529     // Allocate monitor and lock method
1530     lock_method();
1531   } else {
1532     // no synchronization necessary
1533 #ifdef ASSERT
1534     __ load_unsigned_short(x10, access_flags);
1535     __ verify_access_flags(x10, JVM_ACC_SYNCHRONIZED, "method needs synchronization");
1536 #endif
1537   }
1538 
1539   // Issue a StoreStore barrier on entry to Object_init if the
1540   // class has strict field fields.  Be lazy, always do it.
1541   if (object_init) {
1542     __ membar(MacroAssembler::StoreStore);
1543   }
1544 
1545   // start execution
1546   __ verify_frame_setup();
1547 
1548   // jvmti support
1549   __ notify_method_entry();
1550 
1551   __ dispatch_next(vtos);
1552 
1553   // invocation counter overflow
1554   if (inc_counter) {
1555     // Handle overflow of counter and compile method
1556     __ bind(invocation_counter_overflow);
1557     generate_counter_overflow(continue_after_compile);
1558   }
1559 
1560   return entry_point;
1561 }
1562 
1563 // Method entry for java.lang.Thread.currentThread
1564 address TemplateInterpreterGenerator::generate_currentThread() {
< prev index next >