< prev index next >

src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/win32_x86/Win32X86JavaThreadPDAccess.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2000, 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) 2000, 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.
*** 40,50 **** public class Win32X86JavaThreadPDAccess 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; --- 40,50 ---- public class Win32X86JavaThreadPDAccess 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;
*** 61,71 **** 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())); } --- 61,71 ---- 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())); }
*** 127,136 **** // 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); } } --- 127,136 ---- // 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 >