Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/runtime/gc_verbose_handler_realtime/VerboseHandlerRealtime.cpp
5985 views
1
/*******************************************************************************
2
* Copyright (c) 1991, 2014 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
/* Temporary file to make compilers happy */
24
25
#include "j9.h"
26
#include "j9cfg.h"
27
#include "mmhook.h"
28
29
#include "EnvironmentBase.hpp"
30
#include "VerboseManager.hpp"
31
#include "VerboseHandlerOutputRealtime.hpp"
32
#include "VerboseWriterChain.hpp"
33
34
void verboseHandlerCycleStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
35
{
36
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
37
handler->handleCycleStart(hook, eventNum, eventData);
38
}
39
40
void verboseHandlerCycleEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
41
{
42
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
43
handler->handleCycleEnd(hook, eventNum, eventData);
44
}
45
46
void verboseHandlerTriggerStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
47
{
48
MM_MetronomeTriggerStartEvent* event = (MM_MetronomeTriggerStartEvent*)eventData;
49
MM_VerboseHandlerOutput* handler = (MM_VerboseHandlerOutput*)userData;
50
MM_VerboseManager* manager = handler->getManager();
51
MM_VerboseWriterChain* writer = manager->getWriterChain();
52
MM_EnvironmentBase* env = MM_EnvironmentBase::getEnvironment(event->currentThread);
53
PORT_ACCESS_FROM_ENVIRONMENT(env);
54
char tagTemplate[200];
55
handler->getTagTemplate(tagTemplate, sizeof(tagTemplate), manager->getIdAndIncrement(), j9time_current_time_millis());
56
writer->formatAndOutput(env, 0, "<trigger-start %s />", tagTemplate);
57
writer->flush(env);
58
}
59
60
void verboseHandlerTriggerEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
61
{
62
MM_MetronomeTriggerEndEvent* event = (MM_MetronomeTriggerEndEvent*)eventData;
63
MM_VerboseHandlerOutput* handler = (MM_VerboseHandlerOutput*)userData;
64
MM_VerboseManager* manager = handler->getManager();
65
MM_VerboseWriterChain* writer = manager->getWriterChain();
66
MM_EnvironmentBase* env = MM_EnvironmentBase::getEnvironment(event->currentThread);
67
PORT_ACCESS_FROM_ENVIRONMENT(env);
68
char tagTemplate[200];
69
handler->getTagTemplate(tagTemplate, sizeof(tagTemplate), manager->getIdAndIncrement(), j9time_current_time_millis());
70
writer->formatAndOutput(env, 0, "<trigger-end %s />\n", tagTemplate);
71
writer->flush(env);
72
}
73
74
void verboseHandlerIncrementStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
75
{
76
MM_MetronomeIncrementStartEvent* event = (MM_MetronomeIncrementStartEvent*) eventData;
77
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
78
handler->handleEvent(event);
79
}
80
81
void verboseHandlerIncrementEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
82
{
83
MM_MetronomeIncrementEndEvent* event = (MM_MetronomeIncrementEndEvent*) eventData;
84
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
85
handler->handleEvent(event);
86
}
87
88
void verboseHandlerSyncGCStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
89
{
90
MM_MetronomeSynchronousGCStartEvent* event = (MM_MetronomeSynchronousGCStartEvent*) eventData;
91
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
92
handler->handleEvent(event);
93
}
94
95
void verboseHandlerSyncGCEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
96
{
97
MM_MetronomeSynchronousGCEndEvent* event = (MM_MetronomeSynchronousGCEndEvent*) eventData;
98
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
99
handler->handleEvent(event);
100
}
101
102
void verboseHandlerMarkStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
103
{
104
MM_MarkStartEvent* event = (MM_MarkStartEvent*) eventData;
105
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
106
handler->handleEvent(event);
107
}
108
109
void verboseHandlerMarkEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
110
{
111
MM_MarkEndEvent* event = (MM_MarkEndEvent*) eventData;
112
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
113
handler->handleEvent(event);
114
}
115
116
void verboseHandlerSweepStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
117
{
118
MM_SweepStartEvent* event = (MM_SweepStartEvent*) eventData;
119
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
120
handler->handleEvent(event);
121
}
122
123
void verboseHandlerSweepEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
124
{
125
MM_SweepEndEvent* event = (MM_SweepEndEvent*) eventData;
126
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
127
handler->handleEvent(event);
128
}
129
130
void verboseHandlerClassUnloadingStart(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
131
{
132
MM_ClassUnloadingStartEvent* event = (MM_ClassUnloadingStartEvent*) eventData;
133
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
134
handler->handleEvent(event);
135
}
136
137
void verboseHandlerClassUnloadingEnd(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
138
{
139
MM_ClassUnloadingEndEvent* event = (MM_ClassUnloadingEndEvent*) eventData;
140
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
141
handler->handleEvent(event);
142
}
143
144
void verboseHandlerOutOFMemory(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
145
{
146
MM_OutOfMemoryEvent* event = (MM_OutOfMemoryEvent*) eventData;
147
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
148
handler->handleEvent(event);
149
}
150
151
void verboseHandlerUtilTrackerOverflow(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
152
{
153
MM_UtilizationTrackerOverflowEvent* event = (MM_UtilizationTrackerOverflowEvent*) eventData;
154
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
155
handler->handleEvent(event);
156
}
157
158
void verboseHandlerNonMonotonicTime(J9HookInterface** hook, UDATA eventNum, void* eventData, void* userData)
159
{
160
MM_NonMonotonicTimeEvent* event = (MM_NonMonotonicTimeEvent*) eventData;
161
MM_VerboseHandlerOutputRealtime* handler = (MM_VerboseHandlerOutputRealtime*)userData;
162
handler->handleEvent(event);
163
}
164
165