--- old/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/gc/z/ZGlobals.java 2018-01-13 12:14:36.887619442 +0900 +++ /dev/null 2018-01-13 11:40:43.273012900 +0900 @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - * - */ - -package sun.jvm.hotspot.gc.z; - -import sun.jvm.hotspot.runtime.VM; -import sun.jvm.hotspot.types.Field; -import sun.jvm.hotspot.types.Type; -import sun.jvm.hotspot.types.TypeDataBase; - -public class ZGlobals { - private static Field instanceField; - - static { - VM.registerVMInitializedObserver((o, d) -> initialize(VM.getVM().getTypeDataBase())); - } - - static private synchronized void initialize(TypeDataBase db) { - Type type = db.lookupType("ZGlobalsForVMStructs"); - - instanceField = type.getField("_instance_p"); - } - - private static ZGlobalsForVMStructs instance() { - return new ZGlobalsForVMStructs(instanceField.getAddress()); - } - - public static int ZGlobalPhase() { - return instance().ZGlobalPhase(); - } - - public static long ZAddressGoodMask() { - return instance().ZAddressGoodMask(); - } - - public static long ZAddressBadMask() { - return instance().ZAddressBadMask(); - } - - public static long ZAddressWeakBadMask() { - return instance().ZAddressWeakBadMask(); - } - - public static int ZObjectAlignmentSmallShift() { - return instance().ZObjectAlignmentSmallShift(); - } - - public static int ZObjectAlignmentSmall() { - return instance().ZObjectAlignmentSmall(); - } - - public static final int ZPhaseMark = 0; - public static final int ZPhaseMarkCompleted = 1; - public static final int ZPhaseRelocate = 2; - - public static final byte ZPageTypeSmall = 0; - public static final byte ZPageTypeMedium = 1; - public static final byte ZPageTypeLarge = 2; - - // TODO: Only LINUX for now - public static final int ZPlatformPageSizeSmallShift = 21; - public static final long ZPlatformAddressOffsetBits = 42; // 4TB - public static final long ZPlatformAddressMetadataShift = ZPlatformAddressOffsetBits; - - - // Page size shifts - public static final int ZPageSizeSmallShift = ZPlatformPageSizeSmallShift; - public static final int ZPageSizeMediumShift = ZPageSizeSmallShift + 4; - public static final int ZPageSizeMinShift = ZPageSizeSmallShift; - - public static final int ZObjectAlignmentMediumShift = ZPageSizeMediumShift - 13; // 8192 objects per page - public static final int ZObjectAlignmentLargeShift = ZPageSizeSmallShift; - - public static final int ZObjectAlignmentMedium = 1 << ZObjectAlignmentMediumShift; - public static final int ZObjectAlignmentLarge = 1 << ZObjectAlignmentLargeShift; - - // Metadata part of address - public static final long ZAddressMetadataShift = ZPlatformAddressMetadataShift; - public static final long ZAddressMetadataBits = 4; - public static final long ZAddressMetadataMask = ((1L << ZAddressMetadataBits) - 1) << ZAddressMetadataShift; - - public static final long ZAddressOffsetShift = 0; - public static final long ZAddressOffsetBits = ZPlatformAddressOffsetBits; - public static final long ZAddressOffsetMask = ((1L << ZAddressOffsetBits) - 1) << ZAddressOffsetShift; - - public static final long ZMarked0 = 0x0000040000000000L; - public static final long ZMarked1 = 0x0000080000000000L; - public static final long ZRemapped = 0x0000100000000000L; -};