24 |
24 |
25 #ifndef SHARE_VM_OOPS_INSTANCEREFKLASS_HPP |
25 #ifndef SHARE_VM_OOPS_INSTANCEREFKLASS_HPP |
26 #define SHARE_VM_OOPS_INSTANCEREFKLASS_HPP |
26 #define SHARE_VM_OOPS_INSTANCEREFKLASS_HPP |
27 |
27 |
28 #include "oops/instanceKlass.hpp" |
28 #include "oops/instanceKlass.hpp" |
|
29 #include "utilities/macros.hpp" |
29 |
30 |
30 // An InstanceRefKlass is a specialized InstanceKlass for Java |
31 // An InstanceRefKlass is a specialized InstanceKlass for Java |
31 // classes that are subclasses of java/lang/ref/Reference. |
32 // classes that are subclasses of java/lang/ref/Reference. |
32 // |
33 // |
33 // These classes are used to implement soft/weak/final/phantom |
34 // These classes are used to implement soft/weak/final/phantom |
81 int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, MemRegion mr); |
82 int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, MemRegion mr); |
82 |
83 |
83 ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_DECL) |
84 ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_DECL) |
84 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_DECL) |
85 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_DECL) |
85 |
86 |
86 #ifndef SERIALGC |
87 #if INCLUDE_ALL_GCS |
87 #define InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix) \ |
88 #define InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix) \ |
88 int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk); |
89 int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk); |
89 |
90 |
90 ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL) |
91 ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL) |
91 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL) |
92 ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL) |
92 #endif // !SERIALGC |
93 #endif // INCLUDE_ALL_GCS |
93 |
94 |
94 static void release_and_notify_pending_list_lock(BasicLock *pending_list_basic_lock); |
95 static void release_and_notify_pending_list_lock(BasicLock *pending_list_basic_lock); |
95 static void acquire_pending_list_lock(BasicLock *pending_list_basic_lock); |
96 static void acquire_pending_list_lock(BasicLock *pending_list_basic_lock); |
96 static bool owns_pending_list_lock(JavaThread* thread); |
97 static bool owns_pending_list_lock(JavaThread* thread); |
97 |
98 |