mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
This commit is contained in:
parent
680ecf1611
commit
4a831d45f0
273 changed files with 6585 additions and 2993 deletions
|
@ -286,17 +286,17 @@ void instanceKlassKlass::oop_copy_contents(PSPromotionManager* pm, oop obj) {
|
|||
ik->copy_static_fields(pm);
|
||||
|
||||
oop* loader_addr = ik->adr_class_loader();
|
||||
if (PSScavenge::should_scavenge(*loader_addr)) {
|
||||
if (PSScavenge::should_scavenge(loader_addr)) {
|
||||
pm->claim_or_forward_breadth(loader_addr);
|
||||
}
|
||||
|
||||
oop* pd_addr = ik->adr_protection_domain();
|
||||
if (PSScavenge::should_scavenge(*pd_addr)) {
|
||||
if (PSScavenge::should_scavenge(pd_addr)) {
|
||||
pm->claim_or_forward_breadth(pd_addr);
|
||||
}
|
||||
|
||||
oop* sg_addr = ik->adr_signers();
|
||||
if (PSScavenge::should_scavenge(*sg_addr)) {
|
||||
if (PSScavenge::should_scavenge(sg_addr)) {
|
||||
pm->claim_or_forward_breadth(sg_addr);
|
||||
}
|
||||
|
||||
|
@ -309,17 +309,17 @@ void instanceKlassKlass::oop_push_contents(PSPromotionManager* pm, oop obj) {
|
|||
ik->push_static_fields(pm);
|
||||
|
||||
oop* loader_addr = ik->adr_class_loader();
|
||||
if (PSScavenge::should_scavenge(*loader_addr)) {
|
||||
if (PSScavenge::should_scavenge(loader_addr)) {
|
||||
pm->claim_or_forward_depth(loader_addr);
|
||||
}
|
||||
|
||||
oop* pd_addr = ik->adr_protection_domain();
|
||||
if (PSScavenge::should_scavenge(*pd_addr)) {
|
||||
if (PSScavenge::should_scavenge(pd_addr)) {
|
||||
pm->claim_or_forward_depth(pd_addr);
|
||||
}
|
||||
|
||||
oop* sg_addr = ik->adr_signers();
|
||||
if (PSScavenge::should_scavenge(*sg_addr)) {
|
||||
if (PSScavenge::should_scavenge(sg_addr)) {
|
||||
pm->claim_or_forward_depth(sg_addr);
|
||||
}
|
||||
|
||||
|
@ -602,16 +602,18 @@ const char* instanceKlassKlass::internal_name() const {
|
|||
|
||||
// Verification
|
||||
|
||||
|
||||
class VerifyFieldClosure: public OopClosure {
|
||||
public:
|
||||
void do_oop(oop* p) {
|
||||
protected:
|
||||
template <class T> void do_oop_work(T* p) {
|
||||
guarantee(Universe::heap()->is_in(p), "should be in heap");
|
||||
guarantee((*p)->is_oop_or_null(), "should be in heap");
|
||||
oop obj = oopDesc::load_decode_heap_oop(p);
|
||||
guarantee(obj->is_oop_or_null(), "should be in heap");
|
||||
}
|
||||
public:
|
||||
virtual void do_oop(oop* p) { VerifyFieldClosure::do_oop_work(p); }
|
||||
virtual void do_oop(narrowOop* p) { VerifyFieldClosure::do_oop_work(p); }
|
||||
};
|
||||
|
||||
|
||||
void instanceKlassKlass::oop_verify_on(oop obj, outputStream* st) {
|
||||
klassKlass::oop_verify_on(obj, st);
|
||||
if (!obj->partially_loaded()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue