SubBlock.cc (11040:ec668f8466eb) SubBlock.cc (11049:dfb0aa3f0649)
1/*
2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 27 unchanged lines hidden (view full) ---

36 m_address = addr;
37 resize(size);
38 for (int i = 0; i < size; i++) {
39 setByte(i, 0);
40 }
41}
42
43void
1/*
2 * Copyright (c) 1999-2008 Mark D. Hill and David A. Wood
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

--- 27 unchanged lines hidden (view full) ---

36 m_address = addr;
37 resize(size);
38 for (int i = 0; i < size; i++) {
39 setByte(i, 0);
40 }
41}
42
43void
44SubBlock::mergeFrom(const DataBlock& data)
44SubBlock::internalMergeFrom(const DataBlock& data)
45{
46 int size = getSize();
47 assert(size > 0);
48 int offset = getOffset(m_address);
49 for (int i = 0; i < size; i++) {
50 this->setByte(i, data.getByte(offset + i));
51 }
52}
53
54void
45{
46 int size = getSize();
47 assert(size > 0);
48 int offset = getOffset(m_address);
49 for (int i = 0; i < size; i++) {
50 this->setByte(i, data.getByte(offset + i));
51 }
52}
53
54void
55SubBlock::mergeTo(DataBlock& data) const
55SubBlock::internalMergeTo(DataBlock& data) const
56{
57 int size = getSize();
58 assert(size > 0);
59 int offset = getOffset(m_address);
60 for (int i = 0; i < size; i++) {
61 // This will detect crossing a cache line boundary
62 data.setByte(offset + i, this->getByte(i));
63 }
64}
65
66void
67SubBlock::print(std::ostream& out) const
68{
69 out << "[" << m_address << ", " << getSize() << ", " << m_data << "]";
70}
56{
57 int size = getSize();
58 assert(size > 0);
59 int offset = getOffset(m_address);
60 for (int i = 0; i < size; i++) {
61 // This will detect crossing a cache line boundary
62 data.setByte(offset + i, this->getByte(i));
63 }
64}
65
66void
67SubBlock::print(std::ostream& out) const
68{
69 out << "[" << m_address << ", " << getSize() << ", " << m_data << "]";
70}
71
72
73