Recycle CSSNodes

Summary: Adds a pool to recycle CSSNodes within UIManager. A follow-up diff will hook this up to a memory pressure listener to drop the pool on memory pressure.

Reviewed By: emilsjolander

Differential Revision: D4189532

fbshipit-source-id: 46583546f71a8c59853e1dd124de31657b3c617b
This commit is contained in:
Andy Street
2016-11-21 09:11:29 -08:00
committed by Facebook Github Bot
parent 7c91f894ba
commit bd8745b1fd
5 changed files with 107 additions and 10 deletions

View File

@@ -652,12 +652,17 @@ public class UIImplementation {
}
protected final void removeShadowNode(ReactShadowNode nodeToRemove) {
mNativeViewHierarchyOptimizer.handleRemoveNode(nodeToRemove);
removeShadowNodeRecursive(nodeToRemove);
nodeToRemove.dispose();
}
private void removeShadowNodeRecursive(ReactShadowNode nodeToRemove) {
NativeViewHierarchyOptimizer.handleRemoveNode(nodeToRemove);
mShadowNodeRegistry.removeNode(nodeToRemove.getReactTag());
for (int i = nodeToRemove.getChildCount() - 1; i >= 0; i--) {
removeShadowNode(nodeToRemove.getChildAt(i));
removeShadowNodeRecursive(nodeToRemove.getChildAt(i));
}
nodeToRemove.removeAllChildren();
nodeToRemove.removeAndDisposeAllChildren();
}
private void measureLayout(int tag, int ancestorTag, int[] outputBuffer) {