689 static int static_lock_offset; |
689 static int static_lock_offset; |
690 static int static_pending_offset; |
690 static int static_pending_offset; |
691 static int number_of_fake_oop_fields; |
691 static int number_of_fake_oop_fields; |
692 |
692 |
693 // Accessors |
693 // Accessors |
694 static oop referent(oop ref) { return *referent_addr(ref); } |
694 static oop referent(oop ref) { |
695 static void set_referent(oop ref, oop value); |
695 return ref->obj_field(referent_offset); |
696 static oop* referent_addr(oop ref); |
696 } |
697 |
697 static void set_referent(oop ref, oop value) { |
698 static oop next(oop ref) { return *next_addr(ref); } |
698 ref->obj_field_put(referent_offset, value); |
699 static void set_next(oop ref, oop value); |
699 } |
700 static oop* next_addr(oop ref); |
700 static void set_referent_raw(oop ref, oop value) { |
701 |
701 ref->obj_field_raw_put(referent_offset, value); |
702 static oop discovered(oop ref) { return *discovered_addr(ref); } |
702 } |
703 static void set_discovered(oop ref, oop value); |
703 static HeapWord* referent_addr(oop ref) { |
704 static oop* discovered_addr(oop ref); |
704 return ref->obj_field_addr<HeapWord>(referent_offset); |
705 |
705 } |
|
706 static oop next(oop ref) { |
|
707 return ref->obj_field(next_offset); |
|
708 } |
|
709 static void set_next(oop ref, oop value) { |
|
710 ref->obj_field_put(next_offset, value); |
|
711 } |
|
712 static void set_next_raw(oop ref, oop value) { |
|
713 ref->obj_field_raw_put(next_offset, value); |
|
714 } |
|
715 static HeapWord* next_addr(oop ref) { |
|
716 return ref->obj_field_addr<HeapWord>(next_offset); |
|
717 } |
|
718 static oop discovered(oop ref) { |
|
719 return ref->obj_field(discovered_offset); |
|
720 } |
|
721 static void set_discovered(oop ref, oop value) { |
|
722 ref->obj_field_put(discovered_offset, value); |
|
723 } |
|
724 static void set_discovered_raw(oop ref, oop value) { |
|
725 ref->obj_field_raw_put(discovered_offset, value); |
|
726 } |
|
727 static HeapWord* discovered_addr(oop ref) { |
|
728 return ref->obj_field_addr<HeapWord>(discovered_offset); |
|
729 } |
706 // Accessors for statics |
730 // Accessors for statics |
707 static oop pending_list_lock() { return *pending_list_lock_addr(); } |
731 static oop pending_list_lock(); |
708 static oop pending_list() { return *pending_list_addr(); } |
732 static oop pending_list(); |
709 |
733 |
710 static oop* pending_list_lock_addr(); |
734 static HeapWord* pending_list_addr(); |
711 static oop* pending_list_addr(); |
|
712 }; |
735 }; |
713 |
736 |
714 |
737 |
715 // Interface to java.lang.ref.SoftReference objects |
738 // Interface to java.lang.ref.SoftReference objects |
716 |
739 |