public Label clone() { return new Label(label); }
public Label clone() { return new Label(label); }
public Label getNewLabel(String prefix) { return new Label(prefix, allocateNextPrefixedName(prefix)); }
public Label getNewLabel(String prefix) { return new Label(prefix + "_" + allocateNextPrefixedName(prefix)); }
public Label getNewLabel(String prefix) { return new Label(prefix, allocateNextPrefixedName(prefix)); }
public Label getNewLabel(String prefix) { return new Label(prefix + "_" + allocateNextPrefixedName(prefix)); }
public Label clone() { Label newL = new Label(prefix, id); newL.setTargetPC(getTargetPC()); // Strictly not necessary, but, copy everything over return newL; }
public Label clone() { Label newL = new Label(prefix, id); newL.setTargetPC(getTargetPC()); // Strictly not necessary, but, copy everything over return newL; }
public static Label decode(IRReaderDecoder d) { String prefix = d.decodeString(); int id = d.decodeInt(); // Special case of label if ("_GLOBAL_ENSURE_BLOCK".equals(prefix)) return new Label("_GLOBAL_ENSURE_BLOCK", 0); // Check if this label was already created // Important! Program would not be interpreted correctly // if new name will be created every time String fullLabel = prefix + '_' + id; if (d.getVars().containsKey(fullLabel)) { return (Label) d.getVars().get(fullLabel); } Label newLabel = new Label(prefix, id); // Add to context for future reuse d.getVars().put(fullLabel, newLabel); return newLabel; }
public static Label decode(IRReaderDecoder d) { String prefix = d.decodeString(); int id = d.decodeInt(); // Special case of label if ("_GLOBAL_ENSURE_BLOCK".equals(prefix)) return new Label("_GLOBAL_ENSURE_BLOCK", 0); // Check if this label was already created // Important! Program would not be interpreted correctly // if new name will be created every time String fullLabel = prefix + '_' + id; if (d.getVars().containsKey(fullLabel)) { return (Label) d.getVars().get(fullLabel); } Label newLabel = new Label(prefix, id); // Add to context for future reuse d.getVars().put(fullLabel, newLabel); return newLabel; }
BasicBlock geb = cfg.getGlobalEnsureBB(); if (geb == null) { geb = new BasicBlock(cfg, new Label("_GLOBAL_ENSURE_BLOCK")); Variable exc = getNewTemporaryVariable(); geb.addInstr(new ReceiveExceptionInstr(exc, false)); // No need to check type since it is not used before rethrowing
BasicBlock geb = cfg.getGlobalEnsureBB(); if (geb == null) { geb = new BasicBlock(cfg, new Label("_GLOBAL_ENSURE_BLOCK")); Variable exc = getNewTemporaryVariable(); geb.addInstr(new ReceiveExceptionInstr(exc, false)); // No need to check type since it is not used before rethrowing
if ((mightRequireGlobalEnsureBlock == true) && !dirtyVars.isEmpty()) { Variable exc = cfgScope.getNewTemporaryVariable(); geb = new BasicBlock(cfg, new Label("_GLOBAL_ENSURE_BLOCK")); geb.addInstr(new ReceiveExceptionInstr(exc, false)); // No need to check type since it is not used before rethrowing for (LocalVariable v : dirtyVars) {
if ((mightRequireGlobalEnsureBlock == true) && !dirtyVars.isEmpty()) { Variable exc = cfgScope.getNewTemporaryVariable(); geb = new BasicBlock(cfg, new Label("_GLOBAL_ENSURE_BLOCK")); geb.addInstr(new ReceiveExceptionInstr(exc, false)); // No need to check type since it is not used before rethrowing for (LocalVariable v : dirtyVars) {
geb = new BasicBlock(cfg, new Label("_GLOBAL_ENSURE_BLOCK")); geb.addInstr(new ReceiveExceptionInstr(exc, false)); // No need to check type since it is not used before rethrowing geb.addInstr(new ThrowExceptionInstr(exc));
geb = new BasicBlock(cfg, new Label("_GLOBAL_ENSURE_BLOCK")); geb.addInstr(new ReceiveExceptionInstr(exc, false)); // No need to check type since it is not used before rethrowing geb.addInstr(new ThrowExceptionInstr(exc));