diff options
author | Steven Moreland <smoreland@google.com> | 2018-03-08 21:44:42 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-03-08 21:44:42 +0000 |
commit | d6c3476582e25018248a37c6195bd80248faba10 (patch) | |
tree | d685a6cb531c69d01358ec32c35db4134925ef81 | |
parent | 2e9edab87735a767586de5f7bca7c3a61141401b (diff) | |
parent | 41a294981b2ddab9eac0eb1fd79871561af5501e (diff) | |
download | system_core-d6c3476582e25018248a37c6195bd80248faba10.tar.gz system_core-d6c3476582e25018248a37c6195bd80248faba10.tar.bz2 system_core-d6c3476582e25018248a37c6195bd80248faba10.zip |
Merge "libutils: Remove Static.cpp and darwin hacks." am: 929112bcd1
am: 41a294981b
Change-Id: Iebe132eaca4f9034a8e011881f1514f864529fc5
-rw-r--r-- | libutils/Android.bp | 1 | ||||
-rw-r--r-- | libutils/Static.cpp | 49 | ||||
-rw-r--r-- | libutils/String16.cpp | 29 | ||||
-rw-r--r-- | libutils/String8.cpp | 40 |
4 files changed, 16 insertions, 103 deletions
diff --git a/libutils/Android.bp b/libutils/Android.bp index 80dcdcbe9..32caa69bb 100644 --- a/libutils/Android.bp +++ b/libutils/Android.bp @@ -129,7 +129,6 @@ cc_library { "PropertyMap.cpp", "RefBase.cpp", "SharedBuffer.cpp", - "Static.cpp", "StopWatch.cpp", "String8.cpp", "String16.cpp", diff --git a/libutils/Static.cpp b/libutils/Static.cpp deleted file mode 100644 index 3ed07a10c..000000000 --- a/libutils/Static.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// All static variables go here, to control initialization and -// destruction order in the library. - -namespace android { - -// For String8.cpp -extern void initialize_string8(); -extern void terminate_string8(); - -// For String16.cpp -extern void initialize_string16(); -extern void terminate_string16(); - -class LibUtilsFirstStatics -{ -public: - LibUtilsFirstStatics() - { - initialize_string8(); - initialize_string16(); - } - - ~LibUtilsFirstStatics() - { - terminate_string16(); - terminate_string8(); - } -}; - -static LibUtilsFirstStatics gFirstStatics; -int gDarwinCantLoadAllObjects = 1; - -} // namespace android diff --git a/libutils/String16.cpp b/libutils/String16.cpp index e8f1c5184..230e970a4 100644 --- a/libutils/String16.cpp +++ b/libutils/String16.cpp @@ -24,29 +24,16 @@ namespace android { -static SharedBuffer* gEmptyStringBuf = NULL; -static char16_t* gEmptyString = NULL; +static inline char16_t* getEmptyString() { + static SharedBuffer* gEmptyStringBuf = [] { + SharedBuffer* buf = SharedBuffer::alloc(sizeof(char16_t)); + char16_t* str = static_cast<char16_t*>(buf->data()); + *str = 0; + return buf; + }(); -static inline char16_t* getEmptyString() -{ gEmptyStringBuf->acquire(); - return gEmptyString; -} - -void initialize_string16() -{ - SharedBuffer* buf = SharedBuffer::alloc(sizeof(char16_t)); - char16_t* str = (char16_t*)buf->data(); - *str = 0; - gEmptyStringBuf = buf; - gEmptyString = str; -} - -void terminate_string16() -{ - SharedBuffer::bufferFromData(gEmptyString)->release(); - gEmptyStringBuf = NULL; - gEmptyString = NULL; + return static_cast<char16_t*>(gEmptyStringBuf->data()); } // --------------------------------------------------------------------------- diff --git a/libutils/String8.cpp b/libutils/String8.cpp index ad0e72ec1..580e870c7 100644 --- a/libutils/String8.cpp +++ b/libutils/String8.cpp @@ -40,40 +40,16 @@ namespace android { // to OS_PATH_SEPARATOR. #define RES_PATH_SEPARATOR '/' -static SharedBuffer* gEmptyStringBuf = NULL; -static char* gEmptyString = NULL; +static inline char* getEmptyString() { + static SharedBuffer* gEmptyStringBuf = [] { + SharedBuffer* buf = SharedBuffer::alloc(1); + char* str = static_cast<char*>(buf->data()); + *str = 0; + return buf; + }(); -extern int gDarwinCantLoadAllObjects; -int gDarwinIsReallyAnnoying; - -void initialize_string8(); - -static inline char* getEmptyString() -{ gEmptyStringBuf->acquire(); - return gEmptyString; -} - -void initialize_string8() -{ - // HACK: This dummy dependency forces linking libutils Static.cpp, - // which is needed to initialize String8/String16 classes. - // These variables are named for Darwin, but are needed elsewhere too, - // including static linking on any platform. - gDarwinIsReallyAnnoying = gDarwinCantLoadAllObjects; - - SharedBuffer* buf = SharedBuffer::alloc(1); - char* str = (char*)buf->data(); - *str = 0; - gEmptyStringBuf = buf; - gEmptyString = str; -} - -void terminate_string8() -{ - SharedBuffer::bufferFromData(gEmptyString)->release(); - gEmptyStringBuf = NULL; - gEmptyString = NULL; + return static_cast<char*>(gEmptyStringBuf->data()); } // --------------------------------------------------------------------------- |