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,