src/share/vm/runtime/thread.hpp

changeset 6493
3205e78d8193
parent 6472
2b8e28fdf503
child 6504
3f3c97187f82
     1.1 --- a/src/share/vm/runtime/thread.hpp	Thu Dec 05 15:13:12 2013 -0800
     1.2 +++ b/src/share/vm/runtime/thread.hpp	Mon Dec 02 10:26:14 2013 +0100
     1.3 @@ -1044,8 +1044,14 @@
     1.4    address last_Java_pc(void)                         { return _anchor.last_Java_pc(); }
     1.5  
     1.6    // Safepoint support
     1.7 -  JavaThreadState thread_state() const           { return _thread_state; }
     1.8 -  void set_thread_state(JavaThreadState s)       { _thread_state=s;      }
     1.9 +  // Use membars when accessing volatile _thread_state. See
    1.10 +  // Threads::create_vm() for size checks.
    1.11 +  JavaThreadState thread_state() const           {
    1.12 +    return (JavaThreadState) OrderAccess::load_acquire((volatile jint*)&_thread_state);
    1.13 +  }
    1.14 +  void set_thread_state(JavaThreadState s)       {
    1.15 +    OrderAccess::release_store((volatile jint*)&_thread_state, (jint)s);
    1.16 +  }
    1.17    ThreadSafepointState *safepoint_state() const  { return _safepoint_state;  }
    1.18    void set_safepoint_state(ThreadSafepointState *state) { _safepoint_state = state; }
    1.19    bool is_at_poll_safepoint()                    { return _safepoint_state->is_at_poll_safepoint(); }

mercurial