< prev index next >

src/hotspot/share/oops/valueArrayKlass.hpp

Print this page
rev 59083 : DRAFT 8236522: NonTearable marker interface for inline classes to enforce atomicity


  70   // klass allocation
  71   static ValueArrayKlass* allocate_klass(ArrayStorageProperties storage_props, Klass* element_klass, TRAPS);
  72 
  73   void initialize(TRAPS);
  74 
  75   ModuleEntry* module() const;
  76   PackageEntry* package() const;
  77 
  78   bool can_be_primary_super_slow() const;
  79   GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots,
  80                                                   Array<InstanceKlass*>* transitive_interfaces);
  81 
  82   int element_byte_size() const { return 1 << layout_helper_log2_element_size(_layout_helper); }
  83 
  84   bool is_valueArray_klass_slow() const { return true; }
  85 
  86   bool contains_oops() {
  87     return element_klass()->contains_oops();
  88   }
  89 
  90   bool is_atomic() {

  91     return element_klass()->is_atomic();
  92   }
  93 
  94   oop protection_domain() const;
  95 
  96   static jint array_layout_helper(ValueKlass* vklass); // layout helper for values
  97 
  98   // sizing
  99   static int header_size()  { return sizeof(ValueArrayKlass)/HeapWordSize; }
 100   int size() const          { return ArrayKlass::static_size(header_size()); }
 101 
 102   jint max_elements() const;
 103 
 104   int oop_size(oop obj) const;
 105 
 106   // Oop Allocation
 107   valueArrayOop allocate(int length, TRAPS);
 108   oop multi_allocate(int rank, jint* sizes, TRAPS);
 109 
 110   // Naming




  70   // klass allocation
  71   static ValueArrayKlass* allocate_klass(ArrayStorageProperties storage_props, Klass* element_klass, TRAPS);
  72 
  73   void initialize(TRAPS);
  74 
  75   ModuleEntry* module() const;
  76   PackageEntry* package() const;
  77 
  78   bool can_be_primary_super_slow() const;
  79   GrowableArray<Klass*>* compute_secondary_supers(int num_extra_slots,
  80                                                   Array<InstanceKlass*>* transitive_interfaces);
  81 
  82   int element_byte_size() const { return 1 << layout_helper_log2_element_size(_layout_helper); }
  83 
  84   bool is_valueArray_klass_slow() const { return true; }
  85 
  86   bool contains_oops() {
  87     return element_klass()->contains_oops();
  88   }
  89 
  90   // Override.
  91   bool element_access_is_atomic() {
  92     return element_klass()->is_atomic();
  93   }
  94 
  95   oop protection_domain() const;
  96 
  97   static jint array_layout_helper(ValueKlass* vklass); // layout helper for values
  98 
  99   // sizing
 100   static int header_size()  { return sizeof(ValueArrayKlass)/HeapWordSize; }
 101   int size() const          { return ArrayKlass::static_size(header_size()); }
 102 
 103   jint max_elements() const;
 104 
 105   int oop_size(oop obj) const;
 106 
 107   // Oop Allocation
 108   valueArrayOop allocate(int length, TRAPS);
 109   oop multi_allocate(int rank, jint* sizes, TRAPS);
 110 
 111   // Naming


< prev index next >