< prev index next >

src/hotspot/share/memory/archiveUtils.cpp

Print this page

*** 1,7 **** /* ! * Copyright (c) 2019, 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) 2019, 2020, 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.
*** 56,65 **** --- 56,71 ---- assert(_ptrmap != NULL, "not initialized"); assert(!_compacted, "cannot mark anymore"); if (_ptr_base <= ptr_loc && ptr_loc < _ptr_end) { address value = *ptr_loc; + // We don't want any pointer that points to very bottom of the archive, otherwise when + // MetaspaceShared::default_base_address()==0, we can't distinguish between a pointer + // to nothing (NULL) vs a pointer to an objects that happens to be at the very bottom + // of the archive. + assert(value != (address)_ptr_base, "don't point to the bottom of the archive"); + if (value != NULL) { assert(uintx(ptr_loc) % sizeof(intptr_t) == 0, "pointers must be stored in aligned addresses"); size_t idx = ptr_loc - _ptr_base; if (_ptrmap->size() <= idx) { _ptrmap->resize((idx + 1) * 2);
< prev index next >