< prev index next >

test/hotspot/gtest/utilities/utilitiesHelper.inline.hpp

Print this page




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 #ifndef GTEST_UTILITIES_HELPER_INLINE_HPP
  25 #define GTEST_UTILITIES_HELPER_INLINE_HPP
  26 
  27 #include "runtime/mutex.hpp"
  28 #include "runtime/semaphore.hpp"
  29 #include "runtime/thread.hpp"
  30 #include "runtime/vmThread.hpp"
  31 #include "runtime/vm_operations.hpp"
  32 #include "unittest.hpp"
  33 
  34 class VM_StopSafepoint : public VM_Operation {
  35 public:
  36   Semaphore* _test_complete;
  37   VM_StopSafepoint(Semaphore* wait_for) : _test_complete(wait_for) {}
  38   VMOp_Type type() const          { return VMOp_Dummy; }
  39   Mode evaluation_mode() const    { return _no_safepoint; }
  40   bool is_cheap_allocated() const { return false; }
  41   void doit()                     { _test_complete->wait(); }
  42 };
  43 
  44 // This class and thread keep the non-safepoint op running while we do our testing.
  45 class VMThreadBlocker : public JavaThread {
  46 public:
  47   Semaphore* _unblock;
  48   Semaphore* _done;
  49   VMThreadBlocker(Semaphore* ub, Semaphore* done) : _unblock(ub), _done(done) {
  50   }
  51   virtual ~VMThreadBlocker() {}
  52   void run() {
  53     this->set_thread_state(_thread_in_vm);
  54     {
  55       MutexLocker ml(Threads_lock);
  56       Threads::add(this);
  57     }
  58     VM_StopSafepoint ss(_unblock);




  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 #ifndef GTEST_UTILITIES_HELPER_INLINE_HPP
  25 #define GTEST_UTILITIES_HELPER_INLINE_HPP
  26 
  27 #include "runtime/mutex.hpp"
  28 #include "runtime/semaphore.hpp"
  29 #include "runtime/thread.hpp"
  30 #include "runtime/vmThread.hpp"
  31 #include "runtime/vm_operations.hpp"
  32 #include "unittest.hpp"
  33 
  34 class VM_StopSafepoint : public VM_Operation {
  35 public:
  36   Semaphore* _test_complete;
  37   VM_StopSafepoint(Semaphore* wait_for) : _test_complete(wait_for) {}
  38   VMOp_Type type() const          { return VMOp_None; }
  39   Mode evaluation_mode() const    { return _no_safepoint; }
  40   bool is_cheap_allocated() const { return false; }
  41   void doit()                     { _test_complete->wait(); }
  42 };
  43 
  44 // This class and thread keep the non-safepoint op running while we do our testing.
  45 class VMThreadBlocker : public JavaThread {
  46 public:
  47   Semaphore* _unblock;
  48   Semaphore* _done;
  49   VMThreadBlocker(Semaphore* ub, Semaphore* done) : _unblock(ub), _done(done) {
  50   }
  51   virtual ~VMThreadBlocker() {}
  52   void run() {
  53     this->set_thread_state(_thread_in_vm);
  54     {
  55       MutexLocker ml(Threads_lock);
  56       Threads::add(this);
  57     }
  58     VM_StopSafepoint ss(_unblock);


< prev index next >