Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/runtime/gc_realtime/RealtimeSweepTask.cpp
5985 views
1
/*******************************************************************************
2
* Copyright (c) 1991, 2020 IBM Corp. and others
3
*
4
* This program and the accompanying materials are made available under
5
* the terms of the Eclipse Public License 2.0 which accompanies this
6
* distribution and is available at https://www.eclipse.org/legal/epl-2.0/
7
* or the Apache License, Version 2.0 which accompanies this distribution and
8
* is available at https://www.apache.org/licenses/LICENSE-2.0.
9
*
10
* This Source Code may also be made available under the following
11
* Secondary Licenses when the conditions for such availability set
12
* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
13
* General Public License, version 2 with the GNU Classpath
14
* Exception [1] and GNU General Public License, version 2 with the
15
* OpenJDK Assembly Exception [2].
16
*
17
* [1] https://www.gnu.org/software/classpath/license.html
18
* [2] http://openjdk.java.net/legal/assembly-exception.html
19
*
20
* SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
21
*******************************************************************************/
22
23
24
#include "ut_j9mm.h"
25
26
#include "EnvironmentRealtime.hpp"
27
#include "GCExtensionsBase.hpp"
28
#include "GlobalGCStats.hpp"
29
#include "RealtimeSweepTask.hpp"
30
#include "SweepSchemeRealtime.hpp"
31
32
void
33
MM_RealtimeSweepTask::run(MM_EnvironmentBase *envBase)
34
{
35
MM_EnvironmentRealtime *env = MM_EnvironmentRealtime::getEnvironment(envBase->getOmrVMThread());
36
_sweepScheme->sweep(env);
37
}
38
39
void
40
MM_RealtimeSweepTask::setup(MM_EnvironmentBase *envBase)
41
{
42
MM_EnvironmentRealtime *env = MM_EnvironmentRealtime::getEnvironment(envBase->getOmrVMThread());
43
44
env->_sweepStats.clear();
45
46
/* record that this thread is participating in this cycle */
47
env->_sweepStats._gcCount = env->getExtensions()->globalGCStats.gcCount;
48
}
49
50
void
51
MM_RealtimeSweepTask::cleanup(MM_EnvironmentBase *envBase)
52
{
53
MM_EnvironmentRealtime *env = MM_EnvironmentRealtime::getEnvironment(envBase->getOmrVMThread());
54
OMRPORT_ACCESS_FROM_ENVIRONMENT(env);
55
56
MM_GlobalGCStats *finalGCStats = &env->getExtensions()->globalGCStats;
57
finalGCStats->sweepStats.merge(&env->_sweepStats);
58
59
Trc_MM_RealtimeSweepTask_parallelStats(
60
env->getLanguageVMThread(),
61
(U_32)env->getWorkerID(),
62
(U_32)omrtime_hires_delta(0, env->_sweepStats.idleTime, OMRPORT_TIME_DELTA_IN_MILLISECONDS),
63
env->_sweepStats.sweepChunksProcessed,
64
(U_32)omrtime_hires_delta(0, env->_sweepStats.mergeTime, OMRPORT_TIME_DELTA_IN_MILLISECONDS));
65
}
66
67