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