forked from mirror/go-json
Add int32/int64 test cases
This commit is contained in:
parent
b132de9821
commit
8d4029d900
1244
coverage_test.go
1244
coverage_test.go
File diff suppressed because it is too large
Load Diff
406
encode_vm.go
406
encode_vm.go
|
@ -2039,24 +2039,13 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
code = code.next
|
code = code.next
|
||||||
case opStructFieldPtrHeadInt32:
|
case opStructFieldPtrHeadInt32:
|
||||||
p := load(ctxptr, code.idx)
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
if p == 0 {
|
|
||||||
b = encodeNull(b)
|
|
||||||
b = encodeComma(b)
|
|
||||||
code = code.end.next
|
|
||||||
break
|
|
||||||
}
|
|
||||||
store(ctxptr, code.idx, e.ptrToPtr(p))
|
|
||||||
fallthrough
|
fallthrough
|
||||||
case opStructFieldHeadInt32:
|
case opStructFieldHeadInt32:
|
||||||
ptr := load(ctxptr, code.idx)
|
ptr := load(ctxptr, code.idx)
|
||||||
if ptr == 0 {
|
if ptr == 0 {
|
||||||
if code.op == opStructFieldPtrHeadInt32 {
|
|
||||||
b = encodeNull(b)
|
b = encodeNull(b)
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
} else {
|
|
||||||
b = append(b, '{', '}', ',')
|
|
||||||
}
|
|
||||||
code = code.end.next
|
code = code.end.next
|
||||||
} else {
|
} else {
|
||||||
b = append(b, '{')
|
b = append(b, '{')
|
||||||
|
@ -2065,7 +2054,59 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
code = code.next
|
code = code.next
|
||||||
}
|
}
|
||||||
|
case opStructFieldPtrHeadInt32Only, opStructFieldHeadInt32Only:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
b = append(b, '{')
|
||||||
|
b = append(b, code.key...)
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p)))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
case opStructEscapedFieldPtrHeadInt32:
|
case opStructEscapedFieldPtrHeadInt32:
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldHeadInt32:
|
||||||
|
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(e.ptrToInt32(ptr+code.offset)))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
}
|
||||||
|
case opStructEscapedFieldPtrHeadInt32Only, opStructEscapedFieldHeadInt32Only:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
b = append(b, '{')
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p)))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructFieldPtrHeadInt32Ptr:
|
||||||
|
store(ctxptr, code.idx, e.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 = e.ptrToPtr(p)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p+code.offset)))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructFieldPtrHeadInt32PtrOnly:
|
||||||
p := load(ctxptr, code.idx)
|
p := load(ctxptr, code.idx)
|
||||||
if p == 0 {
|
if p == 0 {
|
||||||
b = encodeNull(b)
|
b = encodeNull(b)
|
||||||
|
@ -2075,23 +2116,60 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
|
||||||
}
|
}
|
||||||
store(ctxptr, code.idx, e.ptrToPtr(p))
|
store(ctxptr, code.idx, e.ptrToPtr(p))
|
||||||
fallthrough
|
fallthrough
|
||||||
case opStructEscapedFieldHeadInt32:
|
case opStructFieldHeadInt32PtrOnly:
|
||||||
ptr := load(ctxptr, code.idx)
|
p := load(ctxptr, code.idx)
|
||||||
if ptr == 0 {
|
b = append(b, '{')
|
||||||
if code.op == opStructEscapedFieldPtrHeadInt32 {
|
b = append(b, code.key...)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p+code.offset)))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructEscapedFieldPtrHeadInt32Ptr:
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldHeadInt32Ptr:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
b = encodeNull(b)
|
b = encodeNull(b)
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
} else {
|
|
||||||
b = append(b, '{', '}', ',')
|
|
||||||
}
|
|
||||||
code = code.end.next
|
code = code.end.next
|
||||||
|
break
|
||||||
} else {
|
} else {
|
||||||
b = append(b, '{')
|
b = append(b, '{')
|
||||||
b = append(b, code.escapedKey...)
|
b = append(b, code.escapedKey...)
|
||||||
b = appendInt(b, int64(e.ptrToInt32(ptr+code.offset)))
|
p = e.ptrToPtr(p)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p+code.offset)))
|
||||||
|
}
|
||||||
|
}
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
code = code.next
|
code = code.next
|
||||||
|
case opStructEscapedFieldPtrHeadInt32PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.end.next
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(p))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldHeadInt32PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
b = append(b, '{')
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p+code.offset)))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
case opStructFieldPtrAnonymousHeadInt32:
|
case opStructFieldPtrAnonymousHeadInt32:
|
||||||
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
fallthrough
|
fallthrough
|
||||||
|
@ -2118,25 +2196,106 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
code = code.next
|
code = code.next
|
||||||
}
|
}
|
||||||
case opStructFieldPtrHeadInt64:
|
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(e.ptrToInt32(ptr+code.offset)))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
}
|
||||||
|
case opStructEscapedFieldPtrAnonymousHeadInt32Only, opStructEscapedFieldAnonymousHeadInt32Only:
|
||||||
|
ptr := load(ctxptr, code.idx)
|
||||||
|
if ptr == 0 {
|
||||||
|
code = code.end.next
|
||||||
|
} else {
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(ptr+code.offset)))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
}
|
||||||
|
case opStructFieldPtrAnonymousHeadInt32Ptr:
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
|
fallthrough
|
||||||
|
case opStructFieldAnonymousHeadInt32Ptr:
|
||||||
p := load(ctxptr, code.idx)
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
|
code = code.end.next
|
||||||
|
break
|
||||||
|
}
|
||||||
|
b = append(b, code.key...)
|
||||||
|
p = e.ptrToPtr(p)
|
||||||
if p == 0 {
|
if p == 0 {
|
||||||
b = encodeNull(b)
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p+code.offset)))
|
||||||
|
}
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructEscapedFieldPtrAnonymousHeadInt32Ptr:
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldAnonymousHeadInt32Ptr:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
|
code = code.end.next
|
||||||
|
break
|
||||||
|
}
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
p = e.ptrToPtr(p)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p+code.offset)))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructFieldPtrAnonymousHeadInt32PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
code = code.end.next
|
code = code.end.next
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
store(ctxptr, code.idx, e.ptrToPtr(p))
|
store(ctxptr, code.idx, e.ptrToPtr(p))
|
||||||
fallthrough
|
fallthrough
|
||||||
|
case opStructFieldAnonymousHeadInt32PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
b = append(b, code.key...)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p+code.offset)))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructEscapedFieldPtrAnonymousHeadInt32PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
|
code = code.end.next
|
||||||
|
break
|
||||||
|
}
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(p))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldAnonymousHeadInt32PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, int64(e.ptrToInt32(p+code.offset)))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructFieldPtrHeadInt64:
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
|
fallthrough
|
||||||
case opStructFieldHeadInt64:
|
case opStructFieldHeadInt64:
|
||||||
ptr := load(ctxptr, code.idx)
|
ptr := load(ctxptr, code.idx)
|
||||||
if ptr == 0 {
|
if ptr == 0 {
|
||||||
if code.op == opStructFieldPtrHeadInt64 {
|
|
||||||
b = encodeNull(b)
|
b = encodeNull(b)
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
} else {
|
|
||||||
b = append(b, '{', '}', ',')
|
|
||||||
}
|
|
||||||
code = code.end.next
|
code = code.end.next
|
||||||
} else {
|
} else {
|
||||||
b = append(b, '{')
|
b = append(b, '{')
|
||||||
|
@ -2145,7 +2304,59 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
code = code.next
|
code = code.next
|
||||||
}
|
}
|
||||||
|
case opStructFieldPtrHeadInt64Only, opStructFieldHeadInt64Only:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
b = append(b, '{')
|
||||||
|
b = append(b, code.key...)
|
||||||
|
b = appendInt(b, e.ptrToInt64(p))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
case opStructEscapedFieldPtrHeadInt64:
|
case opStructEscapedFieldPtrHeadInt64:
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldHeadInt64:
|
||||||
|
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, e.ptrToInt64(ptr+code.offset))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
}
|
||||||
|
case opStructEscapedFieldPtrHeadInt64Only, opStructEscapedFieldHeadInt64Only:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
b = append(b, '{')
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
b = appendInt(b, e.ptrToInt64(p))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructFieldPtrHeadInt64Ptr:
|
||||||
|
store(ctxptr, code.idx, e.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 = e.ptrToPtr(p)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, e.ptrToInt64(p+code.offset))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructFieldPtrHeadInt64PtrOnly:
|
||||||
p := load(ctxptr, code.idx)
|
p := load(ctxptr, code.idx)
|
||||||
if p == 0 {
|
if p == 0 {
|
||||||
b = encodeNull(b)
|
b = encodeNull(b)
|
||||||
|
@ -2155,23 +2366,60 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
|
||||||
}
|
}
|
||||||
store(ctxptr, code.idx, e.ptrToPtr(p))
|
store(ctxptr, code.idx, e.ptrToPtr(p))
|
||||||
fallthrough
|
fallthrough
|
||||||
case opStructEscapedFieldHeadInt64:
|
case opStructFieldHeadInt64PtrOnly:
|
||||||
ptr := load(ctxptr, code.idx)
|
p := load(ctxptr, code.idx)
|
||||||
if ptr == 0 {
|
b = append(b, '{')
|
||||||
if code.op == opStructEscapedFieldPtrHeadInt64 {
|
b = append(b, code.key...)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, e.ptrToInt64(p+code.offset))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructEscapedFieldPtrHeadInt64Ptr:
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldHeadInt64Ptr:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
b = encodeNull(b)
|
b = encodeNull(b)
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
} else {
|
|
||||||
b = append(b, '{', '}', ',')
|
|
||||||
}
|
|
||||||
code = code.end.next
|
code = code.end.next
|
||||||
|
break
|
||||||
} else {
|
} else {
|
||||||
b = append(b, '{')
|
b = append(b, '{')
|
||||||
b = append(b, code.escapedKey...)
|
b = append(b, code.escapedKey...)
|
||||||
b = appendInt(b, e.ptrToInt64(ptr+code.offset))
|
p = e.ptrToPtr(p)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, e.ptrToInt64(p+code.offset))
|
||||||
|
}
|
||||||
|
}
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
code = code.next
|
code = code.next
|
||||||
|
case opStructEscapedFieldPtrHeadInt64PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.end.next
|
||||||
|
break
|
||||||
}
|
}
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(p))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldHeadInt64PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
b = append(b, '{')
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, e.ptrToInt64(p+code.offset))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
case opStructFieldPtrAnonymousHeadInt64:
|
case opStructFieldPtrAnonymousHeadInt64:
|
||||||
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
fallthrough
|
fallthrough
|
||||||
|
@ -2198,6 +2446,98 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
|
||||||
b = encodeComma(b)
|
b = encodeComma(b)
|
||||||
code = code.next
|
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, e.ptrToInt64(ptr+code.offset))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
}
|
||||||
|
case opStructEscapedFieldPtrAnonymousHeadInt64Only, opStructEscapedFieldAnonymousHeadInt64Only:
|
||||||
|
ptr := load(ctxptr, code.idx)
|
||||||
|
if ptr == 0 {
|
||||||
|
code = code.end.next
|
||||||
|
} else {
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
b = appendInt(b, e.ptrToInt64(ptr+code.offset))
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
}
|
||||||
|
case opStructFieldPtrAnonymousHeadInt64Ptr:
|
||||||
|
store(ctxptr, code.idx, e.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 = e.ptrToPtr(p)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, e.ptrToInt64(p+code.offset))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructEscapedFieldPtrAnonymousHeadInt64Ptr:
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(load(ctxptr, code.idx)))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldAnonymousHeadInt64Ptr:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
|
code = code.end.next
|
||||||
|
break
|
||||||
|
}
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
p = e.ptrToPtr(p)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, e.ptrToInt64(p+code.offset))
|
||||||
|
}
|
||||||
|
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, e.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, e.ptrToInt64(p+code.offset))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
|
case opStructEscapedFieldPtrAnonymousHeadInt64PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
if p == 0 {
|
||||||
|
code = code.end.next
|
||||||
|
break
|
||||||
|
}
|
||||||
|
store(ctxptr, code.idx, e.ptrToPtr(p))
|
||||||
|
fallthrough
|
||||||
|
case opStructEscapedFieldAnonymousHeadInt64PtrOnly:
|
||||||
|
p := load(ctxptr, code.idx)
|
||||||
|
b = append(b, code.escapedKey...)
|
||||||
|
if p == 0 {
|
||||||
|
b = encodeNull(b)
|
||||||
|
} else {
|
||||||
|
b = appendInt(b, e.ptrToInt64(p+code.offset))
|
||||||
|
}
|
||||||
|
b = encodeComma(b)
|
||||||
|
code = code.next
|
||||||
case opStructFieldPtrHeadUint:
|
case opStructFieldPtrHeadUint:
|
||||||
p := load(ctxptr, code.idx)
|
p := load(ctxptr, code.idx)
|
||||||
if p == 0 {
|
if p == 0 {
|
||||||
|
|
Loading…
Reference in New Issue