Commit a5bf45e3 authored by Russ Cox's avatar Russ Cox

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
parent b04ac108
......@@ -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
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
TARG=gob
GOFILES=\
decode.go\
decoder.go\
encode.go\
encoder.go\
type.go\
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
......@@ -6,7 +6,6 @@ package gob
import (
"bytes";
"gob";
"math";
"os";
"reflect";
......
......@@ -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) {
......
......@@ -6,7 +6,6 @@ package gob
import (
"bytes";
"gob";
"io";
"os";
"reflect";
......
......@@ -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) {
......
......@@ -183,7 +183,6 @@ package gob
import (
"bytes";
"gob";
"io";
"os";
"reflect";
......
......@@ -6,7 +6,6 @@ package gob
import (
"bytes";
"gob";
"io";
"os";
"reflect";
......
......@@ -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);
}
......@@ -5,7 +5,6 @@
package gob
import (
"gob";
"os";
"reflect";
"testing";
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment