Make defaults TopDownMutator parallel

Append .Parallel() to the defaults RegisterTopDownMutator call to tell
Blueprint it can run it in parallel.  Saves ~500ms in soong_build.

Change-Id: I43ddd9d6995674ccc06fed6928514f15a15712c1
This commit is contained in:
Colin Cross 2016-08-11 14:10:54 -07:00
parent aa99f84e57
commit 76f2f97c51
3 changed files with 18 additions and 16 deletions

View file

@ -26,7 +26,7 @@ import (
func init() {
RegisterBottomUpMutator("defaults_deps", defaultsDepsMutator).Parallel()
RegisterTopDownMutator("defaults", defaultsMutator)
RegisterTopDownMutator("defaults", defaultsMutator).Parallel()
RegisterBottomUpMutator("arch", ArchMutator).Parallel()
}

View file

@ -44,7 +44,7 @@ type androidBottomUpMutatorContext struct {
androidBaseContextImpl
}
func RegisterBottomUpMutator(name string, mutator AndroidBottomUpMutator) soong.BottomUpMutatorHandle {
func RegisterBottomUpMutator(name string, mutator AndroidBottomUpMutator) soong.MutatorHandle {
return soong.RegisterBottomUpMutator(name, func(ctx blueprint.BottomUpMutatorContext) {
if a, ok := ctx.Module().(Module); ok {
actx := &androidBottomUpMutatorContext{
@ -56,8 +56,8 @@ func RegisterBottomUpMutator(name string, mutator AndroidBottomUpMutator) soong.
})
}
func RegisterTopDownMutator(name string, mutator AndroidTopDownMutator) {
soong.RegisterTopDownMutator(name, func(ctx blueprint.TopDownMutatorContext) {
func RegisterTopDownMutator(name string, mutator AndroidTopDownMutator) soong.MutatorHandle {
return soong.RegisterTopDownMutator(name, func(ctx blueprint.TopDownMutatorContext) {
if a, ok := ctx.Module().(Module); ok {
actx := &androidTopDownMutatorContext{
TopDownMutatorContext: ctx,

View file

@ -47,21 +47,23 @@ func RegisterSingletonType(name string, factory blueprint.SingletonFactory) {
singletons = append(singletons, singleton{name, factory})
}
func RegisterBottomUpMutator(name string, m blueprint.BottomUpMutator) BottomUpMutatorHandle {
func RegisterBottomUpMutator(name string, m blueprint.BottomUpMutator) MutatorHandle {
mutator := &mutator{name: name, bottomUpMutator: m}
mutators = append(mutators, mutator)
return mutator
}
func RegisterTopDownMutator(name string, m blueprint.TopDownMutator) {
mutators = append(mutators, &mutator{name: name, topDownMutator: m})
func RegisterTopDownMutator(name string, m blueprint.TopDownMutator) MutatorHandle {
mutator := &mutator{name: name, topDownMutator: m}
mutators = append(mutators, mutator)
return mutator
}
type BottomUpMutatorHandle interface {
Parallel() BottomUpMutatorHandle
type MutatorHandle interface {
Parallel() MutatorHandle
}
func (mutator *mutator) Parallel() BottomUpMutatorHandle {
func (mutator *mutator) Parallel() MutatorHandle {
mutator.parallel = true
return mutator
}
@ -78,14 +80,14 @@ func NewContext() *blueprint.Context {
}
for _, t := range mutators {
var handle blueprint.MutatorHandle
if t.bottomUpMutator != nil {
handle := ctx.RegisterBottomUpMutator(t.name, t.bottomUpMutator)
if t.parallel {
handle.Parallel()
}
handle = ctx.RegisterBottomUpMutator(t.name, t.bottomUpMutator)
} else if t.topDownMutator != nil {
handle = ctx.RegisterTopDownMutator(t.name, t.topDownMutator)
}
if t.topDownMutator != nil {
ctx.RegisterTopDownMutator(t.name, t.topDownMutator)
if t.parallel {
handle.Parallel()
}
}