Path: blob/master/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/compiler/ImmutableOopMapPair.java
41161 views
/*1* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.2* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3*4* This code is free software; you can redistribute it and/or modify it5* under the terms of the GNU General Public License version 2 only, as6* published by the Free Software Foundation.7*8* This code is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11* version 2 for more details (a copy is included in the LICENSE file that12* accompanied this code).13*14* You should have received a copy of the GNU General Public License version15* 2 along with this work; if not, write to the Free Software Foundation,16* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17*18* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19* or visit www.oracle.com if you need additional information or have any20* questions.21*22*/2324package sun.jvm.hotspot.compiler;2526import sun.jvm.hotspot.debugger.Address;27import sun.jvm.hotspot.runtime.VM;28import sun.jvm.hotspot.types.CIntegerField;29import sun.jvm.hotspot.types.Type;30import sun.jvm.hotspot.types.TypeDataBase;3132import sun.jvm.hotspot.utilities.Observable;33import sun.jvm.hotspot.utilities.Observer;3435public class ImmutableOopMapPair {36private static CIntegerField pcOffsetField;37private static CIntegerField oopmapOffsetField;38private static long classSize;3940static {41VM.registerVMInitializedObserver(new Observer() {42public void update(Observable o, Object data) {43initialize(VM.getVM().getTypeDataBase());44}45});46}4748private final Address address;4950public ImmutableOopMapPair(Address address) {51this.address = address;52}5354public static long classSize() {55return classSize;56}5758public int getPC() {59return (int) pcOffsetField.getValue(address);60}6162public int getOffset() {63return (int) oopmapOffsetField.getValue(address);64}6566private static void initialize(TypeDataBase db) {67Type type = db.lookupType("ImmutableOopMapPair");6869pcOffsetField = type.getCIntegerField("_pc_offset");70oopmapOffsetField = type.getCIntegerField("_oopmap_offset");71classSize = type.getSize();72}7374public String toString() {75return "Pair{pc_offset = " + getPC() + ", data_offset = " + getOffset() + "}";76}77}787980