]> Cypherpunks repositories - gostls13.git/commitdiff
reflect: uncomment allocation test
authorCherry Mui <cherryyz@google.com>
Thu, 16 Nov 2023 06:01:58 +0000 (01:01 -0500)
committerCherry Mui <cherryyz@google.com>
Thu, 16 Nov 2023 19:25:34 +0000 (19:25 +0000)
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 <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
src/reflect/all_test.go

index bece56f7e73b06c670442b811ad8819cf881477f..71969106e495004ac1024f5e27c9dc24c755c2ee 100644 (file)
@@ -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 {