src/os/bsd/vm/os_bsd.hpp

Print this page
rev 4205 : Fix non-PCH build on Linux, Windows and MacOS X

*** 1,7 **** /* ! * Copyright (c) 1999, 2012, 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) 1999, 2013, 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.
*** 150,188 **** // self now that low-level suspension is barely used, and old workarounds // for BsdThreads are no longer needed. class SuspendResume { private: volatile int _suspend_action; - // values for suspend_action: - #define SR_NONE (0x00) - #define SR_SUSPEND (0x01) // suspend request - #define SR_CONTINUE (0x02) // resume request - volatile jint _state; - // values for _state: + SR_NONE - #define SR_SUSPENDED (0x20) public: SuspendResume() { _suspend_action = SR_NONE; _state = SR_NONE; } int suspend_action() const { return _suspend_action; } void set_suspend_action(int x) { _suspend_action = x; } // atomic updates for _state ! void set_suspended() { ! jint temp, temp2; ! do { ! temp = _state; ! temp2 = Atomic::cmpxchg(temp | SR_SUSPENDED, &_state, temp); ! } while (temp2 != temp); ! } ! void clear_suspended() { ! jint temp, temp2; ! do { ! temp = _state; ! temp2 = Atomic::cmpxchg(temp & ~SR_SUSPENDED, &_state, temp); ! } while (temp2 != temp); ! } bool is_suspended() { return _state & SR_SUSPENDED; } #undef SR_SUSPENDED }; --- 150,177 ---- // self now that low-level suspension is barely used, and old workarounds // for BsdThreads are no longer needed. class SuspendResume { private: volatile int _suspend_action; volatile jint _state; public: + // values for suspend_action: + enum { + SR_NONE = 0x00, + SR_SUSPEND = 0x01, // suspend request + SR_CONTINUE = 0x02, // resume request + SR_SUSPENDED = 0x20 // values for _state: + SR_NONE + }; + SuspendResume() { _suspend_action = SR_NONE; _state = SR_NONE; } int suspend_action() const { return _suspend_action; } void set_suspend_action(int x) { _suspend_action = x; } // atomic updates for _state ! inline void set_suspended(); ! inline void clear_suspended(); bool is_suspended() { return _state & SR_SUSPENDED; } #undef SR_SUSPENDED };