hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/adaptiveFreeList.hpp
author pliden
Mon, 04 May 2015 09:24:03 +0200
changeset 30578 8b6c44532ca2
parent 27251 7d667f91ec8d
permissions -rw-r--r--
8079148: Fix incorrect include guards Reviewed-by: stefank, ehelin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14123
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
     1
/*
30578
8b6c44532ca2 8079148: Fix incorrect include guards
pliden
parents: 27251
diff changeset
     2
 * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
14123
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
     4
 *
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
     7
 * published by the Free Software Foundation.
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
     8
 *
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    13
 * accompanied this code).
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    14
 *
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    18
 *
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    21
 * questions.
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    22
 *
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    23
 */
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    24
30578
8b6c44532ca2 8079148: Fix incorrect include guards
pliden
parents: 27251
diff changeset
    25
#ifndef SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_ADAPTIVEFREELIST_HPP
8b6c44532ca2 8079148: Fix incorrect include guards
pliden
parents: 27251
diff changeset
    26
#define SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_ADAPTIVEFREELIST_HPP
14123
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    27
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    28
#include "memory/freeList.hpp"
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    29
#include "gc_implementation/shared/allocationStats.hpp"
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    30
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    31
class CompactibleFreeListSpace;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    32
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    33
// A class for maintaining a free list of Chunk's.  The FreeList
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    34
// maintains a the structure of the list (head, tail, etc.) plus
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    35
// statistics for allocations from the list.  The links between items
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    36
// are not part of FreeList.  The statistics are
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    37
// used to make decisions about coalescing Chunk's when they
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    38
// are swept during collection.
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    39
//
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    40
// See the corresponding .cpp file for a description of the specifics
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    41
// for that implementation.
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    42
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    43
class Mutex;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    44
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    45
template <class Chunk>
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    46
class AdaptiveFreeList : public FreeList<Chunk> {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    47
  friend class CompactibleFreeListSpace;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    48
  friend class VMStructs;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    49
  // friend class PrintTreeCensusClosure<Chunk, FreeList_t>;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    50
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    51
  size_t        _hint;          // next larger size list with a positive surplus
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    52
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    53
  AllocationStats _allocation_stats; // allocation-related statistics
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    54
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    55
 public:
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    56
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    57
  AdaptiveFreeList();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    58
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    59
  using FreeList<Chunk>::assert_proper_lock_protection;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    60
#ifdef ASSERT
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    61
  using FreeList<Chunk>::protecting_lock;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    62
#endif
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    63
  using FreeList<Chunk>::count;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    64
  using FreeList<Chunk>::size;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    65
  using FreeList<Chunk>::verify_chunk_in_free_list;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    66
  using FreeList<Chunk>::getFirstNChunksFromList;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    67
  using FreeList<Chunk>::print_on;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    68
  void return_chunk_at_head(Chunk* fc, bool record_return);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    69
  void return_chunk_at_head(Chunk* fc);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    70
  void return_chunk_at_tail(Chunk* fc, bool record_return);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    71
  void return_chunk_at_tail(Chunk* fc);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    72
  using FreeList<Chunk>::return_chunk_at_tail;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    73
  using FreeList<Chunk>::remove_chunk;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    74
  using FreeList<Chunk>::prepend;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    75
  using FreeList<Chunk>::print_labels_on;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    76
  using FreeList<Chunk>::get_chunk_at_head;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    77
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    78
  // Initialize.
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    79
  void initialize();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    80
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    81
  // Reset the head, tail, hint, and count of a free list.
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    82
  void reset(size_t hint);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    83
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    84
  void print_on(outputStream* st, const char* c = NULL) const;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    85
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    86
  size_t hint() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    87
    return _hint;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    88
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    89
  void set_hint(size_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    90
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    91
    assert(v == 0 || size() < v, "Bad hint");
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    92
    _hint = v;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    93
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    94
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    95
  size_t get_better_size();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    96
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    97
  // Accessors for statistics
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    98
  void init_statistics(bool split_birth = false);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
    99
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   100
  AllocationStats* allocation_stats() {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   101
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   102
    return &_allocation_stats;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   103
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   104
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   105
  ssize_t desired() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   106
    return _allocation_stats.desired();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   107
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   108
  void set_desired(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   109
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   110
    _allocation_stats.set_desired(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   111
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   112
  void compute_desired(float inter_sweep_current,
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   113
                       float inter_sweep_estimate,
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   114
                       float intra_sweep_estimate) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   115
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   116
    _allocation_stats.compute_desired(count(),
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   117
                                      inter_sweep_current,
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   118
                                      inter_sweep_estimate,
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   119
                                      intra_sweep_estimate);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   120
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   121
  ssize_t coal_desired() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   122
    return _allocation_stats.coal_desired();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   123
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   124
  void set_coal_desired(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   125
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   126
    _allocation_stats.set_coal_desired(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   127
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   128
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   129
  ssize_t surplus() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   130
    return _allocation_stats.surplus();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   131
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   132
  void set_surplus(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   133
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   134
    _allocation_stats.set_surplus(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   135
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   136
  void increment_surplus() {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   137
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   138
    _allocation_stats.increment_surplus();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   139
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   140
  void decrement_surplus() {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   141
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   142
    _allocation_stats.decrement_surplus();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   143
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   144
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   145
  ssize_t bfr_surp() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   146
    return _allocation_stats.bfr_surp();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   147
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   148
  void set_bfr_surp(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   149
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   150
    _allocation_stats.set_bfr_surp(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   151
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   152
  ssize_t prev_sweep() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   153
    return _allocation_stats.prev_sweep();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   154
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   155
  void set_prev_sweep(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   156
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   157
    _allocation_stats.set_prev_sweep(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   158
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   159
  ssize_t before_sweep() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   160
    return _allocation_stats.before_sweep();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   161
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   162
  void set_before_sweep(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   163
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   164
    _allocation_stats.set_before_sweep(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   165
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   166
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   167
  ssize_t coal_births() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   168
    return _allocation_stats.coal_births();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   169
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   170
  void set_coal_births(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   171
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   172
    _allocation_stats.set_coal_births(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   173
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   174
  void increment_coal_births() {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   175
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   176
    _allocation_stats.increment_coal_births();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   177
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   178
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   179
  ssize_t coal_deaths() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   180
    return _allocation_stats.coal_deaths();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   181
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   182
  void set_coal_deaths(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   183
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   184
    _allocation_stats.set_coal_deaths(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   185
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   186
  void increment_coal_deaths() {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   187
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   188
    _allocation_stats.increment_coal_deaths();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   189
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   190
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   191
  ssize_t split_births() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   192
    return _allocation_stats.split_births();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   193
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   194
  void set_split_births(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   195
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   196
    _allocation_stats.set_split_births(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   197
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   198
  void increment_split_births() {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   199
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   200
    _allocation_stats.increment_split_births();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   201
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   202
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   203
  ssize_t split_deaths() const {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   204
    return _allocation_stats.split_deaths();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   205
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   206
  void set_split_deaths(ssize_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   207
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   208
    _allocation_stats.set_split_deaths(v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   209
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   210
  void increment_split_deaths() {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   211
    assert_proper_lock_protection();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   212
    _allocation_stats.increment_split_deaths();
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   213
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   214
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   215
#ifndef PRODUCT
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   216
  // For debugging.  The "_returned_bytes" in all the lists are summed
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   217
  // and compared with the total number of bytes swept during a
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   218
  // collection.
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   219
  size_t returned_bytes() const { return _allocation_stats.returned_bytes(); }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   220
  void set_returned_bytes(size_t v) { _allocation_stats.set_returned_bytes(v); }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   221
  void increment_returned_bytes_by(size_t v) {
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   222
    _allocation_stats.set_returned_bytes(_allocation_stats.returned_bytes() + v);
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   223
  }
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   224
  // Stats verification
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   225
  void verify_stats() const;
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   226
#endif  // NOT PRODUCT
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   227
};
944e56f74fba 7045397: NPG: Add freelists to class loader arenas.
jmasa
parents:
diff changeset
   228
30578
8b6c44532ca2 8079148: Fix incorrect include guards
pliden
parents: 27251
diff changeset
   229
#endif // SHARE_VM_GC_IMPLEMENTATION_CONCURRENTMARKSWEEP_ADAPTIVEFREELIST_HPP