Use the same data structure for native and Skylark providers.

The memory cost of adding Skylark provider is now the same as native.
Skylark providers (declared and legacy) benefit from the same
shape-sharing optimization as native providers.

RELNOTES: None.
PiperOrigin-RevId: 160944263
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
index 7f8a72f..ac5b483 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -337,16 +337,6 @@
     }
 
     /**
-     * Adds a mapping that determines which keys in structs returned by skylark rules should be
-     * interpreted as native TransitiveInfoProvider instances of type (map value).
-     */
-    public Builder registerSkylarkProvider(
-        String name, Class<? extends TransitiveInfoProvider> provider) {
-      this.registeredSkylarkProviders.put(name, provider);
-      return this;
-    }
-
-    /**
      * Do not use - this only exists for backwards compatibility! Platform regexps are part of a
      * legacy mechanism - {@code vardef} - that is not exposed in Bazel.
      *
@@ -442,8 +432,7 @@
           universalFragment,
           prerequisiteValidator,
           skylarkAccessibleTopLevels.build(),
-          skylarkModules.build(),
-          registeredSkylarkProviders.build());
+          skylarkModules.build());
     }
 
     @Override
@@ -551,9 +540,6 @@
 
   private final Environment.Frame globals;
 
-  private final ImmutableBiMap<String, Class<? extends TransitiveInfoProvider>>
-      registeredSkylarkProviders;
-
   private ConfiguredRuleClassProvider(
       String productName,
       Label preludeLabel,
@@ -571,8 +557,7 @@
       Class<? extends BuildConfiguration.Fragment> universalFragment,
       PrerequisiteValidator prerequisiteValidator,
       ImmutableMap<String, Object> skylarkAccessibleJavaClasses,
-      ImmutableList<Class<?>> skylarkModules,
-      ImmutableBiMap<String, Class<? extends TransitiveInfoProvider>> registeredSkylarkProviders) {
+      ImmutableList<Class<?>> skylarkModules) {
     this.productName = productName;
     this.preludeLabel = preludeLabel;
     this.runfilesPrefix = runfilesPrefix;
@@ -589,7 +574,6 @@
     this.universalFragment = universalFragment;
     this.prerequisiteValidator = prerequisiteValidator;
     this.globals = createGlobals(skylarkAccessibleJavaClasses, skylarkModules);
-    this.registeredSkylarkProviders = registeredSkylarkProviders;
   }
 
   public String getProductName() {
@@ -689,19 +673,6 @@
   }
 
   /**
-   * Returns a map that indicates which keys in structs returned by skylark rules should be
-   * interpreted as native TransitiveInfoProvider instances of type (map value).
-   *
-   * <p>That is, if this map contains "dummy" -> DummyProvider.class, a "dummy" entry in a skylark
-   * rule implementation's returned struct will be exported from that ConfiguredTarget as a
-   * DummyProvider.
-   */
-  public ImmutableBiMap<String, Class<? extends TransitiveInfoProvider>>
-      getRegisteredSkylarkProviders() {
-    return this.registeredSkylarkProviders;
-  }
-
-  /**
    * Creates a BuildOptions class for the given options taken from an optionsProvider.
    */
   public BuildOptions createBuildOptions(OptionsClassProvider optionsProvider) {