From 615a52b95b5eedb94297f8de6e7838b16445bd16 Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Mon, 6 Jun 2016 12:38:19 -0700 Subject: cmd/compile: inline x, ok := y.(T) where T is a scalar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When T is a scalar, there are no runtime calls required, which makes this a clear win. encoding/binary: WriteInts-8 958ns ± 3% 864ns ± 2% -9.80% (p=0.000 n=15+15) This also considerably shrinks a core fmt routine: Before: "".(*pp).printArg t=1 size=3952 args=0x20 locals=0xf0 After: "".(*pp).printArg t=1 size=2624 args=0x20 locals=0x98 Unfortunately, I find it very hard to get stable numbers out of the fmt benchmarks due to thermal scaling. Change-Id: I1278006b030253bf8e48dc7631d18985cdaa143d Reviewed-on: https://go-review.googlesource.com/26659 Run-TryBot: Josh Bleecher Snyder Reviewed-by: Keith Randall --- test/interface/assertinline.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'test/interface/assertinline.go') diff --git a/test/interface/assertinline.go b/test/interface/assertinline.go index 227fe70d87..c3f3624570 100644 --- a/test/interface/assertinline.go +++ b/test/interface/assertinline.go @@ -43,7 +43,7 @@ func assertbig(x interface{}) complex128 { } func assertbig2(x interface{}) (complex128, bool) { - z, ok := x.(complex128) // ERROR "type assertion not inlined" + z, ok := x.(complex128) // ERROR "type assertion .scalar result. inlined" return z, ok } @@ -51,3 +51,17 @@ func assertbig2ok(x interface{}) (complex128, bool) { _, ok := x.(complex128) // ERROR "type assertion [(]ok only[)] inlined" return 0, ok } + +func assertslice(x interface{}) []int { + return x.([]int) // ERROR "type assertion not inlined" +} + +func assertslice2(x interface{}) ([]int, bool) { + z, ok := x.([]int) // ERROR "type assertion not inlined" + return z, ok +} + +func assertslice2ok(x interface{}) ([]int, bool) { + _, ok := x.([]int) // ERROR "type assertion [(]ok only[)] inlined" + return nil, ok +} -- cgit v1.3-5-g9baa