aboutsummaryrefslogtreecommitdiff
path: root/lib/Bytecode/Writer
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2004-07-04 11:47:22 +0000
committerReid Spencer <rspencer@reidspencer.com>2004-07-04 11:47:22 +0000
commitd57da4b27d55379fd4d15dbd3344486caa58d80b (patch)
tree94342a8011d1cba9055eb31ab781eda6d1390182 /lib/Bytecode/Writer
parent0852c80e38a5a9d2b0ce0f3f0505d62ab7e484e1 (diff)
Implementation of SlotTable went into header file. Note that this header
is currently not being used but is retained because it will be the basis for a clean up of the SlotCalculator class. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14612 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Bytecode/Writer')
-rw-r--r--lib/Bytecode/Writer/SlotTable.cpp116
1 files changed, 0 insertions, 116 deletions
diff --git a/lib/Bytecode/Writer/SlotTable.cpp b/lib/Bytecode/Writer/SlotTable.cpp
deleted file mode 100644
index 42b0b5adb8..0000000000
--- a/lib/Bytecode/Writer/SlotTable.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-//===-- SlotTable.cpp - Abstract data type for slot numbers ---------------===//
-//
-// 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 file implements an abstract data type for keeping track of slot numbers
-// for bytecode and assembly writing or any other purpose.
-//
-//===----------------------------------------------------------------------===//
-
-#include "SlotTable.h"
-#include "llvm/Constants.h"
-#include "llvm/Type.h"
-#include "llvm/GlobalValue.h"
-
-using namespace llvm;
-
-//===----------------------------------------------------------------------===//
-// SlotTable Implementation
-//===----------------------------------------------------------------------===//
-
-SlotTable::SlotTable( bool dont_insert_primitives ) {
- if ( ! dont_insert_primitives )
- this->insertPrimitives();
-}
-
-// empty - determine if the slot table is completely empty.
-bool SlotTable::empty() const {
- return vTable.empty() && vMap.empty() && tPlane.empty() && tMap.empty();
-}
-
-// getSlot - get the slot number associated with value Val
-SlotTable::SlotNum SlotTable::getSlot(const Value* Val) const {
- ValueMap::const_iterator I = vMap.find( Val );
- if ( I != vMap.end() )
- return I->second;
-
- // Do not number ConstantPointerRef's at all. They are an abomination.
- if (const ConstantPointerRef *CPR = dyn_cast<ConstantPointerRef>(Val))
- return this->getSlot(CPR->getValue());
-
- return BAD_SLOT;
-}
-
-// getSlot - get the slot number associated with type Typ
-SlotTable::SlotNum SlotTable::getSlot(const Type* Typ) const {
- TypeMap::const_iterator I = tMap.find( Typ );
- if ( I != tMap.end() )
- return I->second;
-
- return BAD_SLOT;
-}
-
-// clear - completely clear the slot table of all entries
-void SlotTable::clear() {
- vTable.clear();
- vMap.clear();
- tPlane.clear();
- tMap.clear();
-}
-
-// resize - make sure there's enough room for specific number of planes
-void SlotTable::resize( size_t new_size ) {
- vTable.resize( new_size );
-}
-
-// insert - insert a Value into a specific plane
-SlotTable::SlotNum SlotTable::insert( const Value* Val, PlaneNum plane ) {
- if ( vTable.size() <= plane ) // Make sure we have the type plane allocated
- vTable.resize(plane+1, ValuePlane());
-
- // Insert node into table and map
- SlotNum DestSlot = vMap[Val] = vTable[plane].size();
- vTable[plane].push_back(Val);
- return DestSlot;
-}
-
-// insert - insert a type
-SlotTable::SlotNum SlotTable::insert( const Type* Typ ) {
- // Insert node into table and map making sure that
- // the same type isn't inserted twice.
- assert(tMap.find(Typ) == tMap.end() && "Can't insert a Type multiple times");
- SlotNum DestSlot = tMap[Typ] = tPlane.size();
- tPlane.push_back(Typ);
- return DestSlot;
-}
-
-// remove - remove a value from the slot table
-SlotTable::SlotNum SlotTable::remove( const Value* Val, PlaneNum plane ) {
- // FIXME: not implemented - not sure we need it
- return BAD_SLOT;
-}
-
-// remove - remove a type from the slot table
-SlotTable::SlotNum SlotTable::remove( const Type* Typ ) {
- // FIXME: not implemented - not sure we need it
- return BAD_SLOT;
-}
-
-// insertPrimitives - insert the primitive types for initialization
-// Make sure that all of the primitive types are in the table
-// and that their Primitive ID is equal to their slot #
-void SlotTable::insertPrimitives() {
- for (PlaneNum plane = 0; plane < Type::FirstDerivedTyID; ++plane) {
- const Type* Ty = Type::getPrimitiveType((Type::TypeID) plane);
- assert(Ty && "Couldn't get primitive type id");
- SlotNum slot = this->insert(Ty);
- assert(slot == plane && "Type slot didn't match plane number");
- }
-}
-
-// vim: sw=2