diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-07-04 11:36:31 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-07-04 11:36:31 +0000 |
commit | e0bc0c1822c5288fe0d3da76d9b357f2f9a7251a (patch) | |
tree | 43ee4f84d05152a431cc693cc41bec61a0800960 /include | |
parent | 04cde2ce59677693728bfacee0dbc2db7426181f (diff) | |
download | external_llvm-e0bc0c1822c5288fe0d3da76d9b357f2f9a7251a.zip external_llvm-e0bc0c1822c5288fe0d3da76d9b357f2f9a7251a.tar.gz external_llvm-e0bc0c1822c5288fe0d3da76d9b357f2f9a7251a.tar.bz2 |
Move SlotCalculator.h to lib/Bytecode/Writer since that is the only place
that needs it after the Type != Value changes (bug 122).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14605 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Analysis/SlotCalculator.h | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/include/llvm/Analysis/SlotCalculator.h b/include/llvm/Analysis/SlotCalculator.h deleted file mode 100644 index 923b173..0000000 --- a/include/llvm/Analysis/SlotCalculator.h +++ /dev/null @@ -1,141 +0,0 @@ -//===-- Analysis/SlotCalculator.h - Calculate value slots -------*- C++ -*-===// -// -// The LLVM Compiler Infrastructure -// -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// 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 - -#include <vector> -#include <map> - -namespace llvm { - -class Value; -class Module; -class Function; -class SymbolTable; -class ConstantArray; - -class SlotCalculator { - const Module *TheModule; - - typedef std::vector<const Value*> TypePlane; - std::vector<TypePlane> Table; - std::map<const Value*, unsigned> NodeMap; - - /// ConstantStrings - If we are indexing for a bytecode file, this keeps track - /// of all of the constants strings that need to be emitted. - std::vector<const ConstantArray*> ConstantStrings; - - /// ModuleLevel - Used to keep track of which values belong to the module, - /// and which values belong to the currently incorporated function. - /// - std::vector<unsigned> ModuleLevel; - - /// ModuleContainsAllFunctionConstants - This flag is set to true if all - /// function constants are incorporated into the module constant table. This - /// is only possible if building information for a bytecode file. - bool ModuleContainsAllFunctionConstants; - - /// CompactionTable/NodeMap - When function compaction has been performed, - /// these entries provide a compacted view of the namespace needed to emit - /// instructions in a function body. The 'getSlot()' method automatically - /// returns these entries if applicable, or the global entries if not. - std::vector<TypePlane> CompactionTable; - std::map<const Value*, unsigned> CompactionNodeMap; - - SlotCalculator(const SlotCalculator &); // DO NOT IMPLEMENT - void operator=(const SlotCalculator &); // DO NOT IMPLEMENT -public: - SlotCalculator(const Module *M); - // Start out in incorp state - SlotCalculator(const Function *F); - - /// getSlot - Return the slot number of the specified value in it's type - /// plane. This returns < 0 on error! - /// - int getSlot(const Value *V) const; - - /// getGlobalSlot - Return a slot number from the global table. This can only - /// be used when a compaction table is active. - unsigned getGlobalSlot(const Value *V) const; - - inline unsigned getNumPlanes() const { - if (CompactionTable.empty()) - return Table.size(); - else - return CompactionTable.size(); - } - inline unsigned getModuleLevel(unsigned Plane) const { - return Plane < ModuleLevel.size() ? ModuleLevel[Plane] : 0; - } - - TypePlane &getPlane(unsigned Plane); - - /// incorporateFunction/purgeFunction - If you'd like to deal with a function, - /// use these two methods to get its data into the SlotCalculator! - /// - void incorporateFunction(const Function *F); - void purgeFunction(); - - /// string_iterator/string_begin/end - Access the list of module-level - /// constant strings that have been incorporated. This is only applicable to - /// bytecode files. - typedef std::vector<const ConstantArray*>::const_iterator string_iterator; - string_iterator string_begin() const { return ConstantStrings.begin(); } - string_iterator string_end() const { return ConstantStrings.end(); } - - const std::vector<TypePlane> &getCompactionTable() const { - return CompactionTable; - } - -private: - // getOrCreateSlot - Values can be crammed into here at will... if - // they haven't been inserted already, they get inserted, otherwise - // they are ignored. - // - int getOrCreateSlot(const Value *D); - - // insertValue - Insert a value into the value table... Return the - // slot that it occupies, or -1 if the declaration is to be ignored - // because of the IgnoreNamedNodes flag. - // - int insertValue(const Value *D, bool dontIgnore = false); - - // doInsertValue - Small helper function to be called only be insertVal. - int doInsertValue(const Value *D); - - // processModule - Process all of the module level function declarations and - // types that are available. - // - void processModule(); - - // processSymbolTable - Insert all of the values in the specified symbol table - // into the values table... - // - void processSymbolTable(const SymbolTable *ST); - void processSymbolTableConstants(const SymbolTable *ST); - - void buildCompactionTable(const Function *F); - unsigned getOrCreateCompactionTableSlot(const Value *V); - void pruneCompactionTable(); -}; - -} // End llvm namespace - -#endif |