Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/runtime/gc_realtime/Metronome.hpp
5986 views
1
/*******************************************************************************
2
* Copyright (c) 1991, 2019 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
#if !defined(METRONOME_HPP_)
24
#define METRONOME_HPP_
25
26
/* @ddr_namespace: default */
27
#include "omr.h"
28
#include "omrcfg.h"
29
30
#include <assert.h>
31
#define ASSERT_LEVEL 0
32
#define assert1(expr) assert((ASSERT_LEVEL < 1) || (expr));
33
#define assert2(expr) assert((ASSERT_LEVEL < 2) || (expr));
34
35
#define MAX_UINT ((uintptr_t) (-1))
36
37
#define CLOCK_SWITCH_TICK_THRESHOLD 1000000
38
#define INTER_YIELD_WARNING_THRESHOLD_NS 80000
39
/* INTER_YIELD_WARNING_THRESHOLD_NS indicates that 80 usec for inter-yield checks is already considered large.
40
* The largest interval between yield checks should be bounded by 500 usec, which is a HardRT quanta.
41
*/
42
#define INTER_YIELD_MAX_NS 500000
43
44
#define INTER_YIELD_WARNING_THRESHOLD_NS 80000
45
#define UTILIZATION_WINDOW_SIZE 100
46
47
#define ROOT_GRANULARITY 100
48
49
/*
50
* NOTE: Since we are using safe points, any information recorded by the
51
* GC when it is known that threads are stopped, can be accessed by the threads
52
* without a critical section.
53
*/
54
#define GC_PHASE_IDLE 0x00000000
55
#define GC_PHASE_ROOT 0x00000001
56
#define GC_PHASE_TRACE 0x00000002
57
#define GC_PHASE_SWEEP 0x00000004
58
#define GC_PHASE_CONCURRENT_TRACE 0x00000008
59
#define GC_PHASE_CONCURRENT_SWEEP 0x00000010
60
#define GC_PHASE_UNLOADING_CLASS_LOADERS 0x00000020
61
62
#define MINIMUM_FREE_CHUNK_SIZE 64
63
64
#endif /* METRONOME_HPP_ */
65
66