Gabe Black has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/50339 )

Change subject: sim: Make the page shift a member of the MemPool class.
......................................................................

sim: Make the page shift a member of the MemPool class.

Pass it in through the constructor, rather than have the MemPool call
into the System object every time it needs the page shift. This is
simpler, more efficient, and removes a dependency between the MemPool
class and the System class.

Change-Id: I059bcb0db249251b32bff1beba3eadfe306d9081
---
M src/sim/mem_pool.cc
M src/sim/mem_pool.hh
M src/sim/system.cc
3 files changed, 14 insertions(+), 13 deletions(-)



diff --git a/src/sim/mem_pool.cc b/src/sim/mem_pool.cc
index 2614ad5..f568e28 100644
--- a/src/sim/mem_pool.cc
+++ b/src/sim/mem_pool.cc
@@ -33,14 +33,14 @@

 #include "sim/mem_pool.hh"

-#include "sim/system.hh"
+#include "base/logging.hh"

 namespace gem5
 {

-MemPool::MemPool(System *system, Addr ptr, Addr limit)
-        : sys(system), freePageNum(ptr >> sys->getPageShift()),
-        _totalPages(limit >> sys->getPageShift())
+MemPool::MemPool(Addr page_shift, Addr ptr, Addr limit)
+        : pageShift(page_shift), freePageNum(ptr >> page_shift),
+        _totalPages(limit >> page_shift)
 {
 }

@@ -59,7 +59,7 @@
 Addr
 MemPool::freePageAddr() const
 {
-    return freePageNum << sys->getPageShift();
+    return freePageNum << pageShift;
 }

 Counter
@@ -83,19 +83,19 @@
 Addr
 MemPool::allocatedBytes() const
 {
-    return allocatedPages() << sys->getPageShift();
+    return allocatedPages() << pageShift;
 }

 Addr
 MemPool::freeBytes() const
 {
-    return freePages() << sys->getPageShift();
+    return freePages() << pageShift;
 }

 Addr
 MemPool::totalBytes() const
 {
-    return totalPages() << sys->getPageShift();
+    return totalPages() << pageShift;
 }

 Addr
diff --git a/src/sim/mem_pool.hh b/src/sim/mem_pool.hh
index e8bd439..49523f4 100644
--- a/src/sim/mem_pool.hh
+++ b/src/sim/mem_pool.hh
@@ -45,7 +45,7 @@
 class MemPool
 {
   private:
-    System *sys;
+    Addr pageShift;

     /** Page number to free memory. */
     Counter freePageNum;
@@ -54,7 +54,7 @@
     Counter _totalPages;

   public:
-    MemPool(System *system, Addr ptr, Addr limit);
+    MemPool(Addr page_shift, Addr ptr, Addr limit);

     Counter freePage() const;
     void setFreePage(Counter value);
diff --git a/src/sim/system.cc b/src/sim/system.cc
index 299ba66..3895276 100644
--- a/src/sim/system.cc
+++ b/src/sim/system.cc
@@ -236,9 +236,10 @@
             if (_m5opRange.valid()) {
                 // Make sure the m5op range is not included.
                 for (const auto &range: mem.exclude({_m5opRange}))
- memPools.emplace_back(this, range.start(), range.end());
+                    memPools.emplace_back(getPageShift(),
+                            range.start(), range.end());
             } else {
-                memPools.emplace_back(this, mem.start(), mem.end());
+ memPools.emplace_back(getPageShift(), mem.start(), mem.end());
             }
         }

@@ -468,7 +469,7 @@

     assert(ptrs.size() == limits.size());
     for (size_t i = 0; i < ptrs.size(); i++)
-        memPools.emplace_back(this, ptrs[i], limits[i]);
+        memPools.emplace_back(getPageShift(), ptrs[i], limits[i]);

     // also unserialize the memories in the system
     physmem.unserializeSection(cp, "physmem");

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/50339
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: I059bcb0db249251b32bff1beba3eadfe306d9081
Gerrit-Change-Number: 50339
Gerrit-PatchSet: 1
Gerrit-Owner: Gabe Black <gabe.bl...@gmail.com>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- gem5-dev@gem5.org
To unsubscribe send an email to gem5-dev-le...@gem5.org
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to