From 9e8ea567c838574a0f14538c0bbbd83c3215aa55 Mon Sep 17 00:00:00 2001 From: Tim King Date: Mon, 26 Aug 2024 15:49:09 -0700 Subject: cmd/compile/internal/noder: write V2 bitstream aliastypeparams=1 Enables V2 unified IR bitstreams when GOEXPERIMENT aliastypeparams are enabled. Allows pkgbits.NewPkgEncoder to set the output version. Reenables support for writing V0 streams. Updates #68778 Updates #68526 Change-Id: I590c494d81ab7db148232ceaba52229068d1e986 Reviewed-on: https://go-review.googlesource.com/c/go/+/608595 Reviewed-by: David Chase LUCI-TryBot-Result: Go LUCI Reviewed-by: Cuong Manh Le --- src/internal/pkgbits/encoder.go | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'src/internal/pkgbits/encoder.go') diff --git a/src/internal/pkgbits/encoder.go b/src/internal/pkgbits/encoder.go index b632b58ca0..c17a12399d 100644 --- a/src/internal/pkgbits/encoder.go +++ b/src/internal/pkgbits/encoder.go @@ -15,9 +15,6 @@ import ( "strings" ) -// currentVersion is the current version number written. -const currentVersion = V1 - // A PkgEncoder provides methods for encoding a package's Unified IR // export data. type PkgEncoder struct { @@ -47,10 +44,9 @@ func (pw *PkgEncoder) SyncMarkers() bool { return pw.syncFrames >= 0 } // export data files, but can help diagnosing desync errors in // higher-level Unified IR reader/writer code. If syncFrames is // negative, then sync markers are omitted entirely. -func NewPkgEncoder(syncFrames int) PkgEncoder { +func NewPkgEncoder(version Version, syncFrames int) PkgEncoder { return PkgEncoder{ - // TODO(taking): Change NewPkgEncoder to take a version as an argument, and remove currentVersion. - version: currentVersion, + version: version, stringsIdx: make(map[string]Index), syncFrames: syncFrames, } @@ -68,11 +64,13 @@ func (pw *PkgEncoder) DumpTo(out0 io.Writer) (fingerprint [8]byte) { writeUint32(uint32(pw.version)) - var flags uint32 - if pw.SyncMarkers() { - flags |= flagSyncMarkers + if pw.version.Has(Flags) { + var flags uint32 + if pw.SyncMarkers() { + flags |= flagSyncMarkers + } + writeUint32(flags) } - writeUint32(flags) // Write elemEndsEnds. var sum uint32 -- cgit v1.3