< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/win32_amd64/Win32AMD64JavaThreadPDAccess.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2005, 2013, 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. --- 1,7 ---- /* ! * Copyright (c) 2005, 2017, 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.
*** 41,51 **** public class Win32AMD64JavaThreadPDAccess implements JavaThreadPDAccess { private static AddressField lastJavaFPField; private static AddressField osThreadField; // Field from OSThread ! private static Field osThreadThreadIdField; // This is currently unneeded but is being kept in case we change // the currentFrameGuess algorithm private static final long GUESS_SCAN_RANGE = 128 * 1024; --- 41,51 ---- public class Win32AMD64JavaThreadPDAccess implements JavaThreadPDAccess { private static AddressField lastJavaFPField; private static AddressField osThreadField; // Field from OSThread ! private static Field threadIdField; // This is currently unneeded but is being kept in case we change // the currentFrameGuess algorithm private static final long GUESS_SCAN_RANGE = 128 * 1024;
*** 62,72 **** Type anchorType = db.lookupType("JavaFrameAnchor"); lastJavaFPField = anchorType.getAddressField("_last_Java_fp"); osThreadField = type.getAddressField("_osthread"); type = db.lookupType("OSThread"); ! osThreadThreadIdField = type.getField("_thread_id"); } public Address getLastJavaFP(Address addr) { return lastJavaFPField.getValue(addr.addOffsetTo(sun.jvm.hotspot.runtime.JavaThread.getAnchorField().getOffset())); } --- 62,72 ---- Type anchorType = db.lookupType("JavaFrameAnchor"); lastJavaFPField = anchorType.getAddressField("_last_Java_fp"); osThreadField = type.getAddressField("_osthread"); type = db.lookupType("OSThread"); ! threadIdField = type.getField("_thread_id"); } public Address getLastJavaFP(Address addr) { return lastJavaFPField.getValue(addr.addOffsetTo(sun.jvm.hotspot.runtime.JavaThread.getAnchorField().getOffset())); }
*** 128,137 **** // Fetch the OSThread (for now and for simplicity, not making a // separate "OSThread" class in this package) Address osThreadAddr = osThreadField.getValue(addr); // Get the address of the thread_id within the OSThread Address threadIdAddr = ! osThreadAddr.addOffsetTo(osThreadThreadIdField.getOffset()); JVMDebugger debugger = VM.getVM().getDebugger(); return debugger.getThreadForIdentifierAddress(threadIdAddr); } } --- 128,137 ---- // Fetch the OSThread (for now and for simplicity, not making a // separate "OSThread" class in this package) Address osThreadAddr = osThreadField.getValue(addr); // Get the address of the thread_id within the OSThread Address threadIdAddr = ! osThreadAddr.addOffsetTo(threadIdField.getOffset()); JVMDebugger debugger = VM.getVM().getDebugger(); return debugger.getThreadForIdentifierAddress(threadIdAddr); } }
< prev index next >