src/share/vm/oops/klassKlass.cpp

changeset 2658
c7f3d0b4570f
parent 2534
e5383553fd4e
     1.1 --- a/src/share/vm/oops/klassKlass.cpp	Fri Mar 18 15:52:42 2011 -0700
     1.2 +++ b/src/share/vm/oops/klassKlass.cpp	Fri Mar 18 16:00:34 2011 -0700
     1.3 @@ -41,6 +41,10 @@
     1.4  #include "oops/typeArrayKlass.hpp"
     1.5  #include "runtime/handles.inline.hpp"
     1.6  #ifndef SERIALGC
     1.7 +#include "gc_implementation/parNew/parOopClosures.inline.hpp"
     1.8 +#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp"
     1.9 +#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp"
    1.10 +#include "memory/cardTableRS.hpp"
    1.11  #include "oops/oop.pcgc.inline.hpp"
    1.12  #endif
    1.13  
    1.14 @@ -175,6 +179,12 @@
    1.15  
    1.16  #ifndef SERIALGC
    1.17  void klassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
    1.18 +  Klass* k = Klass::cast(klassOop(obj));
    1.19 +
    1.20 +  oop* p = k->adr_java_mirror();
    1.21 +  if (PSScavenge::should_scavenge(p)) {
    1.22 +    pm->claim_or_forward_depth(p);
    1.23 +  }
    1.24  }
    1.25  
    1.26  int klassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
    1.27 @@ -233,7 +243,7 @@
    1.28  
    1.29    if (k->java_mirror() != NULL || (k->oop_is_instance() && instanceKlass::cast(klassOop(obj))->is_loaded())) {
    1.30      guarantee(k->java_mirror() != NULL,          "should be allocated");
    1.31 -    guarantee(k->java_mirror()->is_perm(),       "should be in permspace");
    1.32 +    guarantee(k->java_mirror()->is_perm() || !JavaObjectsInPerm,       "should be in permspace");
    1.33      guarantee(k->java_mirror()->is_instance(),   "should be instance");
    1.34    }
    1.35  }

mercurial