home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.debug;
-
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.ByteArrayInputStream;
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.EOFException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.PipedInputStream;
- import java.io.PipedOutputStream;
- import java.net.Socket;
- import java.util.Hashtable;
-
- class RemoteAgent implements AgentConstants {
- private Socket socket;
- // $FF: renamed from: in java.io.DataInputStream
- private DataInputStream field_0;
- private DataOutputStream out;
- private Hashtable objects = new Hashtable();
- private DebuggerCallback client;
- private AgentIn debugIn;
- private Thread debugInThread;
- private RemoteClass classObject;
- RemoteClass classClass;
- RemoteClass classString;
- boolean closeRemoteInterpreter = false;
- private RemoteThreadGroup systemThreadGroup;
- private boolean verbose = false;
- private boolean closing = false;
- private boolean closed = false;
-
- private int readPassword(String var1) {
- int var2 = 0;
- int var3 = "23456789abcdefghijkmnpqrstuvwxyz".length();
-
- for(int var4 = 0; var4 < var1.length(); ++var4) {
- int var5 = "23456789abcdefghijkmnpqrstuvwxyz".indexOf(var1.charAt(var4));
- if (var5 == -1) {
- return 0;
- }
-
- var2 = var2 * var3 + var5;
- }
-
- int var8 = 0;
-
- for(int var6 = 0; var6 < 8; ++var6) {
- int var7 = var2 & 6 << var6 * 3;
- var8 |= var7 >> var6 + 1;
- }
-
- return var8;
- }
-
- private void initSession(boolean var1) throws Exception {
- int var2 = this.field_0.readInt();
- if (var2 != 3) {
- System.err.println("Version mismatch between debugger and remote agent.");
- System.exit(1);
- }
-
- this.classObject = (RemoteClass)this.readValue(this.field_0);
- this.classClass = (RemoteClass)this.readValue(this.field_0);
- this.classString = (RemoteClass)this.readValue(this.field_0);
- this.message("loading classes ...");
- int var3 = this.field_0.readInt();
-
- for(int var4 = 0; var4 < var3; ++var4) {
- RemoteClass var10000 = (RemoteClass)this.readValue(this.field_0);
- }
-
- this.systemThreadGroup = (RemoteThreadGroup)this.readValue(this.field_0);
- this.setVerbose(var1);
- this.closing = this.closed = false;
- }
-
- RemoteAgent(String var1, String var2, String var3, DebuggerCallback var4, boolean var5) throws Exception {
- this.verbose = var5;
- if (var1.equals("127.0.0.1") && var2 == null) {
- String var6 = System.getProperty("file.separator");
- String var7 = new String(System.getProperty("java.home") + var6 + "bin" + var6 + "java_g -debug " + var3 + " sun.tools.debug.EmptyApp");
- this.message("starting child: " + var7);
- Process var8 = Runtime.getRuntime().exec(var7);
- DataInputStream var9 = new DataInputStream(var8.getInputStream());
- String var10 = var9.readLine();
- if (var10 == null) {
- this.error("Failed to exec a child java interpreter.");
- System.exit(1);
- }
-
- var2 = var10.substring(var10.indexOf("=") + 1);
- this.message("password returned: " + var2);
- this.closeRemoteInterpreter = true;
- }
-
- this.client = var4;
- this.socket = new Socket(var1, this.readPassword(var2));
- DataInputStream var11 = new DataInputStream(new BufferedInputStream((new Socket(var1, this.getDebugPort())).getInputStream()));
- this.debugIn = new AgentIn(this, var11, var4, var5);
- this.debugInThread = new Thread(this.debugIn, "Agent input");
- this.debugInThread.start();
- this.field_0 = new DataInputStream(new BufferedInputStream(this.socket.getInputStream()));
- this.out = new DataOutputStream(new BufferedOutputStream(this.socket.getOutputStream()));
- this.message("connected");
- this.initSession(var5);
- }
-
- RemoteAgent(DebuggerCallback var1, boolean var2) throws Exception {
- if (!Agent.isDebuggable()) {
- throw new IllegalAccessError();
- } else {
- this.verbose = var2;
- this.client = var1;
- PipedInputStream var3 = new PipedInputStream();
- PipedOutputStream var4 = new PipedOutputStream();
- PipedInputStream var5 = new PipedInputStream();
- Agent.connectToAgent(var4, var3, var5);
- DataInputStream var6 = new DataInputStream(new BufferedInputStream(var5));
- this.debugIn = new AgentIn(this, var6, var1, var2);
- this.debugInThread = new Thread(this.debugIn, "Agent input");
- this.debugInThread.start();
- this.field_0 = new DataInputStream(var3);
- this.out = new DataOutputStream(var4);
- this.message("connected");
- Agent.addSystemThread(Thread.currentThread());
- this.initSession(var2);
- }
- }
-
- int getDebugPort() {
- return this.socket.getPort();
- }
-
- InputStream getSourceFile(String var1, String var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- try {
- this.out.write(59);
- this.out.writeUTF(var2);
- this.out.writeUTF(var1);
-
- try {
- this.getReply(59);
- } catch (Exception var11) {
- Object var3 = null;
- return (InputStream)var3;
- }
-
- int var6 = this.field_0.readInt();
- if (var6 == -1) {
- Object var16 = null;
- return (InputStream)var16;
- } else {
- this.message("getSourceFile: allocating " + var6 + " bytes.");
- byte[] var7 = new byte[var6];
-
- try {
- this.field_0.readFully(var7);
- } catch (IOException var12) {
- this.error("unable to read " + var2);
- Object var14 = null;
- return (InputStream)var14;
- }
-
- ByteArrayInputStream var15 = new ByteArrayInputStream(var7);
- return var15;
- }
- } catch (Throwable var13) {
- throw var13;
- }
- }
-
- String objectToString(int var1) {
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- String var2;
- try {
- try {
- this.out.write(60);
- this.out.writeInt(var1);
- this.getReply(60);
- var2 = this.field_0.readUTF();
- return var2;
- } catch (Exception var7) {
- var2 = "<communication error>";
- }
- } catch (Throwable var8) {
- throw var8;
- }
-
- return var2;
- }
-
- void close() {
- this.message("close(" + this.closeRemoteInterpreter + ")");
- this.closing = true;
-
- try {
- this.debugInThread.stop();
- if (this.closeRemoteInterpreter) {
- DataOutputStream var1 = this.out;
- synchronized(var1){}
-
- try {
- this.out.write(58);
- this.getReply(58);
- } catch (Throwable var4) {
- throw var4;
- }
- }
-
- if (this.socket != null) {
- this.socket.close();
- }
- } catch (Exception var5) {
- }
-
- this.closed = true;
- }
-
- RemoteObject get(Integer var1) {
- return (RemoteObject)this.objects.get(var1);
- }
-
- private void put(Integer var1, RemoteObject var2) {
- this.objects.put(var1, var2);
- }
-
- RemoteValue readValue(DataInputStream var1) throws Exception {
- int var2 = var1.readInt();
- switch (var2) {
- case 0:
- return new RemoteBoolean(var1.readBoolean());
- case 1:
- return new RemoteByte(var1.readByte());
- case 2:
- return new RemoteChar(var1.readChar());
- case 3:
- return new RemoteShort(var1.readShort());
- case 4:
- return new RemoteInt(var1.readInt());
- case 5:
- return new RemoteLong(var1.readLong());
- case 6:
- return new RemoteFloat(var1.readFloat());
- case 7:
- return new RemoteDouble(var1.readDouble());
- case 9:
- int var15 = var1.readInt();
- if (var15 == 0) {
- return null;
- }
-
- Integer var24 = new Integer(var15);
- RemoteClass var30 = (RemoteClass)this.get(var24);
- if (var30 == null) {
- this.put(var24, var30 = new RemoteClass(this, var15));
- }
-
- var15 = var1.readInt();
- var24 = new Integer(var15);
- int var33 = var1.readInt();
- RemoteArray var7 = (RemoteArray)this.get(var24);
- if (var7 == null) {
- this.put(var24, var7 = new RemoteArray(this, var15, var30, var33));
- }
-
- return var7;
- case 15:
- int var13 = var1.readInt();
- Integer var22 = new Integer(var13);
- RemoteClass var29 = (RemoteClass)this.get(var22);
- if (var29 == null) {
- this.put(var22, var29 = new RemoteClass(this, var13));
- }
-
- var13 = var1.readInt();
- var22 = new Integer(var13);
- RemoteThreadGroup var32 = (RemoteThreadGroup)this.get(var22);
- if (var32 == null) {
- this.put(var22, var32 = new RemoteThreadGroup(this, var13, var29));
- }
-
- return var32;
- case 16:
- int var12 = var1.readInt();
- Integer var21 = new Integer(var12);
- RemoteClass var28 = (RemoteClass)this.get(var21);
- if (var28 == null) {
- this.put(var21, var28 = new RemoteClass(this, var12));
- }
-
- return var28;
- case 17:
- int var10 = var1.readInt();
- if (var10 == 0) {
- return null;
- }
-
- Integer var19 = new Integer(var10);
- RemoteClass var27 = (RemoteClass)this.get(var19);
- if (var27 == null) {
- this.put(var19, var27 = new RemoteClass(this, var10));
- }
-
- var10 = var1.readInt();
- var19 = new Integer(var10);
- RemoteObject var31 = this.get(var19);
- if (var31 == null) {
- this.put(var19, var31 = new RemoteObject(this, var10, var27));
- }
-
- return var31;
- case 18:
- int var9 = var1.readInt();
- Integer var18 = new Integer(var9);
- RemoteString var26 = (RemoteString)this.get(var18);
- if (var26 == null) {
- this.put(var18, var26 = new RemoteString(this, var9));
- }
-
- return var26;
- case 19:
- int var3 = var1.readInt();
- Integer var4 = new Integer(var3);
- RemoteClass var5 = (RemoteClass)this.get(var4);
- if (var5 == null) {
- this.put(var4, var5 = new RemoteClass(this, var3));
- }
-
- var3 = var1.readInt();
- var4 = new Integer(var3);
- RemoteThread var6 = (RemoteThread)this.get(var4);
- if (var6 == null) {
- this.put(var4, var6 = new RemoteThread(this, var3, var5));
- }
-
- return var6;
- default:
- this.error("invalid type code: " + var2);
- return null;
- }
- }
-
- private void getReply(int var1) throws Exception {
- if (this.closed) {
- throw new NoSessionException();
- } else {
- this.out.flush();
-
- while(true) {
- int var2 = 0;
-
- try {
- var2 = this.field_0.readInt();
- } catch (EOFException var4) {
- if (!this.closing) {
- this.error("unexpected eof");
- }
-
- return;
- } catch (IOException var5) {
- if (this.closing) {
- return;
- }
-
- throw var5;
- }
-
- if (var2 == -2) {
- Exception var3 = new Exception(this.field_0.readUTF());
- throw var3;
- }
-
- if (var2 == var1) {
- return;
- }
-
- this.error("unexpected reply: wanted " + var1 + ", got " + var2);
- }
- }
- }
-
- RemoteClass[] listClasses() throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- RemoteClass[] var1;
- try {
- this.out.write(49);
- this.getReply(49);
- int var4 = this.field_0.readInt();
- this.message("reading " + var4 + " classes...");
- RemoteClass[] var5 = new RemoteClass[var4];
-
- for(int var6 = 0; var6 < var4; ++var6) {
- var5[var6] = (RemoteClass)this.readValue(this.field_0);
- }
-
- var1 = var5;
- } catch (Throwable var8) {
- throw var8;
- }
-
- return var1;
- }
-
- RemoteClass findClass(String var1) throws Exception {
- RemoteClass[] var2 = this.listClasses();
-
- for(int var3 = 0; var3 < var2.length; ++var3) {
- String var4 = var2[var3].getName();
- if (var1.equals(var4)) {
- return var2[var3];
- }
-
- int var5 = var4.lastIndexOf(".");
- if (var5 >= 0 && var4.length() > var5) {
- var4 = var4.substring(var5 + 1);
- }
-
- if (var1.equals(var4)) {
- return var2[var3];
- }
- }
-
- return this.getClassByName(var1);
- }
-
- RemoteThreadGroup[] listThreadGroups(RemoteThreadGroup var1) throws Exception {
- Object var2 = null;
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- try {
- this.out.write(47);
- this.out.writeInt(var1 == null ? 0 : ((RemoteObject)var1).getId());
- this.getReply(47);
- int var5 = this.field_0.readInt();
- var9 = new RemoteThreadGroup[var5];
- this.message("listThreadGroups: " + var5 + " groups");
-
- for(int var6 = 0; var6 < var5; ++var6) {
- var9[var6] = (RemoteThreadGroup)this.readValue(this.field_0);
- }
- } catch (Throwable var8) {
- throw var8;
- }
-
- return var9;
- }
-
- RemoteThread[] listThreads(RemoteThreadGroup var1, boolean var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- RemoteThread[] var3;
- try {
- this.out.write(25);
- this.out.writeInt(var1 == null ? this.systemThreadGroup.getId() : ((RemoteObject)var1).getId());
- this.out.writeBoolean(var2);
- this.getReply(25);
- int var6 = this.field_0.readInt();
- RemoteThread[] var7 = new RemoteThread[var6];
-
- for(int var8 = 0; var8 < var6; ++var8) {
- var7[var8] = (RemoteThread)this.readValue(this.field_0);
- }
-
- var3 = var7;
- } catch (Throwable var10) {
- throw var10;
- }
-
- return var3;
- }
-
- void suspendThread(int var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(27);
- this.out.writeInt(var1);
- this.getReply(27);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- void resumeThread(int var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(28);
- this.out.writeInt(var1);
- this.getReply(28);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- void resumeLastSuspendedThreads() throws Exception {
- DataOutputStream var1 = this.out;
- synchronized(var1){}
-
- try {
- this.out.write(29);
- this.getReply(29);
- } catch (Throwable var3) {
- throw var3;
- }
-
- }
-
- RemoteStackFrame[] dumpStack(RemoteThread var1) throws Exception {
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- RemoteStackFrame[] var2;
- try {
- this.out.write(32);
- this.out.writeInt(((RemoteObject)var1).getId());
- this.getReply(32);
- int var5 = this.field_0.readInt();
- RemoteStackFrame[] var6 = new RemoteStackFrame[var5];
-
- for(int var7 = 0; var7 < var5; ++var7) {
- RemoteObject var8 = (RemoteObject)this.readValue(this.field_0);
- var6[var7] = new RemoteStackFrame(var8, var1, var7, this);
- var6[var7].className = this.field_0.readUTF();
- var6[var7].methodName = this.field_0.readUTF();
- var6[var7].lineno = this.field_0.readInt();
- var6[var7].pc = this.field_0.readInt();
- var6[var7].setRemoteClass((RemoteClass)this.readValue(this.field_0));
- int var9 = this.field_0.readInt();
- var6[var7].localVariables = new LocalVariable[var9];
-
- for(int var10 = 0; var10 < var9; ++var10) {
- LocalVariable var11 = new LocalVariable();
- var11.slot = this.field_0.readInt();
- var11.name = this.field_0.readUTF();
- var11.signature = this.field_0.readUTF();
- var11.methodArgument = this.field_0.readBoolean();
- this.message("lvar " + var10 + ": slot=" + var11.slot + ", name=" + var11.name + ", sig=" + var11.signature + ", arg=" + var11.methodArgument);
- var6[var7].localVariables[var10] = var11;
- }
- }
-
- var2 = var6;
- } catch (Throwable var13) {
- throw var13;
- }
-
- return var2;
- }
-
- void stopThread(int var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(56);
- this.out.writeInt(var1);
- this.getReply(56);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- void stopThreadGroup(int var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(57);
- this.out.writeInt(var1);
- this.getReply(57);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- void getClassInfo(RemoteClass var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(20);
- this.out.writeInt(var1.id);
- this.getReply(20);
- var1.name = this.field_0.readUTF();
- var1.sourceName = this.field_0.readUTF();
- var1.intf = this.field_0.readInt() != 0;
- var1.superclass = (RemoteClass)this.readValue(this.field_0);
- var1.loader = (RemoteObject)this.readValue(this.field_0);
- var1.interfaces = new RemoteClass[this.field_0.readInt()];
-
- for(int var4 = 0; var4 < var1.interfaces.length; ++var4) {
- var1.interfaces[var4] = (RemoteClass)this.readValue(this.field_0);
- }
- } catch (Throwable var6) {
- throw var6;
- }
-
- }
-
- RemoteClass getClassByName(String var1) throws Exception {
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- RemoteClass var2;
- try {
- this.out.write(22);
- this.out.writeUTF(var1);
- this.getReply(22);
- var2 = (RemoteClass)this.readValue(this.field_0);
- } catch (Throwable var6) {
- throw var6;
- }
-
- return var2;
- }
-
- void getThreadGroupInfo(RemoteThreadGroup var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(48);
- this.out.writeInt(var1.id);
- this.getReply(48);
- var1.parent = (RemoteThreadGroup)this.readValue(this.field_0);
- var1.name = this.field_0.readUTF();
- var1.maxPriority = this.field_0.readInt();
- var1.daemon = this.field_0.readBoolean();
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- String getThreadName(int var1) throws Exception {
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- String var2;
- try {
- this.out.write(21);
- this.out.writeInt(var1);
- this.getReply(21);
- var2 = this.field_0.readUTF();
- } catch (Throwable var6) {
- throw var6;
- }
-
- return var2;
- }
-
- int getThreadStatus(int var1) throws Exception {
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- int var2;
- try {
- this.out.write(31);
- this.out.writeInt(var1);
- this.getReply(31);
- var2 = this.field_0.readInt();
- } catch (Throwable var6) {
- throw var6;
- }
-
- return var2;
- }
-
- // $FF: renamed from: gc (sun.tools.debug.RemoteObject[]) void
- void method_0(RemoteObject[] var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(23);
- this.out.writeInt(var1.length);
-
- for(int var4 = 0; var4 < var1.length; ++var4) {
- if (var1[var4] == null) {
- this.out.writeInt(0);
- } else {
- this.out.writeInt(var1[var4].id);
- }
- }
-
- this.getReply(23);
- this.out.write(24);
- this.getReply(24);
- this.objects = new Hashtable();
-
- while(this.readValue(this.field_0) != null) {
- }
- } catch (Throwable var6) {
- throw var6;
- }
-
- }
-
- void trace(boolean var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(34);
- this.out.writeInt(3);
- this.out.writeInt(var1 ? 1 : 0);
- this.getReply(34);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- void itrace(boolean var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(34);
- this.out.writeInt(4);
- this.out.writeInt(var1 ? 1 : 0);
- this.getReply(34);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- int totalMemory() throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- int var1;
- try {
- this.out.write(34);
- this.out.writeInt(1);
- this.getReply(34);
- var1 = this.field_0.readInt();
- } catch (Throwable var5) {
- throw var5;
- }
-
- return var1;
- }
-
- int freeMemory() throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- int var1;
- try {
- this.out.write(34);
- this.out.writeInt(2);
- this.getReply(34);
- var1 = this.field_0.readInt();
- } catch (Throwable var5) {
- throw var5;
- }
-
- return var1;
- }
-
- RemoteThreadGroup run(int var1, String[] var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- RemoteThreadGroup var3;
- try {
- this.out.write(26);
- this.out.write(var1);
-
- for(int var6 = 0; var6 < var1; ++var6) {
- this.out.writeUTF(var2[var6]);
- }
-
- this.getReply(26);
- var3 = (RemoteThreadGroup)this.readValue(this.field_0);
- } catch (Throwable var8) {
- throw var8;
- }
-
- return var3;
- }
-
- RemoteField[] getFields(int var1) throws Exception {
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- RemoteField[] var2;
- try {
- this.out.write(35);
- this.out.writeInt(var1);
- this.getReply(35);
- int var5 = this.field_0.readInt();
- RemoteField[] var6 = new RemoteField[var5];
-
- for(int var7 = 0; var7 < var5; ++var7) {
- int var8 = this.field_0.readInt();
- String var9 = this.field_0.readUTF();
- String var10 = this.field_0.readUTF();
- short var11 = this.field_0.readShort();
- RemoteClass var12 = (RemoteClass)this.readValue(this.field_0);
- var6[var7] = new RemoteField(this, var8, var9, var10, var11, var12);
- }
-
- var2 = var6;
- } catch (Throwable var14) {
- throw var14;
- }
-
- return var2;
- }
-
- RemoteValue[] getElements(int var1, int var2, int var3, int var4) throws Exception {
- DataOutputStream var6 = this.out;
- synchronized(var6){}
-
- RemoteValue[] var5;
- try {
- this.out.write(40);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(var3);
- this.out.writeInt(var4);
- this.getReply(40);
- RemoteValue[] var8 = new RemoteValue[this.field_0.readInt()];
-
- for(int var9 = 0; var9 < var8.length; ++var9) {
- var8[var9] = this.readValue(this.field_0);
- }
-
- var5 = var8;
- } catch (Throwable var11) {
- throw var11;
- }
-
- return var5;
- }
-
- RemoteField[] getMethods(int var1) throws Exception {
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- RemoteField[] var2;
- try {
- this.out.write(36);
- this.out.writeInt(var1);
- this.getReply(36);
- int var5 = this.field_0.readInt();
- this.message("getting (" + var5 + ") methods");
- RemoteField[] var6 = new RemoteField[var5];
-
- for(int var7 = 0; var7 < var5; ++var7) {
- int var8 = this.field_0.readInt();
- String var9 = this.field_0.readUTF();
- String var10 = this.field_0.readUTF();
- short var11 = this.field_0.readShort();
- RemoteClass var10000 = (RemoteClass)this.readValue(this.field_0);
- var6[var7] = new RemoteField(this, var8, var9, var10, var11, (RemoteClass)null);
- }
-
- var2 = var6;
- } catch (Throwable var13) {
- throw var13;
- }
-
- return var2;
- }
-
- int getMethodLineNumber(int var1, int var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- int var3;
- try {
- this.out.write(72);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.getReply(72);
- var3 = this.field_0.readInt();
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var3;
- }
-
- int[] getSlotSignature(int var1, int var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- int[] var3;
- try {
- this.out.write(38);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.getReply(38);
- int[] var6 = new int[this.field_0.readInt()];
-
- for(int var7 = 0; var7 < var6.length; ++var7) {
- var6[var7] = this.field_0.readInt();
- }
-
- var3 = var6;
- } catch (Throwable var9) {
- throw var9;
- }
-
- return var3;
- }
-
- RemoteValue getSlotValue(int var1, int var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- RemoteValue var3;
- try {
- this.out.write(39);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.getReply(39);
- RemoteValue var6 = this.readValue(this.field_0);
- if (var6 != null && var6.isObject() && var6.getClass().getName().equals("java.lang.ArrayIndexOutOfBoundsException")) {
- throw new ArrayIndexOutOfBoundsException("invalid slot index " + var2);
- }
-
- var3 = var6;
- } catch (Throwable var8) {
- throw var8;
- }
-
- return var3;
- }
-
- RemoteValue getStackValue(int var1, int var2, int var3, char var4) throws Exception {
- DataOutputStream var6 = this.out;
- synchronized(var6){}
-
- RemoteValue var5;
- try {
- this.out.write(50);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(var3);
- this.out.writeChar(var4);
- this.getReply(50);
- var5 = this.readValue(this.field_0);
- } catch (Throwable var9) {
- throw var9;
- }
-
- return var5;
- }
-
- void setSlotValue(int var1, int var2, int var3) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- try {
- this.out.write(68);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(4);
- this.out.writeInt(var3);
- this.getReply(68);
- } catch (Throwable var6) {
- throw var6;
- }
-
- }
-
- void setSlotValue(int var1, int var2, boolean var3) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- try {
- this.out.write(68);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(0);
- this.out.writeBoolean(var3);
- this.getReply(68);
- } catch (Throwable var6) {
- throw var6;
- }
-
- }
-
- void setSlotValue(int var1, int var2, char var3) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- try {
- this.out.write(68);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(4);
- this.out.writeInt(var3);
- this.getReply(68);
- } catch (Throwable var6) {
- throw var6;
- }
-
- }
-
- void setSlotValue(int var1, int var2, long var3) throws Exception {
- DataOutputStream var5 = this.out;
- synchronized(var5){}
-
- try {
- this.out.write(68);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(5);
- this.out.writeLong(var3);
- this.getReply(68);
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- void setSlotValue(int var1, int var2, float var3) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- try {
- this.out.write(68);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(7);
- this.out.writeDouble((double)var3);
- this.getReply(68);
- } catch (Throwable var6) {
- throw var6;
- }
-
- }
-
- void setSlotValue(int var1, int var2, double var3) throws Exception {
- DataOutputStream var5 = this.out;
- synchronized(var5){}
-
- try {
- this.out.write(68);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(7);
- this.out.writeDouble(var3);
- this.getReply(68);
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- void setStackValue(int var1, int var2, int var3, int var4) throws Exception {
- DataOutputStream var5 = this.out;
- synchronized(var5){}
-
- try {
- this.out.write(69);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(var3);
- this.out.writeInt(4);
- this.out.writeInt(var4);
- this.getReply(69);
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- void setStackValue(int var1, int var2, int var3, boolean var4) throws Exception {
- DataOutputStream var5 = this.out;
- synchronized(var5){}
-
- try {
- this.out.write(69);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(var3);
- this.out.writeInt(0);
- this.out.writeBoolean(var4);
- this.getReply(69);
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- void setStackValue(int var1, int var2, int var3, char var4) throws Exception {
- DataOutputStream var5 = this.out;
- synchronized(var5){}
-
- try {
- this.out.write(69);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(var3);
- this.out.writeInt(4);
- this.out.writeInt(var4);
- this.getReply(69);
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- void setStackValue(int var1, int var2, int var3, long var4) throws Exception {
- DataOutputStream var6 = this.out;
- synchronized(var6){}
-
- try {
- this.out.write(69);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(var3);
- this.out.writeInt(5);
- this.out.writeLong(var4);
- this.getReply(69);
- } catch (Throwable var8) {
- throw var8;
- }
-
- }
-
- void setStackValue(int var1, int var2, int var3, float var4) throws Exception {
- DataOutputStream var5 = this.out;
- synchronized(var5){}
-
- try {
- this.out.write(69);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(var3);
- this.out.writeInt(7);
- this.out.writeDouble((double)var4);
- this.getReply(69);
- } catch (Throwable var7) {
- throw var7;
- }
-
- }
-
- void setStackValue(int var1, int var2, int var3, double var4) throws Exception {
- DataOutputStream var6 = this.out;
- synchronized(var6){}
-
- try {
- this.out.write(69);
- this.out.writeInt(var1);
- this.out.writeInt(var2);
- this.out.writeInt(var3);
- this.out.writeInt(7);
- this.out.writeDouble(var4);
- this.getReply(69);
- } catch (Throwable var8) {
- throw var8;
- }
-
- }
-
- String setBreakpointLine(RemoteClass var1, int var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- String var3;
- try {
- this.out.write(41);
- this.out.writeInt(((RemoteObject)var1).getId());
- this.out.writeInt(var2);
- this.getReply(41);
- var3 = this.field_0.readUTF();
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var3;
- }
-
- String setBreakpointMethod(RemoteClass var1, RemoteField var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- String var3;
- try {
- this.out.write(42);
- this.out.writeInt(((RemoteObject)var1).getId());
- this.out.writeInt(var2.slot);
- this.getReply(42);
- var3 = this.field_0.readUTF();
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var3;
- }
-
- String[] listBreakpoints() throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- String[] var1;
- try {
- this.out.write(65);
- this.getReply(65);
- String[] var4 = new String[this.field_0.readInt()];
-
- for(int var5 = 0; var5 < var4.length; ++var5) {
- var4[var5] = this.field_0.readUTF();
- }
-
- var1 = var4;
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var1;
- }
-
- String clearBreakpoint(RemoteClass var1, int var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- String var3;
- try {
- this.message("clearing bkpt at " + var1.getName() + ", pc " + var2);
- this.out.write(43);
- this.out.writeInt(((RemoteObject)var1).getId());
- this.out.writeInt(var2);
- this.getReply(43);
- var3 = this.field_0.readUTF();
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var3;
- }
-
- String clearBreakpointLine(RemoteClass var1, int var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- String var3;
- try {
- this.message("clearing bkpt at " + var1.getName() + ":" + var2);
- this.out.write(44);
- this.out.writeInt(((RemoteObject)var1).getId());
- this.out.writeInt(var2);
- this.getReply(44);
- var3 = this.field_0.readUTF();
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var3;
- }
-
- String clearBreakpointMethod(RemoteClass var1, RemoteField var2) throws Exception {
- DataOutputStream var4 = this.out;
- synchronized(var4){}
-
- String var3;
- try {
- this.message("clearing bkpt at " + var1.getName() + ":" + var2.getName());
- this.out.write(45);
- this.out.writeInt(((RemoteObject)var1).getId());
- this.out.writeInt(var2.slot);
- this.getReply(45);
- var3 = this.field_0.readUTF();
- } catch (Throwable var7) {
- throw var7;
- }
-
- return var3;
- }
-
- void catchExceptionClass(RemoteClass var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(53);
- this.out.writeInt(((RemoteObject)var1).getId());
- this.getReply(53);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- void ignoreExceptionClass(RemoteClass var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(54);
- this.out.writeInt(((RemoteObject)var1).getId());
- this.getReply(54);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- String[] getExceptionCatchList() throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- String[] var1;
- try {
- this.out.write(55);
- this.getReply(55);
- int var4 = this.field_0.readInt();
- String[] var5 = new String[var4];
-
- for(int var6 = 0; var6 < var4; ++var6) {
- RemoteClass var7 = (RemoteClass)this.readValue(this.field_0);
- var5[var6] = var7.getName();
- }
-
- var1 = var5;
- } catch (Throwable var9) {
- throw var9;
- }
-
- return var1;
- }
-
- String getSourcePath() throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- String var1;
- try {
- this.out.write(61);
- this.getReply(61);
- var1 = this.field_0.readUTF();
- } catch (Throwable var5) {
- throw var5;
- }
-
- return var1;
- }
-
- void setSourcePath(String var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(62);
- this.out.writeUTF(var1);
- this.getReply(62);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- void stepThread(int var1, boolean var2) throws Exception {
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- try {
- this.out.write(63);
- this.out.writeInt(var1);
- this.out.writeBoolean(var2);
- this.getReply(63);
- } catch (Throwable var5) {
- throw var5;
- }
-
- }
-
- void stepNextThread(int var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(64);
- this.out.writeInt(var1);
- this.getReply(64);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- private void setVerbose(boolean var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(51);
- this.out.writeBoolean(var1);
- this.getReply(51);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- void objectFinalize(int var1) throws Exception {
- DataOutputStream var2 = this.out;
- synchronized(var2){}
-
- try {
- this.out.write(70);
- this.out.writeInt(var1);
- this.out.write(70);
- } catch (Throwable var4) {
- throw var4;
- }
-
- }
-
- int[] getLineNumbers(RemoteClass var1) throws Exception {
- DataOutputStream var3 = this.out;
- synchronized(var3){}
-
- int[] var2;
- try {
- this.out.write(71);
- this.out.writeInt(((RemoteObject)var1).getId());
- this.getReply(71);
- int var5 = this.field_0.readInt();
- int[] var6 = new int[var5];
-
- for(int var7 = 0; var7 < var5; ++var7) {
- var6[var7] = this.field_0.readInt();
- }
-
- var2 = var6;
- } catch (Throwable var9) {
- throw var9;
- }
-
- return var2;
- }
-
- void error(String var1) {
- try {
- this.client.printToConsole("[Internal debugger error: " + var1 + "]\n");
- } catch (Exception var2) {
- System.out.println("[Internal debugger error: " + var1 + "]");
- }
- }
-
- void message(String var1) {
- if (this.verbose) {
- try {
- this.client.printToConsole("[debugger: " + var1 + "]\n");
- } catch (Exception var2) {
- System.out.println("[debugger: " + var1 + "]");
- }
- }
- }
- }
-