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() {
|