< prev index next >

src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp

Print this page

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






1543   // start execution
1544 #ifdef ASSERT
1545   __ verify_frame_setup();
1546 #endif
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 

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