func NewEntryCaller(pc uintptr, file string, line int, ok bool) EntryCaller {
	if !ok {
		return EntryCaller{}
	}
	return EntryCaller{
		PC:      pc,
		File:    file,
		Line:    line,
		Defined: true,
	}
}
NewEntryCaller makes an EntryCaller from the return signature of
runtime.Caller.
package zapcore
import (
	"fmt"
	"strings"
	"sync"
	"time"
	"go.uber.org/zap/internal/bufferpool"
	"go.uber.org/zap/internal/exit"
	"go.uber.org/multierr"
)
var (
	_cePool = sync.Pool{New: func() interface{} {
		return &CheckedEntry{
			cores: make([]Core, 4),
		}
	}}
)
func getCheckedEntry() *CheckedEntry {
	ce := _cePool.Get().(*CheckedEntry)
	ce.reset()
	return ce
}
func putCheckedEntry(ce *CheckedEntry) {
	if ce == nil {
		return
	}
	_cePool.Put(ce)
}