src/share/vm/oops/objArrayKlass.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7118863 Sdiff src/share/vm/oops

src/share/vm/oops/objArrayKlass.hpp

Print this page




  30 #include "oops/instanceKlass.hpp"
  31 
  32 // objArrayKlass is the klass for objArrays
  33 
  34 class objArrayKlass : public arrayKlass {
  35   friend class VMStructs;
  36  private:
  37   klassOop _element_klass;            // The klass of the elements of this array type
  38   klassOop _bottom_klass;             // The one-dimensional type (instanceKlass or typeArrayKlass)
  39  public:
  40   // Instance variables
  41   klassOop element_klass() const      { return _element_klass; }
  42   void set_element_klass(klassOop k)  { oop_store_without_check((oop*) &_element_klass, (oop) k); }
  43   oop* element_klass_addr()           { return (oop*)&_element_klass; }
  44 
  45   klassOop bottom_klass() const       { return _bottom_klass; }
  46   void set_bottom_klass(klassOop k)   { oop_store_without_check((oop*) &_bottom_klass, (oop) k); }
  47   oop* bottom_klass_addr()            { return (oop*)&_bottom_klass; }
  48 
  49   // Compiler/Interpreter offset
  50   static int element_klass_offset_in_bytes() { return offset_of(objArrayKlass, _element_klass); }
  51 
  52   // Dispatched operation
  53   bool can_be_primary_super_slow() const;
  54   objArrayOop compute_secondary_supers(int num_extra_slots, TRAPS);
  55   bool compute_is_subtype_of(klassOop k);
  56   bool oop_is_objArray_slow()  const  { return true; }
  57   int oop_size(oop obj) const;
  58   int klass_oop_size() const          { return object_size(); }
  59 
  60   // Allocation
  61   DEFINE_ALLOCATE_PERMANENT(objArrayKlass);
  62   objArrayOop allocate(int length, TRAPS);
  63   oop multi_allocate(int rank, jint* sizes, TRAPS);
  64 
  65   // Copying
  66   void  copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS);
  67 
  68   // Compute protection domain
  69   oop protection_domain() { return Klass::cast(bottom_klass())->protection_domain(); }
  70   // Compute class loader




  30 #include "oops/instanceKlass.hpp"
  31 
  32 // objArrayKlass is the klass for objArrays
  33 
  34 class objArrayKlass : public arrayKlass {
  35   friend class VMStructs;
  36  private:
  37   klassOop _element_klass;            // The klass of the elements of this array type
  38   klassOop _bottom_klass;             // The one-dimensional type (instanceKlass or typeArrayKlass)
  39  public:
  40   // Instance variables
  41   klassOop element_klass() const      { return _element_klass; }
  42   void set_element_klass(klassOop k)  { oop_store_without_check((oop*) &_element_klass, (oop) k); }
  43   oop* element_klass_addr()           { return (oop*)&_element_klass; }
  44 
  45   klassOop bottom_klass() const       { return _bottom_klass; }
  46   void set_bottom_klass(klassOop k)   { oop_store_without_check((oop*) &_bottom_klass, (oop) k); }
  47   oop* bottom_klass_addr()            { return (oop*)&_bottom_klass; }
  48 
  49   // Compiler/Interpreter offset
  50   static ByteSize element_klass_offset() { return in_ByteSize(sizeof(klassOopDesc) + offset_of(objArrayKlass, _element_klass)); }
  51 
  52   // Dispatched operation
  53   bool can_be_primary_super_slow() const;
  54   objArrayOop compute_secondary_supers(int num_extra_slots, TRAPS);
  55   bool compute_is_subtype_of(klassOop k);
  56   bool oop_is_objArray_slow()  const  { return true; }
  57   int oop_size(oop obj) const;
  58   int klass_oop_size() const          { return object_size(); }
  59 
  60   // Allocation
  61   DEFINE_ALLOCATE_PERMANENT(objArrayKlass);
  62   objArrayOop allocate(int length, TRAPS);
  63   oop multi_allocate(int rank, jint* sizes, TRAPS);
  64 
  65   // Copying
  66   void  copy_array(arrayOop s, int src_pos, arrayOop d, int dst_pos, int length, TRAPS);
  67 
  68   // Compute protection domain
  69   oop protection_domain() { return Klass::cast(bottom_klass())->protection_domain(); }
  70   // Compute class loader


src/share/vm/oops/objArrayKlass.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File