Currently, whenever a new program starts, libc initializes two data
structures related to properties from the raw property_context files.
There are two problems here,
1) This takes roughly 1.2ms on a trivial program to generate contents
that could otherwise be cached.
2) One of the data structures is a descending list of prefixes, each
of which needs to be checked, whereas a trie would be more
efficient.
This change introduces two libraries,
1) libpropertycontextserializer meant to be used by property_service
to create a serialized trie containing all of the property
contexts.
2) libpropertycontextparser meant to be used by libc's property
functions to parse this serialized trie during property lookup.
This new trie also contains the ability to have exact matches instead
of prefix matches for properties, which was not possible before.
Bug: 36001741
Change-Id: I42324f04c4d995a0e055e9685d79f40393dfca51