xref: /expo/packages/expo-modules-core/android/src/main/cpp/JSReferencesCache.cpp (revision 22b45c56)
  • Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "JSReferencesCache.h"
2 
3 namespace expo {
4 JSReferencesCache::JSReferencesCache(jsi::Runtime &runtime) {
5   jsObjectRegistry.emplace(
6     JSKeys::PROMISE,
7     std::make_unique<jsi::Object>(
8       runtime.global().getPropertyAsFunction(runtime, "Promise")
9     )
10   );
11 
12   if (runtime.global().hasProperty(runtime, "ExpoModulesCore_CodedError")) {
13     auto jsCodedError = runtime.global()
14       .getPropertyAsFunction(runtime, "ExpoModulesCore_CodedError");
15 
16     jsObjectRegistry.emplace(
17       JSKeys::CODED_ERROR,
18       std::make_unique<jsi::Object>(std::move(jsCodedError))
19     );
20   }
21 }
22 
23 jsi::PropNameID &JSReferencesCache::getPropNameID(
24   jsi::Runtime &runtime,
25   const std::string &name
26 ) {
27   auto propName = propNameIDRegistry.find(name);
28 
29   if (propName == propNameIDRegistry.end()) {
30     auto propNameID = std::make_unique<jsi::PropNameID>(jsi::PropNameID::forAscii(runtime, name));
31     auto [result, _] = propNameIDRegistry.emplace(name, std::move(propNameID));
32     return *result->second;
33   }
34   return *propName->second;
35 }
36 } // namespace expo
37 

served by {OpenGrok

Last Index Update: Tue Oct 21 18:42:31 GMT 2025