hotspot Udiff src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp (original) (raw)

< prev index next >

Print this page


@@ -949,16 +949,21 @@ public: FollowStackClosure(ParCompactionManager* cm) : _compaction_manager(cm) { } virtual void do_void(); };

};

class AdjustKlassClosure : public KlassClosure { public: void do_klass(Klass* klass);


@@ -1137,17 +1142,22 @@

// Reset time since last full gc static void reset_millis_since_last_gc();

public:

};

// The one and only place to start following the classes. // Should only be applied to the ClassLoaderData klasses list. class FollowKlassClosure : public KlassClosure {


@@ -1175,11 +1185,13 @@ // at a pointer where it would be appropriate to return a JNI_ENOMEM // in the event of a failure. static bool initialize();

// Closure accessors


@@ -1331,43 +1343,10 @@ inline bool PSParallelCompact::is_marked(oop obj) { return mark_bitmap()->is_marked(obj); } template -inline void PSParallelCompact::mark_and_push(ParCompactionManager* cm, T* p) { - T heap_oop = oopDesc::load_heap_oop(p); - if (!oopDesc::is_null(heap_oop)) { - oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); - if (mark_bitmap()->is_unmarked(obj) && mark_obj(obj)) { - cm->push(obj); - } - } -}

-template -inline void PSParallelCompact::adjust_pointer(T* p) { - T heap_oop = oopDesc::load_heap_oop(p); - if (!oopDesc::is_null(heap_oop)) { - oop obj = oopDesc::decode_heap_oop_not_null(heap_oop); - oop new_obj = (oop)summary_data().calc_new_pointer(obj); - assert(new_obj != NULL, // is forwarding ptr? - "should be forwarded"); - // Just always do the update unconditionally? - if (new_obj != NULL) { - assert(Universe::heap()->is_in_reserved(new_obj), - "should be in object space"); - oopDesc::encode_store_heap_oop_not_null(p, new_obj); - } - } -}

-inline void PSParallelCompact::follow_klass(ParCompactionManager* cm, Klass* klass) { - oop holder = klass->klass_holder(); - PSParallelCompact::mark_and_push(cm, &holder); -}

-template inline void PSParallelCompact::KeepAliveClosure::do_oop_work(T* p) { mark_and_push(_compaction_manager, p); }

inline bool PSParallelCompact::print_phases() {

< prev index next >