Replace @BlazeRule with a getMetadata() method. This lets us avoid Java Reflection, and saves ~15% of initialization time in []RuleClassProvider.create().
Before change:
Over 14 samples,
average = 976
median = 969.9
After change:
Over 14 samples,
average = 811.5
median = 813.9
--
MOS_MIGRATED_REVID=89036261
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
index a14cd53..4b7015f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java
@@ -123,8 +123,6 @@
/**
* A base rule for all test rules.
*/
- @BlazeRule(name = "$test_base_rule",
- type = RuleClassType.ABSTRACT)
public static final class TestBaseRule implements RuleDefinition {
@Override
public RuleClass build(Builder builder, RuleDefinitionEnvironment env) {
@@ -169,6 +167,14 @@
.add(attr(":run_under", LABEL).cfg(DATA).value(RUN_UNDER))
.build();
}
+
+ @Override
+ public Metadata getMetadata() {
+ return RuleDefinition.Metadata.builder()
+ .name("$test_base_rule")
+ .type(RuleClassType.ABSTRACT)
+ .build();
+ }
}
/**
@@ -205,8 +211,6 @@
/**
* Common parts of rules.
*/
- @BlazeRule(name = "$base_rule",
- type = RuleClassType.ABSTRACT)
public static final class BaseRule implements RuleDefinition {
@Override
public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) {
@@ -234,14 +238,19 @@
.add(attr(":action_listener", LABEL_LIST).cfg(HOST).value(ACTION_LISTENER))
.build();
}
+
+ @Override
+ public Metadata getMetadata() {
+ return RuleDefinition.Metadata.builder()
+ .name("$base_rule")
+ .type(RuleClassType.ABSTRACT)
+ .build();
+ }
}
/**
* Common ancestor class for all rules.
*/
- @BlazeRule(name = "$rule",
- type = RuleClassType.ABSTRACT,
- ancestors = { BaseRule.class })
public static final class RuleBase implements RuleDefinition {
@Override
public RuleClass build(Builder builder, RuleDefinitionEnvironment env) {
@@ -250,6 +259,14 @@
.add(attr("data", LABEL_LIST).cfg(DATA).allowedFileTypes(FileTypeSet.ANY_FILE))
.build();
}
- }
+ @Override
+ public Metadata getMetadata() {
+ return RuleDefinition.Metadata.builder()
+ .name("$rule")
+ .type(RuleClassType.ABSTRACT)
+ .ancestors(BaseRule.class)
+ .build();
+ }
+ }
}