hotspot/agent/src/share/classes/sun/jvm/hotspot/debugger/dbx/x86/DbxX86Thread.java
changeset 10864 17307b96ae38
parent 10779 5037da29fa26
parent 10762 cc1f5ce8e504
child 10865 7f8dd1713604
equal deleted inserted replaced
10779:5037da29fa26 10864:17307b96ae38
     1 /*
       
     2  * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved.
       
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4  *
       
     5  * This code is free software; you can redistribute it and/or modify it
       
     6  * under the terms of the GNU General Public License version 2 only, as
       
     7  * published by the Free Software Foundation.
       
     8  *
       
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
       
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12  * version 2 for more details (a copy is included in the LICENSE file that
       
    13  * accompanied this code).
       
    14  *
       
    15  * You should have received a copy of the GNU General Public License version
       
    16  * 2 along with this work; if not, write to the Free Software Foundation,
       
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18  *
       
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    20  * or visit www.oracle.com if you need additional information or have any
       
    21  * questions.
       
    22  *
       
    23  */
       
    24 
       
    25 package sun.jvm.hotspot.debugger.dbx.x86;
       
    26 
       
    27 import sun.jvm.hotspot.debugger.*;
       
    28 import sun.jvm.hotspot.debugger.x86.*;
       
    29 import sun.jvm.hotspot.debugger.dbx.*;
       
    30 import sun.jvm.hotspot.utilities.*;
       
    31 
       
    32 public class DbxX86Thread implements ThreadProxy {
       
    33   private DbxDebugger debugger;
       
    34   private int         id;
       
    35 
       
    36   public DbxX86Thread(DbxDebugger debugger, Address addr) {
       
    37     this.debugger = debugger;
       
    38 
       
    39     // FIXME: the size here should be configurable. However, making it
       
    40     // so would produce a dependency on the "types" package from the
       
    41     // debugger package, which is not desired.
       
    42     this.id       = (int) addr.getCIntegerAt(0, 4, true);
       
    43   }
       
    44 
       
    45   public DbxX86Thread(DbxDebugger debugger, long id) {
       
    46     this.debugger = debugger;
       
    47     this.id  = (int) id;
       
    48   }
       
    49 
       
    50   public boolean equals(Object obj) {
       
    51     if ((obj == null) || !(obj instanceof DbxX86Thread)) {
       
    52       return false;
       
    53     }
       
    54 
       
    55     return (((DbxX86Thread) obj).id == id);
       
    56   }
       
    57 
       
    58   public int hashCode() {
       
    59     return id;
       
    60   }
       
    61 
       
    62   public ThreadContext getContext() throws IllegalThreadStateException {
       
    63     DbxX86ThreadContext context = new DbxX86ThreadContext(debugger);
       
    64     long[] regs = debugger.getThreadIntegerRegisterSet(id);
       
    65     if (Assert.ASSERTS_ENABLED) {
       
    66       Assert.that(regs.length == 19, "unknown size of register set -- adjust this code");
       
    67     }
       
    68     for (int i = 0; i < regs.length; i++) {
       
    69       context.setRegister(i, regs[i]);
       
    70     }
       
    71     return context;
       
    72   }
       
    73 
       
    74   public boolean canSetContext() throws DebuggerException {
       
    75     return false;
       
    76   }
       
    77 
       
    78   public void setContext(ThreadContext context)
       
    79     throws IllegalThreadStateException, DebuggerException {
       
    80     throw new DebuggerException("Unimplemented");
       
    81   }
       
    82 
       
    83   public String toString() {
       
    84     return "t@" + id;
       
    85   }
       
    86 }