commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[hurd] 14/23: libtrivfs: optimize the object lookup code


From: Samuel Thibault
Subject: [hurd] 14/23: libtrivfs: optimize the object lookup code
Date: Tue, 13 Oct 2015 00:09:55 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch upstream
in repository hurd.

commit 9fe7adc2907afdd2039a67d27328ba82a884561e
Author: Justus Winter <address@hidden>
Date:   Sun Sep 27 18:55:39 2015 +0200

    libtrivfs: optimize the object lookup code
    
    * libtrivfs/mig-decls.h: Remove the specialized cases, they really
    blow up these functions that are supposed to be inlined.  Also, look
    into the dynamically allocated vectors first, because this is the
    preferred way of using libtrivfs since 1997.
---
 libtrivfs/mig-decls.h | 136 +++++++++++++++++++-------------------------------
 1 file changed, 52 insertions(+), 84 deletions(-)

diff --git a/libtrivfs/mig-decls.h b/libtrivfs/mig-decls.h
index 13a9eb7..1909199 100644
--- a/libtrivfs/mig-decls.h
+++ b/libtrivfs/mig-decls.h
@@ -37,57 +37,41 @@ extern size_t trivfs_num_dynamic_port_buckets;
 static inline struct trivfs_protid * __attribute__ ((unused))
 trivfs_begin_using_protid (mach_port_t port)
 {
-  if (trivfs_protid_nportclasses + trivfs_num_dynamic_protid_port_classes > 1)
+  struct port_info *pi = ports_lookup_port (0, port, 0);
+
+  if (pi)
     {
-      struct port_info *pi = ports_lookup_port (0, port, 0);
-      int i;
-
-      if (pi)
-       {
-         for (i = 0; i < trivfs_protid_nportclasses; i++)
-           if (pi->class == trivfs_protid_portclasses[i])
-             return (struct trivfs_protid *) pi;
-         for (i = 0; i < trivfs_num_dynamic_protid_port_classes; i++)
-           if (pi->class == trivfs_dynamic_protid_port_classes[i])
-             return (struct trivfs_protid *) pi;
-         ports_port_deref (pi);
-       }
-
-      return 0;
+      size_t i;
+      for (i = 0; i < trivfs_num_dynamic_protid_port_classes; i++)
+       if (pi->class == trivfs_dynamic_protid_port_classes[i])
+         return (struct trivfs_protid *) pi;
+      for (i = 0; i < trivfs_protid_nportclasses; i++)
+       if (pi->class == trivfs_protid_portclasses[i])
+         return (struct trivfs_protid *) pi;
+      ports_port_deref (pi);
     }
-  else if (trivfs_protid_nportclasses == 1)
-    return ports_lookup_port (0, port, trivfs_protid_portclasses[0]);
-  else
-    return ports_lookup_port (0, port, trivfs_dynamic_protid_port_classes[0]);
+
+  return NULL;
 }
 
 static inline struct trivfs_protid * __attribute__ ((unused))
 trivfs_begin_using_protid_payload (unsigned long payload)
 {
-  if (trivfs_protid_nportclasses + trivfs_num_dynamic_protid_port_classes > 1)
+  struct port_info *pi = ports_lookup_payload (NULL, payload, NULL);
+
+  if (pi)
     {
-      struct port_info *pi = ports_lookup_payload (NULL, payload, NULL);
-      int i;
-
-      if (pi)
-       {
-         for (i = 0; i < trivfs_protid_nportclasses; i++)
-           if (pi->class == trivfs_protid_portclasses[i])
-             return (struct trivfs_protid *) pi;
-         for (i = 0; i < trivfs_num_dynamic_protid_port_classes; i++)
-           if (pi->class == trivfs_dynamic_protid_port_classes[i])
-             return (struct trivfs_protid *) pi;
-         ports_port_deref (pi);
-       }
-
-      return NULL;
+      size_t i;
+      for (i = 0; i < trivfs_num_dynamic_protid_port_classes; i++)
+       if (pi->class == trivfs_dynamic_protid_port_classes[i])
+         return (struct trivfs_protid *) pi;
+      for (i = 0; i < trivfs_protid_nportclasses; i++)
+       if (pi->class == trivfs_protid_portclasses[i])
+         return (struct trivfs_protid *) pi;
+      ports_port_deref (pi);
     }
-  else if (trivfs_protid_nportclasses == 1)
-    return ports_lookup_payload (NULL, payload,
-                                trivfs_protid_portclasses[0]);
-  else
-    return ports_lookup_payload (NULL, payload,
-                                trivfs_dynamic_protid_port_classes[0]);
+
+  return NULL;
 }
 
 static inline void __attribute__ ((unused))
@@ -100,57 +84,41 @@ trivfs_end_using_protid (struct trivfs_protid *cred)
 static inline struct trivfs_control * __attribute__ ((unused))
 trivfs_begin_using_control (mach_port_t port)
 {
-  if (trivfs_cntl_nportclasses + trivfs_num_dynamic_control_port_classes > 1)
+  struct port_info *pi = ports_lookup_port (0, port, 0);
+
+  if (pi)
     {
-      struct port_info *pi = ports_lookup_port (0, port, 0);
-      int i;
-
-      if (pi)
-       {
-         for (i = 0; i < trivfs_cntl_nportclasses; i++)
-           if (pi->class == trivfs_cntl_portclasses[i])
-             return (struct trivfs_control *) pi;
-         for (i = 0; i < trivfs_num_dynamic_control_port_classes; i++)
-           if (pi->class == trivfs_dynamic_control_port_classes[i])
-             return (struct trivfs_control *) pi;
-         ports_port_deref (pi);
-       }
-
-      return 0;
+      size_t i;
+      for (i = 0; i < trivfs_num_dynamic_control_port_classes; i++)
+       if (pi->class == trivfs_dynamic_control_port_classes[i])
+         return (struct trivfs_control *) pi;
+      for (i = 0; i < trivfs_cntl_nportclasses; i++)
+       if (pi->class == trivfs_cntl_portclasses[i])
+         return (struct trivfs_control *) pi;
+      ports_port_deref (pi);
     }
-  else if (trivfs_cntl_nportclasses == 1)
-    return ports_lookup_port (0, port, trivfs_cntl_portclasses[0]);
-  else
-    return ports_lookup_port (0, port, trivfs_dynamic_control_port_classes[0]);
+
+  return NULL;
 }
 
 static inline struct trivfs_control * __attribute__ ((unused))
 trivfs_begin_using_control_payload (unsigned long payload)
 {
-  if (trivfs_cntl_nportclasses + trivfs_num_dynamic_control_port_classes > 1)
+  struct port_info *pi = ports_lookup_payload (NULL, payload, NULL);
+
+  if (pi)
     {
-      struct port_info *pi = ports_lookup_payload (NULL, payload, NULL);
-      int i;
-
-      if (pi)
-       {
-         for (i = 0; i < trivfs_cntl_nportclasses; i++)
-           if (pi->class == trivfs_cntl_portclasses[i])
-             return (struct trivfs_control *) pi;
-         for (i = 0; i < trivfs_num_dynamic_control_port_classes; i++)
-           if (pi->class == trivfs_dynamic_control_port_classes[i])
-             return (struct trivfs_control *) pi;
-         ports_port_deref (pi);
-       }
-
-      return NULL;
+      size_t i;
+      for (i = 0; i < trivfs_num_dynamic_control_port_classes; i++)
+       if (pi->class == trivfs_dynamic_control_port_classes[i])
+         return (struct trivfs_control *) pi;
+      for (i = 0; i < trivfs_cntl_nportclasses; i++)
+       if (pi->class == trivfs_cntl_portclasses[i])
+         return (struct trivfs_control *) pi;
+      ports_port_deref (pi);
     }
-  else if (trivfs_cntl_nportclasses == 1)
-    return ports_lookup_payload (NULL, payload,
-                                trivfs_cntl_portclasses[0]);
-  else
-    return ports_lookup_payload (NULL, payload,
-                                trivfs_dynamic_control_port_classes[0]);
+
+  return NULL;
 }
 
 static inline void __attribute__ ((unused))

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/hurd.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]