From 9374b23b33940cecef8283ce170ac1b1285e2858 Mon Sep 17 00:00:00 2001 From: David Aurelio Date: Fri, 12 Jul 2019 01:40:15 -0700 Subject: [PATCH] More generous access to `DestructorThread.Destructor` Summary: In order to extend / use `DestructorThread.Destructor` outside of `com.facebook.jni`, we need access modifiers to be less strict: - `Destructor#Destructor()`: package protected -> public - `Destructor#destruct()`: package protected -> protected This will enable Yoga to move from finalizers to `DestructorThread.Destructor` without having to buy into `HybridData` completely. Reviewed By: cjhopman Differential Revision: D16182362 fbshipit-source-id: ad616c403df8e7c1e3d751131cfb7a9cfe62cf24 --- .../src/main/java/com/facebook/jni/DestructorThread.java | 6 +++--- ReactAndroid/src/main/java/com/facebook/jni/HybridData.java | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/jni/DestructorThread.java b/ReactAndroid/src/main/java/com/facebook/jni/DestructorThread.java index 7acc8f4c28d..36f544b1cc4 100644 --- a/ReactAndroid/src/main/java/com/facebook/jni/DestructorThread.java +++ b/ReactAndroid/src/main/java/com/facebook/jni/DestructorThread.java @@ -31,7 +31,7 @@ public class DestructorThread { private Destructor next; private Destructor previous; - Destructor(Object referent) { + public Destructor(Object referent) { super(referent, sReferenceQueue); sDestructorStack.push(this); } @@ -41,7 +41,7 @@ public class DestructorThread { } /** Callback which is invoked when the original object has been garbage collected. */ - abstract void destruct(); + protected abstract void destruct(); } /** A list to keep all active Destructors in memory confined to the Destructor thread. */ @@ -84,7 +84,7 @@ public class DestructorThread { private static class Terminus extends Destructor { @Override - void destruct() { + protected void destruct() { throw new IllegalStateException("Cannot destroy Terminus Destructor."); } } diff --git a/ReactAndroid/src/main/java/com/facebook/jni/HybridData.java b/ReactAndroid/src/main/java/com/facebook/jni/HybridData.java index 158182df3ab..9a99eebedc1 100644 --- a/ReactAndroid/src/main/java/com/facebook/jni/HybridData.java +++ b/ReactAndroid/src/main/java/com/facebook/jni/HybridData.java @@ -63,7 +63,7 @@ public class HybridData { } @Override - void destruct() { + protected final void destruct() { // When invoked from the DestructorThread instead of resetNative, // the DestructorThread has exclusive ownership of the HybridData // so synchronization is not necessary.