diff options
author | R?my Oudompheng <oudomphe@phare.normalesup.org> | 2012-06-04 23:31:31 +0200 |
---|---|---|
committer | R?my Oudompheng <oudomphe@phare.normalesup.org> | 2012-06-04 23:31:31 +0200 |
commit | 321b63af34d60e9439b0daf445d71689d0aae4cd (patch) | |
tree | f7d0fa5ab225a776d76a5e0c06660a13ff755f79 /test/rotate.go | |
parent | caf83bbc67ae5ff8e7c2c2676a1dd3429156e7ed (diff) | |
download | go-321b63af34d60e9439b0daf445d71689d0aae4cd.tar.gz |
test: avoid interface conversion in rotate.go
It is not necessary for the test to be effective and uses a
lot of resources in the compiler. Memory usage is halved and
compilation around 8x faster.
R=golang-dev, r, rsc, r
CC=golang-dev
http://codereview.appspot.com/6290044
Diffstat (limited to 'test/rotate.go')
-rw-r--r-- | test/rotate.go | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/test/rotate.go b/test/rotate.go index 30963ff6c..916407453 100644 --- a/test/rotate.go +++ b/test/rotate.go @@ -9,7 +9,7 @@ // Generate test of shift and rotate by constants. // The output is compiled and run. // -// The output takes around a minute or two to compile, link, and run +// The output takes around a gigabyte of memory to compile, link, and run // but it is only done during ./run, not in normal builds using run.go. package main @@ -19,6 +19,7 @@ import ( "flag" "fmt" "os" + "strings" ) func main() { @@ -30,6 +31,9 @@ func main() { fmt.Fprintf(b, "%s\n", prolog) for logBits := uint(3); logBits <= 6; logBits++ { + typ := fmt.Sprintf("int%d", 1<<logBits) + fmt.Fprint(b, strings.Replace(checkFunc, "XXX", typ, -1)) + fmt.Fprint(b, strings.Replace(checkFunc, "XXX", "u"+typ, -1)) for mode := 0; mode < 1<<2; mode++ { gentest(b, 1<<logBits, mode&1 != 0, mode&2 != 0) } @@ -67,7 +71,16 @@ var ( var nfail = 0 -func check(desc string, have, want interface{}) { +func main() { + if nfail > 0 { + fmt.Printf("BUG\n") + } +} + +` + +const checkFunc = ` +func check_XXX(desc string, have, want XXX) { if have != want { nfail++ fmt.Printf("%s = %T(%#x), want %T(%#x)\n", desc, have, have, want, want) @@ -77,13 +90,6 @@ func check(desc string, have, want interface{}) { } } } - -func main() { - if nfail > 0 { - fmt.Printf("BUG\n") - } -} - ` var ( @@ -144,8 +150,8 @@ func gentest(b *bufio.Writer, bits uint, unsigned, inverted bool) { result = fmt.Sprintf("%#x", v) } - fmt.Fprintf(b, "\tcheck(%q, %s, %s(%s))\n", expr1, expr1, typ, result) - fmt.Fprintf(b, "\tcheck(%q, %s, %s(%s))\n", expr2, expr2, typ, result) + fmt.Fprintf(b, "\tcheck_%s(%q, %s, %s(%s))\n", typ, expr1, expr1, typ, result) + fmt.Fprintf(b, "\tcheck_%s(%q, %s, %s(%s))\n", typ, expr2, expr2, typ, result) // Chop test into multiple functions so that there's not one // enormous function to compile/link. |