Pass RuntimeContext to the first argument of all append functions

This commit is contained in:
Masaaki Goshima 2021-06-01 01:36:30 +09:00
parent 11437c8556
commit 69cca05981
7 changed files with 2321 additions and 2321 deletions

View File

@ -170,8 +170,8 @@ func marshalIndent(v interface{}, prefix, indent string, optFuncs ...EncodeOptio
func encode(ctx *encoder.RuntimeContext, v interface{}) ([]byte, error) { func encode(ctx *encoder.RuntimeContext, v interface{}) ([]byte, error) {
b := ctx.Buf[:0] b := ctx.Buf[:0]
if v == nil { if v == nil {
b = encoder.AppendNull(b) b = encoder.AppendNull(ctx, b)
b = encoder.AppendComma(b) b = encoder.AppendComma(ctx, b)
return b, nil return b, nil
} }
header := (*emptyInterface)(unsafe.Pointer(&v)) header := (*emptyInterface)(unsafe.Pointer(&v))
@ -198,8 +198,8 @@ func encode(ctx *encoder.RuntimeContext, v interface{}) ([]byte, error) {
func encodeNoEscape(ctx *encoder.RuntimeContext, v interface{}) ([]byte, error) { func encodeNoEscape(ctx *encoder.RuntimeContext, v interface{}) ([]byte, error) {
b := ctx.Buf[:0] b := ctx.Buf[:0]
if v == nil { if v == nil {
b = encoder.AppendNull(b) b = encoder.AppendNull(ctx, b)
b = encoder.AppendComma(b) b = encoder.AppendComma(ctx, b)
return b, nil return b, nil
} }
header := (*emptyInterface)(unsafe.Pointer(&v)) header := (*emptyInterface)(unsafe.Pointer(&v))
@ -225,8 +225,8 @@ func encodeNoEscape(ctx *encoder.RuntimeContext, v interface{}) ([]byte, error)
func encodeIndent(ctx *encoder.RuntimeContext, v interface{}, prefix, indent string) ([]byte, error) { func encodeIndent(ctx *encoder.RuntimeContext, v interface{}, prefix, indent string) ([]byte, error) {
b := ctx.Buf[:0] b := ctx.Buf[:0]
if v == nil { if v == nil {
b = encoder.AppendNull(b) b = encoder.AppendNull(ctx, b)
b = encoder.AppendCommaIndent(b) b = encoder.AppendCommaIndent(ctx, b)
return b, nil return b, nil
} }
header := (*emptyInterface)(unsafe.Pointer(&v)) header := (*emptyInterface)(unsafe.Pointer(&v))

File diff suppressed because it is too large Load Diff

View File

@ -269,7 +269,7 @@ func MapIterNext(it unsafe.Pointer)
//go:noescape //go:noescape
func MapLen(m unsafe.Pointer) int func MapLen(m unsafe.Pointer) int
func AppendByteSlice(b []byte, src []byte) []byte { func AppendByteSlice(_ *RuntimeContext, b []byte, src []byte) []byte {
if src == nil { if src == nil {
return append(b, `null`...) return append(b, `null`...)
} }
@ -287,7 +287,7 @@ func AppendByteSlice(b []byte, src []byte) []byte {
return append(append(b, buf...), '"') return append(append(b, buf...), '"')
} }
func AppendFloat32(b []byte, v float32) []byte { func AppendFloat32(_ *RuntimeContext, b []byte, v float32) []byte {
f64 := float64(v) f64 := float64(v)
abs := math.Abs(f64) abs := math.Abs(f64)
fmt := byte('f') fmt := byte('f')
@ -301,7 +301,7 @@ func AppendFloat32(b []byte, v float32) []byte {
return strconv.AppendFloat(b, f64, fmt, -1, 32) return strconv.AppendFloat(b, f64, fmt, -1, 32)
} }
func AppendFloat64(b []byte, v float64) []byte { func AppendFloat64(_ *RuntimeContext, b []byte, v float64) []byte {
abs := math.Abs(v) abs := math.Abs(v)
fmt := byte('f') fmt := byte('f')
// Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right. // Note: Must use float32 comparisons for underlying float32 value to get precise cutoffs right.
@ -313,7 +313,7 @@ func AppendFloat64(b []byte, v float64) []byte {
return strconv.AppendFloat(b, v, fmt, -1, 64) return strconv.AppendFloat(b, v, fmt, -1, 64)
} }
func AppendBool(b []byte, v bool) []byte { func AppendBool(_ *RuntimeContext, b []byte, v bool) []byte {
if v { if v {
return append(b, "true"...) return append(b, "true"...)
} }
@ -340,7 +340,7 @@ var (
} }
) )
func AppendNumber(b []byte, n json.Number) ([]byte, error) { func AppendNumber(_ *RuntimeContext, b []byte, n json.Number) ([]byte, error) {
if len(n) == 0 { if len(n) == 0 {
return append(b, '0'), nil return append(b, '0'), nil
} }
@ -367,7 +367,7 @@ func AppendMarshalJSON(ctx *RuntimeContext, code *Opcode, b []byte, v interface{
v = rv.Interface() v = rv.Interface()
marshaler, ok := v.(json.Marshaler) marshaler, ok := v.(json.Marshaler)
if !ok { if !ok {
return AppendNull(b), nil return AppendNull(ctx, b), nil
} }
bb, err := marshaler.MarshalJSON() bb, err := marshaler.MarshalJSON()
if err != nil { if err != nil {
@ -397,7 +397,7 @@ func AppendMarshalJSONIndent(ctx *RuntimeContext, code *Opcode, b []byte, v inte
v = rv.Interface() v = rv.Interface()
marshaler, ok := v.(json.Marshaler) marshaler, ok := v.(json.Marshaler)
if !ok { if !ok {
return AppendNull(b), nil return AppendNull(ctx, b), nil
} }
bb, err := marshaler.MarshalJSON() bb, err := marshaler.MarshalJSON()
if err != nil { if err != nil {
@ -433,7 +433,7 @@ func AppendMarshalText(ctx *RuntimeContext, code *Opcode, b []byte, v interface{
v = rv.Interface() v = rv.Interface()
marshaler, ok := v.(encoding.TextMarshaler) marshaler, ok := v.(encoding.TextMarshaler)
if !ok { if !ok {
return AppendNull(b), nil return AppendNull(ctx, b), nil
} }
bytes, err := marshaler.MarshalText() bytes, err := marshaler.MarshalText()
if err != nil { if err != nil {
@ -456,7 +456,7 @@ func AppendMarshalTextIndent(ctx *RuntimeContext, code *Opcode, b []byte, v inte
v = rv.Interface() v = rv.Interface()
marshaler, ok := v.(encoding.TextMarshaler) marshaler, ok := v.(encoding.TextMarshaler)
if !ok { if !ok {
return AppendNull(b), nil return AppendNull(ctx, b), nil
} }
bytes, err := marshaler.MarshalText() bytes, err := marshaler.MarshalText()
if err != nil { if err != nil {
@ -465,19 +465,19 @@ func AppendMarshalTextIndent(ctx *RuntimeContext, code *Opcode, b []byte, v inte
return AppendString(ctx, b, *(*string)(unsafe.Pointer(&bytes))), nil return AppendString(ctx, b, *(*string)(unsafe.Pointer(&bytes))), nil
} }
func AppendNull(b []byte) []byte { func AppendNull(_ *RuntimeContext, b []byte) []byte {
return append(b, "null"...) return append(b, "null"...)
} }
func AppendComma(b []byte) []byte { func AppendComma(_ *RuntimeContext, b []byte) []byte {
return append(b, ',') return append(b, ',')
} }
func AppendCommaIndent(b []byte) []byte { func AppendCommaIndent(_ *RuntimeContext, b []byte) []byte {
return append(b, ',', '\n') return append(b, ',', '\n')
} }
func AppendStructEnd(b []byte) []byte { func AppendStructEnd(_ *RuntimeContext, b []byte) []byte {
return append(b, '}', ',') return append(b, '}', ',')
} }

View File

@ -90,22 +90,22 @@ func ptrToInterface(code *encoder.Opcode, p uintptr) interface{} {
})) }))
} }
func appendBool(b []byte, v bool) []byte { func appendBool(_ *encoder.RuntimeContext, b []byte, v bool) []byte {
if v { if v {
return append(b, "true"...) return append(b, "true"...)
} }
return append(b, "false"...) return append(b, "false"...)
} }
func appendNull(b []byte) []byte { func appendNull(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, "null"...) return append(b, "null"...)
} }
func appendComma(b []byte) []byte { func appendComma(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, ',') return append(b, ',')
} }
func appendColon(b []byte) []byte { func appendColon(_ *encoder.RuntimeContext, b []byte) []byte {
last := len(b) - 1 last := len(b) - 1
b[last] = ':' b[last] = ':'
return b return b
@ -174,11 +174,11 @@ func appendArrayEnd(_ *encoder.RuntimeContext, _ *encoder.Opcode, b []byte) []by
return append(b, ',') return append(b, ',')
} }
func appendEmptyArray(b []byte) []byte { func appendEmptyArray(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, '[', ']', ',') return append(b, '[', ']', ',')
} }
func appendEmptyObject(b []byte) []byte { func appendEmptyObject(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, '{', '}', ',') return append(b, '{', '}', ',')
} }
@ -188,7 +188,7 @@ func appendObjectEnd(_ *encoder.RuntimeContext, _ *encoder.Opcode, b []byte) []b
return append(b, ',') return append(b, ',')
} }
func appendStructHead(b []byte) []byte { func appendStructHead(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, '{') return append(b, '{')
} }
@ -204,7 +204,7 @@ func appendStructEndSkipLast(ctx *encoder.RuntimeContext, code *encoder.Opcode,
last := len(b) - 1 last := len(b) - 1
if b[last] == ',' { if b[last] == ',' {
b[last] = '}' b[last] = '}'
return appendComma(b) return appendComma(ctx, b)
} }
return appendStructEnd(ctx, code, b) return appendStructEnd(ctx, code, b)
} }

File diff suppressed because it is too large Load Diff

View File

@ -92,22 +92,22 @@ func ptrToInterface(code *encoder.Opcode, p uintptr) interface{} {
})) }))
} }
func appendBool(b []byte, v bool) []byte { func appendBool(_ *encoder.RuntimeContext, b []byte, v bool) []byte {
if v { if v {
return append(b, "true"...) return append(b, "true"...)
} }
return append(b, "false"...) return append(b, "false"...)
} }
func appendNull(b []byte) []byte { func appendNull(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, "null"...) return append(b, "null"...)
} }
func appendComma(b []byte) []byte { func appendComma(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, ',', '\n') return append(b, ',', '\n')
} }
func appendColon(b []byte) []byte { func appendColon(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, ':', ' ') return append(b, ':', ' ')
} }
@ -175,11 +175,11 @@ func appendArrayEnd(ctx *encoder.RuntimeContext, code *encoder.Opcode, b []byte)
return append(b, ']', ',', '\n') return append(b, ']', ',', '\n')
} }
func appendEmptyArray(b []byte) []byte { func appendEmptyArray(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, '[', ']', ',', '\n') return append(b, '[', ']', ',', '\n')
} }
func appendEmptyObject(b []byte) []byte { func appendEmptyObject(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, '{', '}', ',', '\n') return append(b, '{', '}', ',', '\n')
} }
@ -198,7 +198,7 @@ func appendMarshalText(ctx *encoder.RuntimeContext, code *encoder.Opcode, b []by
return encoder.AppendMarshalTextIndent(ctx, code, b, v) return encoder.AppendMarshalTextIndent(ctx, code, b, v)
} }
func appendStructHead(b []byte) []byte { func appendStructHead(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, '{', '\n') return append(b, '{', '\n')
} }
@ -221,7 +221,7 @@ func appendStructEndSkipLast(ctx *encoder.RuntimeContext, code *encoder.Opcode,
b = appendIndent(ctx, b, code.Indent-1) b = appendIndent(ctx, b, code.Indent-1)
b = append(b, '}') b = append(b, '}')
} }
return appendComma(b) return appendComma(ctx, b)
} }
func restoreIndent(ctx *encoder.RuntimeContext, code *encoder.Opcode, ctxptr uintptr) { func restoreIndent(ctx *encoder.RuntimeContext, code *encoder.Opcode, ctxptr uintptr) {

File diff suppressed because it is too large Load Diff