language changes
This commit is contained in:
parent
f02c77ba08
commit
dc552316b9
|
@ -38,7 +38,7 @@ public interface IBytecodeMethod extends IMethod {
|
|||
*/
|
||||
IInstruction[] getInstructions() throws InvalidClassFileException;
|
||||
|
||||
/**
|
||||
/**there
|
||||
* @return the call sites declared in the bytecode for this method
|
||||
*/
|
||||
Collection<CallSiteReference> getCallSites() throws InvalidClassFileException;
|
||||
|
|
|
@ -28,6 +28,7 @@ import com.ibm.wala.shrikeBT.IBinaryOpInstruction;
|
|||
import com.ibm.wala.shrikeBT.IComparisonInstruction;
|
||||
import com.ibm.wala.shrikeBT.IConditionalBranchInstruction;
|
||||
import com.ibm.wala.shrikeBT.IInstruction;
|
||||
import com.ibm.wala.shrikeBT.IInvokeInstruction;
|
||||
import com.ibm.wala.shrikeBT.IUnaryOpInstruction;
|
||||
import com.ibm.wala.shrikeBT.Instruction;
|
||||
import com.ibm.wala.shrikeCT.BootstrapMethodsReader.BootstrapMethod;
|
||||
|
@ -747,4 +748,10 @@ public class JavaLanguage extends LanguageImpl implements BytecodeLanguage, Cons
|
|||
public PrimitiveType getPrimitive(TypeReference reference) {
|
||||
return JavaPrimitiveType.getPrimitive(reference);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MethodReference getInvokeMethodReference(ClassLoaderReference loader, IInvokeInstruction instruction) {
|
||||
return MethodReference.findOrCreate(this, loader, instruction.getClassType(), instruction.getMethodName(),
|
||||
instruction.getMethodSignature());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import com.ibm.wala.analysis.stackMachine.AbstractIntStackMachine;
|
|||
import com.ibm.wala.cfg.IBasicBlock;
|
||||
import com.ibm.wala.cfg.ShrikeCFG;
|
||||
import com.ibm.wala.cfg.ShrikeCFG.BasicBlock;
|
||||
import com.ibm.wala.classLoader.BytecodeLanguage;
|
||||
import com.ibm.wala.classLoader.CallSiteReference;
|
||||
import com.ibm.wala.classLoader.IBytecodeMethod;
|
||||
import com.ibm.wala.classLoader.Language;
|
||||
|
@ -585,8 +586,7 @@ public class SSABuilder extends AbstractIntStackMachine {
|
|||
params[i] = workingState.pop();
|
||||
}
|
||||
Language lang = shrikeCFG.getMethod().getDeclaringClass().getClassLoader().getLanguage();
|
||||
MethodReference m = MethodReference.findOrCreate(lang, loader, instruction.getClassType(), instruction.getMethodName(),
|
||||
instruction.getMethodSignature());
|
||||
MethodReference m = ((BytecodeLanguage)lang).getInvokeMethodReference(loader, instruction);
|
||||
IInvokeInstruction.IDispatch code = instruction.getInvocationCode();
|
||||
CallSiteReference site = CallSiteReference.make(getCurrentProgramCounter(), m, code);
|
||||
int exc = reuseOrCreateException();
|
||||
|
|
Loading…
Reference in New Issue