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
This commit is contained in:
Colin Cross 2016-08-08 15:49:17 -07:00
parent 705c84b9ee
commit 62496a0d2e
1 changed files with 2 additions and 1 deletions

View File

@ -463,6 +463,7 @@ func InitArchModule(m Module,
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 @@ func InitArchModule(m Module,
archProperties := &archProperties{}
forEachInterface(reflect.ValueOf(archProperties), func(v reflect.Value) {
newValue := proptools.CloneEmptyProperties(propertiesValue)
newValue := reflect.Zero(t)
v.Set(newValue)
})