diff --git a/encode_compile.go b/encode_compile.go index 3cc1ff3..58b289a 100644 --- a/encode_compile.go +++ b/encode_compile.go @@ -3,6 +3,7 @@ package json import ( "encoding" "fmt" + "math" "reflect" "strings" "unsafe" @@ -52,6 +53,24 @@ func encodeCompileToGetCodeSetSlowPath(typeptr uintptr) (*opcodeSet, error) { return codeSet, nil } +func isIntOrUintType(typ *rtype) bool { + switch typ.Kind() { + case reflect.Int, + reflect.Int8, + reflect.Int16, + reflect.Int32, + reflect.Int64, + reflect.Uint, + reflect.Uint8, + reflect.Uint16, + reflect.Uint32, + reflect.Uint64, + reflect.Uintptr: + return true + } + return false +} + func encodeCompileHead(ctx *encodeCompileContext) (*opcode, error) { typ := ctx.typ switch { @@ -85,6 +104,8 @@ func encodeCompileHead(ctx *encodeCompileContext) (*opcode, error) { typ = orgType } else if isPtr && typ.Implements(marshalJSONType) { typ = orgType + } else if isPtr && isIntOrUintType(typ) { + //typ = orgType } code, err := encodeCompile(ctx.withType(typ)) if err != nil { @@ -393,62 +414,96 @@ func encodeCompileMarshalTextPtr(ctx *encodeCompileContext) (*opcode, error) { return code, nil } +const intSize = 32 << (^uint(0) >> 63) + func encodeCompileInt(ctx *encodeCompileContext) (*opcode, error) { code := newOpCode(ctx, opInt) + switch intSize { + case 32: + code.mask = math.MaxUint32 + code.rshiftNum = 31 + default: + code.mask = math.MaxUint64 + code.rshiftNum = 63 + } ctx.incIndex() return code, nil } func encodeCompileInt8(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opInt8) + code := newOpCode(ctx, opInt) + code.mask = math.MaxUint8 + code.rshiftNum = 7 ctx.incIndex() return code, nil } func encodeCompileInt16(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opInt16) + code := newOpCode(ctx, opInt) + code.mask = math.MaxUint16 + code.rshiftNum = 15 ctx.incIndex() return code, nil } func encodeCompileInt32(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opInt32) + code := newOpCode(ctx, opInt) + code.mask = math.MaxUint32 + code.rshiftNum = 31 ctx.incIndex() return code, nil } func encodeCompileInt64(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opInt64) + code := newOpCode(ctx, opInt) + code.mask = math.MaxUint64 + code.rshiftNum = 63 ctx.incIndex() return code, nil } func encodeCompileUint(ctx *encodeCompileContext) (*opcode, error) { code := newOpCode(ctx, opUint) + switch intSize { + case 32: + code.mask = math.MaxUint32 + code.rshiftNum = 31 + default: + code.mask = math.MaxUint64 + code.rshiftNum = 63 + } ctx.incIndex() return code, nil } func encodeCompileUint8(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opUint8) + code := newOpCode(ctx, opUint) + code.mask = math.MaxUint8 + code.rshiftNum = 7 ctx.incIndex() return code, nil } func encodeCompileUint16(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opUint16) + code := newOpCode(ctx, opUint) + code.mask = math.MaxUint16 + code.rshiftNum = 15 ctx.incIndex() return code, nil } func encodeCompileUint32(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opUint32) + code := newOpCode(ctx, opUint) + code.mask = math.MaxUint32 + code.rshiftNum = 31 ctx.incIndex() return code, nil } func encodeCompileUint64(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opUint64) + code := newOpCode(ctx, opUint) + code.mask = math.MaxUint64 + code.rshiftNum = 63 ctx.incIndex() return code, nil } @@ -460,19 +515,19 @@ func encodeCompileIntString(ctx *encodeCompileContext) (*opcode, error) { } func encodeCompileInt8String(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opInt8String) + code := newOpCode(ctx, opIntString) ctx.incIndex() return code, nil } func encodeCompileInt16String(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opInt16String) + code := newOpCode(ctx, opIntString) ctx.incIndex() return code, nil } func encodeCompileInt32String(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opInt32String) + code := newOpCode(ctx, opIntString) ctx.incIndex() return code, nil } @@ -490,25 +545,25 @@ func encodeCompileUintString(ctx *encodeCompileContext) (*opcode, error) { } func encodeCompileUint8String(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opUint8String) + code := newOpCode(ctx, opUintString) ctx.incIndex() return code, nil } func encodeCompileUint16String(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opUint16String) + code := newOpCode(ctx, opUintString) ctx.incIndex() return code, nil } func encodeCompileUint32String(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opUint32String) + code := newOpCode(ctx, opUintString) ctx.incIndex() return code, nil } func encodeCompileUint64String(ctx *encodeCompileContext) (*opcode, error) { - code := newOpCode(ctx, opUint64String) + code := newOpCode(ctx, opUintString) ctx.incIndex() return code, nil } @@ -697,25 +752,12 @@ func encodeTypeToHeaderType(ctx *encodeCompileContext, code *opcode) opType { if ptrNum > 1 { switch code.next.op { case opInt: + c.mask = code.next.mask + c.rshiftNum = code.next.rshiftNum return opStructFieldHeadIntNPtr - case opInt8: - return opStructFieldHeadInt8NPtr - case opInt16: - return opStructFieldHeadInt16NPtr - case opInt32: - return opStructFieldHeadInt32NPtr - case opInt64: - return opStructFieldHeadInt64NPtr case opUint: + c.mask = code.next.mask return opStructFieldHeadUintNPtr - case opUint8: - return opStructFieldHeadUint8NPtr - case opUint16: - return opStructFieldHeadUint16NPtr - case opUint32: - return opStructFieldHeadUint32NPtr - case opUint64: - return opStructFieldHeadUint64NPtr case opFloat32: return opStructFieldHeadFloat32NPtr case opFloat64: @@ -728,25 +770,12 @@ func encodeTypeToHeaderType(ctx *encodeCompileContext, code *opcode) opType { } else { switch code.next.op { case opInt: + c.mask = code.next.mask + c.rshiftNum = code.next.rshiftNum return opStructFieldHeadIntPtr - case opInt8: - return opStructFieldHeadInt8Ptr - case opInt16: - return opStructFieldHeadInt16Ptr - case opInt32: - return opStructFieldHeadInt32Ptr - case opInt64: - return opStructFieldHeadInt64Ptr case opUint: + c.mask = code.next.mask return opStructFieldHeadUintPtr - case opUint8: - return opStructFieldHeadUint8Ptr - case opUint16: - return opStructFieldHeadUint16Ptr - case opUint32: - return opStructFieldHeadUint32Ptr - case opUint64: - return opStructFieldHeadUint64Ptr case opFloat32: return opStructFieldHeadFloat32Ptr case opFloat64: @@ -759,24 +788,8 @@ func encodeTypeToHeaderType(ctx *encodeCompileContext, code *opcode) opType { } case opInt: return opStructFieldHeadInt - case opInt8: - return opStructFieldHeadInt8 - case opInt16: - return opStructFieldHeadInt16 - case opInt32: - return opStructFieldHeadInt32 - case opInt64: - return opStructFieldHeadInt64 case opUint: return opStructFieldHeadUint - case opUint8: - return opStructFieldHeadUint8 - case opUint16: - return opStructFieldHeadUint16 - case opUint32: - return opStructFieldHeadUint32 - case opUint64: - return opStructFieldHeadUint64 case opFloat32: return opStructFieldHeadFloat32 case opFloat64: @@ -822,25 +835,12 @@ func encodeTypeToFieldType(ctx *encodeCompileContext, code *opcode) opType { if ptrNum > 1 { switch code.next.op { case opInt: + c.mask = code.next.mask + c.rshiftNum = code.next.rshiftNum return opStructFieldIntNPtr - case opInt8: - return opStructFieldInt8NPtr - case opInt16: - return opStructFieldInt16NPtr - case opInt32: - return opStructFieldInt32NPtr - case opInt64: - return opStructFieldInt64NPtr case opUint: + c.mask = code.next.mask return opStructFieldUintNPtr - case opUint8: - return opStructFieldUint8NPtr - case opUint16: - return opStructFieldUint16NPtr - case opUint32: - return opStructFieldUint32NPtr - case opUint64: - return opStructFieldUint64NPtr case opFloat32: return opStructFieldFloat32NPtr case opFloat64: @@ -853,25 +853,12 @@ func encodeTypeToFieldType(ctx *encodeCompileContext, code *opcode) opType { } else { switch code.next.op { case opInt: + c.mask = code.next.mask + c.rshiftNum = code.next.rshiftNum return opStructFieldIntPtr - case opInt8: - return opStructFieldInt8Ptr - case opInt16: - return opStructFieldInt16Ptr - case opInt32: - return opStructFieldInt32Ptr - case opInt64: - return opStructFieldInt64Ptr case opUint: + c.mask = code.next.mask return opStructFieldUintPtr - case opUint8: - return opStructFieldUint8Ptr - case opUint16: - return opStructFieldUint16Ptr - case opUint32: - return opStructFieldUint32Ptr - case opUint64: - return opStructFieldUint64Ptr case opFloat32: return opStructFieldFloat32Ptr case opFloat64: @@ -884,24 +871,8 @@ func encodeTypeToFieldType(ctx *encodeCompileContext, code *opcode) opType { } case opInt: return opStructFieldInt - case opInt8: - return opStructFieldInt8 - case opInt16: - return opStructFieldInt16 - case opInt32: - return opStructFieldInt32 - case opInt64: - return opStructFieldInt64 case opUint: return opStructFieldUint - case opUint8: - return opStructFieldUint8 - case opUint16: - return opStructFieldUint16 - case opUint32: - return opStructFieldUint32 - case opUint64: - return opStructFieldUint64 case opFloat32: return opStructFieldFloat32 case opFloat64: @@ -969,6 +940,8 @@ func encodeStructHeader(ctx *encodeCompileContext, fieldCode *opcode, valueCode fieldCode.indent-- op := encodeOptimizeStructHeader(ctx, valueCode, tag) fieldCode.op = op + fieldCode.mask = valueCode.mask + fieldCode.rshiftNum = valueCode.rshiftNum fieldCode.ptrNum = valueCode.ptrNum switch op { case opStructFieldHead, @@ -995,6 +968,8 @@ func encodeStructField(ctx *encodeCompileContext, fieldCode *opcode, valueCode * op := encodeOptimizeStructField(ctx, valueCode, tag) fieldCode.op = op fieldCode.ptrNum = valueCode.ptrNum + fieldCode.mask = valueCode.mask + fieldCode.rshiftNum = valueCode.rshiftNum switch op { case opStructField, opStructFieldSlice, diff --git a/encode_int.go b/encode_int.go index b53149c..d38132b 100644 --- a/encode_int.go +++ b/encode_int.go @@ -49,9 +49,7 @@ var intBELookup = [100]uint16{ var intLookup = [2]*[100]uint16{&intLELookup, &intBELookup} -func appendInt(b []byte, n int64) []byte { - return formatInteger(b, uint64(n), n < 0) -} +var appendInt = formatInteger func appendUint(b []byte, n uint64) []byte { return formatInteger(b, n, false) diff --git a/encode_opcode.go b/encode_opcode.go index 44f38c5..4cf6320 100644 --- a/encode_opcode.go +++ b/encode_opcode.go @@ -20,6 +20,8 @@ type opcode struct { anonymousKey bool // whether anonymous key root bool // whether root indent int // indent number + rshiftNum uint8 // use to take bit for judging whether negative integer or not + mask uint64 // mask for number idx uintptr // offset to access ptr headIdx uintptr // offset to access slice/struct head @@ -84,6 +86,8 @@ func (c *opcode) copy(codeMap map[uintptr]*opcode) *opcode { escapedKey: c.escapedKey, displayKey: c.displayKey, ptrNum: c.ptrNum, + mask: c.mask, + rshiftNum: c.rshiftNum, isTaggedKey: c.isTaggedKey, anonymousKey: c.anonymousKey, root: c.root, diff --git a/encode_vm.go b/encode_vm.go index 667b220..10ccaba 100644 --- a/encode_vm.go +++ b/encode_vm.go @@ -93,103 +93,12 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.next store(ctxptr, code.idx, ptrToPtr(ptr)) case opInt: - b = appendInt(b, int64(ptrToInt(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opInt8: - b = appendInt(b, int64(ptrToInt8(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opInt16: - b = appendInt(b, int64(ptrToInt16(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opInt32: - b = appendInt(b, int64(ptrToInt32(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opInt64: - b = appendInt(b, ptrToInt64(load(ctxptr, code.idx))) + u64 := ptrToUint64(load(ctxptr, code.idx)) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next case opUint: - b = appendUint(b, uint64(ptrToUint(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opUint8: - b = appendUint(b, uint64(ptrToUint8(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opUint16: - b = appendUint(b, uint64(ptrToUint16(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opUint32: - b = appendUint(b, uint64(ptrToUint32(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opUint64: - b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))) - b = encodeComma(b) - code = code.next - case opIntString: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opInt8String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opInt16String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opInt32String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opInt64String: - b = append(b, '"') - b = appendInt(b, ptrToInt64(load(ctxptr, code.idx))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUintString: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUint8String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUint16String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUint32String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUint64String: - b = append(b, '"') - b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))) - b = append(b, '"') + b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))&code.mask) b = encodeComma(b) code = code.next case opFloat32: @@ -696,7 +605,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, '{') b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -714,12 +624,13 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next } else { b = append(b, '{') - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.key...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, v>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -740,7 +651,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = append(b, '{') b = append(b, code.key...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -749,16 +661,18 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco p := load(ctxptr, code.idx) b = append(b, '{') b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next case opStructFieldPtrHeadOmitEmptyIntOnly, opStructFieldHeadOmitEmptyIntOnly: p := load(ctxptr, code.idx) b = append(b, '{') - v := int64(ptrToInt(p)) + u64 := ptrToUint64(p) + v := u64 & code.mask if v != 0 { b = append(b, code.key...) - b = appendInt(b, v) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -767,7 +681,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = append(b, '{') b = append(b, code.key...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -784,11 +699,12 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, '{') b = append(b, code.key...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } } b = encodeComma(b) @@ -804,10 +720,11 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next } else { b = append(b, '{') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p != 0 { b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -825,12 +742,13 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, '{') b = append(b, code.key...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } } @@ -853,7 +771,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next @@ -872,7 +791,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco p := load(ctxptr, code.idx) if p != 0 { b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -894,7 +814,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeComma(b) @@ -915,7 +836,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } } b = encodeComma(b) @@ -929,7 +851,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next } else { b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -944,12 +867,13 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if ptr == 0 { code = code.end.next } else { - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.key...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -967,7 +891,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, code.key...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -978,7 +903,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next } else { b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -987,12 +913,13 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if ptr == 0 { code = code.end.next } else { - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.key...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -1004,7 +931,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, code.key...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -1019,11 +947,12 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco break } b = append(b, code.key...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next @@ -1036,12 +965,13 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next break } - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { code = code.nextField } else { b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -1055,12 +985,13 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco break } b = append(b, code.key...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeComma(b) @@ -1079,7 +1010,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next @@ -1097,7 +1029,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.nextField } else { b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -1116,1755 +1049,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadInt8Only, opStructFieldHeadInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8Only, opStructFieldHeadOmitEmptyInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := int64(ptrToInt8(p)) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt8Only, opStructFieldHeadStringTagInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt8PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadInt8NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.key...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt8Only, opStructFieldAnonymousHeadInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt8Only, opStructFieldAnonymousHeadOmitEmptyInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt8Only, opStructFieldAnonymousHeadStringTagInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadInt16Only, opStructFieldHeadInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16Only, opStructFieldHeadOmitEmptyInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := int64(ptrToInt16(p)) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt16Only, opStructFieldHeadStringTagInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt16PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadInt16NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.key...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt16Only, opStructFieldAnonymousHeadInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt16Only, opStructFieldAnonymousHeadOmitEmptyInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt16Only, opStructFieldAnonymousHeadStringTagInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadInt32Only, opStructFieldHeadInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32Only, opStructFieldHeadOmitEmptyInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := int64(ptrToInt32(p)) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt32Only, opStructFieldHeadStringTagInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt32PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadInt32NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.key...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt32Only, opStructFieldAnonymousHeadInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt32Only, opStructFieldAnonymousHeadOmitEmptyInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt32Only, opStructFieldAnonymousHeadStringTagInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadInt64Only, opStructFieldHeadInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(p)) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64Only, opStructFieldHeadOmitEmptyInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := ptrToInt64(p) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt64Only, opStructFieldHeadStringTagInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(p)) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt64PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(p+code.offset)) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadInt64NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.key...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt64Only, opStructFieldAnonymousHeadInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt64Only, opStructFieldAnonymousHeadOmitEmptyInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt64Only, opStructFieldAnonymousHeadStringTagInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(p)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(p+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) + u64 := ptrToUint64(p + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeComma(b) @@ -2881,7 +1067,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, '{') b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeComma(b) code = code.next } @@ -2899,12 +1085,12 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next } else { b = append(b, '{') - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.key...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeComma(b) code = code.next } @@ -2925,7 +1111,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = append(b, '{') b = append(b, code.key...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -2934,13 +1120,13 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco p := load(ctxptr, code.idx) b = append(b, '{') b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeComma(b) code = code.next case opStructFieldPtrHeadOmitEmptyUintOnly, opStructFieldHeadOmitEmptyUintOnly: p := load(ctxptr, code.idx) b = append(b, '{') - v := uint64(ptrToUint(p)) + v := ptrToUint64(p) & code.mask if v != 0 { b = append(b, code.key...) b = appendUint(b, v) @@ -2952,7 +1138,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = append(b, '{') b = append(b, code.key...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -2969,11 +1155,11 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, '{') b = append(b, code.key...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } } b = encodeComma(b) @@ -2989,10 +1175,10 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next } else { b = append(b, '{') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p != 0 { b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeComma(b) } code = code.next @@ -3010,12 +1196,12 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, '{') b = append(b, code.key...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } } @@ -3038,7 +1224,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) } b = encodeComma(b) code = code.next @@ -3057,7 +1243,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco p := load(ctxptr, code.idx) if p != 0 { b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) b = encodeComma(b) } code = code.next @@ -3079,7 +1265,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) b = append(b, '"') } b = encodeComma(b) @@ -3100,7 +1286,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } } b = encodeComma(b) @@ -3114,7 +1300,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next } else { b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeComma(b) code = code.next } @@ -3129,12 +1315,12 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if ptr == 0 { code = code.end.next } else { - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.key...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeComma(b) code = code.next } @@ -3152,7 +1338,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, code.key...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -3163,7 +1349,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next } else { b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeComma(b) code = code.next } @@ -3172,12 +1358,12 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if ptr == 0 { code = code.end.next } else { - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.key...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeComma(b) code = code.next } @@ -3189,7 +1375,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco } else { b = append(b, code.key...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -3204,11 +1390,11 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco break } b = append(b, code.key...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeComma(b) code = code.next @@ -3221,12 +1407,12 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.end.next break } - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { code = code.nextField } else { b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeComma(b) code = code.next } @@ -3240,12 +1426,12 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco break } b = append(b, code.key...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeComma(b) @@ -3264,7 +1450,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) } b = encodeComma(b) code = code.next @@ -3282,7 +1468,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco code = code.nextField } else { b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) b = encodeComma(b) code = code.next } @@ -3301,1755 +1487,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadUint8Only, opStructFieldHeadUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8Only, opStructFieldHeadOmitEmptyUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := uint64(ptrToUint8(p)) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint8Only, opStructFieldHeadStringTagUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint8PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadUint8NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.key...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint8Only, opStructFieldAnonymousHeadUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint8Only, opStructFieldAnonymousHeadOmitEmptyUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint8Only, opStructFieldAnonymousHeadStringTagUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadUint16Only, opStructFieldHeadUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16Only, opStructFieldHeadOmitEmptyUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := uint64(ptrToUint16(p)) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint16Only, opStructFieldHeadStringTagUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint16PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadUint16NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.key...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint16Only, opStructFieldAnonymousHeadUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint16Only, opStructFieldAnonymousHeadOmitEmptyUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint16Only, opStructFieldAnonymousHeadStringTagUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadUint32Only, opStructFieldHeadUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32Only, opStructFieldHeadOmitEmptyUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := uint64(ptrToUint32(p)) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint32Only, opStructFieldHeadStringTagUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint32PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadUint32NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.key...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint32Only, opStructFieldAnonymousHeadUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint32Only, opStructFieldAnonymousHeadOmitEmptyUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint32Only, opStructFieldAnonymousHeadStringTagUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadUint64Only, opStructFieldHeadUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(p)) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64Only, opStructFieldHeadOmitEmptyUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := ptrToUint64(p) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint64Only, opStructFieldHeadStringTagUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(p)) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint64PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(p+code.offset)) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadUint64NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.key...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint64Only, opStructFieldAnonymousHeadUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint64Only, opStructFieldAnonymousHeadOmitEmptyUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint64Only, opStructFieldAnonymousHeadStringTagUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(p)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.key...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(p+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) b = append(b, '"') } b = encodeComma(b) @@ -7594,15 +4032,17 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco case opStructFieldInt: ptr := load(ctxptr, code.headIdx) b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next case opStructFieldOmitEmptyInt: ptr := load(ctxptr, code.headIdx) - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v != 0 { b = append(b, code.key...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -7610,7 +4050,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco ptr := load(ctxptr, code.headIdx) b = append(b, code.key...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -7621,7 +4062,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next @@ -7630,7 +4072,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco p := ptrToPtr(ptr + code.offset) if p != 0 { b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -7642,7 +4085,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeComma(b) @@ -7660,246 +4104,23 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldInt8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt8: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt8(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldInt8Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldInt16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt16: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt16(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldInt16Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldInt32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt32: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt32(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldInt32Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldInt64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt64: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt64(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldInt64Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(p)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) - b = append(b, '"') + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next case opStructFieldUint: ptr := load(ctxptr, code.headIdx) b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeComma(b) code = code.next case opStructFieldOmitEmptyUint: ptr := load(ctxptr, code.headIdx) - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v != 0 { b = append(b, code.key...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeComma(b) } code = code.next @@ -7907,7 +4128,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco ptr := load(ctxptr, code.headIdx) b = append(b, code.key...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -7918,7 +4139,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeComma(b) code = code.next @@ -7927,7 +4148,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco p := ptrToPtr(ptr + code.offset) if p != 0 { b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeComma(b) } code = code.next @@ -7939,231 +4160,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldUint8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint8: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint8(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldUint8Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldUint16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint16: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint16(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldUint16Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldUint32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint32: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint32(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldUint32Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldUint64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint64: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint64(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldUint64Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(p)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.key...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeComma(b) @@ -8656,15 +4653,17 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco case opStructEndInt: ptr := load(ctxptr, code.headIdx) b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = appendStructEnd(b) code = code.next case opStructEndOmitEmptyInt: ptr := load(ctxptr, code.headIdx) - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v != 0 { b = append(b, code.key...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = appendStructEnd(b) } else { last := len(b) - 1 @@ -8680,7 +4679,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco ptr := load(ctxptr, code.headIdx) b = append(b, code.key...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = appendStructEnd(b) code = code.next @@ -8691,7 +4691,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = appendStructEnd(b) code = code.next @@ -8700,7 +4701,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco p := ptrToPtr(ptr + code.offset) if p != 0 { b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = appendStructEnd(b) } else { last := len(b) - 1 @@ -8720,7 +4722,8 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = appendStructEnd(b) @@ -8738,378 +4741,23 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt8: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt8(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndInt8Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt8(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt8Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt8NPtr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt16: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt16(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndInt16Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt16(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt16Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt16NPtr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt32: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt32(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndInt32Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, int64(ptrToInt32(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt32Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt32NPtr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt64: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt64(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendInt(b, v) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndInt64Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendInt(b, ptrToInt64(p)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt64Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt64NPtr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = appendStructEnd(b) code = code.next case opStructEndUint: ptr := load(ctxptr, code.headIdx) b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = appendStructEnd(b) code = code.next case opStructEndOmitEmptyUint: ptr := load(ctxptr, code.headIdx) - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v != 0 { b = append(b, code.key...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = appendStructEnd(b) } else { last := len(b) - 1 @@ -9125,7 +4773,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco ptr := load(ctxptr, code.headIdx) b = append(b, code.key...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = appendStructEnd(b) code = code.next @@ -9136,7 +4784,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = appendStructEnd(b) code = code.next @@ -9145,7 +4793,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco p := ptrToPtr(ptr + code.offset) if p != 0 { b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = appendStructEnd(b) } else { last := len(b) - 1 @@ -9165,7 +4813,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = appendStructEnd(b) @@ -9183,363 +4831,7 @@ func encodeRun(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, opt Enco if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint8: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint8(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndUint8Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint8Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint8NPtr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint16: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint16(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndUint16Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint16Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint16NPtr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint32: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint32(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndUint32Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint32Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint32NPtr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint64: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint64(ptr + code.offset) - if v != 0 { - b = append(b, code.key...) - b = appendUint(b, v) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.key...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndUint64Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.key...) - b = appendUint(b, ptrToUint64(p)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint64Ptr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint64NPtr: - b = append(b, code.key...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = appendStructEnd(b) code = code.next diff --git a/encode_vm_escaped.go b/encode_vm_escaped.go index b0efc65..7bac7f0 100644 --- a/encode_vm_escaped.go +++ b/encode_vm_escaped.go @@ -27,103 +27,13 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.next store(ctxptr, code.idx, ptrToPtr(ptr)) case opInt: - b = appendInt(b, int64(ptrToInt(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opInt8: - b = appendInt(b, int64(ptrToInt8(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opInt16: - b = appendInt(b, int64(ptrToInt16(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opInt32: - b = appendInt(b, int64(ptrToInt32(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opInt64: - b = appendInt(b, ptrToInt64(load(ctxptr, code.idx))) + p := load(ctxptr, code.idx) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, (u64>>code.rshiftNum)&1 == 1) b = encodeComma(b) code = code.next case opUint: - b = appendUint(b, uint64(ptrToUint(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opUint8: - b = appendUint(b, uint64(ptrToUint8(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opUint16: - b = appendUint(b, uint64(ptrToUint16(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opUint32: - b = appendUint(b, uint64(ptrToUint32(load(ctxptr, code.idx)))) - b = encodeComma(b) - code = code.next - case opUint64: - b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))) - b = encodeComma(b) - code = code.next - case opIntString: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opInt8String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opInt16String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opInt32String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opInt64String: - b = append(b, '"') - b = appendInt(b, ptrToInt64(load(ctxptr, code.idx))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUintString: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUint8String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUint16String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUint32String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opUint64String: - b = append(b, '"') - b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))) - b = append(b, '"') + b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))&code.mask) b = encodeComma(b) code = code.next case opFloat32: @@ -627,7 +537,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, '{') b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -645,12 +556,13 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next } else { b = append(b, '{') - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, v>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -671,7 +583,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = append(b, '{') b = append(b, code.escapedKey...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -680,16 +593,18 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o p := load(ctxptr, code.idx) b = append(b, '{') b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next case opStructFieldPtrHeadOmitEmptyIntOnly, opStructFieldHeadOmitEmptyIntOnly: p := load(ctxptr, code.idx) b = append(b, '{') - v := int64(ptrToInt(p)) + u64 := ptrToUint64(p) + v := u64 & code.mask if v != 0 { b = append(b, code.escapedKey...) - b = appendInt(b, v) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -698,7 +613,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = append(b, '{') b = append(b, code.escapedKey...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -715,11 +631,12 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, '{') b = append(b, code.escapedKey...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } } b = encodeComma(b) @@ -735,10 +652,11 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next } else { b = append(b, '{') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p != 0 { b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -756,12 +674,13 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, '{') b = append(b, code.escapedKey...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } } @@ -784,7 +703,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next @@ -803,7 +723,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o p := load(ctxptr, code.idx) if p != 0 { b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -825,7 +746,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeComma(b) @@ -846,7 +768,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } } b = encodeComma(b) @@ -860,7 +783,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next } else { b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -875,12 +799,13 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if ptr == 0 { code = code.end.next } else { - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -898,7 +823,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, code.escapedKey...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -909,7 +835,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next } else { b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -918,12 +845,13 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if ptr == 0 { code = code.end.next } else { - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -935,7 +863,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, code.escapedKey...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -950,11 +879,12 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o break } b = append(b, code.escapedKey...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next @@ -967,12 +897,13 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next break } - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -986,12 +917,13 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o break } b = append(b, code.escapedKey...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeComma(b) @@ -1010,7 +942,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next @@ -1028,7 +961,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next } @@ -1047,1755 +981,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadInt8Only, opStructFieldHeadInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8Only, opStructFieldHeadOmitEmptyInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := int64(ptrToInt8(p)) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt8Only, opStructFieldHeadStringTagInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt8PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadInt8NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt8Only, opStructFieldAnonymousHeadInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt8Only, opStructFieldAnonymousHeadOmitEmptyInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt8Only, opStructFieldAnonymousHeadStringTagInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadInt16Only, opStructFieldHeadInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16Only, opStructFieldHeadOmitEmptyInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := int64(ptrToInt16(p)) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt16Only, opStructFieldHeadStringTagInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt16PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadInt16NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt16Only, opStructFieldAnonymousHeadInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt16Only, opStructFieldAnonymousHeadOmitEmptyInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt16Only, opStructFieldAnonymousHeadStringTagInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadInt32Only, opStructFieldHeadInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32Only, opStructFieldHeadOmitEmptyInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := int64(ptrToInt32(p)) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt32Only, opStructFieldHeadStringTagInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt32PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadInt32NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt32Only, opStructFieldAnonymousHeadInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt32Only, opStructFieldAnonymousHeadOmitEmptyInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt32Only, opStructFieldAnonymousHeadStringTagInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadInt64Only, opStructFieldHeadInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(p)) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64Only, opStructFieldHeadOmitEmptyInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := ptrToInt64(p) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt64Only, opStructFieldHeadStringTagInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(p)) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt64PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(p+code.offset)) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadInt64NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt64Only, opStructFieldAnonymousHeadInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt64Only, opStructFieldAnonymousHeadOmitEmptyInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt64Only, opStructFieldAnonymousHeadStringTagInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(p)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(p+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) + u64 := ptrToUint64(p + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeComma(b) @@ -2812,7 +999,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, '{') b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeComma(b) code = code.next } @@ -2830,12 +1017,12 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next } else { b = append(b, '{') - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeComma(b) code = code.next } @@ -2856,7 +1043,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = append(b, '{') b = append(b, code.escapedKey...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -2865,13 +1052,13 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o p := load(ctxptr, code.idx) b = append(b, '{') b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeComma(b) code = code.next case opStructFieldPtrHeadOmitEmptyUintOnly, opStructFieldHeadOmitEmptyUintOnly: p := load(ctxptr, code.idx) b = append(b, '{') - v := uint64(ptrToUint(p)) + v := ptrToUint64(p) & code.mask if v != 0 { b = append(b, code.escapedKey...) b = appendUint(b, v) @@ -2883,7 +1070,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = append(b, '{') b = append(b, code.escapedKey...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -2900,11 +1087,11 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, '{') b = append(b, code.escapedKey...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } } b = encodeComma(b) @@ -2920,10 +1107,10 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next } else { b = append(b, '{') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p != 0 { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeComma(b) } code = code.next @@ -2941,12 +1128,12 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, '{') b = append(b, code.escapedKey...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } } @@ -2969,7 +1156,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) } b = encodeComma(b) code = code.next @@ -2988,7 +1175,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o p := load(ctxptr, code.idx) if p != 0 { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) b = encodeComma(b) } code = code.next @@ -3010,7 +1197,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) b = append(b, '"') } b = encodeComma(b) @@ -3031,7 +1218,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } } b = encodeComma(b) @@ -3045,7 +1232,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next } else { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeComma(b) code = code.next } @@ -3060,12 +1247,12 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if ptr == 0 { code = code.end.next } else { - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeComma(b) code = code.next } @@ -3083,7 +1270,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, code.escapedKey...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -3094,7 +1281,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next } else { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeComma(b) code = code.next } @@ -3103,12 +1290,12 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if ptr == 0 { code = code.end.next } else { - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeComma(b) code = code.next } @@ -3120,7 +1307,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o } else { b = append(b, code.escapedKey...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -3135,11 +1322,11 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o break } b = append(b, code.escapedKey...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeComma(b) code = code.next @@ -3152,12 +1339,12 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.end.next break } - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeComma(b) code = code.next } @@ -3171,12 +1358,12 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o break } b = append(b, code.escapedKey...) - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeComma(b) @@ -3195,7 +1382,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) } b = encodeComma(b) code = code.next @@ -3213,7 +1400,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o code = code.nextField } else { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) b = encodeComma(b) code = code.next } @@ -3232,1755 +1419,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadUint8Only, opStructFieldHeadUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8Only, opStructFieldHeadOmitEmptyUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := uint64(ptrToUint8(p)) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint8Only, opStructFieldHeadStringTagUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint8PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadUint8NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint8Only, opStructFieldAnonymousHeadUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint8Only, opStructFieldAnonymousHeadOmitEmptyUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint8Only, opStructFieldAnonymousHeadStringTagUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadUint16Only, opStructFieldHeadUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16Only, opStructFieldHeadOmitEmptyUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := uint64(ptrToUint16(p)) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint16Only, opStructFieldHeadStringTagUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint16PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadUint16NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint16Only, opStructFieldAnonymousHeadUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint16Only, opStructFieldAnonymousHeadOmitEmptyUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint16Only, opStructFieldAnonymousHeadStringTagUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadUint32Only, opStructFieldHeadUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32Only, opStructFieldHeadOmitEmptyUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := uint64(ptrToUint32(p)) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint32Only, opStructFieldHeadStringTagUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint32PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadUint32NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint32Only, opStructFieldAnonymousHeadUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint32Only, opStructFieldAnonymousHeadOmitEmptyUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint32Only, opStructFieldAnonymousHeadStringTagUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrHeadUint64Only, opStructFieldHeadUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(p)) - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64Only, opStructFieldHeadOmitEmptyUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - v := ptrToUint64(p) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint64Only, opStructFieldHeadStringTagUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - } else { - b = append(b, '{') - p = ptrToPtr(p) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(p)) - b = encodeComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint64PtrOnly: - b = append(b, '{') - p := load(ctxptr, code.idx) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(p+code.offset)) - b = encodeComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{') - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldHeadUint64NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{') - b = append(b, code.escapedKey...) - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldAnonymousHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint64Only, opStructFieldAnonymousHeadUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint64Only, opStructFieldAnonymousHeadOmitEmptyUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, v) - b = encodeComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint64Only, opStructFieldAnonymousHeadStringTagUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(p)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = append(b, code.escapedKey...) - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(p+code.offset)) - b = encodeComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) + b = appendUint(b, ptrToUint64(p+code.offset)&code.mask) b = append(b, '"') } b = encodeComma(b) @@ -7528,15 +3967,17 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o case opStructFieldInt: ptr := load(ctxptr, code.headIdx) b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) code = code.next case opStructFieldOmitEmptyInt: ptr := load(ctxptr, code.headIdx) - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v != 0 { b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -7544,7 +3985,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o ptr := load(ctxptr, code.headIdx) b = append(b, code.escapedKey...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeComma(b) code = code.next @@ -7555,7 +3997,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next @@ -7564,7 +4007,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o p := ptrToPtr(ptr + code.offset) if p != 0 { b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeComma(b) } code = code.next @@ -7576,7 +4020,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeComma(b) @@ -7594,246 +4039,23 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldInt8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt8: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt8(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldInt8Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldInt16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt16: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt16(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldInt16Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldInt32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt32: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt32(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldInt32Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldInt64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt64: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt64(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldInt64Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(p)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) - b = append(b, '"') + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeComma(b) code = code.next case opStructFieldUint: ptr := load(ctxptr, code.headIdx) b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeComma(b) code = code.next case opStructFieldOmitEmptyUint: ptr := load(ctxptr, code.headIdx) - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v != 0 { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeComma(b) } code = code.next @@ -7841,7 +4063,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o ptr := load(ctxptr, code.headIdx) b = append(b, code.escapedKey...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeComma(b) code = code.next @@ -7852,7 +4074,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeComma(b) code = code.next @@ -7861,7 +4083,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o p := ptrToPtr(ptr + code.offset) if p != 0 { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeComma(b) } code = code.next @@ -7873,231 +4095,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldUint8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint8: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint8(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldUint8Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldUint16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint16: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint16(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldUint16Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldUint32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint32: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint32(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldUint32Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - } - b = encodeComma(b) - code = code.next - case opStructFieldUint64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint64: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint64(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, v) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeComma(b) - code = code.next - case opStructFieldUint64Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) - } - b = encodeComma(b) - code = code.next - case opStructFieldOmitEmptyUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(p)) - b = encodeComma(b) - } - code = code.next - case opStructFieldStringTagUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = append(b, code.escapedKey...) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeComma(b) @@ -8599,15 +4597,17 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o case opStructEndInt: ptr := load(ctxptr, code.headIdx) b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = appendStructEnd(b) code = code.next case opStructEndOmitEmptyInt: ptr := load(ctxptr, code.headIdx) - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v != 0 { b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = appendStructEnd(b) } else { last := len(b) - 1 @@ -8623,7 +4623,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o ptr := load(ctxptr, code.headIdx) b = append(b, code.escapedKey...) b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = appendStructEnd(b) code = code.next @@ -8634,7 +4635,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = appendStructEnd(b) code = code.next @@ -8643,7 +4645,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o p := ptrToPtr(ptr + code.offset) if p != 0 { b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = appendStructEnd(b) } else { last := len(b) - 1 @@ -8663,7 +4666,8 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = appendStructEnd(b) @@ -8681,378 +4685,23 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt8: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt8(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndInt8Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt8(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt8Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt8NPtr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt16: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt16(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndInt16Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt16(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt16Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt16NPtr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt32: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt32(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndInt32Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, int64(ptrToInt32(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt32Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt32NPtr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt64: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt64(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, v) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndInt64Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendInt(b, ptrToInt64(p)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagInt64Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndInt64NPtr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = appendStructEnd(b) code = code.next case opStructEndUint: ptr := load(ctxptr, code.headIdx) b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = appendStructEnd(b) code = code.next case opStructEndOmitEmptyUint: ptr := load(ctxptr, code.headIdx) - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v != 0 { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = appendStructEnd(b) } else { last := len(b) - 1 @@ -9068,7 +4717,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o ptr := load(ctxptr, code.headIdx) b = append(b, code.escapedKey...) b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = appendStructEnd(b) code = code.next @@ -9079,7 +4728,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = appendStructEnd(b) code = code.next @@ -9088,7 +4737,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o p := ptrToPtr(ptr + code.offset) if p != 0 { b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = appendStructEnd(b) } else { last := len(b) - 1 @@ -9108,7 +4757,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = appendStructEnd(b) @@ -9126,363 +4775,7 @@ func encodeRunEscaped(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, o if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint8: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint8(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint8: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndUint8Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint8(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint8Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint8NPtr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint16: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint16(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint16: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndUint16Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint16(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint16Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint16NPtr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint32: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint32(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(v)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint32: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndUint32Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, uint64(ptrToUint32(p))) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint32Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint32NPtr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint64: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint64(ptr + code.offset) - if v != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, v) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint64: - ptr := load(ctxptr, code.headIdx) - b = append(b, code.escapedKey...) - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = appendStructEnd(b) - code = code.next - case opStructEndUint64Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) - } - b = appendStructEnd(b) - code = code.next - case opStructEndOmitEmptyUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = append(b, code.escapedKey...) - b = appendUint(b, ptrToUint64(p)) - b = appendStructEnd(b) - } else { - last := len(b) - 1 - if b[last] == ',' { - b[last] = '}' - b = encodeComma(b) - } else { - b = appendStructEnd(b) - } - } - code = code.next - case opStructEndStringTagUint64Ptr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) - b = append(b, '"') - } - b = appendStructEnd(b) - code = code.next - case opStructEndUint64NPtr: - b = append(b, code.escapedKey...) - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - for i := 0; i < code.ptrNum-1; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = appendStructEnd(b) code = code.next diff --git a/encode_vm_escaped_indent.go b/encode_vm_escaped_indent.go index 472b3c1..6792f1e 100644 --- a/encode_vm_escaped_indent.go +++ b/encode_vm_escaped_indent.go @@ -26,103 +26,12 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode code = code.next store(ctxptr, code.idx, ptrToPtr(ptr)) case opInt: - b = appendInt(b, int64(ptrToInt(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opInt8: - b = appendInt(b, int64(ptrToInt8(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opInt16: - b = appendInt(b, int64(ptrToInt16(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opInt32: - b = appendInt(b, int64(ptrToInt32(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opInt64: - b = appendInt(b, ptrToInt64(load(ctxptr, code.idx))) + u64 := ptrToUint64(load(ctxptr, code.idx)) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next case opUint: - b = appendUint(b, uint64(ptrToUint(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opUint8: - b = appendUint(b, uint64(ptrToUint8(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opUint16: - b = appendUint(b, uint64(ptrToUint16(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opUint32: - b = appendUint(b, uint64(ptrToUint32(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opUint64: - b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))) - b = encodeIndentComma(b) - code = code.next - case opIntString: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opInt8String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opInt16String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opInt32String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opInt64String: - b = append(b, '"') - b = appendInt(b, ptrToInt64(load(ctxptr, code.idx))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUintString: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUint8String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUint16String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUint32String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUint64String: - b = append(b, '"') - b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))) - b = append(b, '"') + b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))&code.mask) b = encodeIndentComma(b) code = code.next case opFloat32: @@ -659,7 +568,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -677,14 +587,15 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode code = code.end.next } else { b = append(b, '{', '\n') - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -706,7 +617,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -717,18 +629,20 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next case opStructFieldPtrHeadOmitEmptyIntOnly, opStructFieldHeadOmitEmptyIntOnly: p := load(ctxptr, code.idx) b = append(b, '{', '\n') - v := int64(ptrToInt(p)) + u64 := ptrToUint64(p) + v := u64 & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, v) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -738,7 +652,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -757,11 +672,12 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } } b = encodeIndentComma(b) @@ -777,12 +693,13 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode code = code.end.next } else { b = append(b, '{', '\n') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p != 0 { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -802,12 +719,13 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } } @@ -832,7 +750,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeIndentComma(b) code = code.next @@ -853,7 +772,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -877,7 +797,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeIndentComma(b) @@ -900,7 +821,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } } b = encodeIndentComma(b) @@ -916,7 +838,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -928,14 +851,15 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if ptr == 0 { code = code.end.next } else { - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -952,7 +876,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = append(b, code.escapedKey...) b = append(b, ' ') b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -965,7 +890,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -974,14 +900,15 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if ptr == 0 { code = code.end.next } else { - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -995,7 +922,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = append(b, code.escapedKey...) b = append(b, ' ') b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -1012,11 +940,12 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeIndentComma(b) code = code.next @@ -1029,14 +958,15 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode code = code.end.next break } - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -1052,12 +982,13 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeIndentComma(b) @@ -1078,7 +1009,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeIndentComma(b) code = code.next @@ -1098,7 +1030,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -1119,1923 +1052,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadInt8Only, opStructFieldHeadInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8Only, opStructFieldHeadOmitEmptyInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := int64(ptrToInt8(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt8Only, opStructFieldHeadStringTagInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadInt8NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt8Only, opStructFieldAnonymousHeadInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt8Only, opStructFieldAnonymousHeadOmitEmptyInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt8Only, opStructFieldAnonymousHeadStringTagInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadInt16Only, opStructFieldHeadInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16Only, opStructFieldHeadOmitEmptyInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := int64(ptrToInt16(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt16Only, opStructFieldHeadStringTagInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadInt16NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt16Only, opStructFieldAnonymousHeadInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt16Only, opStructFieldAnonymousHeadOmitEmptyInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt16Only, opStructFieldAnonymousHeadStringTagInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadInt32Only, opStructFieldHeadInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32Only, opStructFieldHeadOmitEmptyInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := int64(ptrToInt32(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt32Only, opStructFieldHeadStringTagInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadInt32NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt32Only, opStructFieldAnonymousHeadInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt32Only, opStructFieldAnonymousHeadOmitEmptyInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt32Only, opStructFieldAnonymousHeadStringTagInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(ptr)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadInt64Only, opStructFieldHeadInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64Only, opStructFieldHeadOmitEmptyInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := ptrToInt64(p) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt64Only, opStructFieldHeadStringTagInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, ptrToInt64(p)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadInt64NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt64Only, opStructFieldAnonymousHeadInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt64Only, opStructFieldAnonymousHeadOmitEmptyInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt64Only, opStructFieldAnonymousHeadStringTagInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeIndentComma(b) @@ -3054,7 +1072,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3072,14 +1090,14 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode code = code.end.next } else { b = append(b, '{', '\n') - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeIndentComma(b) code = code.next } @@ -3101,7 +1119,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -3112,13 +1130,13 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) code = code.next case opStructFieldPtrHeadOmitEmptyUintOnly, opStructFieldHeadOmitEmptyUintOnly: p := load(ctxptr, code.idx) b = append(b, '{', '\n') - v := uint64(ptrToUint(p)) + v := ptrToUint64(p) & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) @@ -3133,7 +1151,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -3152,11 +1170,11 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } } b = encodeIndentComma(b) @@ -3172,12 +1190,12 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode code = code.end.next } else { b = append(b, '{', '\n') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p != 0 { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) } code = code.next @@ -3197,12 +1215,12 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } } @@ -3227,7 +1245,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeIndentComma(b) code = code.next @@ -3248,7 +1266,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent+1) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) } code = code.next @@ -3272,7 +1290,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeIndentComma(b) @@ -3295,7 +1313,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } } b = encodeIndentComma(b) @@ -3311,7 +1329,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3323,14 +1341,14 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if ptr == 0 { code = code.end.next } else { - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeIndentComma(b) code = code.next } @@ -3347,7 +1365,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = append(b, code.escapedKey...) b = append(b, ' ') b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -3360,7 +1378,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3369,14 +1387,14 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if ptr == 0 { code = code.end.next } else { - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr) & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeIndentComma(b) code = code.next } @@ -3390,7 +1408,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = append(b, code.escapedKey...) b = append(b, ' ') b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -3407,11 +1425,11 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeIndentComma(b) code = code.next @@ -3424,14 +1442,14 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode code = code.end.next break } - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3447,12 +1465,12 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeIndentComma(b) @@ -3473,7 +1491,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeIndentComma(b) code = code.next @@ -3493,7 +1511,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3514,1923 +1532,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadUint8Only, opStructFieldHeadUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8Only, opStructFieldHeadOmitEmptyUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := uint64(ptrToUint8(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint8Only, opStructFieldHeadStringTagUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadUint8NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint8Only, opStructFieldAnonymousHeadUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint8Only, opStructFieldAnonymousHeadOmitEmptyUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint8Only, opStructFieldAnonymousHeadStringTagUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadUint16Only, opStructFieldHeadUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16Only, opStructFieldHeadOmitEmptyUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := uint64(ptrToUint16(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint16Only, opStructFieldHeadStringTagUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadUint16NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint16Only, opStructFieldAnonymousHeadUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint16Only, opStructFieldAnonymousHeadOmitEmptyUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint16Only, opStructFieldAnonymousHeadStringTagUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadUint32Only, opStructFieldHeadUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32Only, opStructFieldHeadOmitEmptyUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := uint64(ptrToUint32(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint32Only, opStructFieldHeadStringTagUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadUint32NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint32Only, opStructFieldAnonymousHeadUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint32Only, opStructFieldAnonymousHeadOmitEmptyUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint32Only, opStructFieldAnonymousHeadStringTagUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(ptr)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadUint64Only, opStructFieldHeadUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64Only, opStructFieldHeadOmitEmptyUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := ptrToUint64(p) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint64Only, opStructFieldHeadStringTagUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, ptrToUint64(p)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadUint64NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.escapedKey...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint64Only, opStructFieldAnonymousHeadUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint64Only, opStructFieldAnonymousHeadOmitEmptyUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint64Only, opStructFieldAnonymousHeadStringTagUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeIndentComma(b) @@ -7559,17 +3661,19 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = append(b, code.escapedKey...) b = append(b, ' ') ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next case opStructFieldOmitEmptyInt: ptr := load(ctxptr, code.headIdx) - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -7578,7 +3682,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -7591,7 +3696,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeIndentComma(b) code = code.next @@ -7602,7 +3708,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -7616,275 +3723,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt8: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt8: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt8(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt8: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt16: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt16: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt16(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt16: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt32: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt32: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt32(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt32: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt64: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt64: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt64(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt64: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeIndentComma(b) @@ -7894,17 +3734,17 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = append(b, code.escapedKey...) b = append(b, ' ') ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeIndentComma(b) code = code.next case opStructFieldOmitEmptyUint: ptr := load(ctxptr, code.headIdx) - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeIndentComma(b) } code = code.next @@ -7913,7 +3753,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -7926,7 +3766,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeIndentComma(b) code = code.next @@ -7937,7 +3777,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) } code = code.next @@ -7951,275 +3791,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint8: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint8: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint8(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint8: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint16: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint16: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint16(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint16: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint32: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint32: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint32(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint32: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint64: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint64: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint64(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint64: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeIndentComma(b) @@ -8832,17 +4404,19 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = append(b, code.escapedKey...) b = append(b, ' ') ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next case opStructEndOmitEmptyInt: ptr := load(ctxptr, code.headIdx) - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = appendStructEndIndent(ctx, b, code.indent-1) } else { last := len(b) - 1 @@ -8865,7 +4439,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next @@ -8878,7 +4453,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next @@ -8889,7 +4465,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = appendStructEndIndent(ctx, b, code.indent-1) } else { last := len(b) - 1 @@ -8917,387 +4494,8 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt8: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt8: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt8(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt8: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt16: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt16: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt16(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt16: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt32: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt32: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt32(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt32: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt64: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt64: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt64(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, v) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt64: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = appendStructEndIndent(ctx, b, code.indent-1) @@ -9307,17 +4505,17 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = append(b, code.escapedKey...) b = append(b, ' ') ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next case opStructEndOmitEmptyUint: ptr := load(ctxptr, code.headIdx) - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = appendStructEndIndent(ctx, b, code.indent-1) } else { last := len(b) - 1 @@ -9340,7 +4538,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next @@ -9353,7 +4551,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next @@ -9364,7 +4562,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = appendIndent(ctx, b, code.indent) b = append(b, code.escapedKey...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = appendStructEndIndent(ctx, b, code.indent-1) } else { last := len(b) - 1 @@ -9392,387 +4590,7 @@ func encodeRunEscapedIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcode b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint8: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint8: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint8(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint8: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint16: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint16: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint16(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint16: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint32: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint32: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint32(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint32: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint64: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint64: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint64(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, v) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint64: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ', '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.escapedKey...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = appendStructEndIndent(ctx, b, code.indent-1) diff --git a/encode_vm_indent.go b/encode_vm_indent.go index a88918d..de5763e 100644 --- a/encode_vm_indent.go +++ b/encode_vm_indent.go @@ -26,103 +26,12 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op code = code.next store(ctxptr, code.idx, ptrToPtr(ptr)) case opInt: - b = appendInt(b, int64(ptrToInt(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opInt8: - b = appendInt(b, int64(ptrToInt8(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opInt16: - b = appendInt(b, int64(ptrToInt16(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opInt32: - b = appendInt(b, int64(ptrToInt32(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opInt64: - b = appendInt(b, ptrToInt64(load(ctxptr, code.idx))) + u64 := ptrToUint64(load(ctxptr, code.idx)) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next case opUint: - b = appendUint(b, uint64(ptrToUint(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opUint8: - b = appendUint(b, uint64(ptrToUint8(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opUint16: - b = appendUint(b, uint64(ptrToUint16(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opUint32: - b = appendUint(b, uint64(ptrToUint32(load(ctxptr, code.idx)))) - b = encodeIndentComma(b) - code = code.next - case opUint64: - b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))) - b = encodeIndentComma(b) - code = code.next - case opIntString: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opInt8String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opInt16String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opInt32String: - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opInt64String: - b = append(b, '"') - b = appendInt(b, ptrToInt64(load(ctxptr, code.idx))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUintString: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUint8String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUint16String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUint32String: - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(load(ctxptr, code.idx)))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opUint64String: - b = append(b, '"') - b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))) - b = append(b, '"') + b = appendUint(b, ptrToUint64(load(ctxptr, code.idx))&code.mask) b = encodeIndentComma(b) code = code.next case opFloat32: @@ -659,7 +568,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -677,14 +587,15 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op code = code.end.next } else { b = append(b, '{', '\n') - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -706,7 +617,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -717,18 +629,20 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next case opStructFieldPtrHeadOmitEmptyIntOnly, opStructFieldHeadOmitEmptyIntOnly: p := load(ctxptr, code.idx) b = append(b, '{', '\n') - v := int64(ptrToInt(p)) + u64 := ptrToUint64(p) + v := u64 & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, v) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -738,7 +652,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -757,11 +672,12 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } } b = encodeIndentComma(b) @@ -777,12 +693,13 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op code = code.end.next } else { b = append(b, '{', '\n') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p != 0 { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -802,12 +719,13 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } } @@ -832,7 +750,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeIndentComma(b) code = code.next @@ -853,7 +772,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -877,7 +797,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeIndentComma(b) @@ -900,7 +821,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } } b = encodeIndentComma(b) @@ -916,7 +838,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -928,14 +851,15 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if ptr == 0 { code = code.end.next } else { - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -952,7 +876,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = append(b, code.key...) b = append(b, ' ') b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -965,7 +890,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -974,14 +900,15 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if ptr == 0 { code = code.end.next } else { - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr) + v := u64 & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -995,7 +922,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = append(b, code.key...) b = append(b, ' ') b = append(b, '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -1012,11 +940,12 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeIndentComma(b) code = code.next @@ -1029,14 +958,15 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op code = code.end.next break } - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -1052,12 +982,13 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeIndentComma(b) @@ -1078,7 +1009,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeIndentComma(b) code = code.next @@ -1098,7 +1030,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p+code.offset))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next } @@ -1119,1923 +1052,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadInt8Only, opStructFieldHeadInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8Only, opStructFieldHeadOmitEmptyInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := int64(ptrToInt8(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt8Only, opStructFieldHeadStringTagInt8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadInt8NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt8Only, opStructFieldAnonymousHeadInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt8Only, opStructFieldAnonymousHeadOmitEmptyInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt8Only, opStructFieldAnonymousHeadStringTagInt8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt8PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt8PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadInt16Only, opStructFieldHeadInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16Only, opStructFieldHeadOmitEmptyInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := int64(ptrToInt16(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt16Only, opStructFieldHeadStringTagInt16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadInt16NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt16Only, opStructFieldAnonymousHeadInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt16Only, opStructFieldAnonymousHeadOmitEmptyInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt16Only, opStructFieldAnonymousHeadStringTagInt16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt16PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt16PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadInt32Only, opStructFieldHeadInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32Only, opStructFieldHeadOmitEmptyInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := int64(ptrToInt32(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt32Only, opStructFieldHeadStringTagInt32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadInt32NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt32Only, opStructFieldAnonymousHeadInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt32Only, opStructFieldAnonymousHeadOmitEmptyInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt32Only, opStructFieldAnonymousHeadStringTagInt32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt32PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt32PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(ptr)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadInt64Only, opStructFieldHeadInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64Only, opStructFieldHeadOmitEmptyInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := ptrToInt64(p) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt64Only, opStructFieldHeadStringTagInt64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, ptrToInt64(p)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadInt64NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt64Only, opStructFieldAnonymousHeadInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyInt64Only, opStructFieldAnonymousHeadOmitEmptyInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToInt64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagInt64Only, opStructFieldAnonymousHeadStringTagInt64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadInt64PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagInt64PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p+code.offset)) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeIndentComma(b) @@ -3054,7 +1072,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3072,14 +1090,14 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op code = code.end.next } else { b = append(b, '{', '\n') - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeIndentComma(b) code = code.next } @@ -3101,7 +1119,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -3112,13 +1130,13 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) code = code.next case opStructFieldPtrHeadOmitEmptyUintOnly, opStructFieldHeadOmitEmptyUintOnly: p := load(ctxptr, code.idx) b = append(b, '{', '\n') - v := uint64(ptrToUint(p)) + v := ptrToUint64(p) & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) @@ -3133,7 +1151,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -3152,11 +1170,11 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } } b = encodeIndentComma(b) @@ -3172,12 +1190,12 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op code = code.end.next } else { b = append(b, '{', '\n') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p != 0 { b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) } code = code.next @@ -3197,12 +1215,12 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } } @@ -3227,7 +1245,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeIndentComma(b) code = code.next @@ -3248,7 +1266,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent+1) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) } code = code.next @@ -3272,7 +1290,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeIndentComma(b) @@ -3295,7 +1313,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } } b = encodeIndentComma(b) @@ -3311,7 +1329,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3323,14 +1341,14 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if ptr == 0 { code = code.end.next } else { - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeIndentComma(b) code = code.next } @@ -3347,7 +1365,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = append(b, code.key...) b = append(b, ' ') b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -3360,7 +1378,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3369,14 +1387,14 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if ptr == 0 { code = code.end.next } else { - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr) & code.mask if v == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeIndentComma(b) code = code.next } @@ -3390,7 +1408,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = append(b, code.key...) b = append(b, ' ') b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -3407,11 +1425,11 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeIndentComma(b) code = code.next @@ -3424,14 +1442,14 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op code = code.end.next break } - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { code = code.nextField } else { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3447,12 +1465,12 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - p = ptrToPtr(p) + p = ptrToPtr(p + code.offset) if p == 0 { b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeIndentComma(b) @@ -3473,7 +1491,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeIndentComma(b) code = code.next @@ -3493,7 +1511,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) code = code.next } @@ -3514,1923 +1532,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadUint8Only, opStructFieldHeadUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8Only, opStructFieldHeadOmitEmptyUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := uint64(ptrToUint8(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint8Only, opStructFieldHeadStringTagUint8Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadUint8NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint8: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint8Only, opStructFieldAnonymousHeadUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint8Only, opStructFieldAnonymousHeadOmitEmptyUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint8(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint8Only, opStructFieldAnonymousHeadStringTagUint8Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint8Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint8PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint8PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadUint16Only, opStructFieldHeadUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16Only, opStructFieldHeadOmitEmptyUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := uint64(ptrToUint16(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint16Only, opStructFieldHeadStringTagUint16Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadUint16NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint16: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint16Only, opStructFieldAnonymousHeadUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint16Only, opStructFieldAnonymousHeadOmitEmptyUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint16(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint16Only, opStructFieldAnonymousHeadStringTagUint16Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint16Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint16PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint16PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(ptr))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadUint32Only, opStructFieldHeadUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32Only, opStructFieldHeadOmitEmptyUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := uint64(ptrToUint32(p)) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint32Only, opStructFieldHeadStringTagUint32Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadUint32NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint32: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint32Only, opStructFieldAnonymousHeadUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint32Only, opStructFieldAnonymousHeadOmitEmptyUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint32(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint32Only, opStructFieldAnonymousHeadStringTagUint32Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint32Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint32PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint32PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p+code.offset))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(ptr)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr != 0 { - store(ctxptr, code.idx, ptrToPtr(ptr)) - } - fallthrough - case opStructFieldHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrHeadUint64Only, opStructFieldHeadUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64Only, opStructFieldHeadOmitEmptyUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - v := ptrToUint64(p) - if v != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint64Only, opStructFieldHeadStringTagUint64Only: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, ptrToUint64(p)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadOmitEmptyUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - } else { - b = append(b, '{', '\n') - p = ptrToPtr(p) - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = encodeIndentComma(b) - } - code = code.next - } - case opStructFieldPtrHeadStringTagUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldHeadStringTagUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - if p != 0 { - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldPtrHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - b = encodeIndentComma(b) - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldHeadUint64NPtr: - p := load(ctxptr, code.idx) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '{', '\n') - b = appendIndent(ctx, b, code.indent+1) - b = append(b, code.key...) - b = append(b, ' ') - for i := 0; i < code.ptrNum; i++ { - if p == 0 { - break - } - p = ptrToPtr(p) - } - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint64: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint64Only, opStructFieldAnonymousHeadUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadOmitEmptyUint64Only, opStructFieldAnonymousHeadOmitEmptyUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - v := ptrToUint64(ptr + code.offset) - if v == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - code = code.next - } - } - case opStructFieldPtrAnonymousHeadStringTagUint64Only, opStructFieldAnonymousHeadStringTagUint64Only: - ptr := load(ctxptr, code.idx) - if ptr == 0 { - code = code.end.next - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = append(b, '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - p = ptrToPtr(p) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint64Ptr: - store(ctxptr, code.idx, ptrToPtr(load(ctxptr, code.idx))) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64Ptr: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - p = ptrToPtr(p) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadUint64PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p+code.offset)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldPtrAnonymousHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadOmitEmptyUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.nextField - } else { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p+code.offset)) - b = encodeIndentComma(b) - code = code.next - } - case opStructFieldPtrAnonymousHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - if p == 0 { - code = code.end.next - break - } - store(ctxptr, code.idx, ptrToPtr(p)) - fallthrough - case opStructFieldAnonymousHeadStringTagUint64PtrOnly: - p := load(ctxptr, code.idx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p+code.offset)) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeIndentComma(b) @@ -7559,17 +3661,19 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = append(b, code.key...) b = append(b, ' ') ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) code = code.next case opStructFieldOmitEmptyInt: ptr := load(ctxptr, code.headIdx) - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -7578,7 +3682,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -7591,7 +3696,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = encodeIndentComma(b) code = code.next @@ -7602,7 +3708,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = encodeIndentComma(b) } code = code.next @@ -7616,275 +3723,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt8: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt8: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt8(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt8: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt16: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt16: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt16(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt16: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt32: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt32: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt32(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt32: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt64: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt64: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt64(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt64: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldInt64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = encodeIndentComma(b) @@ -7894,17 +3734,17 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = append(b, code.key...) b = append(b, ' ') ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = encodeIndentComma(b) code = code.next case opStructFieldOmitEmptyUint: ptr := load(ctxptr, code.headIdx) - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = encodeIndentComma(b) } code = code.next @@ -7913,7 +3753,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = encodeIndentComma(b) code = code.next @@ -7926,7 +3766,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = encodeIndentComma(b) code = code.next @@ -7937,7 +3777,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = encodeIndentComma(b) } code = code.next @@ -7951,275 +3791,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint8: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint8: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint8(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint8: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint16: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint16: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint16(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint16: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint32: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint32: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint32(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint32: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint64: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint64: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint64(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, v) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint64: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = encodeIndentComma(b) - code = code.next - case opStructFieldUint64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) - } - b = encodeIndentComma(b) - code = code.next - case opStructFieldOmitEmptyUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = encodeIndentComma(b) - } - code = code.next - case opStructFieldStringTagUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = encodeIndentComma(b) @@ -8831,17 +4403,19 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = append(b, code.key...) b = append(b, ' ') ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next case opStructEndOmitEmptyInt: ptr := load(ctxptr, code.headIdx) - v := ptrToInt(ptr + code.offset) + u64 := ptrToUint64(ptr + code.offset) + v := u64 & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(v)) + b = appendInt(b, v, u64>>code.rshiftNum == 1) b = appendStructEndIndent(ctx, b, code.indent-1) } else { last := len(b) - 1 @@ -8864,7 +4438,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt(ptr+code.offset))) + u64 := ptrToUint64(ptr + code.offset) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next @@ -8877,7 +4452,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) } b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next @@ -8888,7 +4464,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendInt(b, int64(ptrToInt(p))) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = appendStructEndIndent(ctx, b, code.indent-1) } else { last := len(b) - 1 @@ -8916,387 +4493,8 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = encodeNull(b) } else { b = append(b, '"') - b = appendInt(b, int64(ptrToInt(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt8: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt8: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt8(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt8: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt8(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt8(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt8(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt8(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt16: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt16: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt16(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt16: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt16(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt16(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt16(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt16(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt32: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt32: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt32(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt32: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, int64(ptrToInt32(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, int64(ptrToInt32(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, int64(ptrToInt32(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, int64(ptrToInt32(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt64: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt64: - ptr := load(ctxptr, code.headIdx) - v := ptrToInt64(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, v) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt64: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendInt(b, ptrToInt64(ptr+code.offset)) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndInt64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendInt(b, ptrToInt64(p)) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyInt64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendInt(b, ptrToInt64(p)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagInt64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendInt(b, ptrToInt64(p)) + u64 := ptrToUint64(p) + b = appendInt(b, u64&code.mask, u64>>code.rshiftNum == 1) b = append(b, '"') } b = appendStructEndIndent(ctx, b, code.indent-1) @@ -9306,17 +4504,17 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = append(b, code.key...) b = append(b, ' ') ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next case opStructEndOmitEmptyUint: ptr := load(ctxptr, code.headIdx) - v := ptrToUint(ptr + code.offset) + v := ptrToUint64(ptr+code.offset) & code.mask if v != 0 { b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(v)) + b = appendUint(b, v) b = appendStructEndIndent(ctx, b, code.indent-1) } else { last := len(b) - 1 @@ -9339,7 +4537,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint(ptr+code.offset))) + b = appendUint(b, ptrToUint64(ptr+code.offset)&code.mask) b = append(b, '"') b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next @@ -9352,7 +4550,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op if p == 0 { b = encodeNull(b) } else { - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) } b = appendStructEndIndent(ctx, b, code.indent-1) code = code.next @@ -9363,7 +4561,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = appendIndent(ctx, b, code.indent) b = append(b, code.key...) b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint(p))) + b = appendUint(b, ptrToUint64(p)&code.mask) b = appendStructEndIndent(ctx, b, code.indent-1) } else { last := len(b) - 1 @@ -9391,387 +4589,7 @@ func encodeRunIndent(ctx *encodeRuntimeContext, b []byte, codeSet *opcodeSet, op b = encodeNull(b) } else { b = append(b, '"') - b = appendUint(b, uint64(ptrToUint(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint8: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint8: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint8(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint8: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint8(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint8(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint8Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint8(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint8Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint8(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint16: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint16: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint16(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint16: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint16(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint16(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint16Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint16(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint16Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint16(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint32: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint32: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint32(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(v)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint32: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, uint64(ptrToUint32(ptr+code.offset))) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, uint64(ptrToUint32(p))) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint32Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, uint64(ptrToUint32(p))) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint32Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, uint64(ptrToUint32(p))) - b = append(b, '"') - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint64: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint64: - ptr := load(ctxptr, code.headIdx) - v := ptrToUint64(ptr + code.offset) - if v != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, v) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint64: - ptr := load(ctxptr, code.headIdx) - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ', '"') - b = appendUint(b, ptrToUint64(ptr+code.offset)) - b = append(b, '"') - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndUint64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = appendUint(b, ptrToUint64(p)) - } - b = appendStructEndIndent(ctx, b, code.indent-1) - code = code.next - case opStructEndOmitEmptyUint64Ptr: - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p != 0 { - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - b = appendUint(b, ptrToUint64(p)) - b = appendStructEndIndent(ctx, b, code.indent-1) - } else { - last := len(b) - 1 - if b[last-1] == '{' { - b[last] = '}' - } else { - if b[last] == '\n' { - // to remove ',' and '\n' characters - b = b[:len(b)-2] - } - b = append(b, '\n') - b = appendIndent(ctx, b, code.indent-1) - b = append(b, '}') - } - b = encodeIndentComma(b) - } - code = code.next - case opStructEndStringTagUint64Ptr: - b = appendIndent(ctx, b, code.indent) - b = append(b, code.key...) - b = append(b, ' ') - ptr := load(ctxptr, code.headIdx) - p := ptrToPtr(ptr + code.offset) - if p == 0 { - b = encodeNull(b) - } else { - b = append(b, '"') - b = appendUint(b, ptrToUint64(p)) + b = appendUint(b, ptrToUint64(p)&code.mask) b = append(b, '"') } b = appendStructEndIndent(ctx, b, code.indent-1)