< prev index next >

src/hotspot/cpu/riscv/templateInterpreterGenerator_riscv.cpp

Print this page

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






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

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