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
|