fix bug 159
authorMathieu Lacage <mathieu.lacage@sophia.inria.fr>
Fri, 04 Apr 2008 19:02:03 +0200
changeset 2877 1e8a42e5d4c1
parent 2876 ab1e9244ab41
child 2878 580a733e49d6
fix bug 159
src/common/packet-metadata.cc
src/common/packet-metadata.h
utils/bench-packets.cc
--- a/src/common/packet-metadata.cc	Fri Apr 04 07:28:27 2008 +0200
+++ b/src/common/packet-metadata.cc	Fri Apr 04 19:02:03 2008 +0200
@@ -36,7 +36,6 @@
 uint32_t PacketMetadata::m_maxSize = 0;
 uint16_t PacketMetadata::m_chunkUid = 0;
 PacketMetadata::DataFreeList PacketMetadata::m_freeList;
-bool g_optOne = false;
 
 PacketMetadata::DataFreeList::~DataFreeList ()
 {
@@ -60,12 +59,6 @@
   m_enable = true;
 }
 
-void 
-PacketMetadata::SetOptOne (bool optOne)
-{
-  g_optOne = optOne;
-}
-
 void
 PacketMetadata::ReserveCopy (uint32_t size)
 {
@@ -186,27 +179,6 @@
   buffer[1] = value;
 }
 bool
-PacketMetadata::TryToAppendFast (uint32_t value, uint8_t **pBuffer, uint8_t *end)
-{
-  uint8_t *start = *pBuffer;
-  if (value < 0x80 && start < end)
-    {
-      start[0] = value;
-      *pBuffer = start + 1;
-      return true;
-    }
-  if (value < 0x4000 && start + 1 < end)
-    {
-      uint8_t byte = value & (~0x80);
-      start[0] = 0x80 | byte;
-      value >>= 7;
-      start[1] = value;
-      *pBuffer = start + 2;
-      return true;
-    }
-  return false;
-}
-bool
 PacketMetadata::TryToAppend16 (uint16_t value,  uint8_t **pBuffer, uint8_t *end)
 {
   uint8_t *start = *pBuffer;
@@ -423,65 +395,32 @@
 {
   NS_ASSERT (m_data != 0);
   NS_ASSERT (m_used != item->prev && m_used != item->next);
-  if (g_optOne)
-    {
-      uint32_t typeUidSize = GetUleb128Size (item->typeUid);
-      uint32_t sizeSize = GetUleb128Size (item->size);
-      uint32_t n = typeUidSize + sizeSize + 2 + 2 + 2;
-    restart:
-      if (m_used + n <= m_data->m_size &&
-      (m_head == 0xffff ||
-       m_data->m_count == 1 ||
-       m_used == m_data->m_dirtyEnd))
-        {
-          uint8_t *buffer = &m_data->m_data[m_used];
-          Append16 (item->next, buffer);
-          buffer += 2;
-          Append16 (item->prev, buffer);
-          buffer += 2;
-          AppendValue (item->typeUid, buffer);
-          buffer += typeUidSize;
-          AppendValue (item->size, buffer);
-          buffer += sizeSize;
-          Append16 (item->chunkUid, buffer);
-        }
-      else
-        {
-          ReserveCopy (n);
-          goto restart;
-        }
-      return n;
-    }
- append:
-  uint8_t *start = &m_data->m_data[m_used];
-  uint8_t *end = &m_data->m_data[m_data->m_size];
-  if (end - start >= 8 &&
+  uint32_t typeUidSize = GetUleb128Size (item->typeUid);
+  uint32_t sizeSize = GetUleb128Size (item->size);
+  uint32_t n = typeUidSize + sizeSize + 2 + 2 + 2;
+ restart:
+  if (m_used + n <= m_data->m_size &&
       (m_head == 0xffff ||
        m_data->m_count == 1 ||
        m_used == m_data->m_dirtyEnd))
     {
-      uint8_t *buffer = start;
-
+      uint8_t *buffer = &m_data->m_data[m_used];
       Append16 (item->next, buffer);
       buffer += 2;
       Append16 (item->prev, buffer);
       buffer += 2;
-      if (TryToAppendFast (item->typeUid, &buffer, end) &&
-          TryToAppendFast (item->size, &buffer, end) &&
-          TryToAppend16 (item->chunkUid, &buffer, end))
-        {
-          uintptr_t written = buffer - start;
-          NS_ASSERT (written <= 0xffff);
-          NS_ASSERT (written >= 8);
-          return written;
-        }
+      AppendValue (item->typeUid, buffer);
+      buffer += typeUidSize;
+      AppendValue (item->size, buffer);
+      buffer += sizeSize;
+      Append16 (item->chunkUid, buffer);
     }
-  uint32_t n = GetUleb128Size (item->typeUid);
-  n += GetUleb128Size (item->size);
-  n += 2;
-  n += 2 + 2;
-  Reserve (n);
-  goto append;
+  else
+    {
+      ReserveCopy (n);
+      goto restart;
+    }
+  return n;
 }
 
 uint16_t
--- a/src/common/packet-metadata.h	Fri Apr 04 07:28:27 2008 +0200
+++ b/src/common/packet-metadata.h	Fri Apr 04 19:02:03 2008 +0200
@@ -124,7 +124,6 @@
   };
 
   static void Enable (void);
-  static void SetOptOne (bool optOne);
 
   inline PacketMetadata (uint32_t uid, uint32_t size);
   inline PacketMetadata (PacketMetadata const &o);
@@ -254,7 +253,6 @@
   uint32_t ReadUleb128 (const uint8_t **pBuffer) const;
   inline void Append16 (uint16_t value, uint8_t *buffer);
   inline bool TryToAppend (uint32_t value, uint8_t **pBuffer, uint8_t *end);
-  inline bool TryToAppendFast (uint32_t value, uint8_t **pBuffer, uint8_t *end);
   inline bool TryToAppend32 (uint32_t value, uint8_t **pBuffer, uint8_t *end);
   inline bool TryToAppend16 (uint16_t value, uint8_t **pBuffer, uint8_t *end);
   void AppendValue (uint32_t value, uint8_t *buffer);
--- a/utils/bench-packets.cc	Fri Apr 04 07:28:27 2008 +0200
+++ b/utils/bench-packets.cc	Fri Apr 04 19:02:03 2008 +0200
@@ -224,14 +224,9 @@
   runBench (&benchPtrC, n, "c");
 
   //runBench (&benchPrint, n, "print");
-  PacketMetadata::SetOptOne (false);
   runBench (&benchPtrA, n, "meta-a");
   runBench (&benchPtrB, n, "meta-b");
   runBench (&benchPtrC, n, "meta-c");
-  PacketMetadata::SetOptOne (true);
-  runBench (&benchPtrA, n, "meta-a-opt");
-  runBench (&benchPtrB, n, "meta-b-opt");
-  runBench (&benchPtrC, n, "meta-c-opt");
 
 
   return 0;