diff options
author | Ondřej Surý <ondrej@sury.org> | 2011-02-14 13:23:51 +0100 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2011-02-14 13:23:51 +0100 |
commit | 758ff64c69e34965f8af5b2d6ffd65e8d7ab2150 (patch) | |
tree | 6d6b34f8c678862fe9b56c945a7b63f68502c245 /src/pkg/exp/eval | |
parent | 3e45412327a2654a77944249962b3652e6142299 (diff) | |
download | golang-upstream/2011-02-01.1.tar.gz |
Imported Upstream version 2011-02-01.1upstream/2011-02-01.1
Diffstat (limited to 'src/pkg/exp/eval')
-rw-r--r-- | src/pkg/exp/eval/Makefile | 2 | ||||
-rw-r--r-- | src/pkg/exp/eval/bridge.go | 2 | ||||
-rw-r--r-- | src/pkg/exp/eval/eval_test.go | 6 | ||||
-rw-r--r-- | src/pkg/exp/eval/expr.go | 2 | ||||
-rwxr-xr-x | src/pkg/exp/eval/expr1.go | 37 | ||||
-rw-r--r-- | src/pkg/exp/eval/gen.go | 2 | ||||
-rw-r--r-- | src/pkg/exp/eval/stmt.go | 2 | ||||
-rw-r--r-- | src/pkg/exp/eval/type.go | 10 | ||||
-rw-r--r-- | src/pkg/exp/eval/value.go | 10 |
9 files changed, 10 insertions, 63 deletions
diff --git a/src/pkg/exp/eval/Makefile b/src/pkg/exp/eval/Makefile index 2b716b14c..872316cad 100644 --- a/src/pkg/exp/eval/Makefile +++ b/src/pkg/exp/eval/Makefile @@ -30,7 +30,7 @@ eval: main.$O gen.$O: gen.go $(GC) $< -generate: gen.$O $(pkgdir)/$(TARG).a +generate: gen.$O $(LD) -o $@ $<;\ ./generate > expr1.go;\ gofmt -w expr1.go diff --git a/src/pkg/exp/eval/bridge.go b/src/pkg/exp/eval/bridge.go index 3fa498d68..12835c4c0 100644 --- a/src/pkg/exp/eval/bridge.go +++ b/src/pkg/exp/eval/bridge.go @@ -43,8 +43,6 @@ func TypeFromNative(t reflect.Type) Type { et = Float32Type case reflect.Float64: et = Float64Type - case reflect.Float: - et = FloatType } case *reflect.IntType: switch t.Kind() { diff --git a/src/pkg/exp/eval/eval_test.go b/src/pkg/exp/eval/eval_test.go index 6bfe9089d..ff28cf1a9 100644 --- a/src/pkg/exp/eval/eval_test.go +++ b/src/pkg/exp/eval/eval_test.go @@ -173,8 +173,8 @@ func toValue(val interface{}) Value { return &r case *big.Int: return &idealIntV{val} - case float: - r := floatV(val) + case float64: + r := float64V(val) return &r case *big.Rat: return &idealFloatV{val} @@ -244,7 +244,7 @@ func newTestWorld() *World { def("i", IntType, 1) def("i2", IntType, 2) def("u", UintType, uint(1)) - def("f", FloatType, 1.0) + def("f", Float64Type, 1.0) def("s", StringType, "abc") def("t", NewStructType([]StructField{{"a", IntType, false}}), vstruct{1}) def("ai", NewArrayType(2, IntType), varray{1, 2}) diff --git a/src/pkg/exp/eval/expr.go b/src/pkg/exp/eval/expr.go index 70f63cf2d..e65f47617 100644 --- a/src/pkg/exp/eval/expr.go +++ b/src/pkg/exp/eval/expr.go @@ -1981,7 +1981,7 @@ func (a *expr) extractEffect(b *block, errOp string) (func(*Thread), *expr) { case tempType.isInteger(): tempType = IntType case tempType.isFloat(): - tempType = FloatType + tempType = Float64Type default: log.Panicf("unexpected ideal type %v", tempType) } diff --git a/src/pkg/exp/eval/expr1.go b/src/pkg/exp/eval/expr1.go index ae0cfc723..5d0e50000 100755 --- a/src/pkg/exp/eval/expr1.go +++ b/src/pkg/exp/eval/expr1.go @@ -9,8 +9,8 @@ import ( ) /* -* "As" functions. These retrieve evaluator functions from an -* expr, panicking if the requested evaluator has the wrong type. + * "As" functions. These retrieve evaluator functions from an + * expr, panicking if the requested evaluator has the wrong type. */ func (a *expr) asBool() func(*Thread) bool { return a.eval.(func(*Thread) bool) @@ -90,7 +90,7 @@ func (a *expr) asInterface() func(*Thread) interface{} { } /* -* Operator generators. + * Operator generators. */ func (a *expr) genConstant(v Value) { @@ -392,13 +392,6 @@ func (a *expr) genBinOpAdd(l, r *expr) { ret = l + r return float64(float64(ret)) } - case 0: - a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t) - var ret float64 - ret = l + r - return float64(float(ret)) - } default: log.Panicf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } @@ -528,13 +521,6 @@ func (a *expr) genBinOpSub(l, r *expr) { ret = l - r return float64(float64(ret)) } - case 0: - a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t) - var ret float64 - ret = l - r - return float64(float(ret)) - } default: log.Panicf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } @@ -657,13 +643,6 @@ func (a *expr) genBinOpMul(l, r *expr) { ret = l * r return float64(float64(ret)) } - case 0: - a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t) - var ret float64 - ret = l * r - return float64(float(ret)) - } default: log.Panicf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } @@ -822,16 +801,6 @@ func (a *expr) genBinOpQuo(l, r *expr) { ret = l / r return float64(float64(ret)) } - case 0: - a.eval = func(t *Thread) float64 { - l, r := lf(t), rf(t) - var ret float64 - if r == 0 { - t.Abort(DivByZeroError{}) - } - ret = l / r - return float64(float(ret)) - } default: log.Panicf("unexpected size %d in type %v at %v", t.Bits, t, a.pos) } diff --git a/src/pkg/exp/eval/gen.go b/src/pkg/exp/eval/gen.go index 81863dd6f..a2b119846 100644 --- a/src/pkg/exp/eval/gen.go +++ b/src/pkg/exp/eval/gen.go @@ -47,7 +47,7 @@ var ( } idealIntType = &Type{Repr: "*idealIntType", Value: "IdealIntValue", Native: "*big.Int", As: "asIdealInt", IsIdeal: true} floatType = &Type{Repr: "*floatType", Value: "FloatValue", Native: "float64", As: "asFloat", - Sizes: []Size{{32, "float32"}, {64, "float64"}, {0, "float"}}, + Sizes: []Size{{32, "float32"}, {64, "float64"}}, } idealFloatType = &Type{Repr: "*idealFloatType", Value: "IdealFloatValue", Native: "*big.Rat", As: "asIdealFloat", IsIdeal: true} stringType = &Type{Repr: "*stringType", Value: "StringValue", Native: "string", As: "asString"} diff --git a/src/pkg/exp/eval/stmt.go b/src/pkg/exp/eval/stmt.go index b9ffa94fa..77ff066d0 100644 --- a/src/pkg/exp/eval/stmt.go +++ b/src/pkg/exp/eval/stmt.go @@ -602,7 +602,7 @@ func (a *stmtCompiler) doAssign(lhs []ast.Expr, rhs []ast.Expr, tok token.Token, case ac.rmt.Elems[i].isInteger(): lt = IntType case ac.rmt.Elems[i].isFloat(): - lt = FloatType + lt = Float64Type default: log.Panicf("unexpected ideal type %v", rs[i].t) } diff --git a/src/pkg/exp/eval/type.go b/src/pkg/exp/eval/type.go index db77ab198..3f272ce4b 100644 --- a/src/pkg/exp/eval/type.go +++ b/src/pkg/exp/eval/type.go @@ -372,7 +372,6 @@ type floatType struct { var ( Float32Type = universe.DefineType("float32", universePos, &floatType{commonType{}, 32, "float32"}) Float64Type = universe.DefineType("float64", universePos, &floatType{commonType{}, 64, "float64"}) - FloatType = universe.DefineType("float", universePos, &floatType{commonType{}, 0, "float"}) ) func (t *floatType) compat(o Type, conv bool) bool { @@ -394,9 +393,6 @@ func (t *floatType) Zero() Value { case 64: res := float64V(0) return &res - case 0: - res := floatV(0) - return &res } panic("unexpected float bit count") } @@ -408,9 +404,6 @@ var minFloat64Val *big.Rat func (t *floatType) minVal() *big.Rat { bits := t.Bits - if bits == 0 { - bits = uint(8 * unsafe.Sizeof(float(0))) - } switch bits { case 32: return minFloat32Val @@ -423,9 +416,6 @@ func (t *floatType) minVal() *big.Rat { func (t *floatType) maxVal() *big.Rat { bits := t.Bits - if bits == 0 { - bits = uint(8 * unsafe.Sizeof(float(0))) - } switch bits { case 32: return maxFloat32Val diff --git a/src/pkg/exp/eval/value.go b/src/pkg/exp/eval/value.go index cace2fd37..daa691897 100644 --- a/src/pkg/exp/eval/value.go +++ b/src/pkg/exp/eval/value.go @@ -307,16 +307,6 @@ func (v *float64V) Get(*Thread) float64 { return float64(*v) } func (v *float64V) Set(t *Thread, x float64) { *v = float64V(x) } -type floatV float - -func (v *floatV) String() string { return fmt.Sprint(*v) } - -func (v *floatV) Assign(t *Thread, o Value) { *v = floatV(o.(FloatValue).Get(t)) } - -func (v *floatV) Get(*Thread) float64 { return float64(*v) } - -func (v *floatV) Set(t *Thread, x float64) { *v = floatV(x) } - /* * Ideal float */ |