agent/src/share/classes/sun/jvm/hotspot/runtime/win32_x86/Win32X86JavaThreadPDAccess.java
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/agent/src/share/classes/sun/jvm/hotspot/runtime/win32_x86/Win32X86JavaThreadPDAccess.java Thu Jan 31 17:36:36 2013
--- new/agent/src/share/classes/sun/jvm/hotspot/runtime/win32_x86/Win32X86JavaThreadPDAccess.java Thu Jan 31 17:36:36 2013
*** 1,7 ****
--- 1,7 ----
/*
! * Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
! * 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.
*** 40,50 ****
--- 40,50 ----
public class Win32X86JavaThreadPDAccess implements JavaThreadPDAccess {
private static AddressField lastJavaFPField;
private static AddressField osThreadField;
// Field from OSThread
! private static Field osThreadThreadHandleField;
! 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;
*** 61,71 ****
--- 61,71 ----
Type anchorType = db.lookupType("JavaFrameAnchor");
lastJavaFPField = anchorType.getAddressField("_last_Java_fp");
osThreadField = type.getAddressField("_osthread");
type = db.lookupType("OSThread");
! osThreadThreadHandleField = type.getField("_thread_handle");
! osThreadThreadIdField = type.getField("_thread_id");
}
public Address getLastJavaFP(Address addr) {
return lastJavaFPField.getValue(addr.addOffsetTo(sun.jvm.hotspot.runtime.JavaThread.getAnchorField().getOffset()));
}
*** 125,136 ****
--- 125,136 ----
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());
! // Get the address of the thread_id within the OSThread
! Address threadIdAddr =
! osThreadAddr.addOffsetTo(osThreadThreadIdField.getOffset());
JVMDebugger debugger = VM.getVM().getDebugger();
! return debugger.getThreadForIdentifierAddress(threadHandleAddr);
! return debugger.getThreadForIdentifierAddress(threadIdAddr);
}
}
agent/src/share/classes/sun/jvm/hotspot/runtime/win32_x86/Win32X86JavaThreadPDAccess.java
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File