internal/godoc: remove faster-decoding experiment

Change-Id: I89619d03d6a3eb432ed3b215047ebe436634296d
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/278294
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/internal/experiment.go b/internal/experiment.go
index 22c4bdd..74cf726 100644
--- a/internal/experiment.go
+++ b/internal/experiment.go
@@ -7,7 +7,6 @@
 
 const (
 	ExperimentAutocomplete       = "autocomplete"
-	ExperimentFasterDecoding     = "faster-decoding"
 	ExperimentGoldmark           = "goldmark"
 	ExperimentReadmeOutline      = "readme-outline"
 	ExperimentUnitSidebarDetails = "unit-sidebar-details"
@@ -17,7 +16,6 @@
 // a description of each experiment.
 var Experiments = map[string]string{
 	ExperimentAutocomplete:       "Enable autocomplete with search.",
-	ExperimentFasterDecoding:     "Decode ASTs faster.",
 	ExperimentGoldmark:           "Enable the usage of rendering markdown using goldmark instead of blackfriday.",
 	ExperimentReadmeOutline:      "Enable the readme outline in the side nav.",
 	ExperimentUnitSidebarDetails: "Enable the details section in the right sidebar.",
diff --git a/internal/godoc/encode.go b/internal/godoc/encode.go
index 4da829d..ae717cc 100644
--- a/internal/godoc/encode.go
+++ b/internal/godoc/encode.go
@@ -8,16 +8,13 @@
 	"bytes"
 	"context"
 	"encoding/gob"
-	"errors"
 	"fmt"
 	"go/ast"
 	"go/token"
 	"io"
 	"sort"
 
-	"golang.org/x/pkgsite/internal"
 	"golang.org/x/pkgsite/internal/derrors"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/godoc/codec"
 )
 
@@ -102,37 +99,7 @@
 // rendering before it returns.
 func (p *Package) Encode(ctx context.Context) (_ []byte, err error) {
 	defer derrors.Wrap(&err, "godoc.Package.Encode()")
-
-	if experiment.IsActive(ctx, internal.ExperimentFasterDecoding) {
-		return p.fastEncode()
-	} else {
-		return p.gobEncode()
-	}
-}
-
-func (p *Package) gobEncode() (_ []byte, err error) {
-	if p.renderCalled {
-		return nil, errors.New("can't Encode after Render")
-	}
-
-	for _, f := range p.Files {
-		removeCycles(f)
-	}
-
-	var buf bytes.Buffer
-	io.WriteString(&buf, gobEncodingType)
-	enc := gob.NewEncoder(&buf)
-	// Encode the fset using the Write method it provides.
-	if err := p.Fset.Write(enc.Encode); err != nil {
-		return nil, fmt.Errorf("p.Fset.Write: %v", err)
-	}
-	if err := enc.Encode(p.encPackage); err != nil {
-		return nil, fmt.Errorf("enc.Encode: %v", err)
-	}
-	for _, f := range p.Files {
-		fixupObjects(f)
-	}
-	return buf.Bytes(), nil
+	return p.fastEncode()
 }
 
 // DecodPackage decodes a byte slice encoded with Package.Encode into a Package.
diff --git a/internal/godoc/encode_test.go b/internal/godoc/encode_test.go
index 43c424b..3a318ec 100644
--- a/internal/godoc/encode_test.go
+++ b/internal/godoc/encode_test.go
@@ -7,6 +7,8 @@
 import (
 	"bytes"
 	"context"
+	"encoding/gob"
+	"errors"
 	"fmt"
 	"go/ast"
 	"go/parser"
@@ -20,19 +22,17 @@
 	"testing"
 
 	"github.com/google/go-cmp/cmp"
-	"golang.org/x/pkgsite/internal"
-	"golang.org/x/pkgsite/internal/experiment"
 )
 
 var packageToTest string = filepath.Join(runtime.GOROOT(), "src", "net", "http")
 
 func TestEncodeDecodePackage(t *testing.T) {
-	// Verify that we can encode and decode the Go files in this directory.
-	p, err := packageForDir(".", true)
+	p, err := packageForDir(packageToTest, true)
 	if err != nil {
 		t.Fatal(err)
 	}
-
+	var want, got bytes.Buffer
+	printPackage(&want, p)
 	data, err := p.Encode(context.Background())
 	if err != nil {
 		t.Fatal(err)
@@ -41,12 +41,11 @@
 	if err != nil {
 		t.Fatal(err)
 	}
-	data2, err := p2.Encode(context.Background())
-	if err != nil {
-		t.Fatal(err)
-	}
-	if !bytes.Equal(data, data2) {
-		t.Fatal("datas unequal")
+	printPackage(&got, p2)
+	// Diff the textual output of printPackage, because cmp.Diff takes too long
+	// on the Packages themselves.
+	if diff := cmp.Diff(want.String(), got.String()); diff != "" {
+		t.Errorf("package differs after decoding (-want, +got):\n%s", diff)
 	}
 }
 
@@ -133,29 +132,6 @@
 	}
 }
 
-func TestFastEncode(t *testing.T) {
-	p, err := packageForDir(packageToTest, true)
-	if err != nil {
-		t.Fatal(err)
-	}
-	var want, got bytes.Buffer
-	printPackage(&want, p)
-	data, err := p.Encode(experiment.NewContext(context.Background(), internal.ExperimentFasterDecoding))
-	if err != nil {
-		t.Fatal(err)
-	}
-	p2, err := DecodePackage(data)
-	if err != nil {
-		t.Fatal(err)
-	}
-	printPackage(&got, p2)
-	// Diff the textual output of printPackage, because cmp.Diff takes too long
-	// on the Packages themselves.
-	if diff := cmp.Diff(want.String(), got.String()); diff != "" {
-		t.Errorf("package differs after decoding (-want, +got):\n%s", diff)
-	}
-}
-
 // printPackage outputs a human-readable form of p to w, deterministically. (The
 // ast.Fprint function does not print ASTs deterministically: it is subject to
 // random-order map iteration.) The output is designed to be diffed.
@@ -345,3 +321,28 @@
 	})
 	return err
 }
