예제 #1
0
inline void oopDesc::oop_iterate_header(OopClosure* blk, MemRegion mr) {
  if (UseCompressedOops) {
    if (mr.contains(compressed_klass_addr())) {
      blk->do_oop(compressed_klass_addr());
    }
  } else {
    if (mr.contains(klass_addr())) blk->do_oop(klass_addr());
  }
}
예제 #2
0
inline void oopDesc::adjust_header() {
  if (UseCompressedOops) {
    MarkSweep::adjust_pointer(compressed_klass_addr());
  } else {
    MarkSweep::adjust_pointer(klass_addr());
  }
}
예제 #3
0
inline void oopDesc::oop_iterate_header(OopClosure* blk) {
  if (UseCompressedOops) {
    blk->do_oop(compressed_klass_addr());
  } else {
    blk->do_oop(klass_addr());
  }
}
예제 #4
0
inline void oopDesc::follow_header() {
  if (UseCompressedOops) {
    MarkSweep::mark_and_push(compressed_klass_addr());
  } else {
    MarkSweep::mark_and_push(klass_addr());
  }
}
void oopDesc::set_klass(Klass* k) {
  // since klasses are promoted no store check is needed
  assert(Universe::is_bootstrapping() || k != NULL, "must be a real Klass*");
  assert(Universe::is_bootstrapping() || k->is_klass(), "not a Klass*");
  if (UseCompressedClassPointers) {
    *compressed_klass_addr() = Klass::encode_klass_not_null(k);
  } else {
    *klass_addr() = k;
  }
}
예제 #6
0
inline void oopDesc::set_klass(klassOop k) {
  // since klasses are promoted no store check is needed
  assert(Universe::is_bootstrapping() || k != NULL, "must be a real klassOop");
  assert(Universe::is_bootstrapping() || k->is_klass(), "not a klassOop");
  if (UseCompressedOops) {
    oop_store_without_check(compressed_klass_addr(), (oop)k);
  } else {
    oop_store_without_check(klass_addr(), (oop) k);
  }
}