| // 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 main | |
| import "runtime" | |
| // extern void callGoWithVariousStack(int); | |
| import "C" | |
| func main() {} | |
| //export GoF | |
| func GoF(p int32) { | |
| runtime.GC() | |
| if p != 0 { | |
| panic("panic") | |
| } | |
| } | |
| //export callGoWithVariousStackAndGoFrame | |
| func callGoWithVariousStackAndGoFrame(p int32) { | |
| if p != 0 { | |
| defer func() { | |
| e := recover() | |
| if e == nil { | |
| panic("did not panic") | |
| } | |
| runtime.GC() | |
| }() | |
| } | |
| C.callGoWithVariousStack(C.int(p)); | |
| } | |