Use nil pointers for arch property structs
Blueprint can now handle creating a zero-valued struct when it
encounters a nil pointer to a struct, reducing the amount of allocations
and copying for arch structures that are not used.
Change-Id: If36da5603dbe6469fe6406c821f21a122ea6ea49
diff --git a/android/arch.go b/android/arch.go
index d6b2836..fde106d 100644
--- a/android/arch.go
+++ b/android/arch.go
@@ -463,6 +463,7 @@
for _, properties := range base.generalProperties {
propertiesValue := reflect.ValueOf(properties)
+ t := propertiesValue.Type()
if propertiesValue.Kind() != reflect.Ptr {
panic(fmt.Errorf("properties must be a pointer to a struct, got %T",
propertiesValue.Interface()))
@@ -476,7 +477,7 @@
archProperties := &archProperties{}
forEachInterface(reflect.ValueOf(archProperties), func(v reflect.Value) {
- newValue := proptools.CloneEmptyProperties(propertiesValue)
+ newValue := reflect.Zero(t)
v.Set(newValue)
})