public int compare(Integer o1, Integer o2) { return ssaMeth.getUseListForRegister(o2).size() - ssaMeth.getUseListForRegister(o1).size(); } });
public int compare(Integer o1, Integer o2) { return ssaMeth.getUseListForRegister(o2).size() - ssaMeth.getUseListForRegister(o1).size(); } });
public int compare(Integer o1, Integer o2) { return ssaMeth.getUseListForRegister(o2).size() - ssaMeth.getUseListForRegister(o1).size(); } });
@Override public int compare(Integer o1, Integer o2) { return ssaMeth.getUseListForRegister(o2).size() - ssaMeth.getUseListForRegister(o1).size(); } });
public int compare(Integer o1, Integer o2) { return ssaMeth.getUseListForRegister(o2).size() - ssaMeth.getUseListForRegister(o1).size(); } });
public int compare(Integer o1, Integer o2) { return ssaMeth.getUseListForRegister(o2).size() - ssaMeth.getUseListForRegister(o1).size(); } });
public int compare(Integer o1, Integer o2) { return ssaMeth.getUseListForRegister(o2).size() - ssaMeth.getUseListForRegister(o1).size(); } });
/** * Adds an SSA register's uses to the SSA worklist. * @param reg SSA register * @param latticeValue new lattice value for @param reg. */ private void addUsersToWorklist(int reg, int latticeValue) { if (latticeValue == VARYING) { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { varyingWorklist.add(insn); } } else { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { ssaWorklist.add(insn); } } }
/** * Adds an SSA register's uses to the SSA worklist. * @param reg SSA register * @param latticeValue new lattice value for @param reg. */ private void addUsersToWorklist(int reg, int latticeValue) { if (latticeValue == VARYING) { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { varyingWorklist.add(insn); } } else { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { ssaWorklist.add(insn); } } }
/** * Adds an SSA register's uses to the SSA worklist. * @param reg SSA register * @param latticeValue new lattice value for @param reg. */ private void addUsersToWorklist(int reg, int latticeValue) { if (latticeValue == VARYING) { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { varyingWorklist.add(insn); } } else { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { ssaWorklist.add(insn); } } }
/** * Adds an SSA register's uses to the SSA worklist. * @param reg SSA register * @param latticeValue new lattice value for @param reg. */ private void addUsersToWorklist(int reg, int latticeValue) { if (latticeValue == VARYING) { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { varyingWorklist.add(insn); } } else { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { ssaWorklist.add(insn); } } }
/** * Adds an SSA register's uses to the SSA worklist. * @param reg SSA register * @param latticeValue new lattice value for @param reg. */ private void addUsersToWorklist(int reg, int latticeValue) { if (latticeValue == VARYING) { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { varyingWorklist.add(insn); } } else { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { ssaWorklist.add(insn); } } }
/** * Adds an SSA register's uses to the SSA worklist. * @param reg SSA register * @param latticeValue new lattice value for @param reg. */ private void addUsersToWorklist(int reg, int latticeValue) { if (latticeValue == VARYING) { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { varyingWorklist.add(insn); } } else { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { ssaWorklist.add(insn); } } }
/** * Adds an SSA register's uses to the SSA worklist. * @param reg SSA register * @param latticeValue new lattice value for @param reg. */ private void addUsersToWorklist(int reg, int latticeValue) { if (latticeValue == VARYING) { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { varyingWorklist.add(insn); } } else { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { ssaWorklist.add(insn); } } }
/** * Adds an SSA register's uses to the SSA worklist. * @param reg SSA register * @param latticeValue new lattice value for @param reg. */ private void addUsersToWorklist(int reg, int latticeValue) { if (latticeValue == VARYING) { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { varyingWorklist.add(insn); } } else { for (SsaInsn insn : ssaMeth.getUseListForRegister(reg)) { ssaWorklist.add(insn); } } }
/** * Iterate through all the uses of a new object. * * @param result {@code non-null;} register where new object is stored * @param escSet {@code non-null;} EscapeSet for the new object */ private void processRegister(RegisterSpec result, EscapeSet escSet) { ArrayList<RegisterSpec> regWorklist = new ArrayList<RegisterSpec>(); regWorklist.add(result); // Go through the worklist while (!regWorklist.isEmpty()) { int listSize = regWorklist.size() - 1; RegisterSpec def = regWorklist.remove(listSize); List<SsaInsn> useList = ssaMeth.getUseListForRegister(def.getReg()); // Handle all the uses of this register for (SsaInsn use : useList) { Rop useOpcode = use.getOpcode(); if (useOpcode == null) { // Handle phis processPhiUse(use, escSet, regWorklist); } else { // Handle other opcodes processUse(def, use, escSet, regWorklist); } } } }
/** * Checks to see if the given SSA reg is ever associated with a local * local variable. Each SSA reg may be associated with at most one * local var. * * @param spec {@code non-null;} ssa reg * @return true if reg is ever associated with a local */ public boolean isRegALocal(RegisterSpec spec) { SsaInsn defn = getDefinitionForRegister(spec.getReg()); if (defn == null) { // version 0 registers are never used as locals return false; } // Does the definition have a local associated with it? if (defn.getLocalAssignment() != null) return true; // If not, is there a mark-local insn? for (SsaInsn use : getUseListForRegister(spec.getReg())) { Insn insn = use.getOriginalRopInsn(); if (insn != null && insn.getOpcode().getOpcode() == RegOps.MARK_LOCAL) { return true; } } return false; }
/** * Checks to see if the given SSA reg is ever associated with a local * local variable. Each SSA reg may be associated with at most one * local var. * * @param spec {@code non-null;} ssa reg * @return true if reg is ever associated with a local */ public boolean isRegALocal(RegisterSpec spec) { SsaInsn defn = getDefinitionForRegister(spec.getReg()); if (defn == null) { // version 0 registers are never used as locals return false; } // Does the definition have a local associated with it? if (defn.getLocalAssignment() != null) return true; // If not, is there a mark-local insn? for (SsaInsn use : getUseListForRegister(spec.getReg())) { Insn insn = use.getOriginalRopInsn(); if (insn != null && insn.getOpcode().getOpcode() == RegOps.MARK_LOCAL) { return true; } } return false; }
/** * Checks to see if the given SSA reg is ever associated with a local * local variable. Each SSA reg may be associated with at most one * local var. * * @param spec {@code non-null;} ssa reg * @return true if reg is ever associated with a local */ public boolean isRegALocal(RegisterSpec spec) { SsaInsn defn = getDefinitionForRegister(spec.getReg()); if (defn == null) { // version 0 registers are never used as locals return false; } // Does the definition have a local associated with it? if (defn.getLocalAssignment() != null) return true; // If not, is there a mark-local insn? for (SsaInsn use : getUseListForRegister(spec.getReg())) { Insn insn = use.getOriginalRopInsn(); if (insn != null && insn.getOpcode().getOpcode() == RegOps.MARK_LOCAL) { return true; } } return false; }
/** * Checks to see if the given SSA reg is ever associated with a local * local variable. Each SSA reg may be associated with at most one * local var. * * @param spec {@code non-null;} ssa reg * @return true if reg is ever associated with a local */ public boolean isRegALocal(RegisterSpec spec) { SsaInsn defn = getDefinitionForRegister(spec.getReg()); if (defn == null) { // version 0 registers are never used as locals return false; } // Does the definition have a local associated with it? if (defn.getLocalAssignment() != null) return true; // If not, is there a mark-local insn? for (SsaInsn use : getUseListForRegister(spec.getReg())) { Insn insn = use.getOriginalRopInsn(); if (insn != null && insn.getOpcode().getOpcode() == RegOps.MARK_LOCAL) { return true; } } return false; }