| // Copyright 2023 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| package test | |
| import ( | |
| "testing" | |
| ) | |
| var output int | |
| type Object struct { | |
| Val int | |
| } | |
| func (o *Object) Initialize() *Object { | |
| o.Val = 5 | |
| return o | |
| } | |
| func (o *Object) Update() *Object { | |
| o.Val = o.Val + 1 | |
| return o | |
| } | |
| func TestAutotmpLoopDepth(t *testing.T) { | |
| f := func() { | |
| for i := 0; i < 10; i++ { | |
| var obj Object | |
| obj.Initialize().Update() | |
| output = obj.Val | |
| } | |
| } | |
| if n := testing.AllocsPerRun(10, f); n > 0 { | |
| t.Error("obj moved to heap") | |
| } | |
| } | |