--- old/src/hotspot/share/gc/parallel/psMarkSweepDecorator.cpp 2018-03-25 12:59:23.560882461 +0200 +++ new/src/hotspot/share/gc/parallel/psMarkSweepDecorator.cpp 2018-03-25 12:59:23.379884910 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -112,8 +112,8 @@ const intx interval = PrefetchScanIntervalInBytes; while (q < t) { - assert(oop(q)->mark()->is_marked() || oop(q)->mark()->is_unlocked() || - oop(q)->mark()->has_bias_pattern(), + assert(oop(q)->mark_raw()->is_marked() || oop(q)->mark_raw()->is_unlocked() || + oop(q)->mark_raw()->has_bias_pattern(), "these are the only valid states during a mark sweep"); if (oop(q)->is_gc_marked()) { /* prefetch beyond q */ @@ -150,7 +150,7 @@ } else { // if the object isn't moving we can just set the mark to the default // mark and handle it specially later on. - oop(q)->init_mark(); + oop(q)->init_mark_raw(); assert(oop(q)->forwardee() == NULL, "should be forwarded to NULL"); } @@ -210,7 +210,7 @@ } else { // if the object isn't moving we can just set the mark to the default // mark and handle it specially later on. - oop(q)->init_mark(); + oop(q)->init_mark_raw(); assert(oop(q)->forwardee() == NULL, "should be forwarded to NULL"); } @@ -258,7 +258,7 @@ if (allowed_deadspace_words >= deadlength) { allowed_deadspace_words -= deadlength; CollectedHeap::fill_with_object(q, deadlength); - oop(q)->set_mark(oop(q)->mark()->set_marked()); + oop(q)->set_mark_raw(oop(q)->mark_raw()->set_marked()); assert((int) deadlength == oop(q)->size(), "bad filler object size"); // Recall that we required "q == compaction_top". return true; @@ -349,7 +349,7 @@ q = t; } else { // $$$ Funky - q = (HeapWord*) oop(_first_dead)->mark()->decode_pointer(); + q = (HeapWord*) oop(_first_dead)->mark_raw()->decode_pointer(); } } @@ -360,7 +360,7 @@ if (!oop(q)->is_gc_marked()) { // mark is pointer to next marked oop debug_only(prev_q = q); - q = (HeapWord*) oop(q)->mark()->decode_pointer(); + q = (HeapWord*) oop(q)->mark_raw()->decode_pointer(); assert(q > prev_q, "we should be moving forward through memory"); } else { // prefetch beyond q @@ -376,7 +376,7 @@ // copy object and reinit its mark assert(q != compaction_top, "everything in this pass should be moving"); Copy::aligned_conjoint_words(q, compaction_top, size); - oop(compaction_top)->init_mark(); + oop(compaction_top)->init_mark_raw(); assert(oop(compaction_top)->klass() != NULL, "should have a class"); debug_only(prev_q = q);