| 19 | using namespace tns; |
| 20 | |
| 21 | ObjectManager::ObjectManager(jobject javaRuntimeObject) |
| 22 | : m_javaRuntimeObject(javaRuntimeObject), |
| 23 | m_numberOfGC(0), |
| 24 | m_currentObjectId(0), |
| 25 | m_cache(NewWeakGlobalRefCallback, DeleteWeakGlobalRefCallback, |
| 26 | ValidateWeakGlobalRefCallback, 1000, this) { |
| 27 | JEnv env; |
| 28 | InitializeJNI(); |
| 29 | |
| 30 | auto runtimeClass = env.FindClass("com/tns/Runtime"); |
| 31 | assert(runtimeClass != nullptr); |
| 32 | |
| 33 | auto useGlobalRefsMethodID = |
| 34 | env.GetStaticMethodID(runtimeClass, "useGlobalRefs", "()Z"); |
| 35 | assert(useGlobalRefsMethodID != nullptr); |
| 36 | |
| 37 | auto useGlobalRefs = |
| 38 | env.CallStaticBooleanMethod(runtimeClass, useGlobalRefsMethodID); |
| 39 | m_useGlobalRefs = useGlobalRefs == JNI_TRUE; |
| 40 | |
| 41 | auto getMarkingModeOrdinalMethodID = |
| 42 | env.GetMethodID(runtimeClass, "getMarkingModeOrdinal", "()I"); |
| 43 | jint markingMode = |
| 44 | env.CallIntMethod(m_javaRuntimeObject, getMarkingModeOrdinalMethodID); |
| 45 | m_markingMode = static_cast<JavaScriptMarkingMode>(markingMode); |
| 46 | } |
| 47 | |
| 48 | void ObjectManager::InitializeJNI() { |
| 49 | if (GET_JAVAOBJECT_BY_ID_METHOD_ID != nullptr) { |
nothing calls this directly
no test coverage detected