本文整理汇总了Java中proguard.classfile.instruction.InstructionConstants.OP_RET属性的典型用法代码示例。如果您正苦于以下问题:Java InstructionConstants.OP_RET属性的具体用法?Java InstructionConstants.OP_RET怎么用?Java InstructionConstants.OP_RET使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在类proguard.classfile.instruction.InstructionConstants
的用法示例。
在下文中一共展示了InstructionConstants.OP_RET属性的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: visitVariableInstruction
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
{
// Mark the instruction.
instructionMarks[offset] |= INSTRUCTION;
// Check if this is the first instruction of a subroutine.
checkSubroutine(offset);
if (variableInstruction.opcode == InstructionConstants.OP_RET)
{
// Mark the branch origin.
markBranchOrigin(offset);
// Mark the regular subroutine return.
instructionMarks[offset] |= SUBROUTINE_RETURNING;
// Mark the next instruction.
markAfterBranchOrigin(offset + variableInstruction.length(offset));
}
}
示例2: visitVariableInstruction
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
{
byte opcode = variableInstruction.opcode;
// The ret instruction end the current instruction block.
exitInstructionBlock =
opcode == InstructionConstants.OP_RET;
}
示例3: visitVariableInstruction
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
{
byte opcode = variableInstruction.opcode;
// Check for instructions that might cause side effects.
if (includeReturnInstructions &&
opcode == InstructionConstants.OP_RET)
{
hasSideEffects = true;
}
}
示例4: visitVariableInstruction
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
{
if (variableInstruction.opcode == InstructionConstants.OP_RET)
{
next = false;
}
}
示例5: visitVariableInstruction
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
{
byte opcode = variableInstruction.opcode;
if (opcode == InstructionConstants.OP_RET)
{
// Is the return instruction the last instruction of the subroutine?
if (branchTargetFinder.subroutineEnd(offset) == offset + variableInstruction.length(offset))
{
if (DEBUG)
{
System.out.println(" Replacing subroutine return at ["+offset+"] by a label");
}
// Append a label at this offset instead of the subroutine return.
codeAttributeComposer.appendLabel(offset);
}
else
{
if (DEBUG)
{
System.out.println(" Replacing subroutine return at ["+offset+"] by a simple branch");
}
// Replace the instruction by a branch.
Instruction replacementInstruction =
new BranchInstruction(InstructionConstants.OP_GOTO,
branchTargetFinder.subroutineEnd(offset) - offset).shrink();
codeAttributeComposer.appendInstruction(offset, replacementInstruction);
}
}
else if (branchTargetFinder.isSubroutineStart(offset))
{
if (DEBUG)
{
System.out.println(" Replacing first subroutine instruction at ["+offset+"] by a label");
}
// Append a label at this offset instead of saving the subroutine
// return address.
codeAttributeComposer.appendLabel(offset);
}
else
{
// Append the instruction.
codeAttributeComposer.appendInstruction(offset, variableInstruction);
}
}
示例6: visitVariableInstruction
public void visitVariableInstruction(Clazz clazz, Method method, CodeAttribute codeAttribute, int offset, VariableInstruction variableInstruction)
{
int variableIndex = variableInstruction.variableIndex;
switch (variableInstruction.opcode)
{
case InstructionConstants.OP_ILOAD:
case InstructionConstants.OP_ILOAD_0:
case InstructionConstants.OP_ILOAD_1:
case InstructionConstants.OP_ILOAD_2:
case InstructionConstants.OP_ILOAD_3:
replaceIntegerPushInstruction(clazz, offset, variableInstruction, variableIndex);
break;
case InstructionConstants.OP_LLOAD:
case InstructionConstants.OP_LLOAD_0:
case InstructionConstants.OP_LLOAD_1:
case InstructionConstants.OP_LLOAD_2:
case InstructionConstants.OP_LLOAD_3:
replaceLongPushInstruction(clazz, offset, variableInstruction, variableIndex);
break;
case InstructionConstants.OP_FLOAD:
case InstructionConstants.OP_FLOAD_0:
case InstructionConstants.OP_FLOAD_1:
case InstructionConstants.OP_FLOAD_2:
case InstructionConstants.OP_FLOAD_3:
replaceFloatPushInstruction(clazz, offset, variableInstruction, variableIndex);
break;
case InstructionConstants.OP_DLOAD:
case InstructionConstants.OP_DLOAD_0:
case InstructionConstants.OP_DLOAD_1:
case InstructionConstants.OP_DLOAD_2:
case InstructionConstants.OP_DLOAD_3:
replaceDoublePushInstruction(clazz, offset, variableInstruction, variableIndex);
break;
case InstructionConstants.OP_ALOAD:
case InstructionConstants.OP_ALOAD_0:
case InstructionConstants.OP_ALOAD_1:
case InstructionConstants.OP_ALOAD_2:
case InstructionConstants.OP_ALOAD_3:
replaceReferencePushInstruction(clazz, offset, variableInstruction);
break;
case InstructionConstants.OP_ASTORE:
case InstructionConstants.OP_ASTORE_0:
case InstructionConstants.OP_ASTORE_1:
case InstructionConstants.OP_ASTORE_2:
case InstructionConstants.OP_ASTORE_3:
deleteReferencePopInstruction(clazz, offset, variableInstruction);
break;
case InstructionConstants.OP_RET:
replaceBranchInstruction(clazz, offset, variableInstruction);
break;
}
}