< prev index next >

src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp

Print this page




 145   return artifact_id(cld);
 146 }
 147 
 148 template <typename T>
 149 static s4 get_flags(const T* ptr) {
 150   assert(ptr != NULL, "invariant");
 151   return ptr->access_flags().get_flags();
 152 }
 153 
 154 static bool is_unsafe_anonymous(const Klass* klass) {
 155   assert(klass != NULL, "invariant");
 156   assert(!klass->is_objArray_klass(), "invariant");
 157   return klass->is_instance_klass() && InstanceKlass::cast(klass)->is_unsafe_anonymous();
 158 }
 159 
 160 static ClassLoaderData* get_cld(const Klass* klass) {
 161   assert(klass != NULL, "invariant");
 162   if (klass->is_objArray_klass()) {
 163     klass = ObjArrayKlass::cast(klass)->bottom_klass();
 164   }
 165   if (klass->is_hidden_weak()) return NULL;
 166   return is_unsafe_anonymous(klass) ?
 167     InstanceKlass::cast(klass)->unsafe_anonymous_host()->class_loader_data() : klass->class_loader_data();
 168 }
 169 
 170 template <typename T>
 171 static void set_serialized(const T* ptr) {
 172   assert(ptr != NULL, "invariant");
 173   SET_SERIALIZED(ptr);
 174   assert(IS_SERIALIZED(ptr), "invariant");
 175   CLEAR_THIS_EPOCH_CLEARED_BIT(ptr);
 176 }
 177 
 178 /*
 179  * In C++03, functions used as template parameters must have external linkage;
 180  * this restriction was removed in C++11. Change back to "static" and
 181  * rename functions when C++11 becomes available.
 182  *
 183  * The weird naming is an effort to decrease the risk of name clashes.
 184  */
 185 




 145   return artifact_id(cld);
 146 }
 147 
 148 template <typename T>
 149 static s4 get_flags(const T* ptr) {
 150   assert(ptr != NULL, "invariant");
 151   return ptr->access_flags().get_flags();
 152 }
 153 
 154 static bool is_unsafe_anonymous(const Klass* klass) {
 155   assert(klass != NULL, "invariant");
 156   assert(!klass->is_objArray_klass(), "invariant");
 157   return klass->is_instance_klass() && InstanceKlass::cast(klass)->is_unsafe_anonymous();
 158 }
 159 
 160 static ClassLoaderData* get_cld(const Klass* klass) {
 161   assert(klass != NULL, "invariant");
 162   if (klass->is_objArray_klass()) {
 163     klass = ObjArrayKlass::cast(klass)->bottom_klass();
 164   }
 165   if (klass->is_non_strong_hidden()) return NULL;
 166   return is_unsafe_anonymous(klass) ?
 167     InstanceKlass::cast(klass)->unsafe_anonymous_host()->class_loader_data() : klass->class_loader_data();
 168 }
 169 
 170 template <typename T>
 171 static void set_serialized(const T* ptr) {
 172   assert(ptr != NULL, "invariant");
 173   SET_SERIALIZED(ptr);
 174   assert(IS_SERIALIZED(ptr), "invariant");
 175   CLEAR_THIS_EPOCH_CLEARED_BIT(ptr);
 176 }
 177 
 178 /*
 179  * In C++03, functions used as template parameters must have external linkage;
 180  * this restriction was removed in C++11. Change back to "static" and
 181  * rename functions when C++11 becomes available.
 182  *
 183  * The weird naming is an effort to decrease the risk of name clashes.
 184  */
 185 


< prev index next >