< prev index next >
src/share/vm/gc/cms/promotionInfo.hpp
Print this page
rev 9978 : 8146395: Add inline qualifier in oop.hpp and fix inlining in gc files
Summary: Fix remaining issues after 8146401. Also fix windows VS2010 linkage problem (g1OopClosures.hpp).
Reviewed-by: stefank, mgerdin
*** 1,7 ****
/*
! * Copyright (c) 2010, 2015, 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) 2010, 2016, 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.
*** 62,94 ****
union {
intptr_t _next;
Data _data;
};
public:
! inline PromotedObject* next() const {
! assert(!((FreeChunk*)this)->is_free(), "Error");
! PromotedObject* res;
! if (UseCompressedOops) {
! // The next pointer is a compressed oop stored in the top 32 bits
! res = (PromotedObject*)oopDesc::decode_heap_oop(_data._narrow_next);
! } else {
! res = (PromotedObject*)(_next & next_mask);
! }
! assert(oop(res)->is_oop_or_null(true /* ignore mark word */), "Expected an oop or NULL at " PTR_FORMAT, p2i(oop(res)));
! return res;
! }
! inline void setNext(PromotedObject* x) {
! assert(((intptr_t)x & ~next_mask) == 0, "Conflict in bit usage, "
! "or insufficient alignment of objects");
! if (UseCompressedOops) {
! assert(_data._narrow_next == 0, "Overwrite?");
! _data._narrow_next = oopDesc::encode_heap_oop(oop(x));
! } else {
! _next |= (intptr_t)x;
! }
! assert(!((FreeChunk*)this)->is_free(), "Error");
! }
inline void setPromotedMark() {
_next |= promoted_mask;
assert(!((FreeChunk*)this)->is_free(), "Error");
}
inline bool hasPromotedMark() const {
--- 62,73 ----
union {
intptr_t _next;
Data _data;
};
public:
! PromotedObject* next() const;
! void setNext(PromotedObject* x);
inline void setPromotedMark() {
_next |= promoted_mask;
assert(!((FreeChunk*)this)->is_free(), "Error");
}
inline bool hasPromotedMark() const {
< prev index next >