chiark / gitweb /
dbus: more efficient implementation of properties
authorMichal Schmidt <mschmidt@redhat.com>
Sun, 15 Jan 2012 23:23:59 +0000 (00:23 +0100)
committerMichal Schmidt <mschmidt@redhat.com>
Mon, 16 Jan 2012 12:34:42 +0000 (13:34 +0100)
commitd200735e13c52dcfe36c0e066f9f6c2fbfb85a9c
treec8ba5a460ecd34fe1f60a09da6c09c43648a2f6b
parent595ed347a87e69893c5e72168fc2e94a7cb09e73
dbus: more efficient implementation of properties

The way the various properties[] arrays are initialized is inefficient:
 - only the .data members change at runtime, yet the whole arrays of
   properties with all the fields are constructed on the stack one by
   one by the code.
 - there's duplication, eg. the properties of "org.freedesktop.systemd1.Unit"
   are repeated in several unit types.

Fix it by moving the information about properties into static const
sections. Instead of storing the .data directly in the property, store
a constant offset from a run-time base.
The small arrays of struct BusBoundProperties bind together the constant
information with the right runtime information (the base pointer).

On my system the code shrinks by 60 KB, data increases by 10 KB.
26 files changed:
configure.ac
src/dbus-automount.c
src/dbus-common.c
src/dbus-common.h
src/dbus-device.c
src/dbus-execute.c
src/dbus-execute.h
src/dbus-job.c
src/dbus-manager.c
src/dbus-mount.c
src/dbus-path.c
src/dbus-service.c
src/dbus-snapshot.c
src/dbus-socket.c
src/dbus-swap.c
src/dbus-target.c
src/dbus-timer.c
src/dbus-unit.c
src/dbus-unit.h
src/hostname/hostnamed.c
src/locale/localed.c
src/login/logind-dbus.c
src/login/logind-seat-dbus.c
src/login/logind-session-dbus.c
src/login/logind-user-dbus.c
src/timedate/timedated.c