public int indexOfTransactionVariable(String methodName, String methodDesc) { MethodMetadata methodMetadata = classMetadata.getMethodMetadata(methodName, methodDesc); if (!methodMetadata.isTransactional()) { return -1; } int sizeOfFormalParameters = sizeOfFormalParameters(methodDesc); return methodMetadata.isStatic() ? sizeOfFormalParameters : sizeOfFormalParameters + 1; }
public int newIndexOfLocalVariable(String methodName, String methodDesc, int originalVar) { MethodMetadata methodMetadata = classMetadata.getMethodMetadata(methodName, methodDesc); int firstPrivateLocalVar = sizeOfFormalParameters(methodDesc); if (!methodMetadata.isStatic()) { firstPrivateLocalVar++; } if (originalVar < firstPrivateLocalVar) { return originalVar; } else if (indexOfTranlocalVariable(methodName, methodDesc) >= 0) { //the transaction and tranlocal are introduced return originalVar + 2; } else { //only the transaction is introduced return originalVar + 1; } }
public int indexOfTranlocalVariable(String methodName, String methodDesc) { MethodMetadata methodMetadata = classMetadata.getMethodMetadata(methodName, methodDesc); if (methodMetadata.isStatic() || !methodMetadata.getClassMetadata().isTransactionalObjectWithObjectGranularFields()) { return -1; } return sizeOfFormalParameters(methodDesc) + 2; }
private String createTransactedWithTranlocalMethodDesc(ClassMetadata classMetadata, String methodName, String methodDesc) { MethodMetadata methodMetadata = classMetadata.getMethodMetadata(methodName, methodDesc); if (methodMetadata.isStatic() || !methodMetadata.isTransactional()) { throw new IllegalStateException(); } String result = AsmUtils.createMethodDescriptorWithRightIntroducedVariable( methodDesc, ALPHA_TRANSACTION_INTERNAL_NAME); result = AsmUtils.createMethodDescriptorWithRightIntroducedVariable( result, methodMetadata.getClassMetadata().getTranlocalName()); return result; }
fixedMethods.add(createAbstractTransactedMethod(methodNode, true)); fixedMethods.add(createAbstractTransactedMethod(methodNode, false)); } else if (methodMetadata.isStatic()) { fixedMethods.add(createTransactionalMethod(methodNode)); fixedMethods.add(createTransactedMethod(methodNode, true));
private void extractSetterMetadata(MethodMetadata methodMetadata, MethodNode methodNode) { if (methodMetadata.isStatic() || methodMetadata.isNative() || methodMetadata.isAbstract()) { return;
private void extractGetterMetadata(MethodMetadata methodMetadata, MethodNode methodNode) { if (methodMetadata.isStatic() || methodMetadata.isNative() || methodMetadata.isAbstract()) { return;