1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Started work on optimizing stepping.

This commit is contained in:
Pawel Piech 2006-08-19 17:52:42 +00:00
parent fb0fd74800
commit 32b8c9157f
2 changed files with 42 additions and 8 deletions

View file

@ -17,7 +17,13 @@ import org.eclipse.dd.dsf.model.IDataModelService;
*/ */
public interface IRunControl extends IDataModelService public interface IRunControl extends IDataModelService
{ {
/**
* Amount of time in seconds, that it takes the ISteppingTimedOutEvent event to
* be issued after a step is started.
* @see ISteppingTimedOutEvent
*/
public final static int STEPPING_TIMEOUT = 5;
/** /**
* Execution context is the object on which run control operations can be * Execution context is the object on which run control operations can be
* performed. A lot of higher-level services reference this context to build * performed. A lot of higher-level services reference this context to build
@ -50,18 +56,34 @@ public interface IRunControl extends IDataModelService
public interface IContainerResumedEvent extends IDataModelEvent<IExecutionDMC> { public interface IContainerResumedEvent extends IDataModelEvent<IExecutionDMC> {
StateChangeReason getReason(); StateChangeReason getReason();
} }
public interface IStartedEvent extends IDataModelEvent<IExecutionDMC> {
IExecutionDMC getExecutionContext();
}
public interface IExitedEvent extends IDataModelEvent<IExecutionDMC> {
IExecutionDMC getExecutionContext();
}
/**
* Indicates that a new execution context (thread) was started. The DMC
* for the event is the container of the new exec context.
*/
public interface IStartedEvent extends IDataModelEvent<IContainerDMC> {
IExecutionDMC getExecutionContext();
}
/**
* Indicates that an execution context has exited. As in the started event,
* the DMC for the event is the container of the exec context.
*/
public interface IExitedEvent extends IDataModelEvent<IContainerDMC> {
IExecutionDMC getExecutionContext();
}
/**
* Indicates that the given context has been stepping for some time,
* and the UI (views and actions) may need to be updated accordingly.
*/
public interface ISteppingTimedOutEvent extends IDataModelEvent<IExecutionDMC> {
}
/** /**
* Display information for an execution context. * Display information for an execution context.
*/ */
public interface IExecutionData extends IDataModelData { public interface IExecutionData extends IDataModelData {
boolean isSuspended();
StateChangeReason getStateChangeReason(); StateChangeReason getStateChangeReason();
} }
@ -81,6 +103,7 @@ public interface IRunControl extends IDataModelService
void suspend(IExecutionDMC context, Done done); void suspend(IExecutionDMC context, Done done);
public enum StepType { STEP_OVER, STEP_INTO, STEP_RETURN }; public enum StepType { STEP_OVER, STEP_INTO, STEP_RETURN };
boolean isStepping(IExecutionDMC context); boolean isStepping(IExecutionDMC context);
boolean isSteppingTimedOut(IExecutionDMC context);
boolean canStep(IExecutionDMC context); boolean canStep(IExecutionDMC context);
void step(IExecutionDMC context, StepType stepType, Done done); void step(IExecutionDMC context, StepType stepType, Done done);
boolean canInstructionStep(IExecutionDMC context); boolean canInstructionStep(IExecutionDMC context);

View file

@ -61,6 +61,17 @@ public interface IStack extends IDataModelService {
*/ */
void getFrames(IRunControl.IExecutionDMC execContext, GetDataDone<IFrameDMC[]> done); void getFrames(IRunControl.IExecutionDMC execContext, GetDataDone<IFrameDMC[]> done);
/**
* Retrieves the top stack frame for the given execution context.
* Retrieving just the top frame DMC and corresponding data can be much
* more efficient than just retrieving the whole stack, before the data
* is often included in the stopped event. Also for some UI functionality,
* such as setpping, only top stack frame is often needed.
* @param execContext
* @param done
*/
void getTopFrame(IRunControl.IExecutionDMC execContext, GetDataDone<IFrameDMC> done);
/** /**
* Retrieves variables which were arguments to the stack frame's function. * Retrieves variables which were arguments to the stack frame's function.
*/ */