1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-29 20:05:35 +02:00

[268254] Unnecessary call to getExpressionData() from the register service.

This commit is contained in:
Marc Khouzam 2009-03-13 03:15:43 +00:00
parent 56d9382ab8
commit 7191ded39d

View file

@ -19,10 +19,10 @@ import org.eclipse.cdt.dsf.datamodel.AbstractDMContext;
import org.eclipse.cdt.dsf.datamodel.DMContexts; import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.datamodel.IDMContext; import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.debug.service.ICachingService; import org.eclipse.cdt.dsf.debug.service.ICachingService;
import org.eclipse.cdt.dsf.debug.service.IExpressions;
import org.eclipse.cdt.dsf.debug.service.IRegisters; import org.eclipse.cdt.dsf.debug.service.IRegisters;
import org.eclipse.cdt.dsf.debug.service.IRunControl; import org.eclipse.cdt.dsf.debug.service.IRunControl;
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext; import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMData;
import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext; import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
import org.eclipse.cdt.dsf.debug.service.IRunControl.StateChangeReason; import org.eclipse.cdt.dsf.debug.service.IRunControl.StateChangeReason;
import org.eclipse.cdt.dsf.debug.service.command.CommandCache; import org.eclipse.cdt.dsf.debug.service.command.CommandCache;
@ -510,13 +510,10 @@ public class MIRegisters extends AbstractDsfService implements IRegisters, ICach
final MIRegisterDMC regDmc = (MIRegisterDMC)regCtx; final MIRegisterDMC regDmc = (MIRegisterDMC)regCtx;
// There is only one group and its number must be 0. // There is only one group and its number must be 0.
if ( grpDmc.getGroupNo() == 0 ) { if ( grpDmc.getGroupNo() == 0 ) {
final MIExpressions exprService = getServicesTracker().getService(MIExpressions.class); final IExpressions exprService = getServicesTracker().getService(IExpressions.class);
String regName = regDmc.getName(); String regName = regDmc.getName();
final IExpressionDMContext exprCtxt = exprService.createExpression(regCtx, "$" + regName); //$NON-NLS-1$ final IExpressionDMContext exprCtxt = exprService.createExpression(regCtx, "$" + regName); //$NON-NLS-1$
exprService.getExpressionData(exprCtxt, new DataRequestMonitor<IExpressionDMData>(getExecutor(), rm) {
@Override
protected void handleSuccess() {
// Evaluate the expression - request HEX since it works in every case
final FormattedValueDMContext valueDmc = exprService.getFormattedValueContext(exprCtxt, formatId); final FormattedValueDMContext valueDmc = exprService.getFormattedValueContext(exprCtxt, formatId);
exprService.getFormattedExpressionValue( exprService.getFormattedExpressionValue(
valueDmc, valueDmc,
@ -535,12 +532,10 @@ public class MIRegisters extends AbstractDsfService implements IRegisters, ICach
else { else {
rm.done(); rm.done();
} }
}//handleOK }//handleSuccess
} }
); );
} }
});
}
else { else {
rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, NOT_SUPPORTED, "Invalid group = " + grpDmc, null)); //$NON-NLS-1$ rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, NOT_SUPPORTED, "Invalid group = " + grpDmc, null)); //$NON-NLS-1$
rm.done(); rm.done();