From 7191ded39dae0a3b6467a3af1139d398cae42337 Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Fri, 13 Mar 2009 03:15:43 +0000 Subject: [PATCH] [268254] Unnecessary call to getExpressionData() from the register service. --- .../cdt/dsf/mi/service/MIRegisters.java | 55 +++++++++---------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRegisters.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRegisters.java index 39e8d7b9589..63e7a051a9a 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRegisters.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIRegisters.java @@ -19,10 +19,10 @@ import org.eclipse.cdt.dsf.datamodel.AbstractDMContext; import org.eclipse.cdt.dsf.datamodel.DMContexts; import org.eclipse.cdt.dsf.datamodel.IDMContext; 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.IRunControl; 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.StateChangeReason; import org.eclipse.cdt.dsf.debug.service.command.CommandCache; @@ -510,36 +510,31 @@ public class MIRegisters extends AbstractDsfService implements IRegisters, ICach final MIRegisterDMC regDmc = (MIRegisterDMC)regCtx; // There is only one group and its number must be 0. if ( grpDmc.getGroupNo() == 0 ) { - final MIExpressions exprService = getServicesTracker().getService(MIExpressions.class); + final IExpressions exprService = getServicesTracker().getService(IExpressions.class); String regName = regDmc.getName(); - final IExpressionDMContext exprCtxt = exprService.createExpression(regCtx, "$" + regName); //$NON-NLS-1$ - exprService.getExpressionData(exprCtxt, new DataRequestMonitor(getExecutor(), rm) { - @Override - protected void handleSuccess() { - // Evaluate the expression - request HEX since it works in every case - final FormattedValueDMContext valueDmc = exprService.getFormattedValueContext(exprCtxt, formatId); - exprService.getFormattedExpressionValue( - valueDmc, - new DataRequestMonitor(getExecutor(), rm) { - @Override - protected void handleSuccess() { - if(! regValue.equals(getData().getFormattedValue()) || ! valueDmc.getFormatID().equals(formatId)){ - exprService.writeExpression(exprCtxt, regValue, formatId, new DataRequestMonitor(getExecutor(), rm) { - @Override - protected void handleSuccess() { - generateRegisterChangedEvent(regDmc); - rm.done(); - } - }); - }//if - else { - rm.done(); - } - }//handleOK - } - ); - } - }); + final IExpressionDMContext exprCtxt = exprService.createExpression(regCtx, "$" + regName); //$NON-NLS-1$ + + final FormattedValueDMContext valueDmc = exprService.getFormattedValueContext(exprCtxt, formatId); + exprService.getFormattedExpressionValue( + valueDmc, + new DataRequestMonitor(getExecutor(), rm) { + @Override + protected void handleSuccess() { + if(! regValue.equals(getData().getFormattedValue()) || ! valueDmc.getFormatID().equals(formatId)){ + exprService.writeExpression(exprCtxt, regValue, formatId, new DataRequestMonitor(getExecutor(), rm) { + @Override + protected void handleSuccess() { + generateRegisterChangedEvent(regDmc); + rm.done(); + } + }); + }//if + else { + rm.done(); + } + }//handleSuccess + } + ); } else { rm.setStatus(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, NOT_SUPPORTED, "Invalid group = " + grpDmc, null)); //$NON-NLS-1$