Skip to content

Commit

Permalink
Try reducing the closure
Browse files Browse the repository at this point in the history
  • Loading branch information
rabbbit committed Jul 28, 2023
1 parent 2290333 commit fc1fa60
Showing 1 changed file with 65 additions and 65 deletions.
130 changes: 65 additions & 65 deletions field.go
Original file line number Diff line number Diff line change
Expand Up @@ -421,260 +421,260 @@ func Any(key string, value interface{}) Field {
// To work around go compiler assigning unreasonably large space on stack
// (4kb, one `Field` per arm of the switch statement) which can trigger
// performance degradation if `Any` is used in a brand new goroutine.
var f func() Field
var f func(key string) Field
switch val := value.(type) {
case zapcore.ObjectMarshaler:
f = func() Field {
f = func(key string) Field {
return Object(key, val)
}
case zapcore.ArrayMarshaler:
f = func() Field {
f = func(key string) Field {
return Array(key, val)
}
case bool:
f = func() Field {
f = func(key string) Field {
return Bool(key, val)
}
case *bool:
f = func() Field {
f = func(key string) Field {
return Boolp(key, val)
}
case []bool:
f = func() Field {
f = func(key string) Field {
return Bools(key, val)
}
case complex128:
f = func() Field {
f = func(key string) Field {
return Complex128(key, val)
}
case *complex128:
f = func() Field {
f = func(key string) Field {
return Complex128p(key, val)
}
case []complex128:
f = func() Field {
f = func(key string) Field {
return Complex128s(key, val)
}
case complex64:
f = func() Field {
f = func(key string) Field {
return Complex64(key, val)
}
case *complex64:
f = func() Field {
f = func(key string) Field {
return Complex64p(key, val)
}
case []complex64:
f = func() Field {
f = func(key string) Field {
return Complex64s(key, val)
}
case float64:
f = func() Field {
f = func(key string) Field {
return Float64(key, val)
}
case *float64:
f = func() Field {
f = func(key string) Field {
return Float64p(key, val)
}
case []float64:
f = func() Field {
f = func(key string) Field {
return Float64s(key, val)
}
case float32:
f = func() Field {
f = func(key string) Field {
return Float32(key, val)
}
case *float32:
f = func() Field {
f = func(key string) Field {
return Float32p(key, val)
}
case []float32:
f = func() Field {
f = func(key string) Field {
return Float32s(key, val)
}
case int:
f = func() Field {
f = func(key string) Field {
return Int(key, val)
}
case *int:
f = func() Field {
f = func(key string) Field {
return Intp(key, val)
}
case []int:
f = func() Field {
f = func(key string) Field {
return Ints(key, val)
}
case int64:
f = func() Field {
f = func(key string) Field {
return Int64(key, val)
}
case *int64:
f = func() Field {
f = func(key string) Field {
return Int64p(key, val)
}
case []int64:
f = func() Field {
f = func(key string) Field {
return Int64s(key, val)
}
case int32:
f = func() Field {
f = func(key string) Field {
return Int32(key, val)
}
case *int32:
f = func() Field {
f = func(key string) Field {
return Int32p(key, val)
}
case []int32:
f = func() Field {
f = func(key string) Field {
return Int32s(key, val)
}
case int16:
f = func() Field {
f = func(key string) Field {
return Int16(key, val)
}
case *int16:
f = func() Field {
f = func(key string) Field {
return Int16p(key, val)
}
case []int16:
f = func() Field {
f = func(key string) Field {
return Int16s(key, val)
}
case int8:
f = func() Field {
f = func(key string) Field {
return Int8(key, val)
}
case *int8:
f = func() Field {
f = func(key string) Field {
return Int8p(key, val)
}
case []int8:
f = func() Field {
f = func(key string) Field {
return Int8s(key, val)
}
case string:
f = func() Field {
f = func(key string) Field {
return String(key, val)
}
case *string:
f = func() Field {
f = func(key string) Field {
return Stringp(key, val)
}
case []string:
f = func() Field {
f = func(key string) Field {
return Strings(key, val)
}
case uint:
f = func() Field {
f = func(key string) Field {
return Uint(key, val)
}
case *uint:
f = func() Field {
f = func(key string) Field {
return Uintp(key, val)
}
case []uint:
f = func() Field {
f = func(key string) Field {
return Uints(key, val)
}
case uint64:
f = func() Field {
f = func(key string) Field {
return Uint64(key, val)
}
case *uint64:
f = func() Field {
f = func(key string) Field {
return Uint64p(key, val)
}
case []uint64:
f = func() Field {
f = func(key string) Field {
return Uint64s(key, val)
}
case uint32:
f = func() Field {
f = func(key string) Field {
return Uint32(key, val)
}
case *uint32:
f = func() Field {
f = func(key string) Field {
return Uint32p(key, val)
}
case []uint32:
f = func() Field {
f = func(key string) Field {
return Uint32s(key, val)
}
case uint16:
f = func() Field {
f = func(key string) Field {
return Uint16(key, val)
}
case *uint16:
f = func() Field {
f = func(key string) Field {
return Uint16p(key, val)
}
case []uint16:
f = func() Field {
f = func(key string) Field {
return Uint16s(key, val)
}
case uint8:
f = func() Field {
f = func(key string) Field {
return Uint8(key, val)
}
case *uint8:
f = func() Field {
f = func(key string) Field {
return Uint8p(key, val)
}
case []byte:
f = func() Field {
f = func(key string) Field {
return Binary(key, val)
}
case uintptr:
f = func() Field {
f = func(key string) Field {
return Uintptr(key, val)
}
case *uintptr:
f = func() Field {
f = func(key string) Field {
return Uintptrp(key, val)
}
case []uintptr:
f = func() Field {
f = func(key string) Field {
return Uintptrs(key, val)
}
case time.Time:
f = func() Field {
f = func(key string) Field {
return Time(key, val)
}
case *time.Time:
f = func() Field {
f = func(key string) Field {
return Timep(key, val)
}
case []time.Time:
f = func() Field {
f = func(key string) Field {
return Times(key, val)
}
case time.Duration:
f = func() Field {
f = func(key string) Field {
return Duration(key, val)
}
case *time.Duration:
f = func() Field {
f = func(key string) Field {
return Durationp(key, val)
}
case []time.Duration:
f = func() Field {
f = func(key string) Field {
return Durations(key, val)
}
case error:
f = func() Field {
f = func(key string) Field {
return NamedError(key, val)
}
case []error:
f = func() Field {
f = func(key string) Field {
return Errors(key, val)
}
case fmt.Stringer:
f = func() Field {
f = func(key string) Field {
return Stringer(key, val)
}
default:
f = func() Field {
f = func(key string) Field {
return Reflect(key, val)
}
}
return f()
return f(key)
}

0 comments on commit fc1fa60

Please sign in to comment.