< prev index next >

src/hotspot/share/runtime/safepointMechanism.inline.hpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 68,77 **** --- 68,90 ---- void SafepointMechanism::disarm_local_poll(JavaThread* thread) { thread->set_polling_page(poll_disarmed_value()); } + void SafepointMechanism::disarm_if_needed(JavaThread* thread, bool memory_order_release) { + JavaThreadState jts = thread->thread_state(); + if (jts == _thread_in_native || jts == _thread_in_native_trans) { + // JavaThread will disarm itself and execute cross_modify_fence() before continuing + return; + } + if (memory_order_release) { + thread->set_polling_page_release(poll_disarmed_value()); + } else { + thread->set_polling_page(poll_disarmed_value()); + } + } + void SafepointMechanism::arm_local_poll_release(JavaThread* thread) { thread->set_polling_page_release(poll_armed_value()); } void SafepointMechanism::disarm_local_poll_release(JavaThread* thread) {
< prev index next >