projects
/
gem5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Loader: Use address mask provided to load*Symbols when loading the symbols from the...
[gem5.git]
/
src
/
base
/
timebuf.hh
diff --git
a/src/base/timebuf.hh
b/src/base/timebuf.hh
index 6a326d25adfc59ed3ed2f3b46e127baaff396c21..b6f709d719472b92458ac4a63c2bd7b59bdd50d4 100644
(file)
--- a/
src/base/timebuf.hh
+++ b/
src/base/timebuf.hh
@@
-25,12
+25,15
@@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * Authors: Kevin Lim
+ * Authors: Nathan Binkert
+ * Kevin Lim
*/
#ifndef __BASE_TIMEBUF_HH__
#define __BASE_TIMEBUF_HH__
*/
#ifndef __BASE_TIMEBUF_HH__
#define __BASE_TIMEBUF_HH__
+#include <cassert>
+#include <cstring>
#include <vector>
template <class T>
#include <vector>
template <class T>
@@
-39,11
+42,12
@@
class TimeBuffer
protected:
int past;
int future;
protected:
int past;
int future;
- int size;
+ unsigned size;
+ int _id;
char *data;
std::vector<char *> index;
char *data;
std::vector<char *> index;
-
int
base;
+
unsigned
base;
void valid(int idx)
{
void valid(int idx)
{
@@
-134,17
+138,19
@@
class TimeBuffer
public:
TimeBuffer(int p, int f)
public:
TimeBuffer(int p, int f)
- : past(p), future(f), size(past + future + 1),
+ : past(p), future(f), size(past + future + 1),
data(new char[size * sizeof(T)]), index(size), base(0)
{
assert(past >= 0 && future >= 0);
char *ptr = data;
data(new char[size * sizeof(T)]), index(size), base(0)
{
assert(past >= 0 && future >= 0);
char *ptr = data;
- for (
int
i = 0; i < size; i++) {
+ for (
unsigned
i = 0; i < size; i++) {
index[i] = ptr;
index[i] = ptr;
- memset(ptr, 0, sizeof(T));
+
std::
memset(ptr, 0, sizeof(T));
new (ptr) T;
ptr += sizeof(T);
}
new (ptr) T;
ptr += sizeof(T);
}
+
+ _id = -1;
}
TimeBuffer()
}
TimeBuffer()
@@
-154,11
+160,21
@@
class TimeBuffer
~TimeBuffer()
{
~TimeBuffer()
{
- for (
int
i = 0; i < size; ++i)
+ for (
unsigned
i = 0; i < size; ++i)
(reinterpret_cast<T *>(index[i]))->~T();
delete [] data;
}
(reinterpret_cast<T *>(index[i]))->~T();
delete [] data;
}
+ void id(int id)
+ {
+ _id = id;
+ }
+
+ int id()
+ {
+ return _id;
+ }
+
void
advance()
{
void
advance()
{
@@
-166,10
+182,10
@@
class TimeBuffer
base = 0;
int ptr = base + future;
base = 0;
int ptr = base + future;
- if (ptr >= size)
+ if (ptr >=
(int)
size)
ptr -= size;
(reinterpret_cast<T *>(index[ptr]))->~T();
ptr -= size;
(reinterpret_cast<T *>(index[ptr]))->~T();
- memset(index[ptr], 0, sizeof(T));
+
std::
memset(index[ptr], 0, sizeof(T));
new (index[ptr]) T;
}
new (index[ptr]) T;
}
@@
-179,7
+195,7
@@
class TimeBuffer
valid(idx);
int vector_index = idx + base;
valid(idx);
int vector_index = idx + base;
- if (vector_index >= size) {
+ if (vector_index >=
(int)
size) {
vector_index -= size;
} else if (vector_index < 0) {
vector_index += size;
vector_index -= size;
} else if (vector_index < 0) {
vector_index += size;
@@
-194,7
+210,7
@@
class TimeBuffer
valid(idx);
int vector_index = idx + base;
valid(idx);
int vector_index = idx + base;
- if (vector_index >= size) {
+ if (vector_index >=
(int)
size) {
vector_index -= size;
} else if (vector_index < 0) {
vector_index += size;
vector_index -= size;
} else if (vector_index < 0) {
vector_index += size;
@@
-214,6
+230,11
@@
class TimeBuffer
{
return wire(this, 0);
}
{
return wire(this, 0);
}
+
+ unsigned getSize()
+ {
+ return size;
+ }
};
#endif // __BASE_TIMEBUF_HH__
};
#endif // __BASE_TIMEBUF_HH__