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 1d0de82786473f31be15318c5c5fb82aa5fc5617..b6f709d719472b92458ac4a63c2bd7b59bdd50d4 100644
(file)
--- a/
src/base/timebuf.hh
+++ b/
src/base/timebuf.hh
@@
-33,6
+33,7
@@
#define __BASE_TIMEBUF_HH__
#include <cassert>
#define __BASE_TIMEBUF_HH__
#include <cassert>
+#include <cstring>
#include <vector>
template <class T>
#include <vector>
template <class T>
@@
-41,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)
{
@@
-136,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()
@@
-156,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()
{
@@
-168,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;
}
@@
-181,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;
@@
-196,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;
@@
-217,7
+231,7
@@
class TimeBuffer
return wire(this, 0);
}
return wire(this, 0);
}
-
int
getSize()
+
unsigned
getSize()
{
return size;
}
{
return size;
}