hotspot/agent/src/share/classes/sun/jvm/hotspot/runtime/win32_amd64/Win32AMD64JavaThreadPDAccess.java
changeset 10517 f92c9ff3a15f
parent 5547 f4b087cbb361
child 10547 ea4a2ec31ae2
equal deleted inserted replaced
10516:2797e487c09f 10517:f92c9ff3a15f
    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));