From 0434ca9ce87eb06c6b8ba42fa09eaee0dda8d381 Mon Sep 17 00:00:00 2001 From: Cherry Mui Date: Thu, 16 Nov 2023 01:01:58 -0500 Subject: [PATCH] reflect: uncomment allocation test We no longer force Value content to escape and the compiler's escape analysis can handle it now. Change-Id: I0628f3241e6ef37dce710c2394725e280790479a Reviewed-on: https://go-review.googlesource.com/c/go/+/542975 LUCI-TryBot-Result: Go LUCI Reviewed-by: David Chase --- src/reflect/all_test.go | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/reflect/all_test.go b/src/reflect/all_test.go index bece56f7e7..71969106e4 100644 --- a/src/reflect/all_test.go +++ b/src/reflect/all_test.go @@ -3503,16 +3503,24 @@ func TestAllocations(t *testing.T) { var i any var v Value - // We can uncomment this when compiler escape analysis - // is good enough to see that the integer assigned to i - // does not escape and therefore need not be allocated. - // - // i = 42 + j - // v = ValueOf(i) - // if int(v.Int()) != 42+j { - // panic("wrong int") - // } - + i = 42 + j + v = ValueOf(i) + if int(v.Int()) != 42+j { + panic("wrong int") + } + }) + noAlloc(t, 100, func(j int) { + var i any + var v Value + i = [3]int{j, j, j} + v = ValueOf(i) + if v.Len() != 3 { + panic("wrong length") + } + }) + noAlloc(t, 100, func(j int) { + var i any + var v Value i = func(j int) int { return j } v = ValueOf(i) if v.Interface().(func(int) int)(j) != j { -- 2.50.0