1 package net.mograsim.plugin.launch;
3 import org.eclipse.core.runtime.PlatformObject;
4 import org.eclipse.debug.core.DebugException;
5 import org.eclipse.debug.core.ILaunch;
6 import org.eclipse.debug.core.model.IDebugTarget;
7 import org.eclipse.debug.core.model.IRegisterGroup;
8 import org.eclipse.debug.core.model.IStackFrame;
9 import org.eclipse.debug.core.model.IThread;
10 import org.eclipse.debug.core.model.IVariable;
12 import net.mograsim.machine.Machine;
13 import net.mograsim.plugin.MograsimActivator;
15 public class MachineStackFrame extends PlatformObject implements IStackFrame
17 private final MachineThread thread;
18 private final MachineRegisterGroup registerGroup;
20 public MachineStackFrame(MachineThread thread)
23 this.registerGroup = new MachineRegisterGroup(this);
27 public String getModelIdentifier()
29 return MograsimActivator.PLUGIN_ID;
32 public Machine getMachine()
34 return thread.getMachine();
38 public IDebugTarget getDebugTarget()
40 return thread.getDebugTarget();
44 public ILaunch getLaunch()
46 return thread.getLaunch();
50 public boolean canStepInto()
52 return thread.canStepInto();
56 public boolean canStepOver()
58 return thread.canStepOver();
62 public boolean canStepReturn()
64 return thread.canStepReturn();
68 public boolean isStepping()
70 return thread.isStepping();
74 public void stepInto() throws DebugException
80 public void stepOver() throws DebugException
86 public void stepReturn() throws DebugException
92 public boolean canResume()
94 return thread.canResume();
98 public boolean canSuspend()
100 return thread.canSuspend();
104 public boolean isSuspended()
106 return thread.isSuspended();
110 public void resume() throws DebugException
116 public void suspend() throws DebugException
122 public boolean canTerminate()
124 return thread.canTerminate();
128 public boolean isTerminated()
130 return thread.isTerminated();
134 public void terminate() throws DebugException
140 public IThread getThread()
146 public IVariable[] getVariables() throws DebugException
148 return new IVariable[0];
152 public boolean hasVariables() throws DebugException
158 public int getLineNumber() throws DebugException
160 // TODO could we transmit the active microinstruction address using this?
165 public int getCharStart() throws DebugException
171 public int getCharEnd() throws DebugException
177 public String getName() throws DebugException
179 return "pseudo stack frame";
183 public IRegisterGroup[] getRegisterGroups() throws DebugException
185 return new IRegisterGroup[] { registerGroup };
189 public boolean hasRegisterGroups() throws DebugException