< prev index next >

src/share/vm/oops/instanceRefKlass.hpp

Print this page
rev 7183 : autospecialized oop_iterate using SFINAE and templates


  53     : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous) {}
  54 
  55  public:
  56   InstanceRefKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
  57   // Type testing
  58   bool oop_is_instanceRef() const             { return true; }
  59 
  60   // Casting from Klass*
  61   static InstanceRefKlass* cast(Klass* k) {
  62     assert(k->oop_is_instanceRef(), "cast to InstanceRefKlass");
  63     return (InstanceRefKlass*) k;
  64   }
  65 
  66   // Garbage collection
  67   int  oop_adjust_pointers(oop obj);
  68   void oop_follow_contents(oop obj);
  69 
  70   // Parallel Scavenge and Parallel Old
  71   PARALLEL_GC_DECLS
  72 










  73   int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
  74     return oop_oop_iterate_v(obj, blk);
  75   }
  76   int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
  77     return oop_oop_iterate_v_m(obj, blk, mr);
  78   }
  79 
  80 #define InstanceRefKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                \
  81   int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk);                         \
  82   int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, MemRegion mr);
  83 
  84   ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_DECL)
  85   ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_DECL)
  86 
  87 #if INCLUDE_ALL_GCS
  88 #define InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix)      \
  89   int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
  90 
  91   ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
  92   ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)


  53     : InstanceKlass(vtable_len, itable_len, static_field_size, nonstatic_oop_map_size, rt, access_flags, is_anonymous) {}
  54 
  55  public:
  56   InstanceRefKlass() { assert(DumpSharedSpaces || UseSharedSpaces, "only for CDS"); }
  57   // Type testing
  58   bool oop_is_instanceRef() const             { return true; }
  59 
  60   // Casting from Klass*
  61   static InstanceRefKlass* cast(Klass* k) {
  62     assert(k->oop_is_instanceRef(), "cast to InstanceRefKlass");
  63     return (InstanceRefKlass*) k;
  64   }
  65 
  66   // Garbage collection
  67   int  oop_adjust_pointers(oop obj);
  68   void oop_follow_contents(oop obj);
  69 
  70   // Parallel Scavenge and Parallel Old
  71   PARALLEL_GC_DECLS
  72 
  73 private:
  74   template<class OopClosureType, class OopType, bool is_extended>
  75   void do_metadata_if_applicable(oop obj, OopClosureType *cl);
  76 
  77 public:
  78   template<class OopClosureType>
  79   int oop_iterate_and_dispatch(oop obj, OopClosureType *cl);
  80 
  81   int get_linear_oop_intervals(oop obj, OopInterval* &start, int &size) { return -_instance_ref_klass; }
  82 
  83   int oop_oop_iterate(oop obj, ExtendedOopClosure* blk) {
  84     return oop_oop_iterate_v(obj, blk);
  85   }
  86   int oop_oop_iterate_m(oop obj, ExtendedOopClosure* blk, MemRegion mr) {
  87     return oop_oop_iterate_v_m(obj, blk, mr);
  88   }
  89 
  90 #define InstanceRefKlass_OOP_OOP_ITERATE_DECL(OopClosureType, nv_suffix)                \
  91   int oop_oop_iterate##nv_suffix(oop obj, OopClosureType* blk);                         \
  92   int oop_oop_iterate##nv_suffix##_m(oop obj, OopClosureType* blk, MemRegion mr);
  93 
  94   ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_DECL)
  95   ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_DECL)
  96 
  97 #if INCLUDE_ALL_GCS
  98 #define InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL(OopClosureType, nv_suffix)      \
  99   int oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* blk);
 100 
 101   ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
 102   ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceRefKlass_OOP_OOP_ITERATE_BACKWARDS_DECL)
< prev index next >