Files
llgo/runtime/internal/runtime/z_default.go
2025-09-08 14:13:25 +08:00

36 lines
795 B
Go

//go:build !baremetal
package runtime
import (
c "github.com/goplus/llgo/runtime/internal/clite"
"github.com/goplus/llgo/runtime/internal/clite/debug"
"github.com/goplus/llgo/runtime/internal/clite/pthread"
)
var (
printFormatPrefixInt = c.Str("%lld")
printFormatPrefixUInt = c.Str("%llu")
printFormatPrefixHex = c.Str("%llx")
)
// Rethrow rethrows a panic.
func Rethrow(link *Defer) {
if ptr := excepKey.Get(); ptr != nil {
if link == nil {
TracePanic(*(*any)(ptr))
debug.PrintStack(2)
c.Free(ptr)
c.Exit(2)
} else {
c.Siglongjmp(link.Addr, 1)
}
} else if link == nil && goexitKey.Get() != nil {
if pthread.Equal(mainThread, pthread.Self()) != 0 {
fatal("no goroutines (main called runtime.Goexit) - deadlock!")
c.Exit(2)
}
pthread.Exit(nil)
}
}