Mercurial > hg > truffle
comparison agent/src/share/classes/sun/jvm/hotspot/runtime/linux_amd64/LinuxAMD64JavaThreadPDAccess.java @ 3908:7588156f5cf9
7051798: SA-JDI: NPE in Frame.addressOfStackSlot(Frame.java:244)
Reviewed-by: kvn
author | never |
---|---|
date | Mon, 05 Sep 2011 17:09:05 -0700 |
parents | c18cbe5936b8 |
children |
comparison
equal
deleted
inserted
replaced
3907:7b5c767f229c | 3908:7588156f5cf9 |
---|---|
28 import java.util.*; | 28 import java.util.*; |
29 import sun.jvm.hotspot.debugger.*; | 29 import sun.jvm.hotspot.debugger.*; |
30 import sun.jvm.hotspot.debugger.amd64.*; | 30 import sun.jvm.hotspot.debugger.amd64.*; |
31 import sun.jvm.hotspot.runtime.*; | 31 import sun.jvm.hotspot.runtime.*; |
32 import sun.jvm.hotspot.runtime.amd64.*; | 32 import sun.jvm.hotspot.runtime.amd64.*; |
33 import sun.jvm.hotspot.runtime.x86.*; | |
33 import sun.jvm.hotspot.types.*; | 34 import sun.jvm.hotspot.types.*; |
34 import sun.jvm.hotspot.utilities.*; | 35 import sun.jvm.hotspot.utilities.*; |
35 | 36 |
36 public class LinuxAMD64JavaThreadPDAccess implements JavaThreadPDAccess { | 37 public class LinuxAMD64JavaThreadPDAccess implements JavaThreadPDAccess { |
37 private static AddressField lastJavaFPField; | 38 private static AddressField lastJavaFPField; |
78 public Frame getLastFramePD(JavaThread thread, Address addr) { | 79 public Frame getLastFramePD(JavaThread thread, Address addr) { |
79 Address fp = thread.getLastJavaFP(); | 80 Address fp = thread.getLastJavaFP(); |
80 if (fp == null) { | 81 if (fp == null) { |
81 return null; // no information | 82 return null; // no information |
82 } | 83 } |
83 return new AMD64Frame(thread.getLastJavaSP(), fp); | 84 return new X86Frame(thread.getLastJavaSP(), fp); |
84 } | 85 } |
85 | 86 |
86 public RegisterMap newRegisterMap(JavaThread thread, boolean updateMap) { | 87 public RegisterMap newRegisterMap(JavaThread thread, boolean updateMap) { |
87 return new AMD64RegisterMap(thread, updateMap); | 88 return new X86RegisterMap(thread, updateMap); |
88 } | 89 } |
89 | 90 |
90 public Frame getCurrentFrameGuess(JavaThread thread, Address addr) { | 91 public Frame getCurrentFrameGuess(JavaThread thread, Address addr) { |
91 ThreadProxy t = getThreadProxy(addr); | 92 ThreadProxy t = getThreadProxy(addr); |
92 AMD64ThreadContext context = (AMD64ThreadContext) t.getContext(); | 93 AMD64ThreadContext context = (AMD64ThreadContext) t.getContext(); |
93 AMD64CurrentFrameGuess guesser = new AMD64CurrentFrameGuess(context, thread); | 94 AMD64CurrentFrameGuess guesser = new AMD64CurrentFrameGuess(context, thread); |
94 if (!guesser.run(GUESS_SCAN_RANGE)) { | 95 if (!guesser.run(GUESS_SCAN_RANGE)) { |
95 return null; | 96 return null; |
96 } | 97 } |
97 if (guesser.getPC() == null) { | 98 if (guesser.getPC() == null) { |
98 return new AMD64Frame(guesser.getSP(), guesser.getFP()); | 99 return new X86Frame(guesser.getSP(), guesser.getFP()); |
99 } else { | 100 } else { |
100 return new AMD64Frame(guesser.getSP(), guesser.getFP(), guesser.getPC()); | 101 return new X86Frame(guesser.getSP(), guesser.getFP(), guesser.getPC()); |
101 } | 102 } |
102 } | 103 } |
103 | 104 |
104 public void printThreadIDOn(Address addr, PrintStream tty) { | 105 public void printThreadIDOn(Address addr, PrintStream tty) { |
105 tty.print(getThreadProxy(addr)); | 106 tty.print(getThreadProxy(addr)); |