diff options
author | 2017-07-05 07:23:31 -0400 | |
---|---|---|
committer | 2017-07-05 10:58:56 -0400 | |
commit | f6a7e5a39ee5669c0fdfce93032cab45d6c89358 (patch) | |
tree | 9905a5e85f19a94eb4cd0082d6a146d9e06a0c3b /src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java | |
parent | 2843eadf4c1d9175c60d32ffd2cba2100256c1fd (diff) |
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
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java index 7b68c7b2b3..0659bb86cd 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java @@ -18,7 +18,9 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; +import com.google.devtools.build.lib.packages.ClassObjectConstructor; import com.google.devtools.build.lib.packages.FileTarget; +import com.google.devtools.build.lib.packages.SkylarkClassObject; import com.google.devtools.build.lib.rules.fileset.FilesetProvider; import com.google.devtools.build.lib.rules.test.InstrumentedFilesProvider; import com.google.devtools.build.lib.util.FileType; @@ -77,4 +79,14 @@ public abstract class FileConfiguredTarget extends AbstractConfiguredTarget AnalysisUtils.checkProvider(provider); return providers.getProvider(provider); } + + @Override + protected SkylarkClassObject rawGetSkylarkProvider(ClassObjectConstructor.Key providerKey) { + return providers.getProvider(providerKey); + } + + @Override + protected Object rawGetSkylarkProvider(String providerKey) { + return providers.getProvider(providerKey); + } } |