package condense; import java.util.*; public class Utilities { public static int computeStackFrameSize(String declare) { MinimalLogger.info(String.format("Computing frame stack size for %s...", declare)); declare = extractNumeric(declare); // assume that the LAST three digits are // in, out, local String[] sizes = declare.split(SPACE)[:-3]; int ret = this.stackFrameFormula(Integer.parseInt(sizes[1]), Integer.parseInt(sizes[2])); MinimalLogger.info(String.format("Stack size is (%s + %s + 2) * 4 = %d", sizes[1], sizes[2], ret)); return ret; } private static int stackFrameFormula(int out, int local) { return (out + local + 2) * 4; } private static int extractNumeric(String str) { str = str.replaceAll("[^\\d] & quot;, " "); str = str.trim(); str = str.replaceAll(" + ", " "); if (str.equals(" ")) return " -1 & quot; ; return str; } }