Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/runtime/gc_trace/TgcExtensions.cpp
5985 views
1
/*******************************************************************************
2
* Copyright (c) 1991, 2018 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
* @file
25
* @ingroup GC_Trace
26
*/
27
28
#include "TgcExtensions.hpp"
29
30
#include <stdarg.h>
31
32
#include "GCExtensions.hpp"
33
34
MM_TgcExtensions *
35
MM_TgcExtensions::newInstance(MM_GCExtensions *extensions)
36
{
37
MM_TgcExtensions * tgcExtensions = (MM_TgcExtensions *) extensions->getForge()->allocate(sizeof(MM_TgcExtensions), MM_AllocationCategory::DIAGNOSTIC, J9_GET_CALLSITE());
38
if (NULL != tgcExtensions) {
39
memset((void *)tgcExtensions, 0, sizeof(MM_TgcExtensions));
40
new(tgcExtensions) MM_TgcExtensions(extensions);
41
}
42
return tgcExtensions;
43
}
44
45
void
46
MM_TgcExtensions::tearDown(MM_GCExtensions *extensions)
47
{
48
if (J9PORT_TTY_ERR != _outputFile) {
49
PORT_ACCESS_FROM_PORT(getPortLibrary());
50
j9file_close(_outputFile);
51
_outputFile = J9PORT_TTY_ERR;
52
}
53
}
54
55
void
56
MM_TgcExtensions::kill(MM_GCExtensions *extensions)
57
{
58
tearDown(extensions);
59
extensions->getForge()->free(this);
60
}
61
62
MM_TgcExtensions::MM_TgcExtensions(MM_GCExtensions *extensions)
63
: MM_BaseNonVirtual()
64
, _portLibrary(((J9JavaVM *)(extensions->getOmrVM()->_language_vm))->portLibrary)
65
, _outputFile(J9PORT_TTY_ERR)
66
{
67
_typeId = __FUNCTION__;
68
}
69
70
void
71
MM_TgcExtensions::vprintf(const char *format, va_list args)
72
{
73
PORT_ACCESS_FROM_PORT(getPortLibrary());
74
j9file_vprintf(_outputFile, format, args);
75
}
76
77
void
78
MM_TgcExtensions::printf(const char *format, ...)
79
{
80
va_list args;
81
va_start(args, format);
82
vprintf(format, args);
83
va_end(args);
84
}
85
86
bool
87
MM_TgcExtensions::setOutputFile(const char* filename)
88
{
89
bool result = true;
90
PORT_ACCESS_FROM_PORT(getPortLibrary());
91
IDATA fd = j9file_open(filename, EsOpenCreate | EsOpenTruncate | EsOpenWrite, 0666);
92
if (-1 == fd) {
93
result = false;
94
} else {
95
_outputFile = fd;
96
}
97
return result;
98
}
99
100