Eliminate unnecessary HpackEntry copies for efficiency.

I crafted this CL by deleting the HpackEntry copy constructor and copy
assignment operator, then hammering the codebase until everything compiled, and
finally restoring the copy constructor and copy assignment operator and
reverting the unnecessary or ugly changes.

PiperOrigin-RevId: 363455100
Change-Id: I818fd70c18fd241093ccd14a83c4dd1424335168
diff --git a/quic/core/qpack/qpack_static_table_test.cc b/quic/core/qpack/qpack_static_table_test.cc
index 734d253..7c2818d 100644
--- a/quic/core/qpack/qpack_static_table_test.cc
+++ b/quic/core/qpack/qpack_static_table_test.cc
@@ -25,13 +25,13 @@
                    QpackStaticTableVector().size());
   EXPECT_TRUE(table.IsInitialized());
 
-  auto static_entries = table.GetStaticEntries();
+  const auto& static_entries = table.GetStaticEntries();
   EXPECT_EQ(QpackStaticTableVector().size(), static_entries.size());
 
-  auto static_index = table.GetStaticIndex();
+  const auto& static_index = table.GetStaticIndex();
   EXPECT_EQ(QpackStaticTableVector().size(), static_index.size());
 
-  auto static_name_index = table.GetStaticNameIndex();
+  const auto& static_name_index = table.GetStaticNameIndex();
   std::set<absl::string_view> names;
   for (auto entry : static_index) {
     names.insert(entry->name());
diff --git a/spdy/core/hpack/hpack_header_table.cc b/spdy/core/hpack/hpack_header_table.cc
index e8e469b..9e36e2f 100644
--- a/spdy/core/hpack/hpack_header_table.cc
+++ b/spdy/core/hpack/hpack_header_table.cc
@@ -174,9 +174,9 @@
     QUICHE_DCHECK_EQ(0u, size_);
     return nullptr;
   }
-  dynamic_entries_.push_front(HpackEntry(name, value,
-                                         false,  // is_static
-                                         total_insertions_));
+  dynamic_entries_.emplace_front(name, value,
+                                 false,  // is_static
+                                 total_insertions_);
   HpackEntry* new_entry = &dynamic_entries_.front();
   auto index_result = dynamic_index_.insert(new_entry);
   if (!index_result.second) {
diff --git a/spdy/core/hpack/hpack_header_table_test.cc b/spdy/core/hpack/hpack_header_table_test.cc
index 31d64b7..1b0f12b 100644
--- a/spdy/core/hpack/hpack_header_table_test.cc
+++ b/spdy/core/hpack/hpack_header_table_test.cc
@@ -56,8 +56,8 @@
   void Evict(size_t count) { return table_->Evict(count); }
 
   void AddDynamicEntry(absl::string_view name, absl::string_view value) {
-    table_->dynamic_entries_.push_back(
-        HpackEntry(name, value, false, table_->total_insertions_++));
+    table_->dynamic_entries_.emplace_back(name, value, false,
+                                          table_->total_insertions_++);
   }
 
  private:
diff --git a/spdy/core/hpack/hpack_static_table.cc b/spdy/core/hpack/hpack_static_table.cc
index 809bc82..d977db1 100644
--- a/spdy/core/hpack/hpack_static_table.cc
+++ b/spdy/core/hpack/hpack_static_table.cc
@@ -23,11 +23,10 @@
   int total_insertions = 0;
   for (const HpackStaticEntry* it = static_entry_table;
        it != static_entry_table + static_entry_count; ++it) {
-    static_entries_.push_back(
-        HpackEntry(absl::string_view(it->name, it->name_len),
-                   absl::string_view(it->value, it->value_len),
-                   true,  // is_static
-                   total_insertions));
+    static_entries_.emplace_back(absl::string_view(it->name, it->name_len),
+                                 absl::string_view(it->value, it->value_len),
+                                 true,  // is_static
+                                 total_insertions);
     HpackEntry* entry = &static_entries_.back();
     QUICHE_CHECK(static_index_.insert(entry).second);
     // Multiple static entries may have the same name, so inserts may fail.
diff --git a/spdy/core/hpack/hpack_static_table_test.cc b/spdy/core/hpack/hpack_static_table_test.cc
index 152ad82..4e79d8f 100644
--- a/spdy/core/hpack/hpack_static_table_test.cc
+++ b/spdy/core/hpack/hpack_static_table_test.cc
@@ -31,7 +31,8 @@
                     HpackStaticTableVector().size());
   EXPECT_TRUE(table_.IsInitialized());
 
-  HpackHeaderTable::EntryTable static_entries = table_.GetStaticEntries();
+  const HpackHeaderTable::EntryTable& static_entries =
+      table_.GetStaticEntries();
   EXPECT_EQ(kStaticTableSize, static_entries.size());
 
   HpackHeaderTable::UnorderedEntrySet static_index = table_.GetStaticIndex();