+
+func (p *Package) gobEncode() (_ []byte, err error) {
+	if p.renderCalled {
+		return nil, errors.New("can't Encode after Render")
+	}
+
+	for _, f := range p.Files {
+		removeCycles(f)
+	}
+
+	var buf bytes.Buffer
+	io.WriteString(&buf, gobEncodingType)
+	enc := gob.NewEncoder(&buf)
+	// Encode the fset using the Write method it provides.
+	if err := p.Fset.Write(enc.Encode); err != nil {
+		return nil, fmt.Errorf("p.Fset.Write: %v", err)
+	}
+	if err := enc.Encode(p.encPackage); err != nil {
+		return nil, fmt.Errorf("enc.Encode: %v", err)
+	}
+	for _, f := range p.Files {
+		fixupObjects(f)
+	}
+	return buf.Bytes(), nil
+}
diff --git a/internal/godoc/render_test.go b/internal/godoc/render_test.go
index c9b518b..a2d3958 100644
--- a/internal/godoc/render_test.go
+++ b/internal/godoc/render_test.go
@@ -12,8 +12,6 @@
 
 	"github.com/google/go-cmp/cmp"
 	"github.com/google/safehtml/template"
-	"golang.org/x/pkgsite/internal"
-	"golang.org/x/pkgsite/internal/experiment"
 	"golang.org/x/pkgsite/internal/godoc/dochtml"
 	"golang.org/x/pkgsite/internal/source"
 	"golang.org/x/pkgsite/internal/testing/sample"
@@ -24,15 +22,6 @@
 func TestRender(t *testing.T) {
 	dochtml.LoadTemplates(templateSource)
 	ctx := context.Background()
-	t.Run("gob", func(t *testing.T) {
-		testRender(t, ctx)
-	})
-	t.Run("fast", func(t *testing.T) {
-		testRender(t, experiment.NewContext(ctx, internal.ExperimentFasterDecoding))
-	})
-}
-
-func testRender(t *testing.T, ctx context.Context) {
 	si := source.NewGitHubInfo(sample.ModulePath, "", "abcde")
 	mi := &ModuleInfo{
 		ModulePath:      sample.ModulePath,