hotspot/src/share/vm/oops/oop.pcgc.inline.hpp
changeset 360 21d113ecbf6a
parent 1 489c9b5090e2
child 670 ddf3e9583f2f
equal deleted inserted replaced
357:f4edb0d9f109 360:21d113ecbf6a
    65 
    65 
    66   // Needs to be boundary aware for the 64 bit case
    66   // Needs to be boundary aware for the 64 bit case
    67   // update_header();
    67   // update_header();
    68   // The klass has moved.  Is the location of the klass
    68   // The klass has moved.  Is the location of the klass
    69   // within the limits?
    69   // within the limits?
    70   if ((((HeapWord*)&_klass) >= begin_limit) &&
    70   if ((((HeapWord*)&_metadata._klass) >= begin_limit) &&
    71       (((HeapWord*)&_klass) < end_limit)) {
    71       (((HeapWord*)&_metadata._klass) < end_limit)) {
    72     set_klass(updated_klass);
    72     set_klass(updated_klass);
    73   }
    73   }
    74 
    74 
    75   Klass* klass = updated_klass->klass_part();
    75   Klass* klass = updated_klass->klass_part();
    76   if (!klass->oop_is_typeArray()) {
    76   if (!klass->oop_is_typeArray()) {
    87 }
    87 }
    88 
    88 
    89 // Used by parallel old GC.
    89 // Used by parallel old GC.
    90 
    90 
    91 inline void oopDesc::follow_header(ParCompactionManager* cm) {
    91 inline void oopDesc::follow_header(ParCompactionManager* cm) {
    92   PSParallelCompact::mark_and_push(cm, (oop*)&_klass);
    92   if (UseCompressedOops) {
       
    93     PSParallelCompact::mark_and_push(cm, compressed_klass_addr());
       
    94   } else {
       
    95     PSParallelCompact::mark_and_push(cm, klass_addr());
       
    96   }
    93 }
    97 }
    94 
    98 
    95 inline oop oopDesc::forward_to_atomic(oop p) {
    99 inline oop oopDesc::forward_to_atomic(oop p) {
    96   assert(ParNewGeneration::is_legal_forward_ptr(p),
   100   assert(ParNewGeneration::is_legal_forward_ptr(p),
    97          "illegal forwarding pointer value.");
   101          "illegal forwarding pointer value.");
   112   }
   116   }
   113   return forwardee();
   117   return forwardee();
   114 }
   118 }
   115 
   119 
   116 inline void oopDesc::update_header() {
   120 inline void oopDesc::update_header() {
   117   PSParallelCompact::adjust_pointer((oop*)&_klass);
   121   if (UseCompressedOops) {
       
   122     PSParallelCompact::adjust_pointer(compressed_klass_addr());
       
   123   } else {
       
   124     PSParallelCompact::adjust_pointer(klass_addr());
       
   125   }
   118 }
   126 }
   119 
   127 
   120 inline void oopDesc::update_header(HeapWord* beg_addr, HeapWord* end_addr) {
   128 inline void oopDesc::update_header(HeapWord* beg_addr, HeapWord* end_addr) {
   121   PSParallelCompact::adjust_pointer((oop*)&_klass, beg_addr, end_addr);
   129   if (UseCompressedOops) {
       
   130     PSParallelCompact::adjust_pointer(compressed_klass_addr(),
       
   131                                       beg_addr, end_addr);
       
   132   } else {
       
   133     PSParallelCompact::adjust_pointer(klass_addr(), beg_addr, end_addr);
       
   134   }
   122 }
   135 }