Avoid big statics.

Allocating big statics when needed.

Bug: 150319735
Test: boot/works
Change-Id: I5dde4f473b38be8e8d99f034227abaedb3e50634
(cherry picked from commit c16ff2b73bca301ba47823ca9e4cbc888388ca82)
Merged-In: I5dde4f473b38be8e8d99f034227abaedb3e50634
diff --git a/KernelConfigParser.cpp b/KernelConfigParser.cpp
index 5713f22..c851716 100644
--- a/KernelConfigParser.cpp
+++ b/KernelConfigParser.cpp
@@ -21,10 +21,6 @@
 #define KEY "(CONFIG[\\w_]+)"
 #define COMMENT "(?:#.*)"
 
-static const std::regex sKeyValuePattern("^\\s*" KEY "\\s*=\\s*([^#]+)" COMMENT "?$");
-static const std::regex sNotSetPattern("^\\s*#\\s*" KEY " is not set\\s*$");
-static const std::regex sCommentPattern("^\\s*" COMMENT "$");
-
 namespace android {
 namespace vintf {
 
@@ -56,11 +52,14 @@
 }
 
 status_t KernelConfigParser::processRemaining() {
-
     if (mRemaining.empty()) {
         return OK;
     }
 
+    static const std::regex sKeyValuePattern("^\\s*" KEY "\\s*=\\s*([^#]+)" COMMENT "?$");
+    static const std::regex sNotSetPattern("^\\s*#\\s*" KEY " is not set\\s*$");
+    static const std::regex sCommentPattern("^\\s*" COMMENT "$");
+
     std::smatch match;
 
     if (mRelaxedFormat) {
diff --git a/VintfObject.cpp b/VintfObject.cpp
index c13dc64..913f3ca 100644
--- a/VintfObject.cpp
+++ b/VintfObject.cpp
@@ -82,8 +82,8 @@
     return propertyFetcher;
 }
 
-details::LockedSharedPtr<VintfObject> VintfObject::sInstance{};
 std::shared_ptr<VintfObject> VintfObject::GetInstance() {
+    static details::LockedSharedPtr<VintfObject> sInstance{};
     std::unique_lock<std::mutex> lock(sInstance.mutex);
     if (sInstance.object == nullptr) {
         sInstance.object = std::shared_ptr<VintfObject>(VintfObject::Builder().build().release());
diff --git a/include/vintf/VintfObject.h b/include/vintf/VintfObject.h
index 3194aec..382ad91 100644
--- a/include/vintf/VintfObject.h
+++ b/include/vintf/VintfObject.h
@@ -291,8 +291,6 @@
     static int32_t CheckDeprecation(std::string* error = nullptr);
 
    private:
-    static details::LockedSharedPtr<VintfObject> sInstance;
-
     status_t getCombinedFrameworkMatrix(const std::shared_ptr<const HalManifest>& deviceManifest,
                                         CompatibilityMatrix* out, std::string* error = nullptr);
     status_t getAllFrameworkMatrixLevels(std::vector<Named<CompatibilityMatrix>>* out,