Don't create a new module for bp2build conversion.

A performance improvement for bp2build as Blueprint/Soong no longer have
the overhead of additional modules. The creation of these modules
results in:
* traversal of additional modules for each subsequent mutator
* synchronization over a go channel to collect newly created modules:
https://cs.android.com/android/platform/superproject/+/master:build/blueprint/context.go;l=2594,2600;drc=1602226f23181b8c3fbfcaf3358f0297e839d7d3

We avoid both of these by storing the information directly in the
underlying module.

Also as a fringe benefit, removes some necessary boilerplate for
conversion.

For benchmarks, reduces runtime ~1% for 1% converted, ~24% for 100%
converted. See more: go/benchmarks-for-https:-r.android.com-1792714

Test: ran benchmarks/tests in bp2build
Test: build/bazel/ci/bp2build.sh
Change-Id: Ie9273b8cbab5bc6edac1728067ce184382feb211
This commit is contained in:
Liz Kammer
2021-08-11 00:17:36 -04:00
parent 0dd067d309
commit 2ada09a546
16 changed files with 148 additions and 276 deletions

View File

@@ -1385,18 +1385,6 @@ type bazelAndroidAppCertificateAttributes struct {
Certificate string
}
type bazelAndroidAppCertificate struct {
android.BazelTargetModuleBase
bazelAndroidAppCertificateAttributes
}
func BazelAndroidAppCertificateFactory() android.Module {
module := &bazelAndroidAppCertificate{}
module.AddProperties(&module.bazelAndroidAppCertificateAttributes)
android.InitBazelTargetModule(module)
return module
}
func AndroidAppCertificateBp2Build(ctx android.TopDownMutatorContext) {
module, ok := ctx.Module().(*AndroidAppCertificate)
if !ok {
@@ -1428,11 +1416,5 @@ func androidAppCertificateBp2BuildInternal(ctx android.TopDownMutatorContext, mo
Bzl_load_location: "//build/bazel/rules:android_app_certificate.bzl",
}
ctx.CreateBazelTargetModule(BazelAndroidAppCertificateFactory, module.Name(), props, attrs)
ctx.CreateBazelTargetModule(module.Name(), props, attrs)
}
func (m *bazelAndroidAppCertificate) Name() string {
return m.BaseModuleName()
}
func (m *bazelAndroidAppCertificate) GenerateAndroidBuildActions(ctx android.ModuleContext) {}