From 536a2257fba6dd18c74506988bdf3d6a15e52831 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Thu, 23 Mar 2017 19:40:16 +0000 Subject: [PATCH] Revert "cmd/compile: strengthen SetFields/Width safety guarantee" This reverts commit b1b4f67169c5ceb3c81ba900c5022722d28755ab. Reason for revert: Broke the build. Change-Id: I5c99779896e39137c93c77d016ce683c872a69d7 Reviewed-on: https://go-review.googlesource.com/38532 Reviewed-by: Josh Bleecher Snyder --- src/cmd/compile/internal/gc/closure.go | 4 ++++ src/cmd/compile/internal/gc/type.go | 9 --------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/cmd/compile/internal/gc/closure.go b/src/cmd/compile/internal/gc/closure.go index 9f0c0734541..41ee74b8e03 100644 --- a/src/cmd/compile/internal/gc/closure.go +++ b/src/cmd/compile/internal/gc/closure.go @@ -362,6 +362,10 @@ func transformclosure(xfunc *Node) { xfunc.Func.Dcl = append(decls, xfunc.Func.Dcl...) } + // Recalculate param offsets. + if f.Type.Width > 0 { + Fatalf("transformclosure: width is already calculated") + } dowidth(f.Type) xfunc.Type = f.Type // update type of ODCLFUNC } else { diff --git a/src/cmd/compile/internal/gc/type.go b/src/cmd/compile/internal/gc/type.go index 772894f076c..49d222507bf 100644 --- a/src/cmd/compile/internal/gc/type.go +++ b/src/cmd/compile/internal/gc/type.go @@ -864,15 +864,6 @@ func (t *Type) FieldSlice() []*Field { // SetFields sets struct/interface type t's fields/methods to fields. func (t *Type) SetFields(fields []*Field) { - // If we've calculated the width of t before, - // then some other type such as a function signature - // might now have the wrong type. - // Rather than try to track and invalidate those, - // enforce that SetFields cannot be called once - // t's width has been calculated. - if t.WidthCalculated() { - Fatalf("SetFields of %v: width previously calculated", t) - } t.wantEtype(TSTRUCT) for _, f := range fields { // If type T contains a field F with a go:notinheap