hotspot Udiff src/share/vm/oops/instanceMirrorKlass.cpp (original) (raw)

< prev index next >

Print this page


@@ -23,330 +23,24 @@ */ #include "precompiled.hpp" #include "classfile/javaClasses.hpp" #include "classfile/systemDictionary.hpp" -#include "gc_implementation/shared/markSweep.inline.hpp" #include "gc_interface/collectedHeap.inline.hpp" -#include "memory/genOopClosures.inline.hpp" #include "memory/iterator.inline.hpp" #include "memory/oopFactory.hpp" #include "memory/specialized_oop_closures.hpp" #include "oops/instanceKlass.hpp" #include "oops/instanceMirrorKlass.hpp" #include "oops/instanceOop.hpp" #include "oops/oop.inline.hpp" #include "oops/symbol.hpp" #include "runtime/handles.inline.hpp" #include "utilities/macros.hpp" -#if INCLUDE_ALL_GCS -#include "gc_implementation/concurrentMarkSweep/cmsOopClosures.inline.hpp" -#include "gc_implementation/g1/g1CollectedHeap.inline.hpp" -#include "gc_implementation/g1/g1OopClosures.inline.hpp" -#include "gc_implementation/g1/g1RemSet.inline.hpp" -#include "gc_implementation/g1/heapRegionManager.inline.hpp" -#include "gc_implementation/parNew/parOopClosures.inline.hpp" -#include "gc_implementation/parallelScavenge/psPromotionManager.inline.hpp" -#include "gc_implementation/parallelScavenge/psScavenge.inline.hpp" -#endif // INCLUDE_ALL_GCS int InstanceMirrorKlass::_offset_of_static_fields = 0; -#ifdef ASSERT -template void assert_is_in(T *p) { - T heap_oop = oopDesc::load_heap_oop(p); - if (!oopDesc::is_null(heap_oop)) { - oop o = oopDesc::decode_heap_oop_not_null(heap_oop); - assert(Universe::heap()->is_in(o), "should be in heap"); - } -} -template void assert_is_in_closed_subset(T *p) { - T heap_oop = oopDesc::load_heap_oop(p); - if (!oopDesc::is_null(heap_oop)) { - oop o = oopDesc::decode_heap_oop_not_null(heap_oop); - assert(Universe::heap()->is_in_closed_subset(o), "should be in closed"); - } -} -template void assert_is_in_reserved(T *p) { - T heap_oop = oopDesc::load_heap_oop(p); - if (!oopDesc::is_null(heap_oop)) { - oop o = oopDesc::decode_heap_oop_not_null(heap_oop); - assert(Universe::heap()->is_in_reserved(o), "should be in reserved"); - } -} -template void assert_nothing(T *p) {}

-#else -template void assert_is_in(T *p) {} -template void assert_is_in_closed_subset(T *p) {} -template void assert_is_in_reserved(T *p) {} -template void assert_nothing(T *p) {} -#endif // ASSERT

-#define InstanceMirrorKlass_SPECIALIZED_OOP_ITERATE(
- T, start_p, count, do_oop,
- assert_fn)
-{
- T* p = (T*)(start_p);
- T* const end = p + (count);
- while (p < end) {
- (assert_fn)(p);
- do_oop;
- ++p;
- }
-}

-#define InstanceMirrorKlass_SPECIALIZED_BOUNDED_OOP_ITERATE(
- T, start_p, count, low, high,
- do_oop, assert_fn)
-{
- T* const l = (T*)(low);
- T* const h = (T*)(high);
- assert(mask_bits((intptr_t)l, sizeof(T)-1) == 0 &&
- mask_bits((intptr_t)h, sizeof(T)-1) == 0,
- "bounded region must be properly aligned");
- T* p = (T*)(start_p);
- T* end = p + (count);
- if (p < l) p = l;
- if (end > h) end = h;
- while (p < end) {
- (assert_fn)(p);
- do_oop;
- ++p;
- }
-}

-{
- if (UseCompressedOops) {
- InstanceMirrorKlass_SPECIALIZED_OOP_ITERATE(narrowOop,
- start_p, count,
- do_oop, assert_fn)
- } else {
- InstanceMirrorKlass_SPECIALIZED_OOP_ITERATE(oop,
- start_p, count,
- do_oop, assert_fn)
- }
-}

