From a5bf45e389fe14bce859d007c1cd3b59ea6a6bb1 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 12 Aug 2009 13:19:27 -0700 Subject: [PATCH] convert gob to whole-package compilation. had to reorder some init code. R=r DELTA=136 (15 added, 110 deleted, 11 changed) OCL=33071 CL=33102 --- src/pkg/gob/Makefile | 87 ++++--------------------------------- src/pkg/gob/codec_test.go | 1 - src/pkg/gob/decode.go | 6 +-- src/pkg/gob/decoder.go | 1 - src/pkg/gob/encode.go | 3 -- src/pkg/gob/encoder.go | 1 - src/pkg/gob/encoder_test.go | 1 - src/pkg/gob/type.go | 46 ++++++++------------ src/pkg/gob/type_test.go | 1 - 9 files changed, 26 insertions(+), 121 deletions(-) diff --git a/src/pkg/gob/Makefile b/src/pkg/gob/Makefile index 3534430c531..1a77252f743 100644 --- a/src/pkg/gob/Makefile +++ b/src/pkg/gob/Makefile @@ -2,85 +2,14 @@ # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. - -# DO NOT EDIT. Automatically generated by gobuild. -# gobuild -m >Makefile - -D= - include $(GOROOT)/src/Make.$(GOARCH) -AR=gopack -default: packages +TARG=gob +GOFILES=\ + decode.go\ + decoder.go\ + encode.go\ + encoder.go\ + type.go\ -clean: - rm -rf *.[$(OS)] *.a [$(OS)].out _obj - -test: packages - gotest - -coverage: packages - gotest - 6cov -g $$(pwd) | grep -v '_test\.go:' - -%.$O: %.go - $(GC) -I_obj $*.go - -%.$O: %.c - $(CC) $*.c - -%.$O: %.s - $(AS) $*.s - -O1=\ - type.$O\ - -O2=\ - encode.$O\ - -O3=\ - decode.$O\ - encoder.$O\ - -O4=\ - decoder.$O\ - - -phases: a1 a2 a3 a4 -_obj$D/gob.a: phases - -a1: $(O1) - $(AR) grc _obj$D/gob.a type.$O - rm -f $(O1) - -a2: $(O2) - $(AR) grc _obj$D/gob.a encode.$O - rm -f $(O2) - -a3: $(O3) - $(AR) grc _obj$D/gob.a decode.$O encoder.$O - rm -f $(O3) - -a4: $(O4) - $(AR) grc _obj$D/gob.a decoder.$O - rm -f $(O4) - - -newpkg: clean - mkdir -p _obj$D - $(AR) grc _obj$D/gob.a - -$(O1): newpkg -$(O2): a1 -$(O3): a2 -$(O4): a3 -$(O5): a4 - -nuke: clean - rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/gob.a - -packages: _obj$D/gob.a - -install: packages - test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D - cp _obj$D/gob.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/gob.a +include $(GOROOT)/src/Make.pkg diff --git a/src/pkg/gob/codec_test.go b/src/pkg/gob/codec_test.go index 9ad3b472786..a59621eb96e 100644 --- a/src/pkg/gob/codec_test.go +++ b/src/pkg/gob/codec_test.go @@ -6,7 +6,6 @@ package gob import ( "bytes"; - "gob"; "math"; "os"; "reflect"; diff --git a/src/pkg/gob/decode.go b/src/pkg/gob/decode.go index f790a70c2f9..ce4bc0b970a 100644 --- a/src/pkg/gob/decode.go +++ b/src/pkg/gob/decode.go @@ -9,7 +9,6 @@ package gob import ( "bytes"; - "gob"; "io"; "math"; "os"; @@ -40,7 +39,7 @@ func newDecodeState(b *bytes.Buffer) *decodeState { } func overflow(name string) os.ErrorString { - return os.ErrorString(`value for "` + name + `" out of range`); + return os.ErrorString(`value for "` + name + `" out of range`); } // decodeUintReader reads an encoded unsigned integer from an io.Reader. @@ -512,9 +511,6 @@ var decIgnoreOpMap = map[typeId] decOp { tString: ignoreUint8Array, } -func getDecEnginePtr(wireId typeId, rt reflect.Type) (enginePtr **decEngine, err os.Error) -func getIgnoreEnginePtr(wireId typeId) (enginePtr **decEngine, err os.Error) - // Return the decoding op for the base type under rt and // the indirection count to reach it. func decOpFor(wireId typeId, rt reflect.Type, name string) (decOp, int, os.Error) { diff --git a/src/pkg/gob/decoder.go b/src/pkg/gob/decoder.go index 7e0c939300c..9e8aa9c3522 100644 --- a/src/pkg/gob/decoder.go +++ b/src/pkg/gob/decoder.go @@ -6,7 +6,6 @@ package gob import ( "bytes"; - "gob"; "io"; "os"; "reflect"; diff --git a/src/pkg/gob/encode.go b/src/pkg/gob/encode.go index 1af79b1fdbb..332c3d6b8d3 100644 --- a/src/pkg/gob/encode.go +++ b/src/pkg/gob/encode.go @@ -6,7 +6,6 @@ package gob import ( "bytes"; - "gob"; "io"; "math"; "os"; @@ -335,8 +334,6 @@ var encOpMap = map[reflect.Type] encOp { valueKind("x"): encString, } -func getEncEngine(rt reflect.Type) (*encEngine, os.Error) - // Return the encoding op for the base type under rt and // the indirection count to reach it. func encOpFor(rt reflect.Type) (encOp, int, os.Error) { diff --git a/src/pkg/gob/encoder.go b/src/pkg/gob/encoder.go index e3ee8b3cb12..2d84028aaf2 100644 --- a/src/pkg/gob/encoder.go +++ b/src/pkg/gob/encoder.go @@ -183,7 +183,6 @@ package gob import ( "bytes"; - "gob"; "io"; "os"; "reflect"; diff --git a/src/pkg/gob/encoder_test.go b/src/pkg/gob/encoder_test.go index 6033fbb3fef..534816fc849 100644 --- a/src/pkg/gob/encoder_test.go +++ b/src/pkg/gob/encoder_test.go @@ -6,7 +6,6 @@ package gob import ( "bytes"; - "gob"; "io"; "os"; "reflect"; diff --git a/src/pkg/gob/type.go b/src/pkg/gob/type.go index 585d4f7472d..ff3cd6bc5bf 100644 --- a/src/pkg/gob/type.go +++ b/src/pkg/gob/type.go @@ -104,16 +104,25 @@ func (t *commonType) Name() string { return t.name } -// Basic type identifiers, predefined. -var tBool typeId -var tInt typeId -var tUint typeId -var tFloat typeId -var tString typeId -var tBytes typeId +// Create and check predefined types +// The string for tBytes is "bytes" not "[]byte" to signify its specialness. + +var tBool = bootstrapType("bool", false, 1) +var tInt = bootstrapType("int", int(0), 2) +var tUint = bootstrapType("uint", uint(0), 3) +var tFloat = bootstrapType("float", float64(0), 4) +var tBytes = bootstrapType("bytes", make([]byte, 0), 5) +var tString = bootstrapType("string", "", 6) // Predefined because it's needed by the Decoder -var tWireType typeId +var tWireType = getTypeInfoNoError(reflect.Typeof(wireType{})).id + +func init() { + checkId(7, tWireType); + checkId(8, getTypeInfoNoError(reflect.Typeof(structType{})).id); + checkId(9, getTypeInfoNoError(reflect.Typeof(commonType{})).id); + checkId(10, getTypeInfoNoError(reflect.Typeof(fieldType{})).id); +} // Array type type arrayType struct { @@ -201,9 +210,6 @@ func newStructType(name string) *structType { return s; } -// Construction -func getType(name string, rt reflect.Type) (gobType, os.Error) - // Step through the indirections on a type to discover the base type. // Return the number of indirections. func indirect(t reflect.Type) (rt reflect.Type, count int) { @@ -367,8 +373,6 @@ func (w *wireType) name() string { return w.s.name } -type decEngine struct // defined in decode.go -type encEngine struct // defined in encode.go type typeInfo struct { id typeId; encoder *encEngine; @@ -407,19 +411,3 @@ func getTypeInfoNoError(rt reflect.Type) *typeInfo { } return t } - -func init() { - // Create and check predefined types - tBool = bootstrapType("bool", false, 1); - tInt = bootstrapType("int", int(0), 2); - tUint = bootstrapType("uint", uint(0), 3); - tFloat = bootstrapType("float", float64(0), 4); - // The string for tBytes is "bytes" not "[]byte" to signify its specialness. - tBytes = bootstrapType("bytes", make([]byte, 0), 5); - tString= bootstrapType("string", "", 6); - tWireType = getTypeInfoNoError(reflect.Typeof(wireType{})).id; - checkId(7, tWireType); - checkId(8, getTypeInfoNoError(reflect.Typeof(structType{})).id); - checkId(9, getTypeInfoNoError(reflect.Typeof(commonType{})).id); - checkId(10, getTypeInfoNoError(reflect.Typeof(fieldType{})).id); -} diff --git a/src/pkg/gob/type_test.go b/src/pkg/gob/type_test.go index b86fffa21aa..7c9a9ba38e0 100644 --- a/src/pkg/gob/type_test.go +++ b/src/pkg/gob/type_test.go @@ -5,7 +5,6 @@ package gob import ( - "gob"; "os"; "reflect"; "testing";