Ruby: Make DataBlock.hh independent of RubySystem

This patch changes DataBlock.hh so that it is not dependent on RubySystem.
This dependence seems unecessary. All those functions that depende on
RubySystem have been moved to DataBlock.cc file.
This commit is contained in:
Nilay Vaish 2011-02-25 17:51:02 -06:00
parent a10685ad1e
commit 80b3886475
3 changed files with 57 additions and 56 deletions

View file

@ -37,7 +37,6 @@
#include "cpu/testers/rubytest/CheckTable.hh"
#include "mem/mem_object.hh"
#include "mem/packet.hh"
#include "mem/ruby/common/DataBlock.hh"
#include "mem/ruby/common/Global.hh"
#include "mem/ruby/common/SubBlock.hh"
#include "mem/ruby/system/RubyPort.hh"

View file

@ -27,6 +27,62 @@
*/
#include "mem/ruby/common/DataBlock.hh"
#include "mem/ruby/system/System.hh"
DataBlock::DataBlock(const DataBlock &cp)
{
m_data = new uint8[RubySystem::getBlockSizeBytes()];
memcpy(m_data, cp.m_data, RubySystem::getBlockSizeBytes());
m_alloc = true;
}
void
DataBlock::alloc()
{
m_data = new uint8[RubySystem::getBlockSizeBytes()];
m_alloc = true;
clear();
}
void
DataBlock::clear()
{
memset(m_data, 0, RubySystem::getBlockSizeBytes());
}
bool
DataBlock::equal(const DataBlock& obj) const
{
return !memcmp(m_data, obj.m_data, RubySystem::getBlockSizeBytes());
}
void
DataBlock::print(std::ostream& out) const
{
using namespace std;
int size = RubySystem::getBlockSizeBytes();
out << "[ ";
for (int i = 0; i < size; i++) {
out << setw(2) << setfill('0') << hex << "0x" << (int)m_data[i] << " ";
out << setfill(' ');
}
out << dec << "]" << flush;
}
const uint8*
DataBlock::getData(int offset, int len) const
{
assert(offset + len <= RubySystem::getBlockSizeBytes());
return &m_data[offset];
}
void
DataBlock::setData(uint8* data, int offset, int len)
{
assert(offset + len <= RubySystem::getBlockSizeBytes());
memcpy(&m_data[offset], data, len);
}
DataBlock &
DataBlock::operator=(const DataBlock & obj)

View file

@ -33,7 +33,6 @@
#include <iostream>
#include "mem/ruby/common/Global.hh"
#include "mem/ruby/system/System.hh"
class DataBlock
{
@ -43,12 +42,7 @@ class DataBlock
alloc();
}
DataBlock(const DataBlock &cp)
{
m_data = new uint8[RubySystem::getBlockSizeBytes()];
memcpy(m_data, cp.m_data, RubySystem::getBlockSizeBytes());
m_alloc = true;
}
DataBlock(const DataBlock &cp);
~DataBlock()
{
@ -85,66 +79,18 @@ DataBlock::assign(uint8* data)
m_alloc = false;
}
inline void
DataBlock::alloc()
{
m_data = new uint8[RubySystem::getBlockSizeBytes()];
m_alloc = true;
clear();
}
inline void
DataBlock::clear()
{
memset(m_data, 0, RubySystem::getBlockSizeBytes());
}
inline bool
DataBlock::equal(const DataBlock& obj) const
{
return !memcmp(m_data, obj.m_data, RubySystem::getBlockSizeBytes());
}
inline void
DataBlock::print(std::ostream& out) const
{
using namespace std;
int size = RubySystem::getBlockSizeBytes();
out << "[ ";
for (int i = 0; i < size; i++) {
out << setw(2) << setfill('0') << hex << "0x" << (int)m_data[i] << " ";
out << setfill(' ');
}
out << dec << "]" << flush;
}
inline uint8
DataBlock::getByte(int whichByte) const
{
return m_data[whichByte];
}
inline const uint8*
DataBlock::getData(int offset, int len) const
{
assert(offset + len <= RubySystem::getBlockSizeBytes());
return &m_data[offset];
}
inline void
DataBlock::setByte(int whichByte, uint8 data)
{
m_data[whichByte] = data;
}
inline void
DataBlock::setData(uint8* data, int offset, int len)
{
assert(offset + len <= RubySystem::getBlockSizeBytes());
memcpy(&m_data[offset], data, len);
}
inline void
DataBlock::copyPartial(const DataBlock & dblk, int offset, int len)
{