equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2008, 2017, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2008, 2018, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
1564 const Register sync_handle = AARCH64_ONLY(R20) NOT_AARCH64(R5); |
1564 const Register sync_handle = AARCH64_ONLY(R20) NOT_AARCH64(R5); |
1565 const Register sync_obj = AARCH64_ONLY(R21) NOT_AARCH64(R6); |
1565 const Register sync_obj = AARCH64_ONLY(R21) NOT_AARCH64(R6); |
1566 const Register disp_hdr = AARCH64_ONLY(R22) NOT_AARCH64(altFP_7_11); |
1566 const Register disp_hdr = AARCH64_ONLY(R22) NOT_AARCH64(altFP_7_11); |
1567 const Register tmp = AARCH64_ONLY(R23) NOT_AARCH64(R8); |
1567 const Register tmp = AARCH64_ONLY(R23) NOT_AARCH64(R8); |
1568 |
1568 |
1569 Label slow_lock, slow_lock_biased, lock_done, fast_lock, leave; |
1569 Label slow_lock, slow_lock_biased, lock_done, fast_lock; |
1570 if (method->is_synchronized()) { |
1570 if (method->is_synchronized()) { |
1571 // The first argument is a handle to sync object (a class or an instance) |
1571 // The first argument is a handle to sync object (a class or an instance) |
1572 __ ldr(sync_obj, Address(R1)); |
1572 __ ldr(sync_obj, Address(R1)); |
1573 // Remember the handle for the unlocking code |
1573 // Remember the handle for the unlocking code |
1574 __ mov(sync_handle, R1); |
1574 __ mov(sync_handle, R1); |
1684 |
1684 |
1685 __ cmp(R2, JavaThread::stack_guard_yellow_reserved_disabled); |
1685 __ cmp(R2, JavaThread::stack_guard_yellow_reserved_disabled); |
1686 __ b(reguard, eq); |
1686 __ b(reguard, eq); |
1687 __ bind(reguard_done); |
1687 __ bind(reguard_done); |
1688 |
1688 |
1689 Label slow_unlock, unlock_done, retry; |
1689 Label slow_unlock, unlock_done; |
1690 if (method->is_synchronized()) { |
1690 if (method->is_synchronized()) { |
1691 __ ldr(sync_obj, Address(sync_handle)); |
1691 __ ldr(sync_obj, Address(sync_handle)); |
1692 |
1692 |
1693 if(UseBiasedLocking) { |
1693 if(UseBiasedLocking) { |
1694 __ biased_locking_exit(sync_obj, Rtemp, unlock_done); |
1694 __ biased_locking_exit(sync_obj, Rtemp, unlock_done); |