1263 inline void set_polling_page_release(void* poll_value);
1264 inline void set_polling_page(void* poll_value);
1265 inline volatile void* get_polling_page();
1266
1267 private:
1268 // Support for thread handshake operations
1269 HandshakeState _handshake;
1270 public:
1271 void set_handshake_operation(HandshakeOperation* op) {
1272 _handshake.set_operation(this, op);
1273 }
1274
1275 bool has_handshake() const {
1276 return _handshake.has_operation();
1277 }
1278
1279 void handshake_process_by_self() {
1280 _handshake.process_by_self(this);
1281 }
1282
1283 HandshakeState::ProcessResult handshake_process_by_vmthread() {
1284 return _handshake.process_by_vmthread(this);
1285 }
1286
1287 // Suspend/resume support for JavaThread
1288 private:
1289 inline void set_ext_suspended();
1290 inline void clear_ext_suspended();
1291
1292 public:
1293 void java_suspend();
1294 void java_resume();
1295 int java_suspend_self();
1296
1297 void check_and_wait_while_suspended() {
1298 assert(JavaThread::current() == this, "sanity check");
1299
1300 bool do_self_suspend;
1301 do {
1302 // were we externally suspended while we were waiting?
1303 do_self_suspend = handle_special_suspend_equivalent_condition();
1304 if (do_self_suspend) {
|
1263 inline void set_polling_page_release(void* poll_value);
1264 inline void set_polling_page(void* poll_value);
1265 inline volatile void* get_polling_page();
1266
1267 private:
1268 // Support for thread handshake operations
1269 HandshakeState _handshake;
1270 public:
1271 void set_handshake_operation(HandshakeOperation* op) {
1272 _handshake.set_operation(this, op);
1273 }
1274
1275 bool has_handshake() const {
1276 return _handshake.has_operation();
1277 }
1278
1279 void handshake_process_by_self() {
1280 _handshake.process_by_self(this);
1281 }
1282
1283 HandshakeState::ProcessResult handshake_try_process_by_vmThread(HandshakeOperation* op) {
1284 return _handshake.try_process_by_vmThread(this);
1285 }
1286
1287 // Suspend/resume support for JavaThread
1288 private:
1289 inline void set_ext_suspended();
1290 inline void clear_ext_suspended();
1291
1292 public:
1293 void java_suspend();
1294 void java_resume();
1295 int java_suspend_self();
1296
1297 void check_and_wait_while_suspended() {
1298 assert(JavaThread::current() == this, "sanity check");
1299
1300 bool do_self_suspend;
1301 do {
1302 // were we externally suspended while we were waiting?
1303 do_self_suspend = handle_special_suspend_equivalent_condition();
1304 if (do_self_suspend) {
|