1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 17:05:26 +02:00

Use the qualified name when creating a register.

Destroy the corresponding gdb variable on register's disposal.
Added the "dispose" method to the "Register" class.
This commit is contained in:
Mikhail Khodjaiants 2004-11-19 22:32:37 +00:00
parent d72d34cf02
commit c59a365bc3
3 changed files with 43 additions and 2 deletions

View file

@ -1,3 +1,11 @@
2004-11-19 Alain Magloire
Use the qualified name when creating a register.
Destroy the corresponding gdb variable on register's disposal.
* cdi/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java
Added the "dispose" method.
* cdi/org/eclipse/cdt/debug/mi/core/cdi/model/Register.java
2004-11-19 Alain Magloire
RegisterManager.findRegister() was not implemented correctly
* cdi/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java

View file

@ -32,12 +32,14 @@ import org.eclipse.cdt.debug.mi.core.command.CommandFactory;
import org.eclipse.cdt.debug.mi.core.command.MIDataListChangedRegisters;
import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterNames;
import org.eclipse.cdt.debug.mi.core.command.MIVarCreate;
import org.eclipse.cdt.debug.mi.core.command.MIVarDelete;
import org.eclipse.cdt.debug.mi.core.command.MIVarUpdate;
import org.eclipse.cdt.debug.mi.core.event.MIEvent;
import org.eclipse.cdt.debug.mi.core.event.MIRegisterChangedEvent;
import org.eclipse.cdt.debug.mi.core.event.MIVarChangedEvent;
import org.eclipse.cdt.debug.mi.core.output.MIDataListChangedRegistersInfo;
import org.eclipse.cdt.debug.mi.core.output.MIDataListRegisterNamesInfo;
import org.eclipse.cdt.debug.mi.core.output.MIVar;
import org.eclipse.cdt.debug.mi.core.output.MIVarChange;
import org.eclipse.cdt.debug.mi.core.output.MIVarCreateInfo;
import org.eclipse.cdt.debug.mi.core.output.MIVarUpdateInfo;
@ -102,7 +104,7 @@ public class RegisterManager extends Manager {
Register reg = findRegister(regDesc);
if (reg == null) {
try {
String name = "$" + regDesc.getName(); //$NON-NLS-1$
String name = regDesc.getQualifiedName(); //$NON-NLS-1$
Target target = (Target)regDesc.getTarget();
MISession mi = target.getMISession();
CommandFactory factory = mi.getCommandFactory();
@ -127,7 +129,28 @@ public class RegisterManager extends Manager {
Target target = (Target)reg.getTarget();
List regList = (List)regsMap.get(target);
if (regList != null) {
regList.remove(reg);
if (regList.remove(reg)) {
MISession miSession = target.getMISession();
try {
removeMIVar(miSession, reg.getMIVar());
} catch (CDIException e) {
//
}
}
}
}
/**
* Tell gdb to remove the underlying var-object also.
*/
void removeMIVar(MISession miSession, MIVar miVar) throws CDIException {
CommandFactory factory = miSession.getCommandFactory();
MIVarDelete var = factory.createMIVarDelete(miVar.getVarName());
try {
miSession.postCommand(var);
var.getMIInfo();
} catch (MIException e) {
throw new MI2CDIException(e);
}
}

View file

@ -10,7 +10,11 @@
*******************************************************************************/
package org.eclipse.cdt.debug.mi.core.cdi.model;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.model.ICDIRegister;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.mi.core.cdi.RegisterManager;
import org.eclipse.cdt.debug.mi.core.cdi.Session;
import org.eclipse.cdt.debug.mi.core.output.MIVar;
/**
@ -53,4 +57,10 @@ public class Register extends Variable implements ICDIRegister {
return new Register(target, thread, frame, name, fullName, pos, depth, miVar);
}
public void dispose() throws CDIException {
ICDITarget target = getTarget();
RegisterManager regMgr = ((Session)target.getSession()).getRegisterManager();
regMgr.destroyRegister(this);
}
}