1 /*
2 * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
37
38 public static byte ZPageTypeSmall;
39 public static byte ZPageTypeMedium;
40 public static byte ZPageTypeLarge;
41
42 // Page size shifts
43 public static long ZPageSizeSmallShift;
44 public static long ZPageSizeMediumShift;
45 public static long ZPageSizeMinShift;
46
47 // Object alignment shifts
48 public static int ZObjectAlignmentMediumShift;
49 public static int ZObjectAlignmentLargeShift;
50
51 // Pointer part of address
52 public static long ZAddressOffsetShift;
53
54 // Pointer part of address
55 public static long ZAddressOffsetBits;
56 public static long ZAddressOffsetMask;
57
58 // Address space start/end/size
59 public static long ZAddressSpaceStart;
60
61 static {
62 VM.registerVMInitializedObserver((o, d) -> initialize(VM.getVM().getTypeDataBase()));
63 }
64
65 static private synchronized void initialize(TypeDataBase db) {
66 Type type = db.lookupType("ZGlobalsForVMStructs");
67
68 instanceField = type.getField("_instance_p");
69
70 ZPhaseRelocate = db.lookupIntConstant("ZPhaseRelocate").intValue();
71
72 ZPageTypeSmall = db.lookupIntConstant("ZPageTypeSmall").byteValue();
73 ZPageTypeMedium = db.lookupIntConstant("ZPageTypeMedium").byteValue();
74 ZPageTypeLarge = db.lookupIntConstant("ZPageTypeLarge").byteValue();
75
76 ZPageSizeSmallShift = db.lookupLongConstant("ZPageSizeSmallShift").longValue();
77 ZPageSizeMediumShift = db.lookupLongConstant("ZPageSizeMediumShift").longValue();
78 ZPageSizeMinShift = db.lookupLongConstant("ZPageSizeMinShift").longValue();
79
80 ZObjectAlignmentMediumShift = db.lookupIntConstant("ZObjectAlignmentMediumShift").intValue();
81 ZObjectAlignmentLargeShift = db.lookupIntConstant("ZObjectAlignmentLargeShift").intValue();;
82
83 ZAddressOffsetShift = db.lookupLongConstant("ZAddressOffsetShift").longValue();
84
85 ZAddressOffsetBits = db.lookupLongConstant("ZAddressOffsetBits").longValue();
86 ZAddressOffsetMask = db.lookupLongConstant("ZAddressOffsetMask").longValue();
87
88 ZAddressSpaceStart = db.lookupLongConstant("ZAddressSpaceStart").longValue();
89 }
90
91 private static ZGlobalsForVMStructs instance() {
92 return new ZGlobalsForVMStructs(instanceField.getAddress());
93 }
94
95 public static int ZGlobalPhase() {
96 return instance().ZGlobalPhase();
97 }
98
99 public static long ZAddressGoodMask() {
100 return instance().ZAddressGoodMask();
101 }
102
103 public static long ZAddressBadMask() {
104 return instance().ZAddressBadMask();
105 }
106
107 public static long ZAddressWeakBadMask() {
108 return instance().ZAddressWeakBadMask();
109 }
110
111 public static int ZObjectAlignmentSmallShift() {
112 return instance().ZObjectAlignmentSmallShift();
113 }
114
115 public static int ZObjectAlignmentSmall() {
116 return instance().ZObjectAlignmentSmall();
|
1 /*
2 * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
37
38 public static byte ZPageTypeSmall;
39 public static byte ZPageTypeMedium;
40 public static byte ZPageTypeLarge;
41
42 // Page size shifts
43 public static long ZPageSizeSmallShift;
44 public static long ZPageSizeMediumShift;
45 public static long ZPageSizeMinShift;
46
47 // Object alignment shifts
48 public static int ZObjectAlignmentMediumShift;
49 public static int ZObjectAlignmentLargeShift;
50
51 // Pointer part of address
52 public static long ZAddressOffsetShift;
53
54 // Pointer part of address
55 public static long ZAddressOffsetBits;
56 public static long ZAddressOffsetMask;
57 public static long ZAddressOffsetMax;
58
59 // Address space start/end/size
60 public static long ZAddressSpaceStart;
61
62 static {
63 VM.registerVMInitializedObserver((o, d) -> initialize(VM.getVM().getTypeDataBase()));
64 }
65
66 static private synchronized void initialize(TypeDataBase db) {
67 Type type = db.lookupType("ZGlobalsForVMStructs");
68
69 instanceField = type.getField("_instance_p");
70
71 ZPhaseRelocate = db.lookupIntConstant("ZPhaseRelocate").intValue();
72
73 ZPageTypeSmall = db.lookupIntConstant("ZPageTypeSmall").byteValue();
74 ZPageTypeMedium = db.lookupIntConstant("ZPageTypeMedium").byteValue();
75 ZPageTypeLarge = db.lookupIntConstant("ZPageTypeLarge").byteValue();
76
77 ZPageSizeSmallShift = db.lookupLongConstant("ZPageSizeSmallShift").longValue();
78 ZPageSizeMediumShift = db.lookupLongConstant("ZPageSizeMediumShift").longValue();
79 ZPageSizeMinShift = db.lookupLongConstant("ZPageSizeMinShift").longValue();
80
81 ZObjectAlignmentMediumShift = db.lookupIntConstant("ZObjectAlignmentMediumShift").intValue();
82 ZObjectAlignmentLargeShift = db.lookupIntConstant("ZObjectAlignmentLargeShift").intValue();;
83
84 ZAddressOffsetShift = db.lookupLongConstant("ZAddressOffsetShift").longValue();
85
86 ZAddressOffsetBits = db.lookupLongConstant("ZAddressOffsetBits").longValue();
87 ZAddressOffsetMask = db.lookupLongConstant("ZAddressOffsetMask").longValue();
88 ZAddressOffsetMax = db.lookupLongConstant("ZAddressOffsetMax").longValue();
89
90 ZAddressSpaceStart = db.lookupLongConstant("ZAddressSpaceStart").longValue();
91 }
92
93 private static ZGlobalsForVMStructs instance() {
94 return new ZGlobalsForVMStructs(instanceField.getAddress());
95 }
96
97 public static int ZGlobalPhase() {
98 return instance().ZGlobalPhase();
99 }
100
101 public static int ZGlobalSeqNum() {
102 return instance().ZGlobalSeqNum();
103 }
104
105 public static long ZAddressGoodMask() {
106 return instance().ZAddressGoodMask();
107 }
108
109 public static long ZAddressBadMask() {
110 return instance().ZAddressBadMask();
111 }
112
113 public static long ZAddressWeakBadMask() {
114 return instance().ZAddressWeakBadMask();
115 }
116
117 public static int ZObjectAlignmentSmallShift() {
118 return instance().ZObjectAlignmentSmallShift();
119 }
120
121 public static int ZObjectAlignmentSmall() {
122 return instance().ZObjectAlignmentSmall();
|