< prev index next >

src/hotspot/share/gc/shared/barrierSetNMethod.hpp

Print this page




  24 
  25 #ifndef SHARE_GC_SHARED_BARRIERSETNMETHOD_HPP
  26 #define SHARE_GC_SHARED_BARRIERSETNMETHOD_HPP
  27 
  28 #include "memory/allocation.hpp"
  29 #include "utilities/globalDefinitions.hpp"
  30 #include "utilities/sizes.hpp"
  31 
  32 class nmethod;
  33 
  34 class BarrierSetNMethod: public CHeapObj<mtGC> {
  35   bool supports_entry_barrier(nmethod* nm);
  36   void deoptimize(nmethod* nm, address* return_addr_ptr);
  37 
  38 protected:
  39   virtual int disarmed_value() const;
  40   virtual bool nmethod_entry_barrier(nmethod* nm) = 0;
  41 
  42 public:
  43   virtual ByteSize thread_disarmed_offset() const = 0;

  44 
  45   static int nmethod_stub_entry_barrier(address* return_address_ptr);
  46   bool nmethod_osr_entry_barrier(nmethod* nm);
  47   bool is_armed(nmethod* nm);
  48   void disarm(nmethod* nm);
  49 };
  50 
  51 
  52 #endif // SHARE_GC_SHARED_BARRIERSETNMETHOD_HPP


  24 
  25 #ifndef SHARE_GC_SHARED_BARRIERSETNMETHOD_HPP
  26 #define SHARE_GC_SHARED_BARRIERSETNMETHOD_HPP
  27 
  28 #include "memory/allocation.hpp"
  29 #include "utilities/globalDefinitions.hpp"
  30 #include "utilities/sizes.hpp"
  31 
  32 class nmethod;
  33 
  34 class BarrierSetNMethod: public CHeapObj<mtGC> {
  35   bool supports_entry_barrier(nmethod* nm);
  36   void deoptimize(nmethod* nm, address* return_addr_ptr);
  37 
  38 protected:
  39   virtual int disarmed_value() const;
  40   virtual bool nmethod_entry_barrier(nmethod* nm) = 0;
  41 
  42 public:
  43   virtual ByteSize thread_disarmed_offset() const = 0;
  44   virtual intptr_t disarmed_address() const = 0;
  45 
  46   static int nmethod_stub_entry_barrier(address* return_address_ptr);
  47   bool nmethod_osr_entry_barrier(nmethod* nm);
  48   bool is_armed(nmethod* nm);
  49   void disarm(nmethod* nm);
  50 };
  51 
  52 
  53 #endif // SHARE_GC_SHARED_BARRIERSETNMETHOD_HPP
< prev index next >