Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(503)

Unified Diff: net/quic/chromium/quic_stream_factory.cc

Issue 2797633003: Reduce number of redundant map lookups in QuicStreamFactory::OnJobComplete (Closed)
Patch Set: Address comment Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/chromium/quic_stream_factory.cc
diff --git a/net/quic/chromium/quic_stream_factory.cc b/net/quic/chromium/quic_stream_factory.cc
index 4bdc8bb25072909f2bd83ca0e716200a35388430..9fc9ea18a2c3835f2c3af8fba25fbf7405d8f421 100644
--- a/net/quic/chromium/quic_stream_factory.cc
+++ b/net/quic/chromium/quic_stream_factory.cc
@@ -1148,15 +1148,18 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) {
}
}
+ ServerIDRequestsMap::iterator requests_iter =
+ job_requests_map_.find(server_id);
+ DCHECK(requests_iter != job_requests_map_.end());
if (rv == OK) {
if (!always_require_handshake_confirmation_)
set_require_confirmation(false);
- if (!job_requests_map_[server_id].empty()) {
+ if (!requests_iter->second.empty()) {
SessionMap::iterator session_it = active_sessions_.find(server_id);
DCHECK(session_it != active_sessions_.end());
QuicChromiumClientSession* session = session_it->second;
- for (QuicStreamRequest* request : job_requests_map_[server_id]) {
+ for (QuicStreamRequest* request : requests_iter->second) {
DCHECK(request->server_id() == server_id);
// Do not notify |request| yet.
request->SetSession(session);
@@ -1164,10 +1167,9 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) {
}
}
- while (!job_requests_map_[server_id].empty()) {
- RequestSet::iterator it = job_requests_map_[server_id].begin();
- QuicStreamRequest* request = *it;
- job_requests_map_[server_id].erase(it);
+ // It's okay not to erase |request| from |requests_iter->second| because the
+ // entire RequestSet will be erased from |job_requests_map_|.
+ for (auto* request : requests_iter->second) {
// Even though we're invoking callbacks here, we don't need to worry
// about |this| being deleted, because the factory is owned by the
// profile which can not be deleted via callbacks.
@@ -1181,7 +1183,7 @@ void QuicStreamFactory::OnJobComplete(Job* job, int rv) {
active_jobs_[server_id].clear();
active_jobs_.erase(server_id);
- job_requests_map_.erase(server_id);
+ job_requests_map_.erase(requests_iter);
}
void QuicStreamFactory::OnCertVerifyJobComplete(CertVerifierJob* job, int rv) {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698