mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
* Add a file header with some information
* Delete the DelaySlotInfo objects created by the SchedulingManager class. These leaked objects were accounting for 3/4 of the memory leaked by the backend, so this is a relatively major win. * Reorganize SchedulingManager::getDelaySlotInfoForInstr so that it has better code locality (making it easier to read). llvm-svn: 2197
This commit is contained in:
parent
0a8a112014
commit
119c675af7
@ -1,14 +1,9 @@
|
||||
// $Id$
|
||||
//***************************************************************************
|
||||
// File:
|
||||
// InstrScheduling.cpp
|
||||
//
|
||||
// Purpose:
|
||||
//
|
||||
// History:
|
||||
// 7/23/01 - Vikram Adve - Created
|
||||
//**************************************************************************/
|
||||
|
||||
//===- InstrScheduling.cpp - Generic Instruction Scheduling support -------===//
|
||||
//
|
||||
// This file implements the llvm/CodeGen/InstrScheduling.h interface, along with
|
||||
// generic support routines for instruction scheduling.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/CodeGen/InstrScheduling.h"
|
||||
#include "llvm/CodeGen/MachineInstr.h"
|
||||
@ -364,10 +359,14 @@ private:
|
||||
// indexed by branch node ptr
|
||||
|
||||
public:
|
||||
/*ctor*/ SchedulingManager (const TargetMachine& _target,
|
||||
const SchedGraph* graph,
|
||||
SchedPriorities& schedPrio);
|
||||
/*dtor*/ ~SchedulingManager () {}
|
||||
SchedulingManager(const TargetMachine& _target, const SchedGraph* graph,
|
||||
SchedPriorities& schedPrio);
|
||||
~SchedulingManager() {
|
||||
for (std::hash_map<const SchedGraphNode*,
|
||||
DelaySlotInfo*>::iterator I = delaySlotInfoForBranches.begin(),
|
||||
E = delaySlotInfoForBranches.end(); I != E; ++I)
|
||||
delete I->second;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// Simplify access to the machine instruction info
|
||||
@ -497,30 +496,21 @@ public:
|
||||
inline DelaySlotInfo* getDelaySlotInfoForInstr(const SchedGraphNode* bn,
|
||||
bool createIfMissing=false)
|
||||
{
|
||||
DelaySlotInfo* dinfo;
|
||||
std::hash_map<const SchedGraphNode*, DelaySlotInfo* >::const_iterator
|
||||
std::hash_map<const SchedGraphNode*, DelaySlotInfo*>::const_iterator
|
||||
I = delaySlotInfoForBranches.find(bn);
|
||||
if (I == delaySlotInfoForBranches.end())
|
||||
{
|
||||
if (createIfMissing)
|
||||
{
|
||||
dinfo = new DelaySlotInfo(bn,
|
||||
getInstrInfo().getNumDelaySlots(bn->getOpCode()));
|
||||
delaySlotInfoForBranches[bn] = dinfo;
|
||||
}
|
||||
else
|
||||
dinfo = NULL;
|
||||
}
|
||||
else
|
||||
dinfo = (*I).second;
|
||||
|
||||
return dinfo;
|
||||
if (I != delaySlotInfoForBranches.end())
|
||||
return I->second;
|
||||
|
||||
if (!createIfMissing) return 0;
|
||||
|
||||
DelaySlotInfo *dinfo =
|
||||
new DelaySlotInfo(bn, getInstrInfo().getNumDelaySlots(bn->getOpCode()));
|
||||
return delaySlotInfoForBranches[bn] = dinfo;
|
||||
}
|
||||
|
||||
private:
|
||||
/*ctor*/ SchedulingManager (); // Disable: DO NOT IMPLEMENT.
|
||||
void updateEarliestStartTimes(const SchedGraphNode* node,
|
||||
cycles_t schedTime);
|
||||
SchedulingManager(); // DISABLED: DO NOT IMPLEMENT
|
||||
void updateEarliestStartTimes(const SchedGraphNode* node, cycles_t schedTime);
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user