29 import sun.jvm.hotspot.debugger.*; |
29 import sun.jvm.hotspot.debugger.*; |
30 import sun.jvm.hotspot.debugger.win32.*; |
30 import sun.jvm.hotspot.debugger.win32.*; |
31 import sun.jvm.hotspot.debugger.amd64.*; |
31 import sun.jvm.hotspot.debugger.amd64.*; |
32 import sun.jvm.hotspot.runtime.*; |
32 import sun.jvm.hotspot.runtime.*; |
33 import sun.jvm.hotspot.runtime.amd64.*; |
33 import sun.jvm.hotspot.runtime.amd64.*; |
|
34 import sun.jvm.hotspot.runtime.x86.*; |
34 import sun.jvm.hotspot.types.*; |
35 import sun.jvm.hotspot.types.*; |
35 import sun.jvm.hotspot.utilities.*; |
36 import sun.jvm.hotspot.utilities.*; |
36 |
37 |
37 /** This class is only public to allow using the VMObjectFactory to |
38 /** This class is only public to allow using the VMObjectFactory to |
38 instantiate these. |
39 instantiate these. |
84 if (fp == null) { |
85 if (fp == null) { |
85 return null; // no information |
86 return null; // no information |
86 } |
87 } |
87 Address pc = thread.getLastJavaPC(); |
88 Address pc = thread.getLastJavaPC(); |
88 if ( pc != null ) { |
89 if ( pc != null ) { |
89 return new AMD64Frame(thread.getLastJavaSP(), fp, pc); |
90 return new X86Frame(thread.getLastJavaSP(), fp, pc); |
90 } else { |
91 } else { |
91 return new AMD64Frame(thread.getLastJavaSP(), fp); |
92 return new X86Frame(thread.getLastJavaSP(), fp); |
92 } |
93 } |
93 } |
94 } |
94 |
95 |
95 public RegisterMap newRegisterMap(JavaThread thread, boolean updateMap) { |
96 public RegisterMap newRegisterMap(JavaThread thread, boolean updateMap) { |
96 return new AMD64RegisterMap(thread, updateMap); |
97 return new X86RegisterMap(thread, updateMap); |
97 } |
98 } |
98 |
99 |
99 public Frame getCurrentFrameGuess(JavaThread thread, Address addr) { |
100 public Frame getCurrentFrameGuess(JavaThread thread, Address addr) { |
100 ThreadProxy t = getThreadProxy(addr); |
101 ThreadProxy t = getThreadProxy(addr); |
101 AMD64ThreadContext context = (AMD64ThreadContext) t.getContext(); |
102 AMD64ThreadContext context = (AMD64ThreadContext) t.getContext(); |
102 AMD64CurrentFrameGuess guesser = new AMD64CurrentFrameGuess(context, thread); |
103 AMD64CurrentFrameGuess guesser = new AMD64CurrentFrameGuess(context, thread); |
103 if (!guesser.run(GUESS_SCAN_RANGE)) { |
104 if (!guesser.run(GUESS_SCAN_RANGE)) { |
104 return null; |
105 return null; |
105 } |
106 } |
106 if (guesser.getPC() == null) { |
107 if (guesser.getPC() == null) { |
107 return new AMD64Frame(guesser.getSP(), guesser.getFP()); |
108 return new X86Frame(guesser.getSP(), guesser.getFP()); |
108 } else { |
109 } else { |
109 return new AMD64Frame(guesser.getSP(), guesser.getFP(), guesser.getPC()); |
110 return new X86Frame(guesser.getSP(), guesser.getFP(), guesser.getPC()); |
110 } |
111 } |
111 } |
112 } |
112 |
113 |
113 public void printThreadIDOn(Address addr, PrintStream tty) { |
114 public void printThreadIDOn(Address addr, PrintStream tty) { |
114 tty.print(getThreadProxy(addr)); |
115 tty.print(getThreadProxy(addr)); |