s/Method/Function
[oota-llvm.git] / lib / ExecutionEngine / Interpreter / Execution.cpp
index 0fad82964d2fce3faad3a8a67f448d995b46d53d..2260625b66b8025a1b318f5d10f5c71d88711e83 100644 (file)
@@ -741,15 +741,16 @@ void Interpreter::executeAllocInst(AllocationInst *I, ExecutionContext &SF) {
   }
 
   // Allocate enough memory to hold the type...
-  GenericValue Result;
   // FIXME: Don't use CALLOC, use a tainted malloc.
-  Result.PointerVal = (PointerTy)calloc(NumElements, TD.getTypeSize(Ty));
+  void *Memory = calloc(NumElements, TD.getTypeSize(Ty));
+
+  GenericValue Result;
+  Result.PointerVal = (PointerTy)Memory;
   assert(Result.PointerVal != 0 && "Null pointer returned by malloc!");
   SetValue(I, Result, SF);
 
-  if (I->getOpcode() == Instruction::Alloca) {
-    // TODO: FIXME: alloca should keep track of memory to free it later...
-  }
+  if (I->getOpcode() == Instruction::Alloca)
+    ECStack.back().Allocas.add(Memory);
 }
 
 static void executeFreeInst(FreeInst *I, ExecutionContext &SF) {
@@ -1027,17 +1028,17 @@ MethodInfo::MethodInfo(Method *M) : Annotation(MethodInfoAID) {
   // Assign slot numbers to the method arguments...
   const Method::ArgumentListType &ArgList = M->getArgumentList();
   for (Method::ArgumentListType::const_iterator AI = ArgList.begin(), 
-        AE = ArgList.end(); AI != AE; ++AI) {
-    MethodArgument *MA = *AI;
-    MA->addAnnotation(new SlotNumber(getValueSlot(MA)));
-  }
+        AE = ArgList.end(); AI != AE; ++AI)
+    (*AI)->addAnnotation(new SlotNumber(getValueSlot(*AI)));
 
   // Iterate over all of the instructions...
   unsigned InstNum = 0;
-  for (Method::inst_iterator MI = M->inst_begin(), ME = M->inst_end();
-       MI != ME; ++MI) {
-    Instruction *I = *MI;                          // For each instruction...
-    I->addAnnotation(new InstNumber(++InstNum, getValueSlot(I))); // Add Annote
+  for (Method::iterator MI = M->begin(), ME = M->end(); MI != ME; ++MI) {
+    BasicBlock *BB = *MI;
+    for (BasicBlock::iterator II = BB->begin(), IE = BB->end(); II != IE; ++II){
+      Instruction *I = *II;          // For each instruction... Add Annote
+      I->addAnnotation(new InstNumber(++InstNum, getValueSlot(I)));
+    }
   }
 }