/** * Marks the given parameters as escaped from the given method. */ private void markEscapedParameters(Method method, long escapedParameters) { ProgramMethodOptimizationInfo info = ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method); if ((~info.getEscapedParameters() & escapedParameters) != 0) { info.updateEscapedParameters(escapedParameters); newEscapes = true; } }
/** * Marks the given parameter as escaped from the given method. */ private void markParameterEscaped(Method method, int parameterIndex) { ProgramMethodOptimizationInfo info = ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method); if (!info.hasParameterEscaped(parameterIndex)) { info.setParameterEscaped(parameterIndex); newEscapes = true; } }
private static void incrementInvocationCount(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).incrementInvocationCount(); }
/** * Marks the given parameter as being used. */ public static void markParameterUsed(Method method, int variableIndex) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setParameterUsed(variableIndex); }
ProgramMethodOptimizationInfo.getMethodOptimizationInfo(programMethod); if (methodOptimizationInfo instanceof ProgramMethodOptimizationInfo) ClassUtil.internalMethodParameterCount(newDescriptor, programMethod.getAccessFlags()); programMethodOptimizationInfo.insertParameter(parameterCount - 1); programMethodOptimizationInfo.getParameterSize(); programMethodOptimizationInfo.setParameterSize(parameterSize + 1); programMethodOptimizationInfo.setParameterUsed(parameterSize);
public void visitCodeAttribute(Clazz clazz, Method method, CodeAttribute codeAttribute) { if (DEBUG) { System.out.println("UnusedParameterOptimizationInfoUpdater: "+clazz.getName()+"."+method.getName(clazz)+method.getDescriptor(clazz)); } // Update the optimization info. removedParameterCount = 0; removedParameterSize = 0; method.accept(clazz, unusedParameterRemover); // Compute the new parameter size from the shrunk descriptor. ProgramMethodOptimizationInfo programMethodOptimizationInfo = ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method); int newParameterSize = programMethodOptimizationInfo.getParameterSize() - removedParameterSize; programMethodOptimizationInfo.setParameterSize(newParameterSize); programMethodOptimizationInfo.updateUsedParameters(-1L); }
private static void generalizeMethodParameterValue(Method method, int parameterIndex, Value value) { if (!KeepMarker.isKept(method)) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).generalizeParameterValue(parameterIndex, value); } }
/** * Marks the given parameters as being used. */ private static void markUsedParameters(Method method, long usedParameters) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).updateUsedParameters(usedParameters); }
private static void setMethodReturnValue(Method method, Value value) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setReturnValue( value); } }
/** * Sets the total size of the parameters. */ private static void setParameterSize(Method method, int parameterSize) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setParameterSize(parameterSize); }
private static void generalizeMethodReturnValue(Method method, Value value) { if (!KeepMarker.isKept(method)) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).generalizeReturnValue(value); } }
private static void setInvokesSuperMethods(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setInvokesSuperMethods(); }
private static void setInvokesDynamically(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setInvokesDynamically(); }
private static void setHasSynchronizedBlock(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setHasSynchronizedBlock(); }
private static void setAccessesPackageCode(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setAccessesPackageCode(); }
private static void setAccessesProtectedCode(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setAccessesProtectedCode(); }
private static void markCatchException(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setCatchesExceptions(); }
private static void setAccessesPrivateCode(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setAccessesPrivateCode(); }
private static void setReturnsWithNonEmptyStack(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setReturnsWithNonEmptyStack(); }
private static void setBranchesBackward(Method method) { ProgramMethodOptimizationInfo.getProgramMethodOptimizationInfo(method).setBranchesBackward(); }