-// The following macros call specialized macros, passing either oop or -// narrowOop as the specialization type. These test the UseCompressedOops -// flag. -#define InstanceMirrorKlass_BOUNDED_OOP_ITERATE(start_p, count, low, high,
- do_oop, assert_fn)
-{
- if (UseCompressedOops) {
- InstanceMirrorKlass_SPECIALIZED_BOUNDED_OOP_ITERATE(narrowOop,
- start_p, count,
- low, high,
- do_oop, assert_fn)
- } else {
- InstanceMirrorKlass_SPECIALIZED_BOUNDED_OOP_ITERATE(oop,
- start_p, count,
- low, high,
- do_oop, assert_fn)
- }
-}

-}

-#if INCLUDE_ALL_GCS -void InstanceMirrorKlass::oop_follow_contents(ParCompactionManager* cm, - oop obj) { - InstanceKlass::oop_follow_contents(cm, obj);

-} -#endif // INCLUDE_ALL_GCS

-int InstanceMirrorKlass::oop_adjust_pointers(oop obj) { - int size = oop_size(obj); - InstanceKlass::oop_adjust_pointers(obj);

-int InstanceMirrorKlass::
-oop_oop_iterate##nv_suffix(oop obj, OopClosureType* closure) {
- /* Get size before changing pointers /
- InstanceKlass::oop_oop_iterate##nv_suffix(obj, closure);
-
- if_do_metadata_checked(closure, nv_suffix) {
- Klass
klass = java_lang_Class::as_Klass(obj);
- /* We'll get NULL for primitive mirrors. */
- if (klass != NULL) {
- closure->do_klass##nv_suffix(klass);
- }
- }
-
- if (UseCompressedOops) {
- InstanceMirrorKlass_SPECIALIZED_OOP_ITERATE_DEFN(narrowOop, nv_suffix);
- } else {
- InstanceMirrorKlass_SPECIALIZED_OOP_ITERATE_DEFN(oop, nv_suffix);
- }
-}

-#if INCLUDE_ALL_GCS -#define InstanceMirrorKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN(OopClosureType, nv_suffix)
-
-int InstanceMirrorKlass::
-oop_oop_iterate_backwards##nv_suffix(oop obj, OopClosureType* closure) {
- /* Get size before changing pointers */
- InstanceKlass::oop_oop_iterate_backwards##nv_suffix(obj, closure);
-
- if (UseCompressedOops) {
- InstanceMirrorKlass_SPECIALIZED_OOP_ITERATE_DEFN(narrowOop, nv_suffix);
- } else {
- InstanceMirrorKlass_SPECIALIZED_OOP_ITERATE_DEFN(oop, nv_suffix);
- }
-} -#endif // INCLUDE_ALL_GCS

-int InstanceMirrorKlass::
-oop_oop_iterate##nv_suffix##_m(oop obj,
- OopClosureType* closure,
- MemRegion mr) {
- InstanceKlass::oop_oop_iterate##nv_suffix##_m(obj, closure, mr);
-
- if_do_metadata_checked(closure, nv_suffix) {
- if (mr.contains(obj)) {
- Klass* klass = java_lang_Class::as_Klass(obj);
- /* We'll get NULL for primitive mirrors. */
- if (klass != NULL) {
- closure->do_klass##nv_suffix(klass);
- }
- }
- }
-
- if (UseCompressedOops) {
- InstanceMirrorKlass_BOUNDED_SPECIALIZED_OOP_ITERATE(narrowOop, nv_suffix, mr);
- } else {
- InstanceMirrorKlass_BOUNDED_SPECIALIZED_OOP_ITERATE(oop, nv_suffix, mr);
- }
-}

-ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceMirrorKlass_OOP_OOP_ITERATE_DEFN) -ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceMirrorKlass_OOP_OOP_ITERATE_DEFN) -#if INCLUDE_ALL_GCS -ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceMirrorKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN) -ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceMirrorKlass_OOP_OOP_ITERATE_BACKWARDS_DEFN) -#endif // INCLUDE_ALL_GCS -ALL_OOP_OOP_ITERATE_CLOSURES_1(InstanceMirrorKlass_OOP_OOP_ITERATE_DEFN_m) -ALL_OOP_OOP_ITERATE_CLOSURES_2(InstanceMirrorKlass_OOP_OOP_ITERATE_DEFN_m)

-#if INCLUDE_ALL_GCS -void InstanceMirrorKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { - // Note that we don't have to follow the mirror -> klass pointer, since all - // klasses that are dirty will be scavenged when we iterate over the - // ClassLoaderData objects.

-}

-int InstanceMirrorKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { - int size = oop_size(obj); - InstanceKlass::oop_update_pointers(cm, obj);

< prev index next >