Java Code Examples for com.android.dx.rop.code.RegOps#MOVE_PARAM
The following examples show how to use
com.android.dx.rop.code.RegOps#MOVE_PARAM .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: EscapeAnalysis.java From Box with Apache License 2.0 | 6 votes |
/** * Process a single instruction, looking for new objects resulting from * move result or move param. * * @param insn {@code non-null;} instruction to process */ private void processInsn(SsaInsn insn) { int op = insn.getOpcode().getOpcode(); RegisterSpec result = insn.getResult(); EscapeSet escSet; // Identify new objects if (op == RegOps.MOVE_RESULT_PSEUDO && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Handle objects generated through move_result_pseudo escSet = processMoveResultPseudoInsn(insn); processRegister(result, escSet); } else if (op == RegOps.MOVE_PARAM && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Track method arguments that are objects escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE); latticeValues.add(escSet); processRegister(result, escSet); } else if (op == RegOps.MOVE_RESULT && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Track method return values that are objects escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE); latticeValues.add(escSet); processRegister(result, escSet); } }
Example 2
Source File: FirstFitLocalCombiningAllocator.java From Box with Apache License 2.0 | 6 votes |
/** * Gets the parameter index for SSA registers that are method parameters. * {@code -1} is returned for non-parameter registers. * * @param ssaReg {@code >=0;} SSA register to look up * @return parameter index or {@code -1} if not a parameter */ private int getParameterIndexForReg(int ssaReg) { SsaInsn defInsn = ssaMeth.getDefinitionForRegister(ssaReg); if (defInsn == null) { return -1; } Rop opcode = defInsn.getOpcode(); // opcode == null for phi insns. if (opcode != null && opcode.getOpcode() == RegOps.MOVE_PARAM) { CstInsn origInsn = (CstInsn) defInsn.getOriginalRopInsn(); return ((CstInteger) origInsn.getConstant()).getValue(); } return -1; }
Example 3
Source File: EscapeAnalysis.java From Box with Apache License 2.0 | 6 votes |
/** * Process a single instruction, looking for new objects resulting from * move result or move param. * * @param insn {@code non-null;} instruction to process */ private void processInsn(SsaInsn insn) { int op = insn.getOpcode().getOpcode(); RegisterSpec result = insn.getResult(); EscapeSet escSet; // Identify new objects if (op == RegOps.MOVE_RESULT_PSEUDO && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Handle objects generated through move_result_pseudo escSet = processMoveResultPseudoInsn(insn); processRegister(result, escSet); } else if (op == RegOps.MOVE_PARAM && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Track method arguments that are objects escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE); latticeValues.add(escSet); processRegister(result, escSet); } else if (op == RegOps.MOVE_RESULT && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Track method return values that are objects escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE); latticeValues.add(escSet); processRegister(result, escSet); } }
Example 4
Source File: FirstFitLocalCombiningAllocator.java From Box with Apache License 2.0 | 6 votes |
/** * Gets the parameter index for SSA registers that are method parameters. * {@code -1} is returned for non-parameter registers. * * @param ssaReg {@code >=0;} SSA register to look up * @return parameter index or {@code -1} if not a parameter */ private int getParameterIndexForReg(int ssaReg) { SsaInsn defInsn = ssaMeth.getDefinitionForRegister(ssaReg); if (defInsn == null) { return -1; } Rop opcode = defInsn.getOpcode(); // opcode == null for phi insns. if (opcode != null && opcode.getOpcode() == RegOps.MOVE_PARAM) { CstInsn origInsn = (CstInsn) defInsn.getOriginalRopInsn(); return ((CstInteger) origInsn.getConstant()).getValue(); } return -1; }
Example 5
Source File: EscapeAnalysis.java From J2ME-Loader with Apache License 2.0 | 6 votes |
/** * Process a single instruction, looking for new objects resulting from * move result or move param. * * @param insn {@code non-null;} instruction to process */ private void processInsn(SsaInsn insn) { int op = insn.getOpcode().getOpcode(); RegisterSpec result = insn.getResult(); EscapeSet escSet; // Identify new objects if (op == RegOps.MOVE_RESULT_PSEUDO && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Handle objects generated through move_result_pseudo escSet = processMoveResultPseudoInsn(insn); processRegister(result, escSet); } else if (op == RegOps.MOVE_PARAM && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Track method arguments that are objects escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE); latticeValues.add(escSet); processRegister(result, escSet); } else if (op == RegOps.MOVE_RESULT && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Track method return values that are objects escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE); latticeValues.add(escSet); processRegister(result, escSet); } }
Example 6
Source File: FirstFitLocalCombiningAllocator.java From J2ME-Loader with Apache License 2.0 | 6 votes |
/** * Gets the parameter index for SSA registers that are method parameters. * {@code -1} is returned for non-parameter registers. * * @param ssaReg {@code >=0;} SSA register to look up * @return parameter index or {@code -1} if not a parameter */ private int getParameterIndexForReg(int ssaReg) { SsaInsn defInsn = ssaMeth.getDefinitionForRegister(ssaReg); if (defInsn == null) { return -1; } Rop opcode = defInsn.getOpcode(); // opcode == null for phi insns. if (opcode != null && opcode.getOpcode() == RegOps.MOVE_PARAM) { CstInsn origInsn = (CstInsn) defInsn.getOriginalRopInsn(); return ((CstInteger) origInsn.getConstant()).getValue(); } return -1; }
Example 7
Source File: EscapeAnalysis.java From buck with Apache License 2.0 | 6 votes |
/** * Process a single instruction, looking for new objects resulting from * move result or move param. * * @param insn {@code non-null;} instruction to process */ private void processInsn(SsaInsn insn) { int op = insn.getOpcode().getOpcode(); RegisterSpec result = insn.getResult(); EscapeSet escSet; // Identify new objects if (op == RegOps.MOVE_RESULT_PSEUDO && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Handle objects generated through move_result_pseudo escSet = processMoveResultPseudoInsn(insn); processRegister(result, escSet); } else if (op == RegOps.MOVE_PARAM && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Track method arguments that are objects escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE); latticeValues.add(escSet); processRegister(result, escSet); } else if (op == RegOps.MOVE_RESULT && result.getTypeBearer().getBasicType() == Type.BT_OBJECT) { // Track method return values that are objects escSet = new EscapeSet(result.getReg(), regCount, EscapeState.NONE); latticeValues.add(escSet); processRegister(result, escSet); } }
Example 8
Source File: FirstFitLocalCombiningAllocator.java From buck with Apache License 2.0 | 6 votes |
/** * Gets the parameter index for SSA registers that are method parameters. * {@code -1} is returned for non-parameter registers. * * @param ssaReg {@code >=0;} SSA register to look up * @return parameter index or {@code -1} if not a parameter */ private int getParameterIndexForReg(int ssaReg) { SsaInsn defInsn = ssaMeth.getDefinitionForRegister(ssaReg); if (defInsn == null) { return -1; } Rop opcode = defInsn.getOpcode(); // opcode == null for phi insns. if (opcode != null && opcode.getOpcode() == RegOps.MOVE_PARAM) { CstInsn origInsn = (CstInsn) defInsn.getOriginalRopInsn(); return ((CstInteger) origInsn.getConstant()).getValue(); } return -1; }
Example 9
Source File: RopTranslator.java From Box with Apache License 2.0 | 5 votes |
/** {@inheritDoc} */ @Override public void visitPlainCstInsn(PlainCstInsn insn) { SourcePosition pos = insn.getPosition(); Dop opcode = RopToDop.dopFor(insn); Rop rop = insn.getOpcode(); int ropOpcode = rop.getOpcode(); DalvInsn di; if (rop.getBranchingness() != Rop.BRANCH_NONE) { throw new RuntimeException("shouldn't happen"); } if (ropOpcode == RegOps.MOVE_PARAM) { if (!paramsAreInOrder) { /* * Parameters are not in order at the top of the reg space. * We need to add moves. */ RegisterSpec dest = insn.getResult(); int param = ((CstInteger) insn.getConstant()).getValue(); RegisterSpec source = RegisterSpec.make(regCount - paramSize + param, dest.getType()); di = new SimpleInsn(opcode, pos, RegisterSpecList.make(dest, source)); addOutput(di); } } else { // No moves required for the parameters RegisterSpecList regs = getRegs(insn); di = new CstInsn(opcode, pos, regs, insn.getConstant()); addOutput(di); } }
Example 10
Source File: RegisterAllocator.java From Box with Apache License 2.0 | 5 votes |
/** * Returns true if the definition site of this register is a * move-param (ie, this is a method parameter). * * @param reg register in question * @return {@code true} if this is a method parameter */ protected boolean isDefinitionMoveParam(int reg) { SsaInsn defInsn = ssaMeth.getDefinitionForRegister(reg); if (defInsn instanceof NormalSsaInsn) { NormalSsaInsn ndefInsn = (NormalSsaInsn) defInsn; return ndefInsn.getOpcode().getOpcode() == RegOps.MOVE_PARAM; } return false; }
Example 11
Source File: RopTranslator.java From Box with Apache License 2.0 | 5 votes |
/** {@inheritDoc} */ @Override public void visitPlainCstInsn(PlainCstInsn insn) { SourcePosition pos = insn.getPosition(); Dop opcode = RopToDop.dopFor(insn); Rop rop = insn.getOpcode(); int ropOpcode = rop.getOpcode(); DalvInsn di; if (rop.getBranchingness() != Rop.BRANCH_NONE) { throw new RuntimeException("shouldn't happen"); } if (ropOpcode == RegOps.MOVE_PARAM) { if (!paramsAreInOrder) { /* * Parameters are not in order at the top of the reg space. * We need to add moves. */ RegisterSpec dest = insn.getResult(); int param = ((CstInteger) insn.getConstant()).getValue(); RegisterSpec source = RegisterSpec.make(regCount - paramSize + param, dest.getType()); di = new SimpleInsn(opcode, pos, RegisterSpecList.make(dest, source)); addOutput(di); } } else { // No moves required for the parameters RegisterSpecList regs = getRegs(insn); di = new CstInsn(opcode, pos, regs, insn.getConstant()); addOutput(di); } }
Example 12
Source File: RegisterAllocator.java From Box with Apache License 2.0 | 5 votes |
/** * Returns true if the definition site of this register is a * move-param (ie, this is a method parameter). * * @param reg register in question * @return {@code true} if this is a method parameter */ protected boolean isDefinitionMoveParam(int reg) { SsaInsn defInsn = ssaMeth.getDefinitionForRegister(reg); if (defInsn instanceof NormalSsaInsn) { NormalSsaInsn ndefInsn = (NormalSsaInsn) defInsn; return ndefInsn.getOpcode().getOpcode() == RegOps.MOVE_PARAM; } return false; }
Example 13
Source File: RopTranslator.java From J2ME-Loader with Apache License 2.0 | 5 votes |
/** {@inheritDoc} */ @Override public void visitPlainCstInsn(PlainCstInsn insn) { SourcePosition pos = insn.getPosition(); Dop opcode = RopToDop.dopFor(insn); Rop rop = insn.getOpcode(); int ropOpcode = rop.getOpcode(); DalvInsn di; if (rop.getBranchingness() != Rop.BRANCH_NONE) { throw new RuntimeException("shouldn't happen"); } if (ropOpcode == RegOps.MOVE_PARAM) { if (!paramsAreInOrder) { /* * Parameters are not in order at the top of the reg space. * We need to add moves. */ RegisterSpec dest = insn.getResult(); int param = ((CstInteger) insn.getConstant()).getValue(); RegisterSpec source = RegisterSpec.make(regCount - paramSize + param, dest.getType()); di = new SimpleInsn(opcode, pos, RegisterSpecList.make(dest, source)); addOutput(di); } } else { // No moves required for the parameters RegisterSpecList regs = getRegs(insn); di = new CstInsn(opcode, pos, regs, insn.getConstant()); addOutput(di); } }
Example 14
Source File: RegisterAllocator.java From J2ME-Loader with Apache License 2.0 | 5 votes |
/** * Returns true if the definition site of this register is a * move-param (ie, this is a method parameter). * * @param reg register in question * @return {@code true} if this is a method parameter */ protected boolean isDefinitionMoveParam(int reg) { SsaInsn defInsn = ssaMeth.getDefinitionForRegister(reg); if (defInsn instanceof NormalSsaInsn) { NormalSsaInsn ndefInsn = (NormalSsaInsn) defInsn; return ndefInsn.getOpcode().getOpcode() == RegOps.MOVE_PARAM; } return false; }
Example 15
Source File: RopTranslator.java From buck with Apache License 2.0 | 5 votes |
/** {@inheritDoc} */ public void visitPlainCstInsn(PlainCstInsn insn) { SourcePosition pos = insn.getPosition(); Dop opcode = RopToDop.dopFor(insn); Rop rop = insn.getOpcode(); int ropOpcode = rop.getOpcode(); DalvInsn di; if (rop.getBranchingness() != Rop.BRANCH_NONE) { throw new RuntimeException("shouldn't happen"); } if (ropOpcode == RegOps.MOVE_PARAM) { if (!paramsAreInOrder) { /* * Parameters are not in order at the top of the reg space. * We need to add moves. */ RegisterSpec dest = insn.getResult(); int param = ((CstInteger) insn.getConstant()).getValue(); RegisterSpec source = RegisterSpec.make(regCount - paramSize + param, dest.getType()); di = new SimpleInsn(opcode, pos, RegisterSpecList.make(dest, source)); addOutput(di); } } else { // No moves required for the parameters RegisterSpecList regs = getRegs(insn); di = new CstInsn(opcode, pos, regs, insn.getConstant()); addOutput(di); } }
Example 16
Source File: RegisterAllocator.java From buck with Apache License 2.0 | 5 votes |
/** * Returns true if the definition site of this register is a * move-param (ie, this is a method parameter). * * @param reg register in question * @return {@code true} if this is a method parameter */ protected boolean isDefinitionMoveParam(int reg) { SsaInsn defInsn = ssaMeth.getDefinitionForRegister(reg); if (defInsn instanceof NormalSsaInsn) { NormalSsaInsn ndefInsn = (NormalSsaInsn) defInsn; return ndefInsn.getOpcode().getOpcode() == RegOps.MOVE_PARAM; } return false; }