src/hotspot/share/gc/shenandoah/shenandoahBarrierSet.hpp
changeset 58710 ff3eab78554f
parent 58693 3f35a9efd7de
child 58985 5606867a5e6e
equal deleted inserted replaced
58709:662d9e1e2a60 58710:ff3eab78554f
    82   void write_ref_field_pre_work(narrowOop* field, oop new_val);
    82   void write_ref_field_pre_work(narrowOop* field, oop new_val);
    83   void write_ref_field_pre_work(void* field, oop new_val);
    83   void write_ref_field_pre_work(void* field, oop new_val);
    84 
    84 
    85   void write_ref_field_work(void* v, oop o, bool release = false);
    85   void write_ref_field_work(void* v, oop o, bool release = false);
    86 
    86 
    87   oop oop_load_from_native_barrier(oop obj, oop* load_addr);
       
    88   oop oop_load_from_native_barrier(oop obj, narrowOop* load_addr);
       
    89 
       
    90 
       
    91   virtual void on_thread_create(Thread* thread);
    87   virtual void on_thread_create(Thread* thread);
    92   virtual void on_thread_destroy(Thread* thread);
    88   virtual void on_thread_destroy(Thread* thread);
    93   virtual void on_thread_attach(Thread* thread);
    89   virtual void on_thread_attach(Thread* thread);
    94   virtual void on_thread_detach(Thread* thread);
    90   virtual void on_thread_detach(Thread* thread);
    95 
    91 
   106   oop load_reference_barrier_mutator(oop obj, narrowOop* load_addr);
   102   oop load_reference_barrier_mutator(oop obj, narrowOop* load_addr);
   107 
   103 
   108   template <class T>
   104   template <class T>
   109   oop load_reference_barrier_mutator_work(oop obj, T* load_addr);
   105   oop load_reference_barrier_mutator_work(oop obj, T* load_addr);
   110 
   106 
       
   107   oop load_reference_barrier_native(oop obj, oop* load_addr);
       
   108   oop load_reference_barrier_native(oop obj, narrowOop* load_addr);
       
   109 
   111   void enqueue(oop obj);
   110   void enqueue(oop obj);
   112 
   111 
   113 private:
   112 private:
   114   template <class T>
   113   template <class T>
   115   inline void arraycopy_pre_work(T* src, T* dst, size_t count);
   114   inline void arraycopy_pre_work(T* src, T* dst, size_t count);
   117   inline void arraycopy_work(T* src, size_t count);
   116   inline void arraycopy_work(T* src, size_t count);
   118   template <class T>
   117   template <class T>
   119   inline void arraycopy_update_impl(T* src, size_t count);
   118   inline void arraycopy_update_impl(T* src, size_t count);
   120 
   119 
   121   oop load_reference_barrier_impl(oop obj);
   120   oop load_reference_barrier_impl(oop obj);
       
   121 
       
   122   template <class T>
       
   123   oop load_reference_barrier_native_impl(oop obj, T* load_addr);
   122 
   124 
   123   static void keep_alive_if_weak(DecoratorSet decorators, oop value) {
   125   static void keep_alive_if_weak(DecoratorSet decorators, oop value) {
   124     assert((decorators & ON_UNKNOWN_OOP_REF) == 0, "Reference strength must be known");
   126     assert((decorators & ON_UNKNOWN_OOP_REF) == 0, "Reference strength must be known");
   125     const bool on_strong_oop_ref = (decorators & ON_STRONG_OOP_REF) != 0;
   127     const bool on_strong_oop_ref = (decorators & ON_STRONG_OOP_REF) != 0;
   126     const bool peek              = (decorators & AS_NO_KEEPALIVE) != 0;
   128     const bool peek              = (decorators & AS_NO_KEEPALIVE) != 0;