Avoid extra rdeps copy when finishing node

Reduces garbage and wasted work

--
MOS_MIGRATED_REVID=108566164
diff --git a/src/main/java/com/google/devtools/build/skyframe/BuildingState.java b/src/main/java/com/google/devtools/build/skyframe/BuildingState.java
index ad16c38..ae38e8c 100644
--- a/src/main/java/com/google/devtools/build/skyframe/BuildingState.java
+++ b/src/main/java/com/google/devtools/build/skyframe/BuildingState.java
@@ -153,6 +153,12 @@
         List<Object> getDataToConsolidate(BuildingState container) {
           return container.reverseDepsDataToConsolidate;
         }
+
+        @Override
+        public void consolidateReverseDeps(BuildingState container) {
+          // #consolidateReverseDeps is only supported for node entries, not building states.
+          throw new UnsupportedOperationException();
+        }
       };
 
   // Below are fields that are used for dirty nodes.
diff --git a/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java b/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
index 261c836..95d23bd 100644
--- a/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
+++ b/src/main/java/com/google/devtools/build/skyframe/InMemoryNodeEntry.java
@@ -221,8 +221,8 @@
     // Get reverse deps that need to be signaled.
     ImmutableSet<SkyKey> reverseDepsToSignal = buildingState.getReverseDepsToSignal();
     getReverseDepsUtil().addReverseDeps(this, reverseDepsToSignal);
-    // Force consistency check.
-    getReverseDepsUtil().getReverseDeps(this);
+    // Force consistency check and consolidate rdeps changes.
+    getReverseDepsUtil().consolidateReverseDeps(this);
     this.directDeps = buildingState.getFinishedDirectDeps().compress();
 
     markDone();
diff --git a/src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtil.java b/src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtil.java
index 219758b..52ad312 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtil.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtil.java
@@ -39,6 +39,8 @@
 
   void removeReverseDep(T container, SkyKey reverseDep);
 
+  void consolidateReverseDeps(T container);
+
   ImmutableSet<SkyKey> getReverseDeps(T container);
 
   String toString(T container);
diff --git a/src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtilImpl.java b/src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtilImpl.java
index 11af100..7eda036 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtilImpl.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ReverseDepsUtilImpl.java
@@ -283,6 +283,11 @@
     }
   }
 
+  @Override
+  public void consolidateReverseDeps(T container) {
+    consolidateData(container);
+  }
+
   private void consolidateData(T container) {
     List<Object> dataToConsolidate = getDataToConsolidate(container);
     if (dataToConsolidate == null) {