mem-garnet: Use static allocation in VirtualChannel
authorDaniel R. Carvalho <odanrc@yahoo.com.br>
Thu, 9 Jan 2020 21:33:32 +0000 (22:33 +0100)
committerDaniel Carvalho <odanrc@yahoo.com.br>
Mon, 16 Mar 2020 22:23:16 +0000 (22:23 +0000)
The input buffer does not need to be dynamically allocated.

Change-Id: Ice64f40d2a7e16af325ddb6803e34b3eed2e99db
Signed-off-by: Daniel R. Carvalho <odanrc@yahoo.com.br>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/24253
Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com>
Maintainer: Nikos Nikoleris <nikos.nikoleris@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/mem/ruby/network/garnet2.0/VirtualChannel.cc
src/mem/ruby/network/garnet2.0/VirtualChannel.hh

index 2deee32fd416ea51f5aa864bfafb9abced2d8e48..3b077d4f35fcbd453f7699a6f8da939051bbef2a 100644 (file)
@@ -1,6 +1,7 @@
 /*
- * Copyright (c) 2008 Princeton University
+ * Copyright (c) 2020 Inria
  * Copyright (c) 2016 Georgia Institute of Technology
+ * Copyright (c) 2008 Princeton University
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #include "mem/ruby/network/garnet2.0/VirtualChannel.hh"
 
 VirtualChannel::VirtualChannel(int id)
-    : m_enqueue_time(INFINITE_)
-{
-    m_id = id;
-    m_input_buffer = new flitBuffer();
-    m_vc_state.first = IDLE_;
-    m_vc_state.second = Cycles(0);
-    m_output_vc = -1;
-    m_output_port = -1;
-}
-
-VirtualChannel::~VirtualChannel()
+  : m_id(id), inputBuffer(), m_vc_state(IDLE_, Cycles(0)), m_output_port(-1),
+    m_enqueue_time(INFINITE_), m_output_vc(-1)
 {
-    delete m_input_buffer;
 }
 
 void
@@ -67,9 +58,9 @@ VirtualChannel::set_active(Cycles curTime)
 bool
 VirtualChannel::need_stage(flit_stage stage, Cycles time)
 {
-    if (m_input_buffer->isReady(time)) {
+    if (inputBuffer.isReady(time)) {
         assert(m_vc_state.first == ACTIVE_ && m_vc_state.second <= time);
-        flit *t_flit = m_input_buffer->peekTopFlit();
+        flit *t_flit = inputBuffer.peekTopFlit();
         return(t_flit->is_stage(stage, time));
     }
     return false;
@@ -78,5 +69,5 @@ VirtualChannel::need_stage(flit_stage stage, Cycles time)
 uint32_t
 VirtualChannel::functionalWrite(Packet *pkt)
 {
-    return m_input_buffer->functionalWrite(pkt);
+    return inputBuffer.functionalWrite(pkt);
 }
index 1deac6195c4f159532e99c8ec678ffc7a3cde929..52963c8ac54c22fd03a518b6ffe1506678b3f8d0 100644 (file)
@@ -1,6 +1,7 @@
 /*
- * Copyright (c) 2008 Princeton University
+ * Copyright (c) 2020 Inria
  * Copyright (c) 2016 Georgia Institute of Technology
+ * Copyright (c) 2008 Princeton University
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -40,7 +41,7 @@ class VirtualChannel
 {
   public:
     VirtualChannel(int id);
-    ~VirtualChannel();
+    ~VirtualChannel() = default;
 
     bool need_stage(flit_stage stage, Cycles time);
     void set_idle(Cycles curTime);
@@ -54,15 +55,16 @@ class VirtualChannel
     inline void set_enqueue_time(Cycles time) { m_enqueue_time = time; }
     inline VC_state_type get_state()        { return m_vc_state.first; }
 
-    inline bool isReady(Cycles curTime)
+    inline bool
+    isReady(Cycles curTime)
     {
-        return m_input_buffer->isReady(curTime);
+        return inputBuffer.isReady(curTime);
     }
 
     inline void
     insertFlit(flit *t_flit)
     {
-        m_input_buffer->insert(t_flit);
+        inputBuffer.insert(t_flit);
     }
 
     inline void
@@ -75,20 +77,20 @@ class VirtualChannel
     inline flit*
     peekTopFlit()
     {
-        return m_input_buffer->peekTopFlit();
+        return inputBuffer.peekTopFlit();
     }
 
     inline flit*
     getTopFlit()
     {
-        return m_input_buffer->getTopFlit();
+        return inputBuffer.getTopFlit();
     }
 
     uint32_t functionalWrite(Packet *pkt);
 
   private:
     int m_id;
-    flitBuffer *m_input_buffer;
+    flitBuffer inputBuffer;
     std::pair<VC_state_type, Cycles> m_vc_state;
     int m_output_port;
     Cycles m_enqueue_time;