< prev index next >

src/share/vm/utilities/accessFlags.hpp

Print this page
rev 6875 : 8056240: Investigate increased GC remark time after class unloading changes in CRM Fuse
Reviewed-by: mgerdin, coleenp, bdelsart


 153   bool is_stable() const                { return (_flags & JVM_ACC_FIELD_STABLE) != 0; }
 154   bool field_has_generic_signature() const
 155                                         { return (_flags & JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE) != 0; }
 156 
 157   // get .class file flags
 158   jint get_flags               () const { return (_flags & JVM_ACC_WRITTEN_FLAGS); }
 159 
 160   // Initialization
 161   void add_promoted_flags(jint flags)   { _flags |= (flags & JVM_ACC_PROMOTED_FLAGS); }
 162   void set_field_flags(jint flags)      {
 163     assert((flags & JVM_ACC_FIELD_FLAGS) == flags, "only recognized flags");
 164     _flags = (flags & JVM_ACC_FIELD_FLAGS);
 165   }
 166   void set_flags(jint flags)            { _flags = (flags & JVM_ACC_WRITTEN_FLAGS); }
 167 
 168   void set_queued_for_compilation()    { atomic_set_bits(JVM_ACC_QUEUED); }
 169   void clear_queued_for_compilation()  { atomic_clear_bits(JVM_ACC_QUEUED); }
 170 
 171   // Atomic update of flags
 172   void atomic_set_bits(jint bits);

 173   void atomic_clear_bits(jint bits);
 174 
 175  private:
 176   friend class Method;
 177   friend class Klass;
 178   friend class ClassFileParser;
 179   // the functions below should only be called on the _access_flags inst var directly,
 180   // otherwise they are just changing a copy of the flags
 181 
 182   // attribute flags
 183   void set_is_synthetic()              { atomic_set_bits(JVM_ACC_SYNTHETIC);               }
 184 
 185   // Method* flags
 186   void set_monitor_matching()          { atomic_set_bits(JVM_ACC_MONITOR_MATCH);           }
 187   void set_has_monitor_bytecodes()     { atomic_set_bits(JVM_ACC_HAS_MONITOR_BYTECODES);   }
 188   void set_has_loops()                 { atomic_set_bits(JVM_ACC_HAS_LOOPS);               }
 189   void set_loops_flag_init()           { atomic_set_bits(JVM_ACC_LOOPS_FLAG_INIT);         }
 190   void set_not_c1_compilable()         { atomic_set_bits(JVM_ACC_NOT_C1_COMPILABLE);       }
 191   void set_not_c2_compilable()         { atomic_set_bits(JVM_ACC_NOT_C2_COMPILABLE);       }
 192   void set_not_c2_osr_compilable()     { atomic_set_bits(JVM_ACC_NOT_C2_OSR_COMPILABLE);   }


 213                                        {
 214                                          if (value) {
 215                                            atomic_set_bits(JVM_ACC_FIELD_ACCESS_WATCHED);
 216                                          } else {
 217                                            atomic_clear_bits(JVM_ACC_FIELD_ACCESS_WATCHED);
 218                                          }
 219                                        }
 220   void set_is_field_modification_watched(const bool value)
 221                                        {
 222                                          if (value) {
 223                                            atomic_set_bits(JVM_ACC_FIELD_MODIFICATION_WATCHED);
 224                                          } else {
 225                                            atomic_clear_bits(JVM_ACC_FIELD_MODIFICATION_WATCHED);
 226                                          }
 227                                        }
 228   void set_field_has_generic_signature()
 229                                        {
 230                                          atomic_set_bits(JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE);
 231                                        }
 232 
 233   void set_on_stack(const bool value)
 234                                        {
 235                                          if (value) {
 236                                            atomic_set_bits(JVM_ACC_ON_STACK);
 237                                          } else {
 238                                            atomic_clear_bits(JVM_ACC_ON_STACK);

 239                                          }
 240                                        }
 241   // Conversion
 242   jshort as_short() const              { return (jshort)_flags; }
 243   jint   as_int() const                { return _flags; }
 244 
 245   inline friend AccessFlags accessFlags_from(jint flags);
 246 
 247   // Printing/debugging
 248 #if INCLUDE_JVMTI
 249   void print_on(outputStream* st) const;
 250 #else
 251   void print_on(outputStream* st) const PRODUCT_RETURN;
 252 #endif
 253 };
 254 
 255 inline AccessFlags accessFlags_from(jint flags) {
 256   AccessFlags af;
 257   af._flags = flags;
 258   return af;


 153   bool is_stable() const                { return (_flags & JVM_ACC_FIELD_STABLE) != 0; }
 154   bool field_has_generic_signature() const
 155                                         { return (_flags & JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE) != 0; }
 156 
 157   // get .class file flags
 158   jint get_flags               () const { return (_flags & JVM_ACC_WRITTEN_FLAGS); }
 159 
 160   // Initialization
 161   void add_promoted_flags(jint flags)   { _flags |= (flags & JVM_ACC_PROMOTED_FLAGS); }
 162   void set_field_flags(jint flags)      {
 163     assert((flags & JVM_ACC_FIELD_FLAGS) == flags, "only recognized flags");
 164     _flags = (flags & JVM_ACC_FIELD_FLAGS);
 165   }
 166   void set_flags(jint flags)            { _flags = (flags & JVM_ACC_WRITTEN_FLAGS); }
 167 
 168   void set_queued_for_compilation()    { atomic_set_bits(JVM_ACC_QUEUED); }
 169   void clear_queued_for_compilation()  { atomic_clear_bits(JVM_ACC_QUEUED); }
 170 
 171   // Atomic update of flags
 172   void atomic_set_bits(jint bits);
 173   bool atomic_set_one_bit(jint bit);
 174   void atomic_clear_bits(jint bits);
 175 
 176  private:
 177   friend class Method;
 178   friend class Klass;
 179   friend class ClassFileParser;
 180   // the functions below should only be called on the _access_flags inst var directly,
 181   // otherwise they are just changing a copy of the flags
 182 
 183   // attribute flags
 184   void set_is_synthetic()              { atomic_set_bits(JVM_ACC_SYNTHETIC);               }
 185 
 186   // Method* flags
 187   void set_monitor_matching()          { atomic_set_bits(JVM_ACC_MONITOR_MATCH);           }
 188   void set_has_monitor_bytecodes()     { atomic_set_bits(JVM_ACC_HAS_MONITOR_BYTECODES);   }
 189   void set_has_loops()                 { atomic_set_bits(JVM_ACC_HAS_LOOPS);               }
 190   void set_loops_flag_init()           { atomic_set_bits(JVM_ACC_LOOPS_FLAG_INIT);         }
 191   void set_not_c1_compilable()         { atomic_set_bits(JVM_ACC_NOT_C1_COMPILABLE);       }
 192   void set_not_c2_compilable()         { atomic_set_bits(JVM_ACC_NOT_C2_COMPILABLE);       }
 193   void set_not_c2_osr_compilable()     { atomic_set_bits(JVM_ACC_NOT_C2_OSR_COMPILABLE);   }


 214                                        {
 215                                          if (value) {
 216                                            atomic_set_bits(JVM_ACC_FIELD_ACCESS_WATCHED);
 217                                          } else {
 218                                            atomic_clear_bits(JVM_ACC_FIELD_ACCESS_WATCHED);
 219                                          }
 220                                        }
 221   void set_is_field_modification_watched(const bool value)
 222                                        {
 223                                          if (value) {
 224                                            atomic_set_bits(JVM_ACC_FIELD_MODIFICATION_WATCHED);
 225                                          } else {
 226                                            atomic_clear_bits(JVM_ACC_FIELD_MODIFICATION_WATCHED);
 227                                          }
 228                                        }
 229   void set_field_has_generic_signature()
 230                                        {
 231                                          atomic_set_bits(JVM_ACC_FIELD_HAS_GENERIC_SIGNATURE);
 232                                        }
 233 
 234   bool set_on_stack(const bool value)
 235                                        {
 236                                          if (value) {
 237                                            return atomic_set_one_bit(JVM_ACC_ON_STACK);
 238                                          } else {
 239                                            atomic_clear_bits(JVM_ACC_ON_STACK);
 240                                            return true; // Ignored
 241                                          }
 242                                        }
 243   // Conversion
 244   jshort as_short() const              { return (jshort)_flags; }
 245   jint   as_int() const                { return _flags; }
 246 
 247   inline friend AccessFlags accessFlags_from(jint flags);
 248 
 249   // Printing/debugging
 250 #if INCLUDE_JVMTI
 251   void print_on(outputStream* st) const;
 252 #else
 253   void print_on(outputStream* st) const PRODUCT_RETURN;
 254 #endif
 255 };
 256 
 257 inline AccessFlags accessFlags_from(jint flags) {
 258   AccessFlags af;
 259   af._flags = flags;
 260   return af;
< prev index next >