1780 __ z_mvi(do_not_unlock_if_synchronized, false);
1781
1782 // Check for synchronized methods.
1783 // Must happen AFTER invocation_counter check and stack overflow check,
1784 // so method is not locked if overflows.
1785 if (synchronized) {
1786 // Allocate monitor and lock method.
1787 lock_method();
1788 } else {
1789 #ifdef ASSERT
1790 { Label L;
1791 __ get_method(Z_R1_scratch);
1792 __ testbit_ushort(method2_(Z_R1_scratch, access_flags), JVM_ACC_SYNCHRONIZED_BIT);
1793 __ z_bfalse(L);
1794 reentry = __ stop_chain_static(reentry, "method needs synchronization");
1795 __ bind(L);
1796 }
1797 #endif // ASSERT
1798 }
1799
1800 // start execution
1801
1802 #ifdef ASSERT
1803 __ verify_esp(Z_esp, Z_R1_scratch);
1804 #endif
1805
1806 // jvmti support
1807 __ notify_method_entry();
1808
1809 // Start executing instructions.
1810 __ dispatch_next(vtos);
1811 // Dispatch_next does not return.
1812 DEBUG_ONLY(__ should_not_reach_here());
1813
1814 // Invocation counter overflow.
1815 if (inc_counter) {
1816 // Handle invocation counter overflow.
1817 __ bind(invocation_counter_overflow);
1818 generate_counter_overflow(Lcontinue);
1819 }
|
1780 __ z_mvi(do_not_unlock_if_synchronized, false);
1781
1782 // Check for synchronized methods.
1783 // Must happen AFTER invocation_counter check and stack overflow check,
1784 // so method is not locked if overflows.
1785 if (synchronized) {
1786 // Allocate monitor and lock method.
1787 lock_method();
1788 } else {
1789 #ifdef ASSERT
1790 { Label L;
1791 __ get_method(Z_R1_scratch);
1792 __ testbit_ushort(method2_(Z_R1_scratch, access_flags), JVM_ACC_SYNCHRONIZED_BIT);
1793 __ z_bfalse(L);
1794 reentry = __ stop_chain_static(reentry, "method needs synchronization");
1795 __ bind(L);
1796 }
1797 #endif // ASSERT
1798 }
1799
1800 // If object_init == true, we should insert a StoreStore barrier here to
1801 // prevent strict fields initial default values from being observable.
1802 // However, s390 is a TSO platform, so if `this` escapes, strict fields
1803 // initialized values are guaranteed to be the ones observed, so the
1804 // barrier can be elided.
1805
1806 // start execution
1807
1808 #ifdef ASSERT
1809 __ verify_esp(Z_esp, Z_R1_scratch);
1810 #endif
1811
1812 // jvmti support
1813 __ notify_method_entry();
1814
1815 // Start executing instructions.
1816 __ dispatch_next(vtos);
1817 // Dispatch_next does not return.
1818 DEBUG_ONLY(__ should_not_reach_here());
1819
1820 // Invocation counter overflow.
1821 if (inc_counter) {
1822 // Handle invocation counter overflow.
1823 __ bind(invocation_counter_overflow);
1824 generate_counter_overflow(Lcontinue);
1825 }
|