1312 inline void set_polling_page_release(void* poll_value);
1313 inline void set_polling_page(void* poll_value);
1314 inline volatile void* get_polling_page();
1315
1316 private:
1317 // Support for thread handshake operations
1318 HandshakeState _handshake;
1319 public:
1320 void set_handshake_operation(HandshakeOperation* op) {
1321 _handshake.set_operation(this, op);
1322 }
1323
1324 bool has_handshake() const {
1325 return _handshake.has_operation();
1326 }
1327
1328 void handshake_process_by_self() {
1329 _handshake.process_by_self(this);
1330 }
1331
1332 bool handshake_process_by_vmthread() {
1333 return _handshake.process_by_vmthread(this);
1334 }
1335
1336 // Suspend/resume support for JavaThread
1337 private:
1338 inline void set_ext_suspended();
1339 inline void clear_ext_suspended();
1340
1341 public:
1342 void java_suspend(); // higher-level suspension logic called by the public APIs
1343 void java_resume(); // higher-level resume logic called by the public APIs
1344 int java_suspend_self(); // low-level self-suspension mechanics
1345
1346 private:
1347 // mid-level wrapper around java_suspend_self to set up correct state and
1348 // check for a pending safepoint at the end
1349 void java_suspend_self_with_safepoint_check();
1350
1351 public:
1352 void check_and_wait_while_suspended() {
1353 assert(JavaThread::current() == this, "sanity check");
|
1312 inline void set_polling_page_release(void* poll_value);
1313 inline void set_polling_page(void* poll_value);
1314 inline volatile void* get_polling_page();
1315
1316 private:
1317 // Support for thread handshake operations
1318 HandshakeState _handshake;
1319 public:
1320 void set_handshake_operation(HandshakeOperation* op) {
1321 _handshake.set_operation(this, op);
1322 }
1323
1324 bool has_handshake() const {
1325 return _handshake.has_operation();
1326 }
1327
1328 void handshake_process_by_self() {
1329 _handshake.process_by_self(this);
1330 }
1331
1332 bool handshake_try_process_by_vmThread() {
1333 return _handshake.try_process_by_vmThread(this);
1334 }
1335
1336 // Suspend/resume support for JavaThread
1337 private:
1338 inline void set_ext_suspended();
1339 inline void clear_ext_suspended();
1340
1341 public:
1342 void java_suspend(); // higher-level suspension logic called by the public APIs
1343 void java_resume(); // higher-level resume logic called by the public APIs
1344 int java_suspend_self(); // low-level self-suspension mechanics
1345
1346 private:
1347 // mid-level wrapper around java_suspend_self to set up correct state and
1348 // check for a pending safepoint at the end
1349 void java_suspend_self_with_safepoint_check();
1350
1351 public:
1352 void check_and_wait_while_suspended() {
1353 assert(JavaThread::current() == this, "sanity check");
|