Loading...
--- dyld/dyld-940/common/PerfectHash.cpp
+++ dyld/dyld-1122.1/common/PerfectHash.cpp
@@ -40,10 +40,17 @@
------------------------------------------------------------------------------
*/
+#include <TargetConditionals.h>
+
+#if !TARGET_OS_EXCLAVEKIT
+
+#include <strings.h>
#include "PerfectHash.h"
-#if BUILDING_CACHE_BUILDER || BUILDING_UNIT_TESTS
+#if BUILDING_CACHE_BUILDER || BUILDING_UNIT_TESTS || BUILDING_CACHE_BUILDER_UNIT_TESTS
#include <dispatch/dispatch.h>
+#include <string>
+#include <vector>
#endif
namespace objc {
@@ -371,7 +378,7 @@
// gencode *final; /* output, code for the final hash */
{
ub4 loga = log2u(alen); /* log based 2 of blen */
-#if BUILDING_CACHE_BUILDER || BUILDING_UNIT_TESTS
+#if BUILDING_CACHE_BUILDER || BUILDING_UNIT_TESTS || BUILDING_CACHE_BUILDER_UNIT_TESTS
dispatch_apply(keys.count(), DISPATCH_APPLY_AUTO, ^(size_t index) {
ub4 i = (ub4)index;
key *mykey = &keys[i];
@@ -782,20 +789,20 @@
}
}
-#if BUILDING_CACHE_BUILDER || BUILDING_UNIT_TESTS
-
-void PerfectHash::make_perfect(const string_map& strings, objc::PerfectHash& phash)
+#if BUILDING_CACHE_BUILDER || BUILDING_UNIT_TESTS || BUILDING_CACHE_BUILDER_UNIT_TESTS
+
+void PerfectHash::make_perfect(const std::vector<ObjCString>& strings, objc::PerfectHash& phash)
{
dyld3::OverflowSafeArray<key> keys;
/* read in the list of keywords */
keys.reserve(strings.size());
- size_t i;
- string_map::const_iterator s;
- for (i = 0, s = strings.begin(); s != strings.end(); ++s, ++i) {
+
+ for ( const ObjCString& stringAndOffset: strings ) {
+ const std::string_view& str = stringAndOffset.first;
key mykey;
- mykey.name1_k = (ub1 *)s->first;
- mykey.len1_k = (ub4)strlen(s->first);
+ mykey.name1_k = (ub1 *)str.data();
+ mykey.len1_k = (ub4)str.size();
mykey.name2_k = (ub1 *)nullptr;
mykey.len2_k = (ub4)0;
keys.push_back(mykey);
@@ -814,7 +821,7 @@
keys.reserve(strings.count());
for (const char* s : strings) {
key mykey;
-#if BUILDING_CACHE_BUILDER || BUILDING_UNIT_TESTS
+#if BUILDING_CACHE_BUILDER || BUILDING_UNIT_TESTS || BUILDING_CACHE_BUILDER_UNIT_TESTS
mykey.name1_k = (ub1 *)s;
mykey.len1_k = (ub4)strlen(s);
mykey.name2_k = (ub1 *)nullptr;
@@ -830,3 +837,5 @@
}
} // namespace objc
+
+#endif // !TARGET_OS_EXCLAVEKIT