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