1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 01:36:01 +02:00

2004-11-19 Alain Magloire

RegisterManager.findRegister() was not implemented correctly
	* cdi/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java
This commit is contained in:
Alain Magloire 2004-11-19 21:10:51 +00:00
parent 4470cb7627
commit 06a31c42a6
2 changed files with 34 additions and 5 deletions

View file

@ -1,3 +1,7 @@
2004-11-19 Alain Magloire
RegisterManager.findRegister() was not implemented correctly
* cdi/org/eclipse/cdt/debug/mi/core/cdi/RegisterManager.java
2004-11-19 Alain Magloire 2004-11-19 Alain Magloire
No need for stackframe when creating the Type class, No need for stackframe when creating the Type class,
but rather use the target in the constructor. but rather use the target in the constructor.

View file

@ -27,6 +27,7 @@ import org.eclipse.cdt.debug.mi.core.cdi.model.Register;
import org.eclipse.cdt.debug.mi.core.cdi.model.RegisterDescriptor; import org.eclipse.cdt.debug.mi.core.cdi.model.RegisterDescriptor;
import org.eclipse.cdt.debug.mi.core.cdi.model.RegisterGroup; import org.eclipse.cdt.debug.mi.core.cdi.model.RegisterGroup;
import org.eclipse.cdt.debug.mi.core.cdi.model.Target; import org.eclipse.cdt.debug.mi.core.cdi.model.Target;
import org.eclipse.cdt.debug.mi.core.cdi.model.VariableDescriptor;
import org.eclipse.cdt.debug.mi.core.command.CommandFactory; 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.MIDataListChangedRegisters;
import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterNames; import org.eclipse.cdt.debug.mi.core.command.MIDataListRegisterNames;
@ -98,7 +99,7 @@ public class RegisterManager extends Manager {
} }
public Register createRegister(RegisterDescriptor regDesc) throws CDIException { public Register createRegister(RegisterDescriptor regDesc) throws CDIException {
Register reg = getRegister(regDesc); Register reg = findRegister(regDesc);
if (reg == null) { if (reg == null) {
try { try {
String name = "$" + regDesc.getName(); //$NON-NLS-1$ String name = "$" + regDesc.getName(); //$NON-NLS-1$
@ -229,14 +230,38 @@ public class RegisterManager extends Manager {
return new Register[0]; return new Register[0];
} }
private Register getRegister(RegisterDescriptor regDesc) throws CDIException { // private Register getRegister(RegisterDescriptor regDesc) throws CDIException {
Register[] regs = getRegisters((Target)regDesc.getTarget()); // Register[] regs = getRegisters((Target)regDesc.getTarget());
// for (int i = 0; i < regs.length; i++) {
// if (regDesc.getName().equals(regs[i].getName())) {
// return regs[i];
// }
// }
// return null;
// }
/**
* Return the Element with this thread/stackframe, and with this name.
* null is return if the element is not in the cache.
*/
private Register findRegister(RegisterDescriptor rd) throws CDIException {
Target target = (Target)rd.getTarget();
String name = rd.getName();
int position = rd.getPosition();
Register[] regs = getRegisters(target);
for (int i = 0; i < regs.length; i++) { for (int i = 0; i < regs.length; i++) {
if (regDesc.getName().equals(regs[i].getName())) { if (regs[i].getName().equals(name)
return regs[i]; && regs[i].getCastingArrayStart() == rd.getCastingArrayStart()
&& regs[i].getCastingArrayEnd() == rd.getCastingArrayEnd()
&& VariableDescriptor.equalsCasting(regs[i], rd)) {
// check threads
if (regs[i].getPosition() == position) {
return regs[i];
}
} }
} }
return null; return null;
} }
} }