- void executeCallInst(CallInst *I, ExecutionContext &SF);
- void executeRetInst(ReturnInst *I, ExecutionContext &SF);
- void executeBrInst(BranchInst *I, ExecutionContext &SF);
- void executeAllocInst(AllocationInst *I, ExecutionContext &SF);
- GenericValue callExternalMethod(Function *F,
- const std::vector<GenericValue> &ArgVals);
- void exitCalled(GenericValue GV);
-
- // getCurrentMethod - Return the currently executing method
- inline Function *getCurrentMethod() const {
- return CurFrame < 0 ? 0 : ECStack[CurFrame].CurMethod;
+ void visitReturnInst(ReturnInst &I);
+ void visitBranchInst(BranchInst &I);
+ void visitSwitchInst(SwitchInst &I);
+
+ void visitBinaryOperator(BinaryOperator &I);
+ void visitICmpInst(ICmpInst &I);
+ void visitFCmpInst(FCmpInst &I);
+ void visitAllocationInst(AllocationInst &I);
+ void visitFreeInst(FreeInst &I);
+ void visitLoadInst(LoadInst &I);
+ void visitStoreInst(StoreInst &I);
+ void visitGetElementPtrInst(GetElementPtrInst &I);
+ void visitPHINode(PHINode &PN) { assert(0 && "PHI nodes already handled!"); }
+ void visitTruncInst(TruncInst &I);
+ void visitZExtInst(ZExtInst &I);
+ void visitSExtInst(SExtInst &I);
+ void visitFPTruncInst(FPTruncInst &I);
+ void visitFPExtInst(FPExtInst &I);
+ void visitUIToFPInst(UIToFPInst &I);
+ void visitSIToFPInst(SIToFPInst &I);
+ void visitFPToUIInst(FPToUIInst &I);
+ void visitFPToSIInst(FPToSIInst &I);
+ void visitPtrToIntInst(PtrToIntInst &I);
+ void visitIntToPtrInst(IntToPtrInst &I);
+ void visitBitCastInst(BitCastInst &I);
+ void visitSelectInst(SelectInst &I);
+
+
+ void visitCallSite(CallSite CS);
+ void visitCallInst(CallInst &I) { visitCallSite (CallSite (&I)); }
+ void visitInvokeInst(InvokeInst &I) { visitCallSite (CallSite (&I)); }
+ void visitUnwindInst(UnwindInst &I);
+ void visitUnreachableInst(UnreachableInst &I);
+
+ void visitShl(ShiftInst &I);
+ void visitLShr(ShiftInst &I);
+ void visitAShr(ShiftInst &I);
+ void visitVAArgInst(VAArgInst &I);
+ void visitInstruction(Instruction &I) {
+ cerr << I;
+ assert(0 && "Instruction not interpretable yet!");