1 /*
2 Title: gc_progress.cpp - Garbage collection progress data
3
4 Copyright (c) 2019 David C.J. Matthews
5
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License version 2.1 as published by the Free Software Foundation.
9
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19 */
20 #ifdef HAVE_CONFIG_H
21 #include "config.h"
22 #elif defined(_WIN32)
23 #include "winconfig.h"
24 #else
25 #error "No configuration file"
26 #endif
27
28 #include "statistics.h"
29 #include "gc_progress.h"
30
31 // These values are coded in Statistics.ML
32 enum {
33 GCP_ML = 0, // In ML Code
34 GCP_MINOR, // In minor GC
35 GCP_MAJOR, // In major GC
36 GCP_SHARING, // In GC Sharing pass
37 GCP_OTHER // In something else that suspends ML e.g. shareCommonData
38 };
39
40
gcProgressReturnToML()41 void gcProgressReturnToML()
42 {
43 globalStats.setCount(PSC_GC_STATE, GCP_ML);
44 globalStats.setCount(PSC_GC_PERCENT, 0);
45 }
46
gcProgressBeginMinorGC()47 void gcProgressBeginMinorGC()
48 {
49 globalStats.setCount(PSC_GC_STATE, GCP_MINOR);
50 globalStats.setCount(PSC_GC_PERCENT, 0);
51 }
52
gcProgressBeginMajorGC()53 void gcProgressBeginMajorGC()
54 {
55 globalStats.setCount(PSC_GC_STATE, GCP_MAJOR);
56 globalStats.setCount(PSC_GC_PERCENT, 0);
57 }
58
gcProgressBeginSharingGC()59 void gcProgressBeginSharingGC()
60 {
61 globalStats.setCount(PSC_GC_STATE, GCP_SHARING);
62 globalStats.setCount(PSC_GC_PERCENT, 0);
63 }
64
gcProgressBeginOtherGC()65 void gcProgressBeginOtherGC()
66 {
67 globalStats.setCount(PSC_GC_STATE, GCP_OTHER);
68 globalStats.setCount(PSC_GC_PERCENT, 0);
69 }
70
gcProgressSetPercent(unsigned pc)71 void gcProgressSetPercent(unsigned pc)
72 {
73 globalStats.setCount(PSC_GC_PERCENT, pc);
74 }
75