| // 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") |
| } |
| } |