hotspot/src/share/vm/gc_implementation/g1/dirtyCardQueue.hpp
author tonyp
Fri, 01 Oct 2010 16:43:05 -0400
changeset 6768 71338ecb7813
parent 6247 00e5cc407d03
child 7397 5b173b4ca846
permissions -rw-r--r--
6980838: G1: guarantee(false) failed: thread has an unexpected active value in its SATB queue Summary: Under certain circumstances a safepoint could happen between a JavaThread object being created and that object being added to the Java threads list. This could cause the active field of that thread's SATB queue to get out-of-sync with respect to the other Java threads. The solution is to activate the SATB queue, when necessary, before adding the thread to the Java threads list, not when the JavaThread object is created. The changeset also includes a small fix to rename the surrogate locker thread from "Surrogate Locker Thread (CMS)" to "Surrogate Locker Thread (Concurrent GC)" since it's also used in G1. Reviewed-by: iveresov, ysr, johnc, jcoomes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     1
/*
6247
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
     2
 * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     4
 *
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     7
 * published by the Free Software Foundation.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     8
 *
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    13
 * accompanied this code).
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    14
 *
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    18
 *
5547
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 4481
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 4481
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
f4b087cbb361 6941466: Oracle rebranding changes for Hotspot repositories
trims
parents: 4481
diff changeset
    21
 * questions.
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    22
 *
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    23
 */
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    24
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    25
class FreeIdSet;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    26
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    27
// A closure class for processing card table entries.  Note that we don't
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    28
// require these closure objects to be stack-allocated.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    29
class CardTableEntryClosure: public CHeapObj {
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    30
public:
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    31
  // Process the card whose card table entry is "card_ptr".  If returns
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    32
  // "false", terminate the iteration early.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    33
  virtual bool do_card_ptr(jbyte* card_ptr, int worker_i = 0) = 0;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    34
};
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    35
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    36
// A ptrQueue whose elements are "oops", pointers to object heads.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    37
class DirtyCardQueue: public PtrQueue {
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    38
public:
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    39
  DirtyCardQueue(PtrQueueSet* qset_, bool perm = false) :
6768
71338ecb7813 6980838: G1: guarantee(false) failed: thread has an unexpected active value in its SATB queue
tonyp
parents: 6247
diff changeset
    40
    // Dirty card queues are always active, so we create them with their
71338ecb7813 6980838: G1: guarantee(false) failed: thread has an unexpected active value in its SATB queue
tonyp
parents: 6247
diff changeset
    41
    // active field set to true.
71338ecb7813 6980838: G1: guarantee(false) failed: thread has an unexpected active value in its SATB queue
tonyp
parents: 6247
diff changeset
    42
    PtrQueue(qset_, perm, true /* active */) { }
71338ecb7813 6980838: G1: guarantee(false) failed: thread has an unexpected active value in its SATB queue
tonyp
parents: 6247
diff changeset
    43
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    44
  // Apply the closure to all elements, and reset the index to make the
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    45
  // buffer empty.  If a closure application returns "false", return
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    46
  // "false" immediately, halting the iteration.  If "consume" is true,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    47
  // deletes processed entries from logs.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    48
  bool apply_closure(CardTableEntryClosure* cl,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    49
                     bool consume = true,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    50
                     size_t worker_i = 0);
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    51
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    52
  // Apply the closure to all elements of "buf", down to "index"
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    53
  // (inclusive.)  If returns "false", then a closure application returned
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    54
  // "false", and we return immediately.  If "consume" is true, entries are
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    55
  // set to NULL as they are processed, so they will not be processed again
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    56
  // later.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    57
  static bool apply_closure_to_buffer(CardTableEntryClosure* cl,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    58
                                      void** buf, size_t index, size_t sz,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    59
                                      bool consume = true,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    60
                                      int worker_i = 0);
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    61
  void **get_buf() { return _buf;}
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    62
  void set_buf(void **buf) {_buf = buf;}
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    63
  size_t get_index() { return _index;}
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    64
  void reinitialize() { _buf = 0; _sz = 0; _index = 0;}
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    65
};
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    66
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    67
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    68
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    69
class DirtyCardQueueSet: public PtrQueueSet {
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    70
  CardTableEntryClosure* _closure;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    71
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    72
  DirtyCardQueue _shared_dirty_card_queue;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    73
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    74
  // Override.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    75
  bool mut_process_buffer(void** buf);
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    76
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    77
  // Protected by the _cbl_mon.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    78
  FreeIdSet* _free_ids;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    79
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    80
  // The number of completed buffers processed by mutator and rs thread,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    81
  // respectively.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    82
  jint _processed_buffers_mut;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    83
  jint _processed_buffers_rs_thread;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    84
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    85
public:
4481
de92ec484f5e 6862387: tune concurrent refinement further
iveresov
parents: 4460
diff changeset
    86
  DirtyCardQueueSet(bool notify_when_complete = true);
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    87
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    88
  void initialize(Monitor* cbl_mon, Mutex* fl_lock,
4481
de92ec484f5e 6862387: tune concurrent refinement further
iveresov
parents: 4460
diff changeset
    89
                  int process_completed_threshold,
de92ec484f5e 6862387: tune concurrent refinement further
iveresov
parents: 4460
diff changeset
    90
                  int max_completed_queue,
de92ec484f5e 6862387: tune concurrent refinement further
iveresov
parents: 4460
diff changeset
    91
                  Mutex* lock, PtrQueueSet* fl_owner = NULL);
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    92
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    93
  // The number of parallel ids that can be claimed to allow collector or
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    94
  // mutator threads to do card-processing work.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    95
  static size_t num_par_ids();
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    96
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    97
  static void handle_zero_index_for_thread(JavaThread* t);
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    98
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
    99
  // Register "blk" as "the closure" for all queues.  Only one such closure
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   100
  // is allowed.  The "apply_closure_to_completed_buffer" method will apply
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   101
  // this closure to a completed buffer, and "iterate_closure_all_threads"
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   102
  // applies it to partially-filled buffers (the latter should only be done
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   103
  // with the world stopped).
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   104
  void set_closure(CardTableEntryClosure* closure);
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   105
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   106
  // If there is a registered closure for buffers, apply it to all entries
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   107
  // in all currently-active buffers.  This should only be applied at a
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   108
  // safepoint.  (Currently must not be called in parallel; this should
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   109
  // change in the future.)  If "consume" is true, processed entries are
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   110
  // discarded.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   111
  void iterate_closure_all_threads(bool consume = true,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   112
                                   size_t worker_i = 0);
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   113
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   114
  // If there exists some completed buffer, pop it, then apply the
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   115
  // registered closure to all its elements, nulling out those elements
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   116
  // processed.  If all elements are processed, returns "true".  If no
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   117
  // completed buffers exist, returns false.  If a completed buffer exists,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   118
  // but is only partially completed before a "yield" happens, the
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   119
  // partially completed buffer (with its processed elements set to NULL)
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   120
  // is returned to the completed buffer set, and this call returns false.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   121
  bool apply_closure_to_completed_buffer(int worker_i = 0,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   122
                                         int stop_at = 0,
4460
8ffd47b73f43 6899058: G1: Internal error in ptrQueue.cpp:201 in nightly tests
johnc
parents: 2142
diff changeset
   123
                                         bool during_pause = false);
8ffd47b73f43 6899058: G1: Internal error in ptrQueue.cpp:201 in nightly tests
johnc
parents: 2142
diff changeset
   124
6247
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   125
  // If there exists some completed buffer, pop it, then apply the
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   126
  // specified closure to all its elements, nulling out those elements
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   127
  // processed.  If all elements are processed, returns "true".  If no
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   128
  // completed buffers exist, returns false.  If a completed buffer exists,
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   129
  // but is only partially completed before a "yield" happens, the
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   130
  // partially completed buffer (with its processed elements set to NULL)
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   131
  // is returned to the completed buffer set, and this call returns false.
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   132
  bool apply_closure_to_completed_buffer(CardTableEntryClosure* cl,
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   133
                                         int worker_i = 0,
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   134
                                         int stop_at = 0,
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   135
                                         bool during_pause = false);
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   136
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   137
  // Helper routine for the above.
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   138
  bool apply_closure_to_completed_buffer_helper(CardTableEntryClosure* cl,
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   139
                                                int worker_i,
4481
de92ec484f5e 6862387: tune concurrent refinement further
iveresov
parents: 4460
diff changeset
   140
                                                BufferNode* nd);
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   141
4481
de92ec484f5e 6862387: tune concurrent refinement further
iveresov
parents: 4460
diff changeset
   142
  BufferNode* get_completed_buffer(int stop_at);
4460
8ffd47b73f43 6899058: G1: Internal error in ptrQueue.cpp:201 in nightly tests
johnc
parents: 2142
diff changeset
   143
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   144
  // Applies the current closure to all completed buffers,
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   145
  // non-consumptively.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   146
  void apply_closure_to_all_completed_buffers();
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   147
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   148
  DirtyCardQueue* shared_dirty_card_queue() {
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   149
    return &_shared_dirty_card_queue;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   150
  }
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   151
6247
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   152
  // Deallocate any completed log buffers
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   153
  void clear();
00e5cc407d03 6814437: G1: remove the _new_refs array
johnc
parents: 5547
diff changeset
   154
1374
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   155
  // If a full collection is happening, reset partial logs, and ignore
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   156
  // completed ones: the full collection will make them all irrelevant.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   157
  void abandon_logs();
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   158
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   159
  // If any threads have partial logs, add them to the global list of logs.
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   160
  void concatenate_logs();
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   161
  void clear_n_completed_buffers() { _n_completed_buffers = 0;}
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   162
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   163
  jint processed_buffers_mut() {
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   164
    return _processed_buffers_mut;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   165
  }
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   166
  jint processed_buffers_rs_thread() {
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   167
    return _processed_buffers_rs_thread;
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   168
  }
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   169
4c24294029a9 6711316: Open source the Garbage-First garbage collector
ysr
parents:
diff changeset
   170
};