提交 2b4c6b63 编写于 作者: S stefank

7014851: Remove unused parallel compaction code

Summary: Removed.
Reviewed-by: jcoomes, brutisso
上级 251d4f53
/* /*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -1196,11 +1196,6 @@ class PSParallelCompact : AllStatic { ...@@ -1196,11 +1196,6 @@ class PSParallelCompact : AllStatic {
static inline void adjust_pointer(oop* p) { adjust_pointer(p, false); } static inline void adjust_pointer(oop* p) { adjust_pointer(p, false); }
static inline void adjust_pointer(narrowOop* p) { adjust_pointer(p, false); } static inline void adjust_pointer(narrowOop* p) { adjust_pointer(p, false); }
template <class T>
static inline void adjust_pointer(T* p,
HeapWord* beg_addr,
HeapWord* end_addr);
// Reference Processing // Reference Processing
static ReferenceProcessor* const ref_processor() { return _ref_processor; } static ReferenceProcessor* const ref_processor() { return _ref_processor; }
...@@ -1408,15 +1403,6 @@ inline bool PSParallelCompact::should_update_klass(klassOop k) { ...@@ -1408,15 +1403,6 @@ inline bool PSParallelCompact::should_update_klass(klassOop k) {
return ((HeapWord*) k) >= dense_prefix(perm_space_id); return ((HeapWord*) k) >= dense_prefix(perm_space_id);
} }
template <class T>
inline void PSParallelCompact::adjust_pointer(T* p,
HeapWord* beg_addr,
HeapWord* end_addr) {
if (is_in((HeapWord*)p, beg_addr, end_addr)) {
adjust_pointer(p);
}
}
#ifdef ASSERT #ifdef ASSERT
inline void inline void
PSParallelCompact::check_new_location(HeapWord* old_addr, HeapWord* new_addr) PSParallelCompact::check_new_location(HeapWord* old_addr, HeapWord* new_addr)
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -128,27 +128,6 @@ int arrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -128,27 +128,6 @@ int arrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
} }
return klassKlass::oop_update_pointers(cm, obj); return klassKlass::oop_update_pointers(cm, obj);
} }
int
arrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
assert(obj->is_klass(), "must be klass");
arrayKlass* ak = arrayKlass::cast(klassOop(obj));
oop* p;
p = ak->adr_component_mirror();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
p = ak->adr_lower_dimension();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
p = ak->adr_higher_dimension();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
{
HandleMark hm;
ak->vtable()->oop_update_pointers(cm, beg_addr, end_addr);
}
return klassKlass::oop_update_pointers(cm, obj, beg_addr, end_addr);
}
#endif // SERIALGC #endif // SERIALGC
// Printing // Printing
......
/* /*
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -145,21 +145,6 @@ int compiledICHolderKlass::oop_update_pointers(ParCompactionManager* cm, ...@@ -145,21 +145,6 @@ int compiledICHolderKlass::oop_update_pointers(ParCompactionManager* cm,
PSParallelCompact::adjust_pointer(c->adr_holder_klass()); PSParallelCompact::adjust_pointer(c->adr_holder_klass());
return c->object_size(); return c->object_size();
} }
int compiledICHolderKlass::oop_update_pointers(ParCompactionManager* cm,
oop obj,
HeapWord* beg_addr,
HeapWord* end_addr) {
assert(obj->is_compiledICHolder(), "must be compiledICHolder");
compiledICHolderOop c = compiledICHolderOop(obj);
oop* p;
p = c->adr_holder_method();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
p = c->adr_holder_klass();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
return c->object_size();
}
#endif // SERIALGC #endif // SERIALGC
// Printing // Printing
......
/* /*
* Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -184,21 +184,6 @@ int constMethodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -184,21 +184,6 @@ int constMethodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
} }
return cm_oop->object_size(); return cm_oop->object_size();
} }
int constMethodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr,
HeapWord* end_addr) {
assert(obj->is_constMethod(), "should be constMethod");
constMethodOop cm_oop = constMethodOop(obj);
oop* const beg_oop = MAX2((oop*)beg_addr, cm_oop->oop_block_beg());
oop* const end_oop = MIN2((oop*)end_addr, cm_oop->oop_block_end());
for (oop* cur_oop = beg_oop; cur_oop < end_oop; ++cur_oop) {
PSParallelCompact::adjust_pointer(cur_oop);
}
return cm_oop->object_size();
}
#endif // SERIALGC #endif // SERIALGC
// Printing // Printing
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -279,40 +279,6 @@ int constantPoolKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -279,40 +279,6 @@ int constantPoolKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
return cp->object_size(); return cp->object_size();
} }
int
constantPoolKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
assert (obj->is_constantPool(), "obj must be constant pool");
constantPoolOop cp = (constantPoolOop) obj;
// If the tags array is null we are in the middle of allocating this constant
// pool.
if (cp->tags() != NULL) {
oop* base = (oop*)cp->base();
oop* const beg_oop = MAX2((oop*)beg_addr, base);
oop* const end_oop = MIN2((oop*)end_addr, base + cp->length());
const size_t beg_idx = pointer_delta(beg_oop, base, sizeof(oop*));
const size_t end_idx = pointer_delta(end_oop, base, sizeof(oop*));
for (size_t cur_idx = beg_idx; cur_idx < end_idx; ++cur_idx, ++base) {
if (cp->is_pointer_entry(int(cur_idx))) {
PSParallelCompact::adjust_pointer(base);
}
}
}
oop* p;
p = cp->tags_addr();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
p = cp->cache_addr();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
p = cp->operands_addr();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
p = cp->pool_holder_addr();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
return cp->object_size();
}
void constantPoolKlass::oop_push_contents(PSPromotionManager* pm, oop obj) { void constantPoolKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
assert(obj->is_constantPool(), "should be constant pool"); assert(obj->is_constantPool(), "should be constant pool");
constantPoolOop cp = (constantPoolOop) obj; constantPoolOop cp = (constantPoolOop) obj;
......
/* /*
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -203,25 +203,6 @@ constantPoolCacheKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -203,25 +203,6 @@ constantPoolCacheKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
return cache->object_size(); return cache->object_size();
} }
int
constantPoolCacheKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr,
HeapWord* end_addr) {
assert(obj->is_constantPoolCache(), "obj must be constant pool cache");
constantPoolCacheOop cache = (constantPoolCacheOop)obj;
// Iteration over constant pool cache instance variables
oop* p;
p = (oop*)cache->constant_pool_addr();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
// Iteration over constant pool cache entries
for (int i = 0; i < cache->length(); ++i) {
cache->entry_at(i)->update_pointers(beg_addr, end_addr);
}
return cache->object_size();
}
#endif // SERIALGC #endif // SERIALGC
void constantPoolCacheKlass::oop_print_on(oop obj, outputStream* st) { void constantPoolCacheKlass::oop_print_on(oop obj, outputStream* st) {
......
/* /*
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -368,16 +368,6 @@ void ConstantPoolCacheEntry::update_pointers() { ...@@ -368,16 +368,6 @@ void ConstantPoolCacheEntry::update_pointers() {
PSParallelCompact::adjust_pointer((oop*)&_f2); PSParallelCompact::adjust_pointer((oop*)&_f2);
} }
} }
void ConstantPoolCacheEntry::update_pointers(HeapWord* beg_addr,
HeapWord* end_addr) {
assert(in_words(size()) == 4, "check code below - may need adjustment");
// field[1] is always oop or NULL
PSParallelCompact::adjust_pointer((oop*)&_f1, beg_addr, end_addr);
if (is_vfinal()) {
PSParallelCompact::adjust_pointer((oop*)&_f2, beg_addr, end_addr);
}
}
#endif // SERIALGC #endif // SERIALGC
// RedefineClasses() API support: // RedefineClasses() API support:
......
/* /*
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -287,7 +287,6 @@ class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC { ...@@ -287,7 +287,6 @@ class ConstantPoolCacheEntry VALUE_OBJ_CLASS_SPEC {
#endif // SERIALGC #endif // SERIALGC
void update_pointers(); void update_pointers();
void update_pointers(HeapWord* beg_addr, HeapWord* end_addr);
// RedefineClasses() API support: // RedefineClasses() API support:
// If this constantPoolCacheEntry refers to old_method then update it // If this constantPoolCacheEntry refers to old_method then update it
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -1736,14 +1736,6 @@ void instanceKlass::update_static_fields() { ...@@ -1736,14 +1736,6 @@ void instanceKlass::update_static_fields() {
PSParallelCompact::adjust_pointer(p), \ PSParallelCompact::adjust_pointer(p), \
assert_nothing) assert_nothing)
} }
void instanceKlass::update_static_fields(HeapWord* beg_addr, HeapWord* end_addr) {
InstanceKlass_BOUNDED_OOP_ITERATE( \
start_of_static_fields(), static_oop_field_size(), \
beg_addr, end_addr, \
PSParallelCompact::adjust_pointer(p), \
assert_nothing )
}
#endif // SERIALGC #endif // SERIALGC
void instanceKlass::oop_follow_contents(oop obj) { void instanceKlass::oop_follow_contents(oop obj) {
...@@ -1876,15 +1868,6 @@ int instanceKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -1876,15 +1868,6 @@ int instanceKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
return size_helper(); return size_helper();
} }
int instanceKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
InstanceKlass_BOUNDED_OOP_MAP_ITERATE( \
obj, beg_addr, end_addr, \
PSParallelCompact::adjust_pointer(p), \
assert_nothing)
return size_helper();
}
void instanceKlass::push_static_fields(PSPromotionManager* pm) { void instanceKlass::push_static_fields(PSPromotionManager* pm) {
InstanceKlass_OOP_ITERATE( \ InstanceKlass_OOP_ITERATE( \
start_of_static_fields(), static_oop_field_size(), \ start_of_static_fields(), static_oop_field_size(), \
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -740,7 +740,6 @@ class instanceKlass: public Klass { ...@@ -740,7 +740,6 @@ class instanceKlass: public Klass {
void follow_static_fields(ParCompactionManager* cm); void follow_static_fields(ParCompactionManager* cm);
void copy_static_fields(ParCompactionManager* cm); void copy_static_fields(ParCompactionManager* cm);
void update_static_fields(); void update_static_fields();
void update_static_fields(HeapWord* beg_addr, HeapWord* end_addr);
#endif // SERIALGC #endif // SERIALGC
// Naming // Naming
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -353,35 +353,6 @@ int instanceKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -353,35 +353,6 @@ int instanceKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
return ik->object_size(); return ik->object_size();
} }
int instanceKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr,
HeapWord* end_addr) {
assert(obj->is_klass(),"must be a klass");
assert(klassOop(obj)->klass_part()->oop_is_instance_slow(),
"must be instance klass");
instanceKlass* ik = instanceKlass::cast(klassOop(obj));
ik->update_static_fields(beg_addr, end_addr);
ik->vtable()->oop_update_pointers(cm, beg_addr, end_addr);
ik->itable()->oop_update_pointers(cm, beg_addr, end_addr);
oop* const beg_oop = MAX2((oop*)beg_addr, ik->oop_block_beg());
oop* const end_oop = MIN2((oop*)end_addr, ik->oop_block_end());
for (oop* cur_oop = beg_oop; cur_oop < end_oop; ++cur_oop) {
PSParallelCompact::adjust_pointer(cur_oop);
}
// The oop_map_cache, jni_ids and jni_id_map are allocated from the C heap,
// and so don't lie within any 'Chunk' boundaries. Update them when the
// lowest addressed oop in the instanceKlass 'oop_block' is updated.
if (beg_oop == ik->oop_block_beg()) {
OopClosure* closure = PSParallelCompact::adjust_root_pointer_closure();
iterate_c_heap_oops(ik, closure);
}
klassKlass::oop_update_pointers(cm, obj, beg_addr, end_addr);
return ik->object_size();
}
#endif // SERIALGC #endif // SERIALGC
klassOop klassOop
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -344,33 +344,6 @@ int instanceRefKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -344,33 +344,6 @@ int instanceRefKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
} }
return size_helper(); return size_helper();
} }
template <class T> void
specialized_oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
T* p;
T* referent_addr = p = (T*)java_lang_ref_Reference::referent_addr(obj);
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
T* next_addr = p = (T*)java_lang_ref_Reference::next_addr(obj);
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
T* discovered_addr = p = (T*)java_lang_ref_Reference::discovered_addr(obj);
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
debug_only(trace_reference_gc("instanceRefKlass::oop_update_ptrs", obj,
referent_addr, next_addr, discovered_addr);)
}
int
instanceRefKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
instanceKlass::oop_update_pointers(cm, obj, beg_addr, end_addr);
if (UseCompressedOops) {
specialized_oop_update_pointers<narrowOop>(cm, obj, beg_addr, end_addr);
} else {
specialized_oop_update_pointers<oop>(cm, obj, beg_addr, end_addr);
}
return size_helper();
}
#endif // SERIALGC #endif // SERIALGC
void instanceRefKlass::update_nonstatic_oop_maps(klassOop k) { void instanceRefKlass::update_nonstatic_oop_maps(klassOop k) {
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -188,19 +188,6 @@ int klassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -188,19 +188,6 @@ int klassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
return oop_size(obj); return oop_size(obj);
} }
int klassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
Klass* k = Klass::cast(klassOop(obj));
oop* const beg_oop = MAX2((oop*)beg_addr, k->oop_block_beg());
oop* const end_oop = MIN2((oop*)end_addr, k->oop_block_end());
for (oop* cur_oop = beg_oop; cur_oop < end_oop; ++cur_oop) {
PSParallelCompact::adjust_pointer(cur_oop);
}
return oop_size(obj);
}
#endif // SERIALGC #endif // SERIALGC
......
/* /*
* Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -37,17 +37,13 @@ ...@@ -37,17 +37,13 @@
objects that do (or may) cross chunk boundaries; it updates only those \ objects that do (or may) cross chunk boundaries; it updates only those \
oops that are in the region [beg_addr, end_addr). */ \ oops that are in the region [beg_addr, end_addr). */ \
virtual void oop_follow_contents(ParCompactionManager* cm, oop obj); \ virtual void oop_follow_contents(ParCompactionManager* cm, oop obj); \
virtual int oop_update_pointers(ParCompactionManager* cm, oop obj); \ virtual int oop_update_pointers(ParCompactionManager* cm, oop obj);
virtual int oop_update_pointers(ParCompactionManager* cm, oop obj, \
HeapWord* beg_addr, HeapWord* end_addr);
// Pure virtual version for klass.hpp // Pure virtual version for klass.hpp
#define PARALLEL_GC_DECLS_PV \ #define PARALLEL_GC_DECLS_PV \
virtual void oop_push_contents(PSPromotionManager* pm, oop obj) = 0; \ virtual void oop_push_contents(PSPromotionManager* pm, oop obj) = 0; \
virtual void oop_follow_contents(ParCompactionManager* cm, oop obj) = 0; \ virtual void oop_follow_contents(ParCompactionManager* cm, oop obj) = 0; \
virtual int oop_update_pointers(ParCompactionManager* cm, oop obj) = 0; \ virtual int oop_update_pointers(ParCompactionManager* cm, oop obj) = 0;
virtual int oop_update_pointers(ParCompactionManager* cm, oop obj, \
HeapWord* beg_addr, HeapWord* end_addr) = 0;
#else // SERIALGC #else // SERIALGC
#define PARALLEL_GC_DECLS #define PARALLEL_GC_DECLS
#define PARALLEL_GC_DECLS_PV #define PARALLEL_GC_DECLS_PV
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -677,25 +677,6 @@ void klassVtable::oop_update_pointers(ParCompactionManager* cm) { ...@@ -677,25 +677,6 @@ void klassVtable::oop_update_pointers(ParCompactionManager* cm) {
PSParallelCompact::adjust_pointer(adr_method_at(i)); PSParallelCompact::adjust_pointer(adr_method_at(i));
} }
} }
void klassVtable::oop_update_pointers(ParCompactionManager* cm,
HeapWord* beg_addr, HeapWord* end_addr) {
const int n = length();
const int entry_size = vtableEntry::size();
int beg_idx = 0;
HeapWord* const method_0 = (HeapWord*)adr_method_at(0);
if (beg_addr > method_0) {
// it's safe to use cast, as we have guarantees on vtable size to be sane
beg_idx = int((pointer_delta(beg_addr, method_0) + entry_size - 1) / entry_size);
}
oop* const beg_oop = adr_method_at(beg_idx);
oop* const end_oop = MIN2((oop*)end_addr, adr_method_at(n));
for (oop* cur_oop = beg_oop; cur_oop < end_oop; cur_oop += entry_size) {
PSParallelCompact::adjust_pointer(cur_oop);
}
}
#endif // SERIALGC #endif // SERIALGC
// Iterators // Iterators
...@@ -820,25 +801,6 @@ void klassItable::oop_update_pointers(ParCompactionManager* cm) { ...@@ -820,25 +801,6 @@ void klassItable::oop_update_pointers(ParCompactionManager* cm) {
ime++; ime++;
} }
} }
void klassItable::oop_update_pointers(ParCompactionManager* cm,
HeapWord* beg_addr, HeapWord* end_addr) {
// offset table
itableOffsetEntry* ioe = offset_entry(0);
for(int i = 0; i < _size_offset_table; i++) {
oop* p = (oop*)&ioe->_interface;
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
ioe++;
}
// method table
itableMethodEntry* ime = method_entry(0);
for(int j = 0; j < _size_method_table; j++) {
oop* p = (oop*)&ime->_method;
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
ime++;
}
}
#endif // SERIALGC #endif // SERIALGC
// Iterators // Iterators
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -99,8 +99,6 @@ class klassVtable : public ResourceObj { ...@@ -99,8 +99,6 @@ class klassVtable : public ResourceObj {
// Parallel Old // Parallel Old
void oop_follow_contents(ParCompactionManager* cm); void oop_follow_contents(ParCompactionManager* cm);
void oop_update_pointers(ParCompactionManager* cm); void oop_update_pointers(ParCompactionManager* cm);
void oop_update_pointers(ParCompactionManager* cm,
HeapWord* beg_addr, HeapWord* end_addr);
#endif // SERIALGC #endif // SERIALGC
// Iterators // Iterators
...@@ -295,8 +293,6 @@ class klassItable : public ResourceObj { ...@@ -295,8 +293,6 @@ class klassItable : public ResourceObj {
// Parallel Old // Parallel Old
void oop_follow_contents(ParCompactionManager* cm); void oop_follow_contents(ParCompactionManager* cm);
void oop_update_pointers(ParCompactionManager* cm); void oop_update_pointers(ParCompactionManager* cm);
void oop_update_pointers(ParCompactionManager* cm,
HeapWord* beg_addr, HeapWord* end_addr);
#endif // SERIALGC #endif // SERIALGC
// Iterators // Iterators
......
/* /*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -188,25 +188,6 @@ int methodDataKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -188,25 +188,6 @@ int methodDataKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
} }
return m->object_size(); return m->object_size();
} }
int
methodDataKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
assert(obj->is_methodData(), "should be method data");
oop* p;
methodDataOop m = methodDataOop(obj);
p = m->adr_method();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
ResourceMark rm;
ProfileData* data;
for (data = m->first_data(); m->is_valid(data); data = m->next_data(data)) {
data->update_pointers(beg_addr, end_addr);
}
return m->object_size();
}
#endif // SERIALGC #endif // SERIALGC
#ifndef PRODUCT #ifndef PRODUCT
......
...@@ -271,17 +271,6 @@ void ReceiverTypeData::update_pointers() { ...@@ -271,17 +271,6 @@ void ReceiverTypeData::update_pointers() {
} }
} }
} }
void ReceiverTypeData::update_pointers(HeapWord* beg_addr, HeapWord* end_addr) {
// The loop bounds could be computed based on beg_addr/end_addr and the
// boundary test hoisted outside the loop (see klassVTable for an example);
// however, row_limit() is small enough (2) to make that less efficient.
for (uint row = 0; row < row_limit(); row++) {
if (receiver_unchecked(row) != NULL) {
PSParallelCompact::adjust_pointer(adr_receiver(row), beg_addr, end_addr);
}
}
}
#endif // SERIALGC #endif // SERIALGC
#ifndef PRODUCT #ifndef PRODUCT
......
/* /*
* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -452,7 +452,6 @@ public: ...@@ -452,7 +452,6 @@ public:
// Parallel old support // Parallel old support
virtual void follow_contents(ParCompactionManager* cm) {} virtual void follow_contents(ParCompactionManager* cm) {}
virtual void update_pointers() {} virtual void update_pointers() {}
virtual void update_pointers(HeapWord* beg_addr, HeapWord* end_addr) {}
#endif // SERIALGC #endif // SERIALGC
// CI translation: ProfileData can represent both MethodDataOop data // CI translation: ProfileData can represent both MethodDataOop data
...@@ -748,7 +747,6 @@ public: ...@@ -748,7 +747,6 @@ public:
// Parallel old support // Parallel old support
virtual void follow_contents(ParCompactionManager* cm); virtual void follow_contents(ParCompactionManager* cm);
virtual void update_pointers(); virtual void update_pointers();
virtual void update_pointers(HeapWord* beg_addr, HeapWord* end_addr);
#endif // SERIALGC #endif // SERIALGC
oop* adr_receiver(uint row) { oop* adr_receiver(uint row) {
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -214,27 +214,6 @@ int methodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -214,27 +214,6 @@ int methodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
#endif // COMPILER2 #endif // COMPILER2
return m->object_size(); return m->object_size();
} }
int methodKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
assert(obj->is_method(), "should be method");
oop* p;
methodOop m = methodOop(obj);
p = m->adr_constMethod();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
p = m->adr_constants();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
#ifdef COMPILER2
if (m->method_data() != NULL) {
p = m->adr_method_data();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
}
#endif // COMPILER2
return m->object_size();
}
#endif // SERIALGC #endif // SERIALGC
#ifndef PRODUCT #ifndef PRODUCT
......
...@@ -470,16 +470,6 @@ int objArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -470,16 +470,6 @@ int objArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
ObjArrayKlass_OOP_ITERATE(a, p, PSParallelCompact::adjust_pointer(p)) ObjArrayKlass_OOP_ITERATE(a, p, PSParallelCompact::adjust_pointer(p))
return a->object_size(); return a->object_size();
} }
int objArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
assert (obj->is_objArray(), "obj must be obj array");
objArrayOop a = objArrayOop(obj);
ObjArrayKlass_BOUNDED_OOP_ITERATE( \
a, p, beg_addr, end_addr, \
PSParallelCompact::adjust_pointer(p))
return a->object_size();
}
#endif // SERIALGC #endif // SERIALGC
// JVM support // JVM support
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -254,22 +254,6 @@ int objArrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -254,22 +254,6 @@ int objArrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
return arrayKlassKlass::oop_update_pointers(cm, obj); return arrayKlassKlass::oop_update_pointers(cm, obj);
} }
int objArrayKlassKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr,
HeapWord* end_addr) {
assert(obj->is_klass(), "must be klass");
assert(klassOop(obj)->klass_part()->oop_is_objArray_slow(), "must be obj array");
oop* p;
objArrayKlass* oak = objArrayKlass::cast((klassOop)obj);
p = oak->element_klass_addr();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
p = oak->bottom_klass_addr();
PSParallelCompact::adjust_pointer(p, beg_addr, end_addr);
return arrayKlassKlass::oop_update_pointers(cm, obj, beg_addr, end_addr);
}
#endif // SERIALGC #endif // SERIALGC
#ifndef PRODUCT #ifndef PRODUCT
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -322,13 +322,6 @@ class oopDesc { ...@@ -322,13 +322,6 @@ class oopDesc {
// Parallel Old // Parallel Old
void update_contents(ParCompactionManager* cm); void update_contents(ParCompactionManager* cm);
void update_contents(ParCompactionManager* cm,
HeapWord* begin_limit,
HeapWord* end_limit);
void update_contents(ParCompactionManager* cm,
klassOop old_klass,
HeapWord* begin_limit,
HeapWord* end_limit);
void follow_contents(ParCompactionManager* cm); void follow_contents(ParCompactionManager* cm);
void follow_header(ParCompactionManager* cm); void follow_header(ParCompactionManager* cm);
...@@ -369,7 +362,6 @@ class oopDesc { ...@@ -369,7 +362,6 @@ class oopDesc {
#ifndef SERIALGC #ifndef SERIALGC
// Parallel old // Parallel old
void update_header(); void update_header();
void update_header(HeapWord* beg_addr, HeapWord* end_addr);
#endif // SERIALGC #endif // SERIALGC
// mark-sweep support // mark-sweep support
......
/* /*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -57,41 +57,6 @@ inline void oopDesc::update_contents(ParCompactionManager* cm) { ...@@ -57,41 +57,6 @@ inline void oopDesc::update_contents(ParCompactionManager* cm) {
// Else skip it. The typeArrayKlass in the header never needs scavenging. // Else skip it. The typeArrayKlass in the header never needs scavenging.
} }
inline void oopDesc::update_contents(ParCompactionManager* cm,
HeapWord* begin_limit,
HeapWord* end_limit) {
// The klass field must be updated before anything else
// can be done.
debug_only(klassOopDesc* original_klass = klass());
update_contents(cm, klass(), begin_limit, end_limit);
}
inline void oopDesc::update_contents(ParCompactionManager* cm,
klassOop old_klass,
HeapWord* begin_limit,
HeapWord* end_limit) {
klassOop updated_klass =
PSParallelCompact::summary_data().calc_new_klass(old_klass);
// Needs to be boundary aware for the 64 bit case
// update_header();
// The klass has moved. Is the location of the klass
// within the limits?
if ((((HeapWord*)&_metadata._klass) >= begin_limit) &&
(((HeapWord*)&_metadata._klass) < end_limit)) {
set_klass(updated_klass);
}
Klass* klass = updated_klass->klass_part();
if (!klass->oop_is_typeArray()) {
// It might contain oops beyond the header, so take the virtual call.
klass->oop_update_pointers(cm, this, begin_limit, end_limit);
}
// Else skip it. The typeArrayKlass in the header never needs scavenging.
}
inline void oopDesc::follow_contents(ParCompactionManager* cm) { inline void oopDesc::follow_contents(ParCompactionManager* cm) {
assert (PSParallelCompact::mark_bitmap()->is_marked(this), assert (PSParallelCompact::mark_bitmap()->is_marked(this),
"should be marked"); "should be marked");
...@@ -140,13 +105,4 @@ inline void oopDesc::update_header() { ...@@ -140,13 +105,4 @@ inline void oopDesc::update_header() {
} }
} }
inline void oopDesc::update_header(HeapWord* beg_addr, HeapWord* end_addr) {
if (UseCompressedOops) {
PSParallelCompact::adjust_pointer(compressed_klass_addr(),
beg_addr, end_addr);
} else {
PSParallelCompact::adjust_pointer(klass_addr(), beg_addr, end_addr);
}
}
#endif // SHARE_VM_OOPS_OOP_PCGC_INLINE_HPP #endif // SHARE_VM_OOPS_OOP_PCGC_INLINE_HPP
...@@ -250,13 +250,6 @@ typeArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) { ...@@ -250,13 +250,6 @@ typeArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj) {
assert(obj->is_typeArray(),"must be a type array"); assert(obj->is_typeArray(),"must be a type array");
return typeArrayOop(obj)->object_size(); return typeArrayOop(obj)->object_size();
} }
int
typeArrayKlass::oop_update_pointers(ParCompactionManager* cm, oop obj,
HeapWord* beg_addr, HeapWord* end_addr) {
assert(obj->is_typeArray(),"must be a type array");
return typeArrayOop(obj)->object_size();
}
#endif // SERIALGC #endif // SERIALGC
void typeArrayKlass::initialize(TRAPS) { void typeArrayKlass::initialize(TRAPS) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册