From 6c58035ae62bd6546772577b5918dd9c9059ec27 Mon Sep 17 00:00:00 2001 From: Sebastian Markbage Date: Tue, 15 May 2018 14:28:30 -0700 Subject: [PATCH] Reuse and clean up JSC class ref bindings Reviewed By: fkgozali Differential Revision: D7893634 fbshipit-source-id: de11cb93f9f7e7c935af2da4616671043438363b --- .../com/facebook/react/fabric/jsc/jni/FabricJSCBinding.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/fabric/jsc/jni/FabricJSCBinding.cpp b/ReactAndroid/src/main/java/com/facebook/react/fabric/jsc/jni/FabricJSCBinding.cpp index 83023f488aa..27aac53bbb8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/fabric/jsc/jni/FabricJSCBinding.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/fabric/jsc/jni/FabricJSCBinding.cpp @@ -33,10 +33,15 @@ typedef struct FabricJSCUIManager { : wrapperObjectClassRef(classRef) , useCustomJSC(customJSC) { fabricUiManager = make_global(module); + JSC_JSClassRetain(useCustomJSC, wrapperObjectClassRef); } global_ref fabricUiManager; JSClassRef wrapperObjectClassRef; bool useCustomJSC; + + ~FabricJSCUIManager() { + JSC_JSClassRelease(useCustomJSC, wrapperObjectClassRef); + } } FabricJSCUIManager; jobject makePlainGlobalRef(jobject object) { @@ -283,6 +288,8 @@ void FabricJSCBinding::installFabric(jlong jsContextNativePointer, addFabricMethod(context, fabricModule, classRef, module, "appendChildToSet", appendChildToSet); addFabricMethod(context, fabricModule, classRef, module, "completeRoot", completeRoot); + JSC_JSClassRelease(useCustomJSC, classRef); + JSObjectRef globalObject = JSC_JSContextGetGlobalObject(context); JSStringRef globalName = JSC_JSStringCreateWithUTF8CString(context, "nativeFabricUIManager"); JSC_JSObjectSetProperty(context, globalObject, globalName, module, kJSPropertyAttributeNone, NULL);