diff --git a/llvm/lib/ExecutionEngine/Interpreter/ExecutionAnnotations.h b/llvm/lib/ExecutionEngine/Interpreter/ExecutionAnnotations.h
index 537d18c..03abd20 100644
--- a/llvm/lib/ExecutionEngine/Interpreter/ExecutionAnnotations.h
+++ b/llvm/lib/ExecutionEngine/Interpreter/ExecutionAnnotations.h
@@ -11,18 +11,18 @@
 // Support for MethodInfo annotations
 //===----------------------------------------------------------------------===//
 
-// This annotation (attached only to Method objects) is used to cache useful
-// information about the method, including the number of types present in the
-// method, and the number of values for each type.
+// This annotation (attached only to Function objects) is used to cache useful
+// information about the function, including the number of types present in the
+// function, and the number of values for each type.
 //
 // This annotation object is created on demand, and attaches other annotation
-// objects to the instructions in the method when it's created.
+// objects to the instructions in the function when it's created.
 //
 static AnnotationID MethodInfoAID(
-	            AnnotationManager::getID("Interpreter::MethodInfo"));
+	            AnnotationManager::getID("Interpreter::FunctionInfo"));
 
 struct MethodInfo : public Annotation {
-  MethodInfo(Method *M);
+  MethodInfo(Function *F);
   std::vector<unsigned> NumPlaneElements;
 
 
@@ -31,7 +31,7 @@
   //
   static Annotation *Create(AnnotationID AID, const Annotable *O, void *) {
     assert(AID == MethodInfoAID);
-    return new MethodInfo(cast<Method>((Value*)O));  // Simply invoke the ctor
+    return new MethodInfo(cast<Function>((Value*)O));  // Simply invoke the ctor
   }
 
 private:
@@ -47,7 +47,7 @@
 // used to hold the the slot number for the value in its type plane.
 //
 // Entities have this annotation attached to them when the containing
-// method has it's MethodInfo created (by the MethodInfo ctor).
+// function has it's MethodInfo created (by the MethodInfo ctor).
 //
 static AnnotationID SlotNumberAID(
 	            AnnotationManager::getID("Interpreter::SlotNumber"));
@@ -71,8 +71,8 @@
 // its type plane.  InstNumber's are used for user interaction, and for
 // calculating which value slot to store the result of the instruction in.
 //
-// Instructions have this annotation attached to them when the containing method
-// has it's MethodInfo created (by the MethodInfo ctor).
+// Instructions have this annotation attached to them when the containing
+// function has it's MethodInfo created (by the MethodInfo ctor).
 //
 struct InstNumber : public SlotNumber {
   unsigned InstNum;   // Ranges from 1->
@@ -95,10 +95,11 @@
 //===----------------------------------------------------------------------===//
 
 // This annotation (attached only to GlobalValue objects) is used to hold the
-// address of the chunk of memory that represents a global value.  For Method's,
-// this pointer is the Method object pointer that represents it.  For global
-// variables, this is the dynamically allocated (and potentially initialized)
-// chunk of memory for the global.  This annotation is created on demand.
+// address of the chunk of memory that represents a global value.  For
+// Functions, this pointer is the Function object pointer that represents it.
+// For global variables, this is the dynamically allocated (and potentially
+// initialized) chunk of memory for the global.  This annotation is created on
+// demand.
 //
 static AnnotationID GlobalAddressAID(
 	            AnnotationManager::getID("Interpreter::GlobalAddress"));
