* Move include/llvm/Analysis/SlotCalculator.h to include/llvm/SlotCalculator.h
authorChris Lattner <sabre@nondot.org>
Sun, 7 Apr 2002 22:49:37 +0000 (22:49 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 7 Apr 2002 22:49:37 +0000 (22:49 +0000)
  because the slot calculator is already part of the VMCore library.
* Rename incorporateMethod and purgeMethod to *Function

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2154 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/SlotCalculator.h
include/llvm/SlotCalculator.h
lib/Bytecode/Writer/SlotCalculator.cpp
lib/Bytecode/Writer/SlotCalculator.h
lib/Bytecode/Writer/Writer.cpp
lib/Bytecode/Writer/WriterInternals.h
lib/Target/SparcV9/SparcV9AsmPrinter.cpp
lib/VMCore/AsmWriter.cpp
lib/VMCore/Constants.cpp
lib/VMCore/SlotCalculator.cpp

index 9d5d2240afbfe99ccb2c5d145e2376006496f1bb..d80515d137111c14ea1db6cc7932408405d9b8a3 100644 (file)
@@ -1,13 +1,17 @@
-//===-- llvm/Analysis/SlotCalculator.h - Calculate value slots ---*- C++ -*-==//
+//===-- llvm/SlotCalculator.h - Calculate value slots ------------*- C++ -*-==//
 //
-// This ModuleAnalyzer subclass calculates the slots that values will land in.
-// This is useful for when writing bytecode or assembly out, because you have 
-// to know these things.
+// This class calculates the slots that values will land in.  This is useful for
+// when writing bytecode or assembly out, because you have to know these things.
+//
+// Specifically, this class calculates the "type plane numbering" that you see
+// for a function if you strip out all of the symbols in it.  For assembly
+// writing, this is used when a symbol does not have a name.  For bytecode
+// writing, this is always used, and the symbol table is added on later.
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_ANALYSIS_SLOTCALCULATOR_H
-#define LLVM_ANALYSIS_SLOTCALCULATOR_H
+#ifndef LLVM_SLOTCALCULATOR_H
+#define LLVM_SLOTCALCULATOR_H
 
 #include "llvm/SymTabValue.h"
 #include <vector>
@@ -25,7 +29,7 @@ class SlotCalculator {
   std::map<const Value *, unsigned> NodeMap;
 
   // ModuleLevel - Used to keep track of which values belong to the module,
-  // and which values belong to the currently incorporated method.
+  // and which values belong to the currently incorporated function.
   //
   std::vector<unsigned> ModuleLevel;
 
@@ -47,11 +51,11 @@ public:
     return Table[Plane]; 
   }
 
-  // If you'd like to deal with a method, use these two methods to get its data
-  // into the SlotCalculator!
+  // If you'd like to deal with a function, use these two methods to get its
+  // data into the SlotCalculator!
   //
-  void incorporateMethod(const Function *F);
-  void purgeMethod();
+  void incorporateFunction(const Function *F);
+  void purgeFunction();
 
 protected:
   // insertVal - Insert a value into the value table... Return the slot that it
@@ -68,7 +72,7 @@ protected:
   // doInsertVal - Small helper function to be called only be insertVal.
   int doInsertVal(const Value *D);
 
-  // processModule - Process all of the module level method declarations and
+  // processModule - Process all of the module level function declarations and
   // types that are available.
   //
   void processModule();
index 9d5d2240afbfe99ccb2c5d145e2376006496f1bb..d80515d137111c14ea1db6cc7932408405d9b8a3 100644 (file)
@@ -1,13 +1,17 @@
-//===-- llvm/Analysis/SlotCalculator.h - Calculate value slots ---*- C++ -*-==//
+//===-- llvm/SlotCalculator.h - Calculate value slots ------------*- C++ -*-==//
 //
-// This ModuleAnalyzer subclass calculates the slots that values will land in.
-// This is useful for when writing bytecode or assembly out, because you have 
-// to know these things.
+// This class calculates the slots that values will land in.  This is useful for
+// when writing bytecode or assembly out, because you have to know these things.
+//
+// Specifically, this class calculates the "type plane numbering" that you see
+// for a function if you strip out all of the symbols in it.  For assembly
+// writing, this is used when a symbol does not have a name.  For bytecode
+// writing, this is always used, and the symbol table is added on later.
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_ANALYSIS_SLOTCALCULATOR_H
-#define LLVM_ANALYSIS_SLOTCALCULATOR_H
+#ifndef LLVM_SLOTCALCULATOR_H
+#define LLVM_SLOTCALCULATOR_H
 
 #include "llvm/SymTabValue.h"
 #include <vector>
@@ -25,7 +29,7 @@ class SlotCalculator {
   std::map<const Value *, unsigned> NodeMap;
 
   // ModuleLevel - Used to keep track of which values belong to the module,
-  // and which values belong to the currently incorporated method.
+  // and which values belong to the currently incorporated function.
   //
   std::vector<unsigned> ModuleLevel;
 
@@ -47,11 +51,11 @@ public:
     return Table[Plane]; 
   }
 
-  // If you'd like to deal with a method, use these two methods to get its data
-  // into the SlotCalculator!
+  // If you'd like to deal with a function, use these two methods to get its
+  // data into the SlotCalculator!
   //
-  void incorporateMethod(const Function *F);
-  void purgeMethod();
+  void incorporateFunction(const Function *F);
+  void purgeFunction();
 
 protected:
   // insertVal - Insert a value into the value table... Return the slot that it
@@ -68,7 +72,7 @@ protected:
   // doInsertVal - Small helper function to be called only be insertVal.
   int doInsertVal(const Value *D);
 
-  // processModule - Process all of the module level method declarations and
+  // processModule - Process all of the module level function declarations and
   // types that are available.
   //
   void processModule();
index 9c59f1204766242f959780d7ac33280a8d959dec..4a8312e6133a5f34252e337c4ca1b00e60315dda 100644 (file)
@@ -9,7 +9,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/Analysis/SlotCalculator.h"
+#include "llvm/SlotCalculator.h"
 #include "llvm/Analysis/ConstantsScanner.h"
 #include "llvm/Function.h"
 #include "llvm/GlobalVariable.h"
@@ -60,7 +60,7 @@ SlotCalculator::SlotCalculator(const Function *M, bool IgnoreNamed) {
   if (TheModule == 0) return;   // Empty table...
 
   processModule();              // Process module level stuff
-  incorporateMethod(M);         // Start out in incorporated state
+  incorporateFunction(M);         // Start out in incorporated state
 }
 
 
@@ -119,7 +119,7 @@ void SlotCalculator::processSymbolTableConstants(const SymbolTable *ST) {
 }
 
 
-void SlotCalculator::incorporateMethod(const Function *M) {
+void SlotCalculator::incorporateFunction(const Function *M) {
   assert(ModuleLevel.size() == 0 && "Module already incorporated!");
 
   SC_DEBUG("begin processFunction!\n");
@@ -182,7 +182,7 @@ void SlotCalculator::incorporateMethod(const Function *M) {
   SC_DEBUG("end processFunction!\n");
 }
 
-void SlotCalculator::purgeMethod() {
+void SlotCalculator::purgeFunction() {
   assert(ModuleLevel.size() != 0 && "Module not incorporated!");
   unsigned NumModuleTypes = ModuleLevel.size();
 
index 9d5d2240afbfe99ccb2c5d145e2376006496f1bb..d80515d137111c14ea1db6cc7932408405d9b8a3 100644 (file)
@@ -1,13 +1,17 @@
-//===-- llvm/Analysis/SlotCalculator.h - Calculate value slots ---*- C++ -*-==//
+//===-- llvm/SlotCalculator.h - Calculate value slots ------------*- C++ -*-==//
 //
-// This ModuleAnalyzer subclass calculates the slots that values will land in.
-// This is useful for when writing bytecode or assembly out, because you have 
-// to know these things.
+// This class calculates the slots that values will land in.  This is useful for
+// when writing bytecode or assembly out, because you have to know these things.
+//
+// Specifically, this class calculates the "type plane numbering" that you see
+// for a function if you strip out all of the symbols in it.  For assembly
+// writing, this is used when a symbol does not have a name.  For bytecode
+// writing, this is always used, and the symbol table is added on later.
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_ANALYSIS_SLOTCALCULATOR_H
-#define LLVM_ANALYSIS_SLOTCALCULATOR_H
+#ifndef LLVM_SLOTCALCULATOR_H
+#define LLVM_SLOTCALCULATOR_H
 
 #include "llvm/SymTabValue.h"
 #include <vector>
@@ -25,7 +29,7 @@ class SlotCalculator {
   std::map<const Value *, unsigned> NodeMap;
 
   // ModuleLevel - Used to keep track of which values belong to the module,
-  // and which values belong to the currently incorporated method.
+  // and which values belong to the currently incorporated function.
   //
   std::vector<unsigned> ModuleLevel;
 
@@ -47,11 +51,11 @@ public:
     return Table[Plane]; 
   }
 
-  // If you'd like to deal with a method, use these two methods to get its data
-  // into the SlotCalculator!
+  // If you'd like to deal with a function, use these two methods to get its
+  // data into the SlotCalculator!
   //
-  void incorporateMethod(const Function *F);
-  void purgeMethod();
+  void incorporateFunction(const Function *F);
+  void purgeFunction();
 
 protected:
   // insertVal - Insert a value into the value table... Return the slot that it
@@ -68,7 +72,7 @@ protected:
   // doInsertVal - Small helper function to be called only be insertVal.
   int doInsertVal(const Value *D);
 
-  // processModule - Process all of the module level method declarations and
+  // processModule - Process all of the module level function declarations and
   // types that are available.
   //
   void processModule();
index af53ee5c0e1d429febf5decc1e77eda5c313b3e9..0b883acd58a143714fd9359a03841afd90d940a7 100644 (file)
@@ -2,9 +2,6 @@
 //
 // This library implements the functionality defined in llvm/Bytecode/Writer.h
 //
-// This library uses the Analysis library to figure out offsets for
-// variables in the method tables...
-//
 // Note that this file uses an unusual technique of outputting all the bytecode
 // to a deque of unsigned char's, then copies the deque to an ostream.  The
 // reason for this is that we must do "seeking" in the stream to do back-
@@ -46,13 +43,13 @@ BytecodeWriter::BytecodeWriter(std::deque<unsigned char> &o, const Module *M)
   output_vbr((unsigned)Type::FirstDerivedTyID, Out);
   align32(Out);
 
-  // Output module level constants, including types used by the method protos
+  // Output module level constants, including types used by the function protos
   outputConstants(false);
 
   // The ModuleInfoBlock follows directly after the Module constant pool
   outputModuleInfoBlock(M);
 
-  // Do the whole module now! Process each method at a time...
+  // Do the whole module now! Process each function at a time...
   for_each(M->begin(), M->end(),
           bind_obj(this, &BytecodeWriter::processMethod));
 
@@ -75,7 +72,7 @@ void BytecodeWriter::outputConstants(bool isFunction) {
     else if (pno == Type::TypeTyID)
       ValNo = Type::FirstDerivedTyID; // Start emitting at the derived types...
     
-    // Scan through and ignore method arguments...
+    // Scan through and ignore function arguments...
     for (; ValNo < Plane.size() && isa<FunctionArgument>(Plane[ValNo]); ValNo++)
       /*empty*/;
 
@@ -92,7 +89,7 @@ void BytecodeWriter::outputConstants(bool isFunction) {
 
     // Output the Type ID Number...
     int Slot = Table.getValSlot(Plane.front()->getType());
-    assert (Slot != -1 && "Type in constant pool but not in method!!");
+    assert (Slot != -1 && "Type in constant pool but not in function!!");
     output_vbr((unsigned)Slot, Out);
 
     //cerr << "Emitting " << NC << " constants of type '" 
@@ -136,7 +133,7 @@ void BytecodeWriter::outputModuleInfoBlock(const Module *M) {
   }
   output_vbr((unsigned)Table.getValSlot(Type::VoidTy), Out);
 
-  // Output the types of the methods in this module...
+  // Output the types of the functions in this module...
   for (Module::const_iterator I = M->begin(), End = M->end(); I != End; ++I) {
     int Slot = Table.getValSlot((*I)->getType());
     assert(Slot != -1 && "Module const pool is broken!");
@@ -155,21 +152,21 @@ void BytecodeWriter::processMethod(const Function *M) {
   // Only output the constant pool and other goodies if needed...
   if (!M->isExternal()) {
 
-    // Get slot information about the method...
-    Table.incorporateMethod(M);
+    // Get slot information about the function...
+    Table.incorporateFunction(M);
 
-    // Output information about the constants in the method...
+    // Output information about the constants in the function...
     outputConstants(true);
 
     // Output basic block nodes...
     for_each(M->begin(), M->end(),
             bind_obj(this, &BytecodeWriter::processBasicBlock));
     
-    // If needed, output the symbol table for the method...
+    // If needed, output the symbol table for the function...
     if (M->hasSymbolTable())
       outputSymbolTable(*M->getSymbolTable());
     
-    Table.purgeMethod();
+    Table.purgeFunction();
   }
 }
 
index 10170305b340929f8d6ceea811a92f7a5df50f23..62f12db91fefcecd544ba2652fed149e35638005 100644 (file)
@@ -14,8 +14,8 @@
 
 #include "llvm/Bytecode/Writer.h"
 #include "llvm/Bytecode/Format.h"
-#include "llvm/Analysis/SlotCalculator.h"
 #include "llvm/Bytecode/Primitives.h"
+#include "llvm/SlotCalculator.h"
 #include "llvm/Instruction.h"
 #include <deque>
 
index de4cb82b5dc400c36b027e0697eeb0f7fda25dad..83a8b644945d754fdf7d6588b15be96c8660a90c 100644 (file)
@@ -12,7 +12,6 @@
 //===----------------------------------------------------------------------===//
 
 #include "SparcInternals.h"
-#include "llvm/Analysis/SlotCalculator.h"
 #include "llvm/CodeGen/MachineInstr.h"
 #include "llvm/CodeGen/MachineCodeForMethod.h"
 #include "llvm/GlobalVariable.h"
@@ -22,6 +21,7 @@
 #include "llvm/BasicBlock.h"
 #include "llvm/Function.h"
 #include "llvm/Module.h"
+#include "llvm/SlotCalculator.h"
 #include "Support/StringExtras.h"
 #include "Support/HashExtras.h"
 #include <iostream>
@@ -84,11 +84,11 @@ public:
     }
   }
   void startFunction(Function *F) {
-    // Make sure the slot table has information about this method...
-    idTable->Table->incorporateMethod(F);
+    // Make sure the slot table has information about this function...
+    idTable->Table->incorporateFunction(F);
   }
   void endFunction(Function *F) {
-    idTable->Table->purgeMethod();  // Forget all about F
+    idTable->Table->purgeFunction();  // Forget all about F
   }
   void endModule() {
   }
index 20ac49e4c9c32110af2c60eb5b040271e3cf9bd5..0af79bea5688d45edce3f0f928005a4ef2c1ec3d 100644 (file)
@@ -8,7 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Assembly/CachedWriter.h"
-#include "llvm/Analysis/SlotCalculator.h"
+#include "llvm/SlotCalculator.h"
 #include "llvm/Module.h"
 #include "llvm/Function.h"
 #include "llvm/GlobalVariable.h"
@@ -319,7 +319,7 @@ void AssemblyWriter::printModule(const Module *M) {
 
   Out << "implementation\n";
   
-  // Output all of the methods...
+  // Output all of the functions...
   for_each(M->begin(), M->end(), bind_obj(this,&AssemblyWriter::printFunction));
 }
 
@@ -386,14 +386,14 @@ void AssemblyWriter::printConstant(const Constant *CPV) {
   Out << "\n";
 }
 
-// printFunction - Print all aspects of a method.
+// printFunction - Print all aspects of a function.
 //
 void AssemblyWriter::printFunction(const Function *M) {
   // Print out the return type and name...
   Out << "\n" << (M->isExternal() ? "declare " : "")
       << (M->hasInternalLinkage() ? "internal " : "");
   printType(M->getReturnType()) << " \"" << M->getName() << "\"(";
-  Table.incorporateMethod(M);
+  Table.incorporateFunction(M);
 
   // Loop over the arguments, printing them...
   const FunctionType *MT = M->getFunctionType();
@@ -425,18 +425,18 @@ void AssemblyWriter::printFunction(const Function *M) {
 
     Out << "begin";
   
-    // Output all of its basic blocks... for the method
+    // Output all of its basic blocks... for the function
     for_each(M->begin(), M->end(),
             bind_obj(this, &AssemblyWriter::printBasicBlock));
 
     Out << "end\n";
   }
 
-  Table.purgeMethod();
+  Table.purgeFunction();
 }
 
 // printFunctionArgument - This member is called for every argument that 
-// is passed into the method.  Simply print it out
+// is passed into the function.  Simply print it out
 //
 void AssemblyWriter::printFunctionArgument(const FunctionArgument *Arg) {
   // Insert commas as we go... the first arg doesn't get a comma
@@ -543,8 +543,8 @@ void AssemblyWriter::printInstruction(const Instruction *I) {
     const Type      *RetTy = MTy ? MTy->getReturnType() : 0;
 
     // If possible, print out the short form of the call instruction, but we can
-    // only do this if the first argument is a pointer to a nonvararg method,
-    // and if the value returned is not a pointer to a method.
+    // only do this if the first argument is a pointer to a nonvararg function,
+    // and if the value returned is not a pointer to a function.
     //
     if (RetTy && !MTy->isVarArg() &&
         (!isa<PointerType>(RetTy)||!isa<FunctionType>(cast<PointerType>(RetTy)))){
index b73886cf1b5b09e8e02522fb6349477d96bde19f..f3f3f49bf63cd7160235366c82edf1902688e054 100644 (file)
@@ -10,7 +10,7 @@
 #include "llvm/SymbolTable.h"
 #include "llvm/GlobalValue.h"
 #include "llvm/Module.h"
-#include "llvm/Analysis/SlotCalculator.h"
+#include "llvm/SlotCalculator.h"
 #include "Support/StringExtras.h"
 #include <algorithm>
 
@@ -259,6 +259,7 @@ std::string ConstantPointerRef::getStrValue() const {
   const GlobalValue *V = getValue();
   if (V->hasName()) return "%" + V->getName();
 
+  // FIXME: This is a gross hack.
   SlotCalculator *Table = new SlotCalculator(V->getParent(), true);
   int Slot = Table->getValSlot(V);
   delete Table;
index 9c59f1204766242f959780d7ac33280a8d959dec..4a8312e6133a5f34252e337c4ca1b00e60315dda 100644 (file)
@@ -9,7 +9,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/Analysis/SlotCalculator.h"
+#include "llvm/SlotCalculator.h"
 #include "llvm/Analysis/ConstantsScanner.h"
 #include "llvm/Function.h"
 #include "llvm/GlobalVariable.h"
@@ -60,7 +60,7 @@ SlotCalculator::SlotCalculator(const Function *M, bool IgnoreNamed) {
   if (TheModule == 0) return;   // Empty table...
 
   processModule();              // Process module level stuff
-  incorporateMethod(M);         // Start out in incorporated state
+  incorporateFunction(M);         // Start out in incorporated state
 }
 
 
@@ -119,7 +119,7 @@ void SlotCalculator::processSymbolTableConstants(const SymbolTable *ST) {
 }
 
 
-void SlotCalculator::incorporateMethod(const Function *M) {
+void SlotCalculator::incorporateFunction(const Function *M) {
   assert(ModuleLevel.size() == 0 && "Module already incorporated!");
 
   SC_DEBUG("begin processFunction!\n");
@@ -182,7 +182,7 @@ void SlotCalculator::incorporateMethod(const Function *M) {
   SC_DEBUG("end processFunction!\n");
 }
 
-void SlotCalculator::purgeMethod() {
+void SlotCalculator::purgeFunction() {
   assert(ModuleLevel.size() != 0 && "Module not incorporated!");
   unsigned NumModuleTypes = ModuleLevel.size();