mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-17 01:24:33 +02:00
8005849: JEP 167: Event-Based JVM Tracing
Co-authored-by: Karen Kinnear <karen.kinnear@oracle.com> Co-authored-by: Bengt Rutisson <bengt.rutisson@oracle.com> Co-authored-by: Calvin Cheung <calvin.cheung@oracle.com> Co-authored-by: Erik Gahlin <erik.gahlin@oracle.com> Co-authored-by: Erik Helin <erik.helin@oracle.com> Co-authored-by: Jesper Wilhelmsson <jesper.wilhelmsson@oracle.com> Co-authored-by: Keith McGuigan <keith.mcguigan@oracle.com> Co-authored-by: Mattias Tobiasson <mattias.tobiasson@oracle.com> Co-authored-by: Markus Gronlund <markus.gronlund@oracle.com> Co-authored-by: Mikael Auno <mikael.auno@oracle.com> Co-authored-by: Nils Eliasson <nils.eliasson@oracle.com> Co-authored-by: Nils Loodin <nils.loodin@oracle.com> Co-authored-by: Rickard Backman <rickard.backman@oracle.com> Co-authored-by: Stefan Karlsson <stefan.karlsson@oracle.com> Co-authored-by: Yekaterina Kantserova <yekaterina.kantserova@oracle.com> Reviewed-by: acorn, coleenp, sla
This commit is contained in:
parent
6b2c468c35
commit
718f3252f6
195 changed files with 7628 additions and 1484 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2013, 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
|
||||
|
@ -26,8 +26,12 @@
|
|||
#define SHARE_VM_MEMORY_REFERENCEPROCESSOR_HPP
|
||||
|
||||
#include "memory/referencePolicy.hpp"
|
||||
#include "memory/referenceProcessorStats.hpp"
|
||||
#include "memory/referenceType.hpp"
|
||||
#include "oops/instanceRefKlass.hpp"
|
||||
|
||||
class GCTimer;
|
||||
|
||||
// ReferenceProcessor class encapsulates the per-"collector" processing
|
||||
// of java.lang.Reference objects for GC. The interface is useful for supporting
|
||||
// a generational abstraction, in particular when there are multiple
|
||||
|
@ -204,6 +208,10 @@ public:
|
|||
};
|
||||
|
||||
class ReferenceProcessor : public CHeapObj<mtGC> {
|
||||
|
||||
private:
|
||||
size_t total_count(DiscoveredList lists[]);
|
||||
|
||||
protected:
|
||||
// Compatibility with pre-4965777 JDK's
|
||||
static bool _pending_list_uses_discovered_field;
|
||||
|
@ -282,13 +290,13 @@ class ReferenceProcessor : public CHeapObj<mtGC> {
|
|||
}
|
||||
|
||||
// Process references with a certain reachability level.
|
||||
void process_discovered_reflist(DiscoveredList refs_lists[],
|
||||
ReferencePolicy* policy,
|
||||
bool clear_referent,
|
||||
BoolObjectClosure* is_alive,
|
||||
OopClosure* keep_alive,
|
||||
VoidClosure* complete_gc,
|
||||
AbstractRefProcTaskExecutor* task_executor);
|
||||
size_t process_discovered_reflist(DiscoveredList refs_lists[],
|
||||
ReferencePolicy* policy,
|
||||
bool clear_referent,
|
||||
BoolObjectClosure* is_alive,
|
||||
OopClosure* keep_alive,
|
||||
VoidClosure* complete_gc,
|
||||
AbstractRefProcTaskExecutor* task_executor);
|
||||
|
||||
void process_phaseJNI(BoolObjectClosure* is_alive,
|
||||
OopClosure* keep_alive,
|
||||
|
@ -349,7 +357,8 @@ class ReferenceProcessor : public CHeapObj<mtGC> {
|
|||
void preclean_discovered_references(BoolObjectClosure* is_alive,
|
||||
OopClosure* keep_alive,
|
||||
VoidClosure* complete_gc,
|
||||
YieldClosure* yield);
|
||||
YieldClosure* yield,
|
||||
GCTimer* gc_timer);
|
||||
|
||||
// Delete entries in the discovered lists that have
|
||||
// either a null referent or are not active. Such
|
||||
|
@ -500,12 +509,13 @@ class ReferenceProcessor : public CHeapObj<mtGC> {
|
|||
bool discover_reference(oop obj, ReferenceType rt);
|
||||
|
||||
// Process references found during GC (called by the garbage collector)
|
||||
void process_discovered_references(BoolObjectClosure* is_alive,
|
||||
OopClosure* keep_alive,
|
||||
VoidClosure* complete_gc,
|
||||
AbstractRefProcTaskExecutor* task_executor);
|
||||
ReferenceProcessorStats
|
||||
process_discovered_references(BoolObjectClosure* is_alive,
|
||||
OopClosure* keep_alive,
|
||||
VoidClosure* complete_gc,
|
||||
AbstractRefProcTaskExecutor* task_executor,
|
||||
GCTimer *gc_timer);
|
||||
|
||||
public:
|
||||
// Enqueue references at end of GC (called by the garbage collector)
|
||||
bool enqueue_discovered_references(AbstractRefProcTaskExecutor* task_executor = NULL);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue