agent/src/share/classes/sun/jvm/hotspot/runtime/win32_amd64/Win32AMD64JavaThreadPDAccess.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 8000973 Cdiff agent/src/share/classes/sun/jvm/hotspot/runtime/win32_amd64/Win32AMD64JavaThreadPDAccess.java

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

Print this page
8000973: SA on windows thread inspection is broken

*** 1,7 **** /* ! * Copyright (c) 2005, 2011, 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, 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.
*** 41,51 **** public class Win32AMD64JavaThreadPDAccess implements JavaThreadPDAccess { private static AddressField lastJavaFPField; private static AddressField osThreadField; // Field from OSThread ! private static Field osThreadThreadHandleField; // 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 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;
*** 62,72 **** Type anchorType = db.lookupType("JavaFrameAnchor"); lastJavaFPField = anchorType.getAddressField("_last_Java_fp"); osThreadField = type.getAddressField("_osthread"); type = db.lookupType("OSThread"); ! osThreadThreadHandleField = type.getField("_thread_handle"); } 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"); ! osThreadThreadIdField = type.getField("_thread_id"); } public Address getLastJavaFP(Address addr) { return lastJavaFPField.getValue(addr.addOffsetTo(sun.jvm.hotspot.runtime.JavaThread.getAnchorField().getOffset())); }
*** 126,137 **** public ThreadProxy getThreadProxy(Address addr) { // Addr is the address of the JavaThread. // 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 HANDLE within the OSThread ! Address threadHandleAddr = ! osThreadAddr.addOffsetTo(osThreadThreadHandleField.getOffset()); JVMDebugger debugger = VM.getVM().getDebugger(); ! return debugger.getThreadForIdentifierAddress(threadHandleAddr); } } --- 126,137 ---- public ThreadProxy getThreadProxy(Address addr) { // Addr is the address of the JavaThread. // 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); } }
agent/src/share/classes/sun/jvm/hotspot/runtime/win32_amd64/Win32AMD64JavaThreadPDAccess.java
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File