@specs-feup/kadabra
Version:
A Java source-to-source compiler written in Typescript
50 lines • 1.81 kB
TypeScript
import BaseDetector from "./BaseDetector.js";
import { Loop, Var, Call, Joinpoint, Class, Method, Declaration } from "../../../../Joinpoints.js";
export interface MethodInfo {
method: Method;
missingInfo: boolean;
writes: Var[];
reads: Var[];
}
export default class ExcessiveMethodCallsDetector extends BaseDetector {
currentPackage: string | undefined;
loopGlobalReads: Declaration[];
loopGlobalWrites: Declaration[];
loopLocalWrites: Declaration[];
methodsInfo: MethodInfo[];
variantCalls: string[];
missingCallDecl: boolean;
results: Call[];
constructor(debugEnabled?: boolean);
static containsJP(arr: Joinpoint[], jp: Joinpoint): boolean;
static tryGetMethodInfo(arr: MethodInfo[], jp: Method): MethodInfo | null;
static addIfNew(arr: Joinpoint[], jp: Joinpoint): void;
analyseClass(jpClass: Class): void;
analyseLoop(jpLoop: Loop): void;
print(): void;
resetDetector(): void;
printDebugInfo(msg: string): void;
save(): string[];
collectLoopInfo(jp: Joinpoint): void;
analyseVar(jpVar: Var): void;
analyseCall(jpCall: Call): void;
analyseMethodRecursive(jpMethod: Method): {
writes: Var[];
reads: Var[];
};
getFieldUsageInsideJP(jp: Joinpoint): {
missing: Var[];
write: Var[];
read: Var[];
};
analyseLoopCall(jp: Joinpoint): boolean;
isCallInvariant(jpCall: Call): boolean;
compareFieldUsage(arr1: Joinpoint[], arr2: Joinpoint[]): boolean;
callUsesVariantArgument(jpCall: Call): {
isVariant: boolean;
cause: string;
};
callInvokesVariantMethod(jp: Joinpoint): boolean;
getFirstDescendentsOfTypes(jp: Joinpoint, types: string[]): Joinpoint[];
}
//# sourceMappingURL=ExcessiveMethodCallsDetector.d.ts.map