X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fbase%2Ftimebuf.hh;h=b6f709d719472b92458ac4a63c2bd7b59bdd50d4;hb=4ab68fc999458617dbcfc91131404a1996e75482;hp=1d0de82786473f31be15318c5c5fb82aa5fc5617;hpb=27d60c27fa4cdbe471463fbf8224950d36456592;p=gem5.git diff --git a/src/base/timebuf.hh b/src/base/timebuf.hh index 1d0de8278..b6f709d71 100644 --- a/src/base/timebuf.hh +++ b/src/base/timebuf.hh @@ -33,6 +33,7 @@ #define __BASE_TIMEBUF_HH__ #include +#include #include template @@ -41,11 +42,12 @@ class TimeBuffer protected: int past; int future; - int size; + unsigned size; + int _id; char *data; std::vector index; - int base; + unsigned base; void valid(int idx) { @@ -136,17 +138,19 @@ class TimeBuffer 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; - for (int i = 0; i < size; i++) { + for (unsigned i = 0; i < size; i++) { index[i] = ptr; - memset(ptr, 0, sizeof(T)); + std::memset(ptr, 0, sizeof(T)); new (ptr) T; ptr += sizeof(T); } + + _id = -1; } TimeBuffer() @@ -156,11 +160,21 @@ class TimeBuffer ~TimeBuffer() { - for (int i = 0; i < size; ++i) + for (unsigned i = 0; i < size; ++i) (reinterpret_cast(index[i]))->~T(); delete [] data; } + void id(int id) + { + _id = id; + } + + int id() + { + return _id; + } + void advance() { @@ -168,10 +182,10 @@ class TimeBuffer base = 0; int ptr = base + future; - if (ptr >= size) + if (ptr >= (int)size) ptr -= size; (reinterpret_cast(index[ptr]))->~T(); - memset(index[ptr], 0, sizeof(T)); + std::memset(index[ptr], 0, sizeof(T)); new (index[ptr]) T; } @@ -181,7 +195,7 @@ class TimeBuffer 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; @@ -196,7 +210,7 @@ class TimeBuffer 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; @@ -217,7 +231,7 @@ class TimeBuffer return wire(this, 0); } - int getSize() + unsigned getSize() { return size; }