s390x/flic: cache flic in s390_get_flic
authorFei Li <sherrylf@linux.vnet.ibm.com>
Fri, 17 Mar 2017 09:28:30 +0000 (10:28 +0100)
committerCornelia Huck <cornelia.huck@de.ibm.com>
Fri, 21 Apr 2017 07:32:09 +0000 (09:32 +0200)
s390_get_flic() is called many times to obtain the flic. This wastes a
lot of time as it calls object_resolve_path() every time. Let's cache
S390FLICState by defining it as static.

Signed-off-by: Fei Li <sherrylf@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
hw/intc/s390_flic.c

index bef4caf980cb33dd8c950f9a8e77359b2f578c2d..711c11454fdbd7f554906810c2dacd859a9295ef 100644 (file)
 
 S390FLICState *s390_get_flic(void)
 {
-    S390FLICState *fs;
+    static S390FLICState *fs;
 
-    fs = S390_FLIC_COMMON(object_resolve_path(TYPE_KVM_S390_FLIC, NULL));
     if (!fs) {
-        fs = S390_FLIC_COMMON(object_resolve_path(TYPE_QEMU_S390_FLIC, NULL));
+        fs = S390_FLIC_COMMON(object_resolve_path(TYPE_KVM_S390_FLIC, NULL));
+        if (!fs) {
+            fs = S390_FLIC_COMMON(object_resolve_path(TYPE_QEMU_S390_FLIC,
+                                                      NULL));
+        }
     }
     return fs;
 }