src/hotspot/share/gc/z/zHeap.inline.hpp
author chegar
Thu, 17 Oct 2019 20:54:25 +0100
branchdatagramsocketimpl-branch
changeset 58679 9c3209ff7550
parent 58678 9cf78a70fa4f
parent 58293 f2bd6a3993a7
permissions -rw-r--r--
datagramsocketimpl-branch: merge with default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
     1
/*
54162
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
     2
 * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
     4
 *
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
     7
 * published by the Free Software Foundation.
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
     8
 *
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    13
 * accompanied this code).
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    14
 *
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    18
 *
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    21
 * questions.
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    22
 */
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    23
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    24
#ifndef SHARE_GC_Z_ZHEAP_INLINE_HPP
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    25
#define SHARE_GC_Z_ZHEAP_INLINE_HPP
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    26
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    27
#include "gc/z/zAddress.inline.hpp"
54162
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
    28
#include "gc/z/zForwarding.inline.hpp"
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
    29
#include "gc/z/zForwardingTable.inline.hpp"
54376
2a2fab6fb3a5 8221732: Introduce CollectedHeap::hash_oop()
pliden
parents: 54164
diff changeset
    30
#include "gc/z/zHash.inline.hpp"
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    31
#include "gc/z/zHeap.hpp"
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    32
#include "gc/z/zMark.inline.hpp"
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    33
#include "gc/z/zOop.inline.hpp"
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    34
#include "gc/z/zPage.inline.hpp"
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    35
#include "gc/z/zPageTable.inline.hpp"
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    36
#include "utilities/debug.hpp"
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    37
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    38
inline ZHeap* ZHeap::heap() {
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    39
  assert(_heap != NULL, "Not initialized");
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    40
  return _heap;
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    41
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    42
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    43
inline ReferenceDiscoverer* ZHeap::reference_discoverer() {
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    44
  return &_reference_processor;
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    45
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    46
58293
f2bd6a3993a7 8231266: ZGC: Minor cleanups in ZCollectedHeap and ZHeap
pliden
parents: 58292
diff changeset
    47
inline uint32_t ZHeap::hash_oop(uintptr_t addr) const {
f2bd6a3993a7 8231266: ZGC: Minor cleanups in ZCollectedHeap and ZHeap
pliden
parents: 58292
diff changeset
    48
  const uintptr_t offset = ZAddress::offset(addr);
54376
2a2fab6fb3a5 8221732: Introduce CollectedHeap::hash_oop()
pliden
parents: 54164
diff changeset
    49
  return ZHash::address_to_uint32(offset);
2a2fab6fb3a5 8221732: Introduce CollectedHeap::hash_oop()
pliden
parents: 54164
diff changeset
    50
}
2a2fab6fb3a5 8221732: Introduce CollectedHeap::hash_oop()
pliden
parents: 54164
diff changeset
    51
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    52
inline bool ZHeap::is_object_live(uintptr_t addr) const {
54164
c585ef187216 8220589: ZGC: Remove superfluous ZPageTableEntry
pliden
parents: 54163
diff changeset
    53
  ZPage* page = _page_table.get(addr);
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    54
  return page->is_object_live(addr);
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    55
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    56
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    57
inline bool ZHeap::is_object_strongly_live(uintptr_t addr) const {
54164
c585ef187216 8220589: ZGC: Remove superfluous ZPageTableEntry
pliden
parents: 54163
diff changeset
    58
  ZPage* page = _page_table.get(addr);
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    59
  return page->is_object_strongly_live(addr);
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    60
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    61
58066
8407928b9fe5 8230566: ZGC: Don't substitute klass pointer during array clearing
pliden
parents: 55222
diff changeset
    62
template <bool follow, bool finalizable, bool publish>
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    63
inline void ZHeap::mark_object(uintptr_t addr) {
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    64
  assert(ZGlobalPhase == ZPhaseMark, "Mark not allowed");
58066
8407928b9fe5 8230566: ZGC: Don't substitute klass pointer during array clearing
pliden
parents: 55222
diff changeset
    65
  _mark.mark_object<follow, finalizable, publish>(addr);
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    66
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    67
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    68
inline uintptr_t ZHeap::alloc_tlab(size_t size) {
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    69
  guarantee(size <= max_tlab_size(), "TLAB too large");
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    70
  return _object_allocator.alloc_object(size);
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    71
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    72
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    73
inline uintptr_t ZHeap::alloc_object(size_t size) {
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    74
  uintptr_t addr = _object_allocator.alloc_object(size);
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    75
  assert(ZAddress::is_good_or_null(addr), "Bad address");
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    76
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    77
  if (addr == 0) {
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    78
    out_of_memory();
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    79
  }
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    80
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    81
  return addr;
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    82
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    83
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    84
inline uintptr_t ZHeap::alloc_object_for_relocation(size_t size) {
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    85
  uintptr_t addr = _object_allocator.alloc_object_for_relocation(size);
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    86
  assert(ZAddress::is_good_or_null(addr), "Bad address");
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    87
  return addr;
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    88
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    89
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    90
inline void ZHeap::undo_alloc_object_for_relocation(uintptr_t addr, size_t size) {
54164
c585ef187216 8220589: ZGC: Remove superfluous ZPageTableEntry
pliden
parents: 54163
diff changeset
    91
  ZPage* const page = _page_table.get(addr);
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    92
  _object_allocator.undo_alloc_object_for_relocation(page, addr, size);
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    93
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
    94
54162
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
    95
inline uintptr_t ZHeap::relocate_object(uintptr_t addr) {
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
    96
  assert(ZGlobalPhase == ZPhaseRelocate, "Relocate not allowed");
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
    97
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
    98
  ZForwarding* const forwarding = _forwarding_table.get(addr);
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
    99
  if (forwarding == NULL) {
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   100
    // Not forwarding
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   101
    return ZAddress::good(addr);
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   102
  }
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   103
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   104
  // Relocate object
54163
790679f86a51 8220588: ZGC: Convert ZRelocationSet to hold ZForwardings instead of ZPages
pliden
parents: 54162
diff changeset
   105
  const bool retained = forwarding->retain_page();
54162
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   106
  const uintptr_t new_addr = _relocate.relocate_object(forwarding, addr);
54163
790679f86a51 8220588: ZGC: Convert ZRelocationSet to hold ZForwardings instead of ZPages
pliden
parents: 54162
diff changeset
   107
  if (retained) {
790679f86a51 8220588: ZGC: Convert ZRelocationSet to hold ZForwardings instead of ZPages
pliden
parents: 54162
diff changeset
   108
    forwarding->release_page();
54162
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   109
  }
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   110
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   111
  return new_addr;
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   112
}
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   113
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   114
inline uintptr_t ZHeap::remap_object(uintptr_t addr) {
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   115
  assert(ZGlobalPhase == ZPhaseMark ||
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   116
         ZGlobalPhase == ZPhaseMarkCompleted, "Forward not allowed");
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   117
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   118
  ZForwarding* const forwarding = _forwarding_table.get(addr);
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   119
  if (forwarding == NULL) {
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   120
    // Not forwarding
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   121
    return ZAddress::good(addr);
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   122
  }
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   123
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   124
  // Forward object
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   125
  return _relocate.forward_object(forwarding, addr);
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   126
}
f344a0c6e19e 8220587: ZGC: Break out forwarding information from ZPage
pliden
parents: 50582
diff changeset
   127
50582
6464882498b5 8205022: ZGC: SoftReferences not always cleared before throwing OOME
pliden
parents: 50525
diff changeset
   128
inline bool ZHeap::is_alloc_stalled() const {
6464882498b5 8205022: ZGC: SoftReferences not always cleared before throwing OOME
pliden
parents: 50525
diff changeset
   129
  return _page_allocator.is_alloc_stalled();
6464882498b5 8205022: ZGC: SoftReferences not always cleared before throwing OOME
pliden
parents: 50525
diff changeset
   130
}
6464882498b5 8205022: ZGC: SoftReferences not always cleared before throwing OOME
pliden
parents: 50525
diff changeset
   131
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
   132
inline void ZHeap::check_out_of_memory() {
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
   133
  _page_allocator.check_out_of_memory();
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
   134
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
   135
58293
f2bd6a3993a7 8231266: ZGC: Minor cleanups in ZCollectedHeap and ZHeap
pliden
parents: 58292
diff changeset
   136
inline bool ZHeap::is_oop(uintptr_t addr) const {
f2bd6a3993a7 8231266: ZGC: Minor cleanups in ZCollectedHeap and ZHeap
pliden
parents: 58292
diff changeset
   137
  return ZAddress::is_good(addr) && is_object_aligned(addr) && is_in(addr);
50525
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
   138
}
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
   139
767cdb97f103 8204210: Implementation: JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)
pliden
parents:
diff changeset
   140
#endif // SHARE_GC_Z_ZHEAP_INLINE_HPP