< prev index next >

src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp

Print this page
rev 49289 : 8199735: Mark word updates need to use Access API

*** 1,7 **** /* ! * Copyright (c) 2017, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2017, 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 * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 29,38 **** --- 29,39 ---- #include "gc/g1/g1FullGCCompactionPoint.hpp" #include "gc/g1/g1FullGCCompactTask.hpp" #include "gc/g1/heapRegion.inline.hpp" #include "gc/shared/gcTraceTime.inline.hpp" #include "logging/log.hpp" + #include "oops/oop.inline.hpp" #include "utilities/ticks.inline.hpp" class G1ResetHumongousClosure : public HeapRegionClosure { G1CMBitMap* _bitmap;
*** 45,55 **** if (current->is_starts_humongous()) { oop obj = oop(current->bottom()); if (_bitmap->is_marked(obj)) { // Clear bitmap and fix mark word. _bitmap->clear(obj); ! obj->init_mark(); } else { assert(current->is_empty(), "Should have been cleared in phase 2."); } } current->reset_during_compaction(); --- 46,56 ---- if (current->is_starts_humongous()) { oop obj = oop(current->bottom()); if (_bitmap->is_marked(obj)) { // Clear bitmap and fix mark word. _bitmap->clear(obj); ! obj->init_mark_raw(); } else { assert(current->is_empty(), "Should have been cleared in phase 2."); } } current->reset_during_compaction();
*** 68,78 **** // copy object and reinit its mark HeapWord* obj_addr = (HeapWord*) obj; assert(obj_addr != destination, "everything in this pass should be moving"); Copy::aligned_conjoint_words(obj_addr, destination, size); ! oop(destination)->init_mark(); assert(oop(destination)->klass() != NULL, "should have a class"); return size; } --- 69,79 ---- // copy object and reinit its mark HeapWord* obj_addr = (HeapWord*) obj; assert(obj_addr != destination, "everything in this pass should be moving"); Copy::aligned_conjoint_words(obj_addr, destination, size); ! oop(destination)->init_mark_raw(); assert(oop(destination)->klass() != NULL, "should have a class"); return size; }
< prev index next >