Use hash_map::Entry to save a map lookup

This commit is contained in:
Tamir Duberstein 2020-04-14 09:48:51 -04:00 committed by Tamir Duberstein
parent 33a74a4f4e
commit fac1e654d2
No known key found for this signature in database
GPG key ID: 32E33EC15E1FEF3C

View file

@ -2623,11 +2623,10 @@ where
} }
fn handle_register_serviceworker(&mut self, scope_things: ScopeThings, scope: ServoUrl) { fn handle_register_serviceworker(&mut self, scope_things: ScopeThings, scope: ServoUrl) {
let origin = scope.origin(); // This match is equivalent to Entry.or_insert_with but allows for early return.
let sw_manager = match self.sw_managers.entry(scope.origin()) {
if let Some(mgr) = self.sw_managers.get(&origin) { Entry::Occupied(entry) => entry.into_mut(),
let _ = mgr.send(ServiceWorkerMsg::RegisterServiceWorker(scope_things, scope)); Entry::Vacant(entry) => {
} else {
let (own_sender, receiver) = ipc::channel().expect("Failed to create IPC channel!"); let (own_sender, receiver) = ipc::channel().expect("Failed to create IPC channel!");
let sw_senders = SWManagerSenders { let sw_senders = SWManagerSenders {
@ -2636,7 +2635,7 @@ where
own_sender: own_sender.clone(), own_sender: own_sender.clone(),
receiver, receiver,
}; };
let content = ServiceWorkerUnprivilegedContent::new(sw_senders, origin.clone()); let content = ServiceWorkerUnprivilegedContent::new(sw_senders, scope.origin());
if opts::multiprocess() { if opts::multiprocess() {
if content.spawn_multiprocess().is_err() { if content.spawn_multiprocess().is_err() {
@ -2645,10 +2644,10 @@ where
} else { } else {
content.start::<SWF>(); content.start::<SWF>();
} }
entry.insert(own_sender)
let _ = own_sender.send(ServiceWorkerMsg::RegisterServiceWorker(scope_things, scope)); },
self.sw_managers.insert(origin, own_sender); };
} let _ = sw_manager.send(ServiceWorkerMsg::RegisterServiceWorker(scope_things, scope));
} }
fn handle_broadcast_storage_event( fn handle_broadcast_storage_event(