From b60a3a8cfbc6096babe72ebcee0733bba496cf9a Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Fri, 5 Mar 2021 09:49:28 -0800 Subject: [PATCH] cmd/compile: add debugging mode for import/export Just add a simple magic number with each op, to detect when the reader gets desynchronized from the writer. Change-Id: Iac7dab7f465b0021b1d7ae31c8f8a353ac3663a2 Reviewed-on: https://go-review.googlesource.com/c/go/+/299769 Trust: Keith Randall Run-TryBot: Keith Randall TryBot-Result: Go Bot Reviewed-by: Dan Scales --- src/cmd/compile/internal/typecheck/iexport.go | 8 ++++++++ src/cmd/compile/internal/typecheck/iimport.go | 3 +++ 2 files changed, 11 insertions(+) diff --git a/src/cmd/compile/internal/typecheck/iexport.go b/src/cmd/compile/internal/typecheck/iexport.go index 38ac753201..6f33ca1597 100644 --- a/src/cmd/compile/internal/typecheck/iexport.go +++ b/src/cmd/compile/internal/typecheck/iexport.go @@ -246,6 +246,11 @@ const ( interfaceType ) +const ( + debug = false + magic = 0x6742937dc293105 +) + func WriteExports(out *bufio.Writer) { p := iexporter{ allPkgs: map[*types.Pkg]bool{}, @@ -1584,6 +1589,9 @@ func (w *exportWriter) expr(n ir.Node) { } func (w *exportWriter) op(op ir.Op) { + if debug { + w.uint64(magic) + } w.uint64(uint64(op)) } diff --git a/src/cmd/compile/internal/typecheck/iimport.go b/src/cmd/compile/internal/typecheck/iimport.go index 8df75b2285..d7c118b631 100644 --- a/src/cmd/compile/internal/typecheck/iimport.go +++ b/src/cmd/compile/internal/typecheck/iimport.go @@ -1228,6 +1228,9 @@ func (r *importReader) node() ir.Node { } func (r *importReader) op() ir.Op { + if debug && r.uint64() != magic { + base.Fatalf("import stream has desynchronized") + } return ir.Op(r.uint64()) } -- 2.50.0