/** * Adds an entry to the result, updating the adjunct tables * accordingly. * * @param address {@code >= 0;} the address * @param disposition {@code non-null;} the disposition * @param spec {@code non-null;} spec representing the local */ private void add(int address, Disposition disposition, RegisterSpec spec) { int regNum = spec.getReg(); result.add(new Entry(address, disposition, spec)); if (disposition == Disposition.START) { regs.put(spec); endIndices[regNum] = -1; } else { regs.remove(spec); endIndices[regNum] = result.size() - 1; } }
LocalList.Entry origEntry = ll.get(i); if (origEntry.getDisposition() == LocalList.Disposition.END_REPLACED) { if (decodedEntry.reg != origEntry.getRegister()) { System.err.println("local register mismatch at orig " + i + " / decoded " + decodeAt); if (decodedEntry.isStart != origEntry.isStart()) { System.err.println("local start/end mismatch at orig " + i + " / decoded " + decodeAt); if ((decodedAddress != origEntry.getAddress()) && !((decodedAddress == 0) && (decodedEntry.reg >= paramBase))) {
sb.append(e.getRegister()); sb.append(' '); CstString name = e.getName(); if (name == null) { sb.append("null"); CstType type = e.getType(); if (type == null) { sb.append("null"); CstString signature = e.getSignature();
LocalList.Entry origEntry = ll.get(i); if (origEntry.getDisposition() == LocalList.Disposition.END_REPLACED) { if (decodedEntry.reg != origEntry.getRegister()) { System.err.println("local register mismatch at orig " + i + " / decoded " + decodeAt); if (decodedEntry.isStart != origEntry.isStart()) { System.err.println("local start/end mismatch at orig " + i + " / decoded " + decodeAt); if ((decodedAddress != origEntry.getAddress()) && !((decodedAddress == 0) && (decodedEntry.reg >= paramBase))) {
LocalList.Entry origEntry = ll.get(i); if (origEntry.getDisposition() == LocalList.Disposition.END_REPLACED) { if (decodedEntry.reg != origEntry.getRegister()) { System.err.println("local register mismatch at orig " + i + " / decoded " + decodeAt); if (decodedEntry.isStart != origEntry.isStart()) { System.err.println("local start/end mismatch at orig " + i + " / decoded " + decodeAt); if ((decodedAddress != origEntry.getAddress()) && !((decodedAddress == 0) && (decodedEntry.reg >= paramBase))) {
if (entry.getAddress() != address) { if (entry.matches(endedLocal)) { break; if (entry.getRegisterSpec().getReg() == regNum) { found = true; break; if (entry.getAddress() == address) { entry.withDisposition(Disposition.END_SIMPLY));
if (entry.getAddress() != address) { if (entry.matches(endedLocal)) { break; if (entry.getRegisterSpec().getReg() == regNum) { found = true; break; if (entry.getAddress() == address) { entry.withDisposition(Disposition.END_SIMPLY));
&& (locals.get(curLocalIdx).getAddress() == address)) { LocalList.Entry entry = locals.get(curLocalIdx++); int reg = entry.getRegister(); LocalList.Entry prevEntry = lastEntryForReg[reg]; if (entry.isStart()) { if ((prevEntry != null) && entry.matches(prevEntry)) { if (prevEntry.isStart()) { if (entry.getDisposition() != LocalList.Disposition.END_REPLACED) { emitLocalEnd(entry);
if (entry.getAddress() != address) { if (entry.matches(endedLocal)) { break; if (entry.getRegisterSpec().getReg() == regNum) { found = true; break; if (entry.getAddress() == address) { entry.withDisposition(Disposition.END_SIMPLY));
&& (locals.get(curLocalIdx).getAddress() == address)) { LocalList.Entry entry = locals.get(curLocalIdx++); int reg = entry.getRegister(); LocalList.Entry prevEntry = lastEntryForReg[reg]; if (entry.isStart()) { if ((prevEntry != null) && entry.matches(prevEntry)) { if (prevEntry.isStart()) { if (entry.getDisposition() != LocalList.Disposition.END_REPLACED) { emitLocalEnd(entry);
&& (locals.get(curLocalIdx).getAddress() == address)) { LocalList.Entry entry = locals.get(curLocalIdx++); int reg = entry.getRegister(); LocalList.Entry prevEntry = lastEntryForReg[reg]; if (entry.isStart()) { if ((prevEntry != null) && entry.matches(prevEntry)) { if (prevEntry.isStart()) { if (entry.getDisposition() != LocalList.Disposition.END_REPLACED) { emitLocalEnd(entry);
&& (locals.get(curLocalIdx).getAddress() == address)) { LocalList.Entry entry = locals.get(curLocalIdx++); int reg = entry.getRegister(); LocalList.Entry prevEntry = lastEntryForReg[reg]; if (entry.isStart()) { if ((prevEntry != null) && entry.matches(prevEntry)) { if (prevEntry.isStart()) { if (entry.getDisposition() != LocalList.Disposition.END_REPLACED) { emitLocalEnd(entry);
&& (locals.get(curLocalIdx).getAddress() == address)) { LocalList.Entry entry = locals.get(curLocalIdx++); int reg = entry.getRegister(); LocalList.Entry prevEntry = lastEntryForReg[reg]; if (entry.isStart()) { if ((prevEntry != null) && entry.matches(prevEntry)) { if (prevEntry.isStart()) { if (entry.getDisposition() != LocalList.Disposition.END_REPLACED) { emitLocalEnd(entry);
&& (locals.get(curLocalIdx).getAddress() == address)) { LocalList.Entry entry = locals.get(curLocalIdx++); int reg = entry.getRegister(); LocalList.Entry prevEntry = lastEntryForReg[reg]; if (entry.isStart()) { if ((prevEntry != null) && entry.matches(prevEntry)) { if (prevEntry.isStart()) { if (entry.getDisposition() != LocalList.Disposition.END_REPLACED) { emitLocalEnd(entry);
&& (locals.get(curLocalIdx).getAddress() == address)) { LocalList.Entry entry = locals.get(curLocalIdx++); int reg = entry.getRegister(); LocalList.Entry prevEntry = lastEntryForReg[reg]; if (entry.isStart()) { if ((prevEntry != null) && entry.matches(prevEntry)) { if (prevEntry.isStart()) { if (entry.getDisposition() != LocalList.Disposition.END_REPLACED) { emitLocalEnd(entry);
&& (locals.get(curLocalIdx).getAddress() == address)) { LocalList.Entry entry = locals.get(curLocalIdx++); int reg = entry.getRegister(); LocalList.Entry prevEntry = lastEntryForReg[reg]; if (entry.isStart()) { if ((prevEntry != null) && entry.matches(prevEntry)) { if (prevEntry.isStart()) { if (entry.getDisposition() != LocalList.Disposition.END_REPLACED) { emitLocalEnd(entry);
nextAddrL = locals.get(curLocalIdx).getAddress();
nextAddrL = locals.get(curLocalIdx).getAddress();
int reg = e.getRegister(); if (e.isStart()) { Entry already = active[reg]; if ((already != null) && e.matches(already)) { throw new RuntimeException("redundant start at " + Integer.toHexString(e.getAddress()) + ": got " + e + "; had " + already); if (active[reg] == null) { throw new RuntimeException("redundant end at " + Integer.toHexString(e.getAddress())); int addr = e.getAddress(); boolean foundStart = false; if (test.getAddress() != addr) { break; if (test.getRegisterSpec().getReg() == reg) { if (test.isStart()) { if (e.getDisposition() != Disposition.END_REPLACED) { throw new RuntimeException( (e.getDisposition() == Disposition.END_REPLACED)) { throw new RuntimeException( "improper end replacement claim at " +
int reg = e.getRegister(); if (e.isStart()) { Entry already = active[reg]; if ((already != null) && e.matches(already)) { throw new RuntimeException("redundant start at " + Integer.toHexString(e.getAddress()) + ": got " + e + "; had " + already); if (active[reg] == null) { throw new RuntimeException("redundant end at " + Integer.toHexString(e.getAddress())); int addr = e.getAddress(); boolean foundStart = false; if (test.getAddress() != addr) { break; if (test.getRegisterSpec().getReg() == reg) { if (test.isStart()) { if (e.getDisposition() != Disposition.END_REPLACED) { throw new RuntimeException( (e.getDisposition() == Disposition.END_REPLACED)) { throw new RuntimeException( "improper end replacement claim at " +