Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 63627157 authored by Vic Yang's avatar Vic Yang
Browse files

binder: Use StaticString16 for interface descriptors

Binder interface descriptors is one of the biggest sources of static
constructors.  Use the newly implemented StaticString16 to avoid
runtime construction.

Bug: 138856262
Test: Build and boot cuttlefish.
Test: Check interface descriptors now reside in .data sections.
Test: Measure the memory usage of libraries affected by this change,
      including .data, .data.rel.ro, and .bss sections, on cuttlefish.
      Overall usage decreases by 112 KB.
Change-Id: I0419aa9378570936f15a97a9ab814b035dee4c06
parent 9759952a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -88,8 +88,12 @@ private: \
public:                                                                 \


#define __IINTF_CONCAT(x, y) (x ## y)
#define IMPLEMENT_META_INTERFACE(INTERFACE, NAME)                       \
    const ::android::String16 I##INTERFACE::descriptor(NAME);           \
    const ::android::StaticString16                                     \
        I##INTERFACE##_descriptor_static_str16(__IINTF_CONCAT(u, NAME));\
    const ::android::String16 I##INTERFACE::descriptor(                 \
        I##INTERFACE##_descriptor_static_str16);                        \
    const ::android::String16&                                          \
            I##INTERFACE::getInterfaceDescriptor() const {              \
        return I##INTERFACE::descriptor;                                \