Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/runtime/gc_check/CheckReporter.hpp
5990 views
1
2
/*******************************************************************************
3
* Copyright (c) 1991, 2014 IBM Corp. and others
4
*
5
* This program and the accompanying materials are made available under
6
* the terms of the Eclipse Public License 2.0 which accompanies this
7
* distribution and is available at https://www.eclipse.org/legal/epl-2.0/
8
* or the Apache License, Version 2.0 which accompanies this distribution and
9
* is available at https://www.apache.org/licenses/LICENSE-2.0.
10
*
11
* This Source Code may also be made available under the following
12
* Secondary Licenses when the conditions for such availability set
13
* forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
14
* General Public License, version 2 with the GNU Classpath
15
* Exception [1] and GNU General Public License, version 2 with the
16
* OpenJDK Assembly Exception [2].
17
*
18
* [1] https://www.gnu.org/software/classpath/license.html
19
* [2] http://openjdk.java.net/legal/assembly-exception.html
20
*
21
* 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
22
*******************************************************************************/
23
24
/**
25
* @file
26
* @ingroup GC_Check
27
*/
28
29
#if !defined(CHECKREPORTER_HPP_)
30
#define CHECKREPORTER_HPP_
31
32
#include "j9.h"
33
#include "j9cfg.h"
34
35
#include "Base.hpp"
36
#include "CheckError.hpp"
37
#include "CheckElement.hpp"
38
39
/**
40
* Output reports.
41
* Accepts an GC_CheckError object and outputs the contents of the error report
42
* to the appropriate device.
43
* @ingroup GC_Check
44
*/
45
class GC_CheckReporter : public MM_Base
46
{
47
/*
48
* Data members
49
*/
50
private:
51
52
protected:
53
UDATA _maxErrorsToReport;
54
J9PortLibrary *_portLibrary;
55
56
public:
57
J9JavaVM *_javaVM;
58
59
/*
60
* Function members
61
*/
62
private:
63
protected:
64
public:
65
66
/**
67
* Release any required resources for the reporter.
68
*/
69
virtual void kill() = 0;
70
71
/**
72
* Report an error.
73
*
74
* Accepts an error object and outputs error to the appropriate device.
75
* @param error The error to be reported
76
*/
77
virtual void report(GC_CheckError *error) = 0;
78
79
/*
80
* Report information from an object header, class, or some other type
81
*/
82
virtual void reportGenericType(GC_CheckError *error, GC_CheckElement reference, const char *prefix);
83
84
/**
85
* Report information from an object header.
86
*/
87
virtual void reportObjectHeader(GC_CheckError *error, J9Object *objectPtr, const char *prefix) = 0;
88
89
/**
90
* Report information from a class
91
*/
92
virtual void reportClass(GC_CheckError *error, J9Class *clazz, const char *prefix) = 0;
93
94
/**
95
* Report the fact that a fatal error has occurred.
96
*/
97
virtual void reportFatalError(GC_CheckError *error) = 0;
98
99
/**
100
* Report the fact that an error has occurred while walking the heap.
101
*/
102
virtual void reportHeapWalkError(
103
GC_CheckError *error,
104
GC_CheckElement previousObjectPtr1,
105
GC_CheckElement previousObjectPtr2,
106
GC_CheckElement previousObjectPtr3) = 0;
107
108
void setMaxErrorsToReport(UDATA count) { _maxErrorsToReport = count; }
109
bool shouldReport(GC_CheckError *error) {
110
return (_maxErrorsToReport == 0) || (error->_errorNumber <= _maxErrorsToReport);
111
}
112
113
/**
114
* Create a new CheckReporter object.
115
*/
116
GC_CheckReporter(J9JavaVM *javaVM)
117
: MM_Base()
118
, _maxErrorsToReport(0)
119
, _portLibrary(javaVM->portLibrary)
120
, _javaVM(javaVM)
121
{}
122
};
123
124
#endif /* CHECKREPORTER_HPP_ */
125
126