summaryrefslogtreecommitdiff
path: root/vendor/github.com/goccy/go-json/internal/encoder/vm
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/goccy/go-json/internal/encoder/vm')
-rw-r--r--vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go13
-rw-r--r--vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go6
-rw-r--r--vendor/github.com/goccy/go-json/internal/encoder/vm/util.go82
-rw-r--r--vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go3265
4 files changed, 1706 insertions, 1660 deletions
diff --git a/vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go b/vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go
index 43525e1f5..05509feda 100644
--- a/vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go
+++ b/vendor/github.com/goccy/go-json/internal/encoder/vm/debug_vm.go
@@ -6,15 +6,22 @@ import (
"github.com/goccy/go-json/internal/encoder"
)
-func DebugRun(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt encoder.Option) ([]byte, error) {
+func DebugRun(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet) ([]byte, error) {
defer func() {
+ var code *encoder.Opcode
+ if (ctx.Option.Flag & encoder.HTMLEscapeOption) != 0 {
+ code = codeSet.EscapeKeyCode
+ } else {
+ code = codeSet.NoescapeKeyCode
+ }
+
if err := recover(); err != nil {
fmt.Println("=============[DEBUG]===============")
fmt.Println("* [TYPE]")
fmt.Println(codeSet.Type)
fmt.Printf("\n")
fmt.Println("* [ALL OPCODE]")
- fmt.Println(codeSet.Code.Dump())
+ fmt.Println(code.Dump())
fmt.Printf("\n")
fmt.Println("* [CONTEXT]")
fmt.Printf("%+v\n", ctx)
@@ -23,5 +30,5 @@ func DebugRun(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet,
}
}()
- return Run(ctx, b, codeSet, opt)
+ return Run(ctx, b, codeSet)
}
diff --git a/vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go b/vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go
index ec24ee32e..65252b4a5 100644
--- a/vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go
+++ b/vendor/github.com/goccy/go-json/internal/encoder/vm/hack.go
@@ -2,8 +2,8 @@ package vm
import (
// HACK: compile order
- // `vm`, `vm_escaped`, `vm_indent`, `vm_escaped_indent` packages uses a lot of memory to compile,
+ // `vm`, `vm_indent`, `vm_color`, `vm_color_indent` packages uses a lot of memory to compile,
// so forcibly make dependencies and avoid compiling in concurrent.
- // dependency order: vm => vm_escaped => vm_indent => vm_escaped_indent
- _ "github.com/goccy/go-json/internal/encoder/vm_escaped"
+ // dependency order: vm => vm_indent => vm_color => vm_color_indent
+ _ "github.com/goccy/go-json/internal/encoder/vm_indent"
)
diff --git a/vendor/github.com/goccy/go-json/internal/encoder/vm/util.go b/vendor/github.com/goccy/go-json/internal/encoder/vm/util.go
index 01e608f52..f06f9c8c4 100644
--- a/vendor/github.com/goccy/go-json/internal/encoder/vm/util.go
+++ b/vendor/github.com/goccy/go-json/internal/encoder/vm/util.go
@@ -33,24 +33,33 @@ type emptyInterface struct {
ptr unsafe.Pointer
}
+type nonEmptyInterface struct {
+ itab *struct {
+ ityp *runtime.Type // static interface type
+ typ *runtime.Type // dynamic concrete type
+ // unused fields...
+ }
+ ptr unsafe.Pointer
+}
+
func errUnimplementedOp(op encoder.OpType) error {
return fmt.Errorf("encoder: opcode %s has not been implemented", op)
}
-func load(base uintptr, idx uintptr) uintptr {
- addr := base + idx
+func load(base uintptr, idx uint32) uintptr {
+ addr := base + uintptr(idx)
return **(**uintptr)(unsafe.Pointer(&addr))
}
-func store(base uintptr, idx uintptr, p uintptr) {
- addr := base + idx
+func store(base uintptr, idx uint32, p uintptr) {
+ addr := base + uintptr(idx)
**(**uintptr)(unsafe.Pointer(&addr)) = p
}
-func loadNPtr(base uintptr, idx uintptr, ptrNum int) uintptr {
- addr := base + idx
+func loadNPtr(base uintptr, idx uint32, ptrNum uint8) uintptr {
+ addr := base + uintptr(idx)
p := **(**uintptr)(unsafe.Pointer(&addr))
- for i := 0; i < ptrNum; i++ {
+ for i := uint8(0); i < ptrNum; i++ {
if p == 0 {
return 0
}
@@ -70,8 +79,8 @@ func ptrToSlice(p uintptr) *runtime.SliceHeader { return *(**runtime.SliceHeader
func ptrToPtr(p uintptr) uintptr {
return uintptr(**(**unsafe.Pointer)(unsafe.Pointer(&p)))
}
-func ptrToNPtr(p uintptr, ptrNum int) uintptr {
- for i := 0; i < ptrNum; i++ {
+func ptrToNPtr(p uintptr, ptrNum uint8) uintptr {
+ for i := uint8(0); i < ptrNum; i++ {
if p == 0 {
return 0
}
@@ -90,22 +99,22 @@ func ptrToInterface(code *encoder.Opcode, p uintptr) interface{} {
}))
}
-func appendBool(b []byte, v bool) []byte {
+func appendBool(_ *encoder.RuntimeContext, b []byte, v bool) []byte {
if v {
return append(b, "true"...)
}
return append(b, "false"...)
}
-func appendNull(b []byte) []byte {
+func appendNull(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, "null"...)
}
-func appendComma(b []byte) []byte {
+func appendComma(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, ',')
}
-func appendColon(b []byte) []byte {
+func appendColon(_ *encoder.RuntimeContext, b []byte) []byte {
last := len(b) - 1
b[last] = ':'
return b
@@ -123,45 +132,12 @@ func appendMapEnd(_ *encoder.RuntimeContext, _ *encoder.Opcode, b []byte) []byte
return b
}
-func appendInterface(ctx *encoder.RuntimeContext, codeSet *encoder.OpcodeSet, opt encoder.Option, _ *encoder.Opcode, b []byte, iface *emptyInterface, ptrOffset uintptr) ([]byte, error) {
- ctx.KeepRefs = append(ctx.KeepRefs, unsafe.Pointer(iface))
- ifaceCodeSet, err := encoder.CompileToGetCodeSet(uintptr(unsafe.Pointer(iface.typ)))
- if err != nil {
- return nil, err
- }
-
- totalLength := uintptr(codeSet.CodeLength)
- nextTotalLength := uintptr(ifaceCodeSet.CodeLength)
-
- curlen := uintptr(len(ctx.Ptrs))
- offsetNum := ptrOffset / uintptrSize
-
- newLen := offsetNum + totalLength + nextTotalLength
- if curlen < newLen {
- ctx.Ptrs = append(ctx.Ptrs, make([]uintptr, newLen-curlen)...)
- }
- oldPtrs := ctx.Ptrs
-
- newPtrs := ctx.Ptrs[(ptrOffset+totalLength*uintptrSize)/uintptrSize:]
- newPtrs[0] = uintptr(iface.ptr)
-
- ctx.Ptrs = newPtrs
-
- bb, err := Run(ctx, b, ifaceCodeSet, opt)
- if err != nil {
- return nil, err
- }
-
- ctx.Ptrs = oldPtrs
- return bb, nil
-}
-
func appendMarshalJSON(ctx *encoder.RuntimeContext, code *encoder.Opcode, b []byte, v interface{}) ([]byte, error) {
- return encoder.AppendMarshalJSON(ctx, code, b, v, false)
+ return encoder.AppendMarshalJSON(ctx, code, b, v)
}
-func appendMarshalText(code *encoder.Opcode, b []byte, v interface{}) ([]byte, error) {
- return encoder.AppendMarshalText(code, b, v, false)
+func appendMarshalText(ctx *encoder.RuntimeContext, code *encoder.Opcode, b []byte, v interface{}) ([]byte, error) {
+ return encoder.AppendMarshalText(ctx, code, b, v)
}
func appendArrayHead(_ *encoder.RuntimeContext, _ *encoder.Opcode, b []byte) []byte {
@@ -174,11 +150,11 @@ func appendArrayEnd(_ *encoder.RuntimeContext, _ *encoder.Opcode, b []byte) []by
return append(b, ',')
}
-func appendEmptyArray(b []byte) []byte {
+func appendEmptyArray(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, '[', ']', ',')
}
-func appendEmptyObject(b []byte) []byte {
+func appendEmptyObject(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, '{', '}', ',')
}
@@ -188,7 +164,7 @@ func appendObjectEnd(_ *encoder.RuntimeContext, _ *encoder.Opcode, b []byte) []b
return append(b, ',')
}
-func appendStructHead(b []byte) []byte {
+func appendStructHead(_ *encoder.RuntimeContext, b []byte) []byte {
return append(b, '{')
}
@@ -204,7 +180,7 @@ func appendStructEndSkipLast(ctx *encoder.RuntimeContext, code *encoder.Opcode,
last := len(b) - 1
if b[last] == ',' {
b[last] = '}'
- return appendComma(b)
+ return appendComma(ctx, b)
}
return appendStructEnd(ctx, code, b)
}
diff --git a/vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go b/vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go
index 952236425..5857249da 100644
--- a/vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go
+++ b/vendor/github.com/goccy/go-json/internal/encoder/vm/vm.go
@@ -7,13 +7,19 @@ import (
"unsafe"
"github.com/goccy/go-json/internal/encoder"
+ "github.com/goccy/go-json/internal/runtime"
)
-func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt encoder.Option) ([]byte, error) {
+func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet) ([]byte, error) {
recursiveLevel := 0
ptrOffset := uintptr(0)
ctxptr := ctx.Ptr()
- code := codeSet.Code
+ var code *encoder.Opcode
+ if (ctx.Option.Flag & encoder.HTMLEscapeOption) != 0 {
+ code = codeSet.EscapeKeyCode
+ } else {
+ code = codeSet.NoescapeKeyCode
+ }
for {
switch code.Op {
@@ -26,62 +32,62 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpIntPtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
store(ctxptr, code.Idx, p)
fallthrough
case encoder.OpInt:
- b = appendInt(b, ptrToUint64(load(ctxptr, code.Idx)), code)
- b = appendComma(b)
+ b = appendInt(ctx, b, ptrToUint64(load(ctxptr, code.Idx)), code)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpUintPtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
store(ctxptr, code.Idx, p)
fallthrough
case encoder.OpUint:
- b = appendUint(b, ptrToUint64(load(ctxptr, code.Idx)), code)
- b = appendComma(b)
+ b = appendUint(ctx, b, ptrToUint64(load(ctxptr, code.Idx)), code)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpIntString:
b = append(b, '"')
- b = appendInt(b, ptrToUint64(load(ctxptr, code.Idx)), code)
+ b = appendInt(ctx, b, ptrToUint64(load(ctxptr, code.Idx)), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpUintString:
b = append(b, '"')
- b = appendUint(b, ptrToUint64(load(ctxptr, code.Idx)), code)
+ b = appendUint(ctx, b, ptrToUint64(load(ctxptr, code.Idx)), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpFloat32Ptr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
store(ctxptr, code.Idx, p)
fallthrough
case encoder.OpFloat32:
- b = appendFloat32(b, ptrToFloat32(load(ctxptr, code.Idx)))
- b = appendComma(b)
+ b = appendFloat32(ctx, b, ptrToFloat32(load(ctxptr, code.Idx)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpFloat64Ptr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
@@ -92,73 +98,73 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
- b = appendComma(b)
+ b = appendFloat64(ctx, b, v)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStringPtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
store(ctxptr, code.Idx, p)
fallthrough
case encoder.OpString:
- b = appendString(b, ptrToString(load(ctxptr, code.Idx)))
- b = appendComma(b)
+ b = appendString(ctx, b, ptrToString(load(ctxptr, code.Idx)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpBoolPtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
store(ctxptr, code.Idx, p)
fallthrough
case encoder.OpBool:
- b = appendBool(b, ptrToBool(load(ctxptr, code.Idx)))
- b = appendComma(b)
+ b = appendBool(ctx, b, ptrToBool(load(ctxptr, code.Idx)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpBytesPtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
store(ctxptr, code.Idx, p)
fallthrough
case encoder.OpBytes:
- b = appendByteSlice(b, ptrToBytes(load(ctxptr, code.Idx)))
- b = appendComma(b)
+ b = appendByteSlice(ctx, b, ptrToBytes(load(ctxptr, code.Idx)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpNumberPtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
store(ctxptr, code.Idx, p)
fallthrough
case encoder.OpNumber:
- bb, err := appendNumber(b, ptrToNumber(load(ctxptr, code.Idx)))
+ bb, err := appendNumber(ctx, b, ptrToNumber(load(ctxptr, code.Idx)))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
code = code.Next
case encoder.OpInterfacePtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
@@ -167,38 +173,92 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpInterface:
p := load(ctxptr, code.Idx)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
- for _, seen := range ctx.SeenPtr {
- if p == seen {
- return nil, errUnsupportedValue(code, p)
+ if recursiveLevel > encoder.StartDetectingCyclesAfter {
+ for _, seen := range ctx.SeenPtr {
+ if p == seen {
+ return nil, errUnsupportedValue(code, p)
+ }
}
}
ctx.SeenPtr = append(ctx.SeenPtr, p)
- iface := (*emptyInterface)(ptrToUnsafePtr(p))
- if iface.ptr == nil {
- b = appendNull(b)
- b = appendComma(b)
+ var (
+ typ *runtime.Type
+ ifacePtr unsafe.Pointer
+ )
+ up := ptrToUnsafePtr(p)
+ if code.Flags&encoder.NonEmptyInterfaceFlags != 0 {
+ iface := (*nonEmptyInterface)(up)
+ ifacePtr = iface.ptr
+ typ = iface.itab.typ
+ } else {
+ iface := (*emptyInterface)(up)
+ ifacePtr = iface.ptr
+ typ = iface.typ
+ }
+ if ifacePtr == nil {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
- bb, err := appendInterface(ctx, codeSet, opt, code, b, iface, ptrOffset)
+ ctx.KeepRefs = append(ctx.KeepRefs, up)
+ ifaceCodeSet, err := encoder.CompileToGetCodeSet(uintptr(unsafe.Pointer(typ)))
if err != nil {
return nil, err
}
- ctxptr = ctx.Ptr()
+
+ totalLength := uintptr(code.Length) + 3
+ nextTotalLength := uintptr(ifaceCodeSet.CodeLength) + 3
+
+ var c *encoder.Opcode
+ if (ctx.Option.Flag & encoder.HTMLEscapeOption) != 0 {
+ c = ifaceCodeSet.InterfaceEscapeKeyCode
+ } else {
+ c = ifaceCodeSet.InterfaceNoescapeKeyCode
+ }
+ curlen := uintptr(len(ctx.Ptrs))
+ offsetNum := ptrOffset / uintptrSize
+ oldOffset := ptrOffset
+ ptrOffset += totalLength * uintptrSize
+ oldBaseIndent := ctx.BaseIndent
+ indentDiffFromTop := c.Indent - 1
+ ctx.BaseIndent += code.Indent - indentDiffFromTop
+
+ newLen := offsetNum + totalLength + nextTotalLength
+ if curlen < newLen {
+ ctx.Ptrs = append(ctx.Ptrs, make([]uintptr, newLen-curlen)...)
+ }
+ ctxptr = ctx.Ptr() + ptrOffset // assign new ctxptr
+
+ end := ifaceCodeSet.EndCode
+ store(ctxptr, c.Idx, uintptr(ifacePtr))
+ store(ctxptr, end.Idx, oldOffset)
+ store(ctxptr, end.ElemIdx, uintptr(unsafe.Pointer(code.Next)))
+ storeIndent(ctxptr, end, uintptr(oldBaseIndent))
+ code = c
+ recursiveLevel++
+ case encoder.OpInterfaceEnd:
+ recursiveLevel--
+
+ // restore ctxptr
+ offset := load(ctxptr, code.Idx)
+ restoreIndent(ctx, code, ctxptr)
ctx.SeenPtr = ctx.SeenPtr[:len(ctx.SeenPtr)-1]
- b = bb
- code = code.Next
+ codePtr := load(ctxptr, code.ElemIdx)
+ code = (*encoder.Opcode)(ptrToUnsafePtr(codePtr))
+ ctxptr = ctx.Ptr() + offset
+ ptrOffset = offset
case encoder.OpMarshalJSONPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
@@ -207,25 +267,25 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpMarshalJSON:
p := load(ctxptr, code.Idx)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
- if code.IsNilableType && code.Indirect {
+ if (code.Flags&encoder.IsNilableTypeFlags) != 0 && (code.Flags&encoder.IndirectFlags) != 0 {
p = ptrToPtr(p)
}
bb, err := appendMarshalJSON(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
code = code.Next
case encoder.OpMarshalTextPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
@@ -235,24 +295,24 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
p := load(ctxptr, code.Idx)
if p == 0 {
b = append(b, `""`...)
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
- if code.IsNilableType && code.Indirect {
+ if (code.Flags&encoder.IsNilableTypeFlags) != 0 && (code.Flags&encoder.IndirectFlags) != 0 {
p = ptrToPtr(p)
}
- bb, err := appendMarshalText(code, b, ptrToInterface(code, p))
+ bb, err := appendMarshalText(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
code = code.Next
case encoder.OpSlicePtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.End.Next
break
}
@@ -262,8 +322,8 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
p := load(ctxptr, code.Idx)
slice := ptrToSlice(p)
if p == 0 || slice.Data == nil {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.End.Next
break
}
@@ -275,7 +335,7 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
store(ctxptr, code.Idx, uintptr(slice.Data))
} else {
- b = appendEmptyArray(b)
+ b = appendEmptyArray(ctx, b)
code = code.End.Next
}
case encoder.OpSliceElem:
@@ -285,8 +345,8 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
if idx < length {
b = appendArrayElemIndent(ctx, code, b)
store(ctxptr, code.ElemIdx, idx)
- data := load(ctxptr, code.HeadIdx)
- size := code.Size
+ data := load(ctxptr, code.Idx)
+ size := uintptr(code.Size)
code = code.Next
store(ctxptr, code.Idx, data+idx*size)
} else {
@@ -296,8 +356,8 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpArrayPtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.End.Next
break
}
@@ -306,8 +366,8 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpArray:
p := load(ctxptr, code.Idx)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.End.Next
break
}
@@ -317,17 +377,17 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
store(ctxptr, code.Idx, p)
} else {
- b = appendEmptyArray(b)
+ b = appendEmptyArray(ctx, b)
code = code.End.Next
}
case encoder.OpArrayElem:
idx := load(ctxptr, code.ElemIdx)
idx++
- if idx < code.Length {
+ if idx < uintptr(code.Length) {
b = appendArrayElemIndent(ctx, code, b)
store(ctxptr, code.ElemIdx, idx)
- p := load(ctxptr, code.HeadIdx)
- size := code.Size
+ p := load(ctxptr, code.Idx)
+ size := uintptr(code.Size)
code = code.Next
store(ctxptr, code.Idx, p+idx*size)
} else {
@@ -337,8 +397,8 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpMapPtr:
p := loadNPtr(ctxptr, code.Idx, code.PtrNum)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.End.Next
break
}
@@ -347,31 +407,31 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpMap:
p := load(ctxptr, code.Idx)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.End.Next
break
}
uptr := ptrToUnsafePtr(p)
mlen := maplen(uptr)
if mlen <= 0 {
- b = appendEmptyObject(b)
+ b = appendEmptyObject(ctx, b)
code = code.End.Next
break
}
- b = appendStructHead(b)
+ b = appendStructHead(ctx, b)
iter := mapiterinit(code.Type, uptr)
ctx.KeepRefs = append(ctx.KeepRefs, iter)
store(ctxptr, code.ElemIdx, 0)
store(ctxptr, code.Length, uintptr(mlen))
store(ctxptr, code.MapIter, uintptr(iter))
- if (opt & encoder.UnorderedMapOption) == 0 {
+ if (ctx.Option.Flag & encoder.UnorderedMapOption) != 0 {
+ b = appendMapKeyIndent(ctx, code.Next, b)
+ } else {
mapCtx := encoder.NewMapContext(mlen)
mapCtx.Pos = append(mapCtx.Pos, len(b))
ctx.KeepRefs = append(ctx.KeepRefs, unsafe.Pointer(mapCtx))
store(ctxptr, code.End.MapPos, uintptr(unsafe.Pointer(mapCtx)))
- } else {
- b = appendMapKeyIndent(ctx, code.Next, b)
}
key := mapiterkey(iter)
store(ctxptr, code.Next.Idx, uintptr(key))
@@ -380,7 +440,7 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
idx := load(ctxptr, code.ElemIdx)
length := load(ctxptr, code.Length)
idx++
- if (opt & encoder.UnorderedMapOption) != 0 {
+ if (ctx.Option.Flag & encoder.UnorderedMapOption) != 0 {
if idx < length {
b = appendMapKeyIndent(ctx, code, b)
store(ctxptr, code.ElemIdx, idx)
@@ -409,8 +469,8 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
}
case encoder.OpMapValue:
- if (opt & encoder.UnorderedMapOption) != 0 {
- b = appendColon(b)
+ if (ctx.Option.Flag & encoder.UnorderedMapOption) != 0 {
+ b = appendColon(ctx, b)
} else {
ptr := load(ctxptr, code.End.MapPos)
mapCtx := (*encoder.MapContext)(ptrToUnsafePtr(ptr))
@@ -479,7 +539,8 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
oldOffset := ptrOffset
ptrOffset += code.Jmp.CurLen * uintptrSize
oldBaseIndent := ctx.BaseIndent
- ctx.BaseIndent += code.Indent - 1
+ indentDiffFromTop := c.Indent - 1
+ ctx.BaseIndent += code.Indent - indentDiffFromTop
newLen := offsetNum + code.Jmp.CurLen + code.Jmp.NextLen
if curlen < newLen {
@@ -490,7 +551,7 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
store(ctxptr, c.Idx, ptr)
store(ctxptr, c.End.Next.Idx, oldOffset)
store(ctxptr, c.End.Next.ElemIdx, uintptr(unsafe.Pointer(code.Next)))
- storeIndent(ctxptr, c, uintptr(oldBaseIndent))
+ storeIndent(ctxptr, c.End.Next, uintptr(oldBaseIndent))
code = c
recursiveLevel++
case encoder.OpRecursiveEnd:
@@ -508,9 +569,9 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructPtrHead:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -519,29 +580,31 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHead:
p := load(ctxptr, code.Idx)
- if p == 0 && (code.Indirect || code.Next.Op == encoder.OpStructEnd) {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && ((code.Flags&encoder.IndirectFlags) != 0 || code.Next.Op == encoder.OpStructEnd) {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if !code.AnonymousKey && len(code.Key) > 0 {
- b = appendStructKey(ctx, code, b)
+ if len(code.Key) > 0 {
+ if (code.Flags&encoder.IsTaggedKeyFlags) != 0 || code.Flags&encoder.AnonymousKeyFlags == 0 {
+ b = appendStructKey(ctx, code, b)
+ }
}
- p += code.Offset
+ p += uintptr(code.Offset)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructPtrHeadOmitEmpty:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -550,19 +613,19 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmpty:
p := load(ctxptr, code.Idx)
- if p == 0 && (code.Indirect || code.Next.Op == encoder.OpStructEnd) {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && ((code.Flags&encoder.IndirectFlags) != 0 || code.Next.Op == encoder.OpStructEnd) {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- p += code.Offset
- if p == 0 || (ptrToPtr(p) == 0 && code.IsNextOpPtrType) {
+ p += uintptr(code.Offset)
+ if p == 0 || (ptrToPtr(p) == 0 && (code.Flags&encoder.IsNextOpPtrTypeFlags) != 0) {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
@@ -570,12 +633,12 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
store(ctxptr, code.Idx, p)
}
case encoder.OpStructPtrHeadInt:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -586,27 +649,27 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadInt:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- b = appendInt(b, ptrToUint64(p+code.Offset), code)
- b = appendComma(b)
+ b = appendInt(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyInt:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -617,33 +680,33 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyInt:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v == 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
- b = appendInt(b, u64, code)
- b = appendComma(b)
+ b = appendInt(ctx, b, u64, code)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadIntString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -654,29 +717,29 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadIntString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendInt(b, ptrToUint64(p+code.Offset), code)
+ b = appendInt(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyIntString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -687,34 +750,34 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyIntString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v == 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendInt(b, u64, code)
+ b = appendInt(ctx, b, u64, code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadIntPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -723,34 +786,34 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadIntPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyIntPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -759,32 +822,32 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyIntPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendInt(b, ptrToUint64(p), code)
- b = appendComma(b)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadIntPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -793,36 +856,36 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadIntPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyIntPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -831,35 +894,35 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyIntPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadUint:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -870,27 +933,27 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadUint:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- b = appendUint(b, ptrToUint64(p+code.Offset), code)
- b = appendComma(b)
+ b = appendUint(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyUint:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -901,33 +964,33 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyUint:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v == 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
- b = appendUint(b, u64, code)
- b = appendComma(b)
+ b = appendUint(ctx, b, u64, code)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadUintString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -938,29 +1001,29 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadUintString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendUint(b, ptrToUint64(p+code.Offset), code)
+ b = appendUint(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyUintString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -971,34 +1034,34 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyUintString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v == 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendUint(b, u64, code)
+ b = appendUint(ctx, b, u64, code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadUintPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1007,34 +1070,34 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadUintPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyUintPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1043,32 +1106,32 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyUintPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendUint(b, ptrToUint64(p), code)
- b = appendComma(b)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadUintPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1077,36 +1140,36 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadUintPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyUintPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1115,35 +1178,35 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyUintPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadFloat32:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1154,27 +1217,27 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadFloat32:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- b = appendFloat32(b, ptrToFloat32(p+code.Offset))
- b = appendComma(b)
+ b = appendFloat32(ctx, b, ptrToFloat32(p+uintptr(code.Offset)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyFloat32:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1185,32 +1248,32 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyFloat32:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToFloat32(p + code.Offset)
+ v := ptrToFloat32(p + uintptr(code.Offset))
if v == 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
- b = appendFloat32(b, v)
- b = appendComma(b)
+ b = appendFloat32(ctx, b, v)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadFloat32String:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1221,29 +1284,29 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadFloat32String:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat32(b, ptrToFloat32(p+code.Offset))
+ b = appendFloat32(ctx, b, ptrToFloat32(p+uintptr(code.Offset)))
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyFloat32String:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1254,33 +1317,33 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyFloat32String:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToFloat32(p + code.Offset)
+ v := ptrToFloat32(p + uintptr(code.Offset))
if v == 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat32(b, v)
+ b = appendFloat32(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadFloat32Ptr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1289,34 +1352,34 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadFloat32Ptr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyFloat32Ptr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1325,32 +1388,32 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyFloat32Ptr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendFloat32(b, ptrToFloat32(p))
- b = appendComma(b)
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadFloat32PtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1359,36 +1422,36 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadFloat32PtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyFloat32PtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1397,35 +1460,35 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyFloat32PtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadFloat64:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1436,31 +1499,31 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadFloat64:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- v := ptrToFloat64(p + code.Offset)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- b = appendFloat64(b, v)
- b = appendComma(b)
+ b = appendFloat64(ctx, b, v)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyFloat64:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1471,17 +1534,17 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyFloat64:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToFloat64(p + code.Offset)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if v == 0 {
code = code.NextField
} else {
@@ -1489,17 +1552,17 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
return nil, errUnsupportedFloat(v)
}
b = appendStructKey(ctx, code, b)
- b = appendFloat64(b, v)
- b = appendComma(b)
+ b = appendFloat64(ctx, b, v)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadFloat64String:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1510,33 +1573,33 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadFloat64String:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToFloat64(p + code.Offset)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyFloat64String:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1547,17 +1610,17 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyFloat64String:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToFloat64(p + code.Offset)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if v == 0 {
code = code.NextField
} else {
@@ -1566,17 +1629,17 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadFloat64Ptr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1585,38 +1648,38 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadFloat64Ptr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
v := ptrToFloat64(p)
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyFloat64Ptr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1625,19 +1688,19 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyFloat64Ptr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
@@ -1645,16 +1708,16 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
- b = appendComma(b)
+ b = appendFloat64(ctx, b, v)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadFloat64PtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1663,40 +1726,40 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadFloat64PtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
v := ptrToFloat64(p)
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyFloat64PtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1705,19 +1768,19 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyFloat64PtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
@@ -1726,18 +1789,18 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1748,27 +1811,27 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- b = appendString(b, ptrToString(p+code.Offset))
- b = appendComma(b)
+ b = appendString(ctx, b, ptrToString(p+uintptr(code.Offset)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1779,32 +1842,32 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToString(p + code.Offset)
+ v := ptrToString(p + uintptr(code.Offset))
if v == "" {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
- b = appendString(b, v)
- b = appendComma(b)
+ b = appendString(ctx, b, v)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadStringString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1815,27 +1878,27 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadStringString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- b = appendString(b, string(appendString([]byte{}, ptrToString(p+code.Offset))))
- b = appendComma(b)
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, ptrToString(p+uintptr(code.Offset)))))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyStringString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1846,31 +1909,31 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyStringString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToString(p + code.Offset)
+ v := ptrToString(p + uintptr(code.Offset))
if v == "" {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
- b = appendString(b, string(appendString([]byte{}, v)))
- b = appendComma(b)
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, v)))
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadStringPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1879,34 +1942,34 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadStringPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendString(b, ptrToString(p))
+ b = appendString(ctx, b, ptrToString(p))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyStringPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1915,32 +1978,32 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyStringPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendString(b, ptrToString(p))
- b = appendComma(b)
+ b = appendString(ctx, b, ptrToString(p))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadStringPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1949,34 +2012,34 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadStringPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendString(b, string(appendString([]byte{}, ptrToString(p))))
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, ptrToString(p))))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyStringPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -1985,33 +2048,33 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyStringPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendString(b, string(appendString([]byte{}, ptrToString(p))))
- b = appendComma(b)
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, ptrToString(p))))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadBool:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2022,27 +2085,27 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadBool:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- b = appendBool(b, ptrToBool(p+code.Offset))
- b = appendComma(b)
+ b = appendBool(ctx, b, ptrToBool(p+uintptr(code.Offset)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyBool:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2053,32 +2116,32 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyBool:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToBool(p + code.Offset)
+ v := ptrToBool(p + uintptr(code.Offset))
if v {
b = appendStructKey(ctx, code, b)
- b = appendBool(b, v)
- b = appendComma(b)
+ b = appendBool(ctx, b, v)
+ b = appendComma(ctx, b)
code = code.Next
} else {
code = code.NextField
}
case encoder.OpStructPtrHeadBoolString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2089,29 +2152,29 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadBoolString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendBool(b, ptrToBool(p+code.Offset))
+ b = appendBool(ctx, b, ptrToBool(p+uintptr(code.Offset)))
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyBoolString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2122,23 +2185,23 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyBoolString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToBool(p + code.Offset)
+ v := ptrToBool(p + uintptr(code.Offset))
if v {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendBool(b, v)
+ b = appendBool(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
} else {
code = code.NextField
@@ -2146,9 +2209,9 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructPtrHeadBoolPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2157,34 +2220,34 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadBoolPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyBoolPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2193,32 +2256,32 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyBoolPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendBool(b, ptrToBool(p))
- b = appendComma(b)
+ b = appendBool(ctx, b, ptrToBool(p))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadBoolPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2227,36 +2290,36 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadBoolPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyBoolPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2265,35 +2328,35 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyBoolPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadBytes:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2304,27 +2367,27 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadBytes:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- b = appendByteSlice(b, ptrToBytes(p+code.Offset))
- b = appendComma(b)
+ b = appendByteSlice(ctx, b, ptrToBytes(p+uintptr(code.Offset)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyBytes:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2335,31 +2398,31 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyBytes:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToBytes(p + code.Offset)
+ v := ptrToBytes(p + uintptr(code.Offset))
if len(v) == 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
- b = appendByteSlice(b, v)
- b = appendComma(b)
+ b = appendByteSlice(ctx, b, v)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadBytesPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2368,34 +2431,34 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadBytesPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendByteSlice(b, ptrToBytes(p))
+ b = appendByteSlice(ctx, b, ptrToBytes(p))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyBytesPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2404,33 +2467,33 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyBytesPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendByteSlice(b, ptrToBytes(p))
- b = appendComma(b)
+ b = appendByteSlice(ctx, b, ptrToBytes(p))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadNumber:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2441,30 +2504,30 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadNumber:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- bb, err := appendNumber(b, ptrToNumber(p+code.Offset))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p+uintptr(code.Offset)))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyNumber:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2475,35 +2538,35 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyNumber:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToNumber(p + code.Offset)
+ v := ptrToNumber(p + uintptr(code.Offset))
if v == "" {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
- bb, err := appendNumber(b, v)
+ bb, err := appendNumber(ctx, b, v)
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
code = code.Next
}
case encoder.OpStructPtrHeadNumberString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2514,32 +2577,32 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadNumberString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- bb, err := appendNumber(b, ptrToNumber(p+code.Offset))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p+uintptr(code.Offset)))
if err != nil {
return nil, err
}
b = append(bb, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyNumberString:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2550,36 +2613,36 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyNumberString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- v := ptrToNumber(p + code.Offset)
+ v := ptrToNumber(p + uintptr(code.Offset))
if v == "" {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- bb, err := appendNumber(b, v)
+ bb, err := appendNumber(ctx, b, v)
if err != nil {
return nil, err
}
b = append(bb, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadNumberPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2588,38 +2651,38 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadNumberPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyNumberPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2628,35 +2691,35 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyNumberPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
}
code = code.Next
case encoder.OpStructPtrHeadNumberPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2665,39 +2728,39 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadNumberPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
b = append(bb, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyNumberPtrString:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2706,38 +2769,38 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyNumberPtrString:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
b = append(bb, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructPtrHeadArray, encoder.OpStructPtrHeadSlice:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2748,27 +2811,27 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadArray, encoder.OpStructHeadSlice:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- p += code.Offset
+ p += uintptr(code.Offset)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructPtrHeadOmitEmptyArray:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2779,27 +2842,27 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptyArray:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- p += code.Offset
+ p += uintptr(code.Offset)
b = appendStructKey(ctx, code, b)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructPtrHeadOmitEmptySlice:
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2810,17 +2873,17 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructHeadOmitEmptySlice:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- p += code.Offset
+ p += uintptr(code.Offset)
slice := ptrToSlice(p)
if slice.Len == 0 {
code = code.NextField
@@ -2832,9 +2895,9 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructPtrHeadArrayPtr, encoder.OpStructPtrHeadSlicePtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2843,24 +2906,24 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadArrayPtr, encoder.OpStructHeadSlicePtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.NextField
} else {
code = code.Next
@@ -2869,9 +2932,9 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructPtrHeadOmitEmptyArrayPtr, encoder.OpStructPtrHeadOmitEmptySlicePtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2880,19 +2943,19 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyArrayPtr, encoder.OpStructHeadOmitEmptySlicePtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
code = code.NextField
@@ -2904,9 +2967,9 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructPtrHeadMap:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2915,29 +2978,29 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadMap:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if p != 0 && code.Indirect {
- p = ptrToPtr(p + code.Offset)
+ if p != 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ p = ptrToPtr(p + uintptr(code.Offset))
}
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructPtrHeadOmitEmptyMap:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2946,19 +3009,19 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyMap:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if p != 0 && code.Indirect {
- p = ptrToPtr(p + code.Offset)
+ if p != 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ p = ptrToPtr(p + uintptr(code.Offset))
}
if maplen(ptrToUnsafePtr(p)) == 0 {
code = code.NextField
@@ -2970,9 +3033,9 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructPtrHeadMapPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -2981,31 +3044,31 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadMapPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.NextField
break
}
- p = ptrToPtr(p + code.Offset)
+ p = ptrToPtr(p + uintptr(code.Offset))
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.NextField
} else {
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p = ptrToNPtr(p, code.PtrNum)
}
code = code.Next
@@ -3014,9 +3077,9 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructPtrHeadOmitEmptyMapPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -3025,26 +3088,26 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyMapPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
if p == 0 {
code = code.NextField
break
}
- p = ptrToPtr(p + code.Offset)
+ p = ptrToPtr(p + uintptr(code.Offset))
if p == 0 {
code = code.NextField
} else {
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
p = ptrToNPtr(p, code.PtrNum)
}
b = appendStructKey(ctx, code, b)
@@ -3054,38 +3117,38 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
case encoder.OpStructPtrHeadMarshalJSON:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
store(ctxptr, code.Idx, ptrToNPtr(p, code.PtrNum))
}
fallthrough
case encoder.OpStructHeadMarshalJSON:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.IsNilableType {
- if code.Indirect || code.Op == encoder.OpStructPtrHeadMarshalJSON {
- p = ptrToPtr(p + code.Offset)
+ if (code.Flags & encoder.IsNilableTypeFlags) != 0 {
+ if (code.Flags&encoder.IndirectFlags) != 0 || code.Op == encoder.OpStructPtrHeadMarshalJSON {
+ p = ptrToPtr(p + uintptr(code.Offset))
}
}
- if p == 0 && code.Nilcheck {
- b = appendNull(b)
+ if p == 0 && (code.Flags&encoder.NilCheckFlags) != 0 {
+ b = appendNull(ctx, b)
} else {
bb, err := appendMarshalJSON(ctx, code, b, ptrToInterface(code, p))
if err != nil {
@@ -3093,42 +3156,42 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyMarshalJSON:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
store(ctxptr, code.Idx, ptrToNPtr(p, code.PtrNum))
}
fallthrough
case encoder.OpStructHeadOmitEmptyMarshalJSON:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.IsNilableType {
- if code.Indirect || code.Op == encoder.OpStructPtrHeadOmitEmptyMarshalJSON {
- p = ptrToPtr(p + code.Offset)
+ if (code.Flags & encoder.IsNilableTypeFlags) != 0 {
+ if (code.Flags&encoder.IndirectFlags) != 0 || code.Op == encoder.OpStructPtrHeadOmitEmptyMarshalJSON {
+ p = ptrToPtr(p + uintptr(code.Offset))
}
}
iface := ptrToInterface(code, p)
- if code.Nilcheck && encoder.IsNilForMarshaler(iface) {
+ if (code.Flags&encoder.NilCheckFlags) != 0 && encoder.IsNilForMarshaler(iface) {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
@@ -3137,15 +3200,15 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
return nil, err
}
b = bb
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadMarshalJSONPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -3154,23 +3217,23 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadMarshalJSONPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
bb, err := appendMarshalJSON(ctx, code, b, ptrToInterface(code, p))
if err != nil {
@@ -3178,14 +3241,14 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyMarshalJSONPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -3194,19 +3257,19 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyMarshalJSONPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
if p == 0 {
code = code.NextField
@@ -3217,103 +3280,103 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
return nil, err
}
b = bb
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadMarshalText:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
store(ctxptr, code.Idx, ptrToNPtr(p, code.PtrNum))
}
fallthrough
case encoder.OpStructHeadMarshalText:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.IsNilableType {
- if code.Indirect || code.Op == encoder.OpStructPtrHeadMarshalText {
- p = ptrToPtr(p + code.Offset)
+ if (code.Flags & encoder.IsNilableTypeFlags) != 0 {
+ if (code.Flags&encoder.IndirectFlags) != 0 || code.Op == encoder.OpStructPtrHeadMarshalText {
+ p = ptrToPtr(p + uintptr(code.Offset))
}
}
- if p == 0 && code.Nilcheck {
- b = appendNull(b)
+ if p == 0 && (code.Flags&encoder.NilCheckFlags) != 0 {
+ b = appendNull(ctx, b)
} else {
- bb, err := appendMarshalText(code, b, ptrToInterface(code, p))
+ bb, err := appendMarshalText(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyMarshalText:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if code.Indirect {
+ if (code.Flags & encoder.IndirectFlags) != 0 {
store(ctxptr, code.Idx, ptrToNPtr(p, code.PtrNum))
}
fallthrough
case encoder.OpStructHeadOmitEmptyMarshalText:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
- if code.IsNilableType {
- if code.Indirect || code.Op == encoder.OpStructPtrHeadOmitEmptyMarshalText {
- p = ptrToPtr(p + code.Offset)
+ if (code.Flags & encoder.IsNilableTypeFlags) != 0 {
+ if (code.Flags&encoder.IndirectFlags) != 0 || code.Op == encoder.OpStructPtrHeadOmitEmptyMarshalText {
+ p = ptrToPtr(p + uintptr(code.Offset))
}
}
- if p == 0 && code.Nilcheck {
+ if p == 0 && (code.Flags&encoder.NilCheckFlags) != 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
- bb, err := appendMarshalText(code, b, ptrToInterface(code, p))
+ bb, err := appendMarshalText(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
b = bb
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructPtrHeadMarshalTextPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -3322,38 +3385,38 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadMarshalTextPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
b = appendStructKey(ctx, code, b)
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- bb, err := appendMarshalText(code, b, ptrToInterface(code, p))
+ bb, err := appendMarshalText(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructPtrHeadOmitEmptyMarshalTextPtr:
p := load(ctxptr, code.Idx)
if p == 0 {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
@@ -3362,43 +3425,43 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
fallthrough
case encoder.OpStructHeadOmitEmptyMarshalTextPtr:
p := load(ctxptr, code.Idx)
- if p == 0 && code.Indirect {
- if !code.AnonymousHead {
- b = appendNull(b)
- b = appendComma(b)
+ if p == 0 && (code.Flags&encoder.IndirectFlags) != 0 {
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
}
code = code.End.Next
break
}
- if code.Indirect {
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ if (code.Flags & encoder.IndirectFlags) != 0 {
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
}
- if !code.AnonymousHead {
- b = appendStructHead(b)
+ if code.Flags&encoder.AnonymousHeadFlags == 0 {
+ b = appendStructHead(ctx, b)
}
if p == 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
- bb, err := appendMarshalText(code, b, ptrToInterface(code, p))
+ bb, err := appendMarshalText(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
b = bb
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
}
case encoder.OpStructField:
- if !code.AnonymousKey {
+ if code.Flags&encoder.IsTaggedKeyFlags != 0 || code.Flags&encoder.AnonymousKeyFlags == 0 {
b = appendStructKey(ctx, code, b)
}
- p := load(ctxptr, code.HeadIdx) + code.Offset
+ p := load(ctxptr, code.Idx) + uintptr(code.Offset)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructFieldOmitEmpty:
- p := load(ctxptr, code.HeadIdx)
- p += code.Offset
- if ptrToPtr(p) == 0 && code.IsNextOpPtrType {
+ p := load(ctxptr, code.Idx)
+ p += uintptr(code.Offset)
+ if ptrToPtr(p) == 0 && (code.Flags&encoder.IsNextOpPtrTypeFlags) != 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
@@ -3406,298 +3469,298 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
store(ctxptr, code.Idx, p)
}
case encoder.OpStructFieldInt:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendInt(b, ptrToUint64(p+code.Offset), code)
- b = appendComma(b)
+ b = appendInt(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyInt:
- p := load(ctxptr, code.HeadIdx)
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ p := load(ctxptr, code.Idx)
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v != 0 {
b = appendStructKey(ctx, code, b)
- b = appendInt(b, u64, code)
- b = appendComma(b)
+ b = appendInt(ctx, b, u64, code)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldIntString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendInt(b, ptrToUint64(p+code.Offset), code)
+ b = appendInt(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyIntString:
- p := load(ctxptr, code.HeadIdx)
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ p := load(ctxptr, code.Idx)
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendInt(b, u64, code)
+ b = appendInt(ctx, b, u64, code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldIntPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyIntPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendInt(b, ptrToUint64(p), code)
- b = appendComma(b)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldIntPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyIntPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldUint:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendUint(b, ptrToUint64(p+code.Offset), code)
- b = appendComma(b)
+ b = appendUint(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyUint:
- p := load(ctxptr, code.HeadIdx)
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ p := load(ctxptr, code.Idx)
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v != 0 {
b = appendStructKey(ctx, code, b)
- b = appendUint(b, u64, code)
- b = appendComma(b)
+ b = appendUint(ctx, b, u64, code)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldUintString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendUint(b, ptrToUint64(p+code.Offset), code)
+ b = appendUint(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyUintString:
- p := load(ctxptr, code.HeadIdx)
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ p := load(ctxptr, code.Idx)
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendUint(b, u64, code)
+ b = appendUint(ctx, b, u64, code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldUintPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyUintPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendUint(b, ptrToUint64(p), code)
- b = appendComma(b)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldUintPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyUintPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldFloat32:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendFloat32(b, ptrToFloat32(p+code.Offset))
- b = appendComma(b)
+ b = appendFloat32(ctx, b, ptrToFloat32(p+uintptr(code.Offset)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyFloat32:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat32(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat32(p + uintptr(code.Offset))
if v != 0 {
b = appendStructKey(ctx, code, b)
- b = appendFloat32(b, v)
- b = appendComma(b)
+ b = appendFloat32(ctx, b, v)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldFloat32String:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat32(b, ptrToFloat32(p+code.Offset))
+ b = appendFloat32(ctx, b, ptrToFloat32(p+uintptr(code.Offset)))
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyFloat32String:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat32(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat32(p + uintptr(code.Offset))
if v != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat32(b, v)
+ b = appendFloat32(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldFloat32Ptr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyFloat32Ptr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendFloat32(b, ptrToFloat32(p))
- b = appendComma(b)
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldFloat32PtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyFloat32PtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldFloat64:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- v := ptrToFloat64(p + code.Offset)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
- b = appendComma(b)
+ b = appendFloat64(ctx, b, v)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyFloat64:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat64(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if v != 0 {
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
b = appendStructKey(ctx, code, b)
- b = appendFloat64(b, v)
- b = appendComma(b)
+ b = appendFloat64(ctx, b, v)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldFloat64String:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat64(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyFloat64String:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat64(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if v != 0 {
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldFloat64Ptr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
- b = appendComma(b)
+ b = appendNull(ctx, b)
+ b = appendComma(ctx, b)
code = code.Next
break
}
@@ -3705,42 +3768,42 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
- b = appendComma(b)
+ b = appendFloat64(ctx, b, v)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyFloat64Ptr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
v := ptrToFloat64(p)
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
- b = appendComma(b)
+ b = appendFloat64(ctx, b, v)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldFloat64PtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
v := ptrToFloat64(p)
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
b = append(b, '"')
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyFloat64PtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
@@ -3748,307 +3811,307 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendString(b, ptrToString(p+code.Offset))
- b = appendComma(b)
+ b = appendString(ctx, b, ptrToString(p+uintptr(code.Offset)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyString:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToString(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToString(p + uintptr(code.Offset))
if v != "" {
b = appendStructKey(ctx, code, b)
- b = appendString(b, v)
- b = appendComma(b)
+ b = appendString(ctx, b, v)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldStringString:
- p := load(ctxptr, code.HeadIdx)
- s := ptrToString(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ s := ptrToString(p + uintptr(code.Offset))
b = appendStructKey(ctx, code, b)
- b = appendString(b, string(appendString([]byte{}, s)))
- b = appendComma(b)
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, s)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyStringString:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToString(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToString(p + uintptr(code.Offset))
if v != "" {
b = appendStructKey(ctx, code, b)
- b = appendString(b, string(appendString([]byte{}, v)))
- b = appendComma(b)
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, v)))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldStringPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendString(b, ptrToString(p))
+ b = appendString(ctx, b, ptrToString(p))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyStringPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendString(b, ptrToString(p))
- b = appendComma(b)
+ b = appendString(ctx, b, ptrToString(p))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldStringPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendString(b, string(appendString([]byte{}, ptrToString(p))))
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, ptrToString(p))))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyStringPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendString(b, string(appendString([]byte{}, ptrToString(p))))
- b = appendComma(b)
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, ptrToString(p))))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldBool:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendBool(b, ptrToBool(p+code.Offset))
- b = appendComma(b)
+ b = appendBool(ctx, b, ptrToBool(p+uintptr(code.Offset)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyBool:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToBool(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToBool(p + uintptr(code.Offset))
if v {
b = appendStructKey(ctx, code, b)
- b = appendBool(b, v)
- b = appendComma(b)
+ b = appendBool(ctx, b, v)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldBoolString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendBool(b, ptrToBool(p+code.Offset))
+ b = appendBool(ctx, b, ptrToBool(p+uintptr(code.Offset)))
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyBoolString:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToBool(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToBool(p + uintptr(code.Offset))
if v {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendBool(b, v)
+ b = appendBool(ctx, b, v)
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldBoolPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyBoolPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendBool(b, ptrToBool(p))
- b = appendComma(b)
+ b = appendBool(ctx, b, ptrToBool(p))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldBoolPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
b = append(b, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyBoolPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
b = append(b, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldBytes:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendByteSlice(b, ptrToBytes(p+code.Offset))
- b = appendComma(b)
+ b = appendByteSlice(ctx, b, ptrToBytes(p+uintptr(code.Offset)))
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyBytes:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToBytes(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToBytes(p + uintptr(code.Offset))
if len(v) > 0 {
b = appendStructKey(ctx, code, b)
- b = appendByteSlice(b, v)
- b = appendComma(b)
+ b = appendByteSlice(ctx, b, v)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldBytesPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendByteSlice(b, ptrToBytes(p))
+ b = appendByteSlice(ctx, b, ptrToBytes(p))
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyBytesPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendByteSlice(b, ptrToBytes(p))
- b = appendComma(b)
+ b = appendByteSlice(ctx, b, ptrToBytes(p))
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldNumber:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- bb, err := appendNumber(b, ptrToNumber(p+code.Offset))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p+uintptr(code.Offset)))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
code = code.Next
case encoder.OpStructFieldOmitEmptyNumber:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToNumber(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToNumber(p + uintptr(code.Offset))
if v != "" {
b = appendStructKey(ctx, code, b)
- bb, err := appendNumber(b, v)
+ bb, err := appendNumber(ctx, b, v)
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
}
code = code.Next
case encoder.OpStructFieldNumberString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- bb, err := appendNumber(b, ptrToNumber(p+code.Offset))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p+uintptr(code.Offset)))
if err != nil {
return nil, err
}
b = append(bb, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyNumberString:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToNumber(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToNumber(p + uintptr(code.Offset))
if v != "" {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- bb, err := appendNumber(b, v)
+ bb, err := appendNumber(ctx, b, v)
if err != nil {
return nil, err
}
b = append(bb, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldNumberPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyNumberPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
}
code = code.Next
case encoder.OpStructFieldNumberPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
b = appendStructKey(ctx, code, b)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
b = append(bb, '"')
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyNumberPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
b = append(bb, '"')
- b = appendComma(b)
+ b = appendComma(ctx, b)
}
code = code.Next
case encoder.OpStructFieldMarshalJSON:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- p += code.Offset
- if code.IsNilableType {
+ p += uintptr(code.Offset)
+ if (code.Flags & encoder.IsNilableTypeFlags) != 0 {
p = ptrToPtr(p)
}
- if p == 0 && code.Nilcheck {
- b = appendNull(b)
+ if p == 0 && (code.Flags&encoder.NilCheckFlags) != 0 {
+ b = appendNull(ctx, b)
} else {
bb, err := appendMarshalJSON(ctx, code, b, ptrToInterface(code, p))
if err != nil {
@@ -4056,20 +4119,20 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyMarshalJSON:
- p := load(ctxptr, code.HeadIdx)
- p += code.Offset
- if code.IsNilableType {
+ p := load(ctxptr, code.Idx)
+ p += uintptr(code.Offset)
+ if (code.Flags & encoder.IsNilableTypeFlags) != 0 {
p = ptrToPtr(p)
}
- if p == 0 && code.Nilcheck {
+ if p == 0 && (code.Flags&encoder.NilCheckFlags) != 0 {
code = code.NextField
break
}
iface := ptrToInterface(code, p)
- if code.Nilcheck && encoder.IsNilForMarshaler(iface) {
+ if (code.Flags&encoder.NilCheckFlags) != 0 && encoder.IsNilForMarshaler(iface) {
code = code.NextField
break
}
@@ -4078,14 +4141,14 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
code = code.Next
case encoder.OpStructFieldMarshalJSONPtr:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
bb, err := appendMarshalJSON(ctx, code, b, ptrToInterface(code, p))
if err != nil {
@@ -4093,103 +4156,103 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyMarshalJSONPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
bb, err := appendMarshalJSON(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
}
code = code.Next
case encoder.OpStructFieldMarshalText:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- p += code.Offset
- if code.IsNilableType {
+ p += uintptr(code.Offset)
+ if (code.Flags & encoder.IsNilableTypeFlags) != 0 {
p = ptrToPtr(p)
}
- if p == 0 && code.Nilcheck {
- b = appendNull(b)
+ if p == 0 && (code.Flags&encoder.NilCheckFlags) != 0 {
+ b = appendNull(ctx, b)
} else {
- bb, err := appendMarshalText(code, b, ptrToInterface(code, p))
+ bb, err := appendMarshalText(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyMarshalText:
- p := load(ctxptr, code.HeadIdx)
- p += code.Offset
- if code.IsNilableType {
+ p := load(ctxptr, code.Idx)
+ p += uintptr(code.Offset)
+ if (code.Flags & encoder.IsNilableTypeFlags) != 0 {
p = ptrToPtr(p)
}
- if p == 0 && code.Nilcheck {
+ if p == 0 && (code.Flags&encoder.NilCheckFlags) != 0 {
code = code.NextField
break
}
b = appendStructKey(ctx, code, b)
- bb, err := appendMarshalText(code, b, ptrToInterface(code, p))
+ bb, err := appendMarshalText(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
code = code.Next
case encoder.OpStructFieldMarshalTextPtr:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- bb, err := appendMarshalText(code, b, ptrToInterface(code, p))
+ bb, err := appendMarshalText(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
b = bb
}
- b = appendComma(b)
+ b = appendComma(ctx, b)
code = code.Next
case encoder.OpStructFieldOmitEmptyMarshalTextPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- bb, err := appendMarshalText(code, b, ptrToInterface(code, p))
+ bb, err := appendMarshalText(ctx, code, b, ptrToInterface(code, p))
if err != nil {
return nil, err
}
- b = appendComma(bb)
+ b = appendComma(ctx, bb)
}
code = code.Next
case encoder.OpStructFieldArray:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p += code.Offset
+ p := load(ctxptr, code.Idx)
+ p += uintptr(code.Offset)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructFieldOmitEmptyArray:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p += code.Offset
+ p := load(ctxptr, code.Idx)
+ p += uintptr(code.Offset)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructFieldArrayPtr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructFieldOmitEmptyArrayPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
code = code.Next
@@ -4199,13 +4262,13 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
case encoder.OpStructFieldSlice:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p += code.Offset
+ p := load(ctxptr, code.Idx)
+ p += uintptr(code.Offset)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructFieldOmitEmptySlice:
- p := load(ctxptr, code.HeadIdx)
- p += code.Offset
+ p := load(ctxptr, code.Idx)
+ p += uintptr(code.Offset)
slice := ptrToSlice(p)
if slice.Len == 0 {
code = code.NextField
@@ -4216,13 +4279,13 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
case encoder.OpStructFieldSlicePtr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructFieldOmitEmptySlicePtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
code = code.Next
@@ -4232,13 +4295,13 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
case encoder.OpStructFieldMap:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToPtr(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ p = ptrToPtr(p + uintptr(code.Offset))
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructFieldOmitEmptyMap:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToPtr(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ p = ptrToPtr(p + uintptr(code.Offset))
if p == 0 || maplen(ptrToUnsafePtr(p)) == 0 {
code = code.NextField
} else {
@@ -4248,16 +4311,16 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
case encoder.OpStructFieldMapPtr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToPtr(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ p = ptrToPtr(p + uintptr(code.Offset))
if p != 0 {
p = ptrToNPtr(p, code.PtrNum)
}
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructFieldOmitEmptyMapPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToPtr(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ p = ptrToPtr(p + uintptr(code.Offset))
if p != 0 {
p = ptrToNPtr(p, code.PtrNum)
}
@@ -4270,14 +4333,14 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
case encoder.OpStructFieldStruct:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p += code.Offset
+ p := load(ctxptr, code.Idx)
+ p += uintptr(code.Offset)
code = code.Next
store(ctxptr, code.Idx, p)
case encoder.OpStructFieldOmitEmptyStruct:
- p := load(ctxptr, code.HeadIdx)
- p += code.Offset
- if ptrToPtr(p) == 0 && code.IsNextOpPtrType {
+ p := load(ctxptr, code.Idx)
+ p += uintptr(code.Offset)
+ if ptrToPtr(p) == 0 && (code.Flags&encoder.IsNextOpPtrTypeFlags) != 0 {
code = code.NextField
} else {
b = appendStructKey(ctx, code, b)
@@ -4290,39 +4353,39 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
b = appendStructEndSkipLast(ctx, code, b)
code = code.Next
case encoder.OpStructEndInt:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendInt(b, ptrToUint64(p+code.Offset), code)
+ b = appendInt(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyInt:
- p := load(ctxptr, code.HeadIdx)
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ p := load(ctxptr, code.Idx)
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v != 0 {
b = appendStructKey(ctx, code, b)
- b = appendInt(b, u64, code)
+ b = appendInt(ctx, b, u64, code)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
}
code = code.Next
case encoder.OpStructEndIntString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendInt(b, ptrToUint64(p+code.Offset), code)
+ b = appendInt(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyIntString:
- p := load(ctxptr, code.HeadIdx)
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ p := load(ctxptr, code.Idx)
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendInt(b, u64, code)
+ b = appendInt(ctx, b, u64, code)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4331,21 +4394,21 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndIntPtr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyIntPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
@@ -4353,24 +4416,24 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndIntPtrString:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyIntPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendInt(b, ptrToUint64(p), code)
+ b = appendInt(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4378,39 +4441,39 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
code = code.Next
case encoder.OpStructEndUint:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendUint(b, ptrToUint64(p+code.Offset), code)
+ b = appendUint(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyUint:
- p := load(ctxptr, code.HeadIdx)
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ p := load(ctxptr, code.Idx)
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v != 0 {
b = appendStructKey(ctx, code, b)
- b = appendUint(b, u64, code)
+ b = appendUint(ctx, b, u64, code)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
}
code = code.Next
case encoder.OpStructEndUintString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendUint(b, ptrToUint64(p+code.Offset), code)
+ b = appendUint(ctx, b, ptrToUint64(p+uintptr(code.Offset)), code)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyUintString:
- p := load(ctxptr, code.HeadIdx)
- u64 := ptrToUint64(p + code.Offset)
- v := u64 & code.Mask
+ p := load(ctxptr, code.Idx)
+ u64 := ptrToUint64(p + uintptr(code.Offset))
+ v := u64 & ((1 << code.NumBitSize) - 1)
if v != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendUint(b, u64, code)
+ b = appendUint(ctx, b, u64, code)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4419,21 +4482,21 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndUintPtr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyUintPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
@@ -4441,24 +4504,24 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndUintPtrString:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyUintPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendUint(b, ptrToUint64(p), code)
+ b = appendUint(ctx, b, ptrToUint64(p), code)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4466,37 +4529,37 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
code = code.Next
case encoder.OpStructEndFloat32:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendFloat32(b, ptrToFloat32(p+code.Offset))
+ b = appendFloat32(ctx, b, ptrToFloat32(p+uintptr(code.Offset)))
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyFloat32:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat32(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat32(p + uintptr(code.Offset))
if v != 0 {
b = appendStructKey(ctx, code, b)
- b = appendFloat32(b, v)
+ b = appendFloat32(ctx, b, v)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
}
code = code.Next
case encoder.OpStructEndFloat32String:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat32(b, ptrToFloat32(p+code.Offset))
+ b = appendFloat32(ctx, b, ptrToFloat32(p+uintptr(code.Offset)))
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyFloat32String:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat32(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat32(p + uintptr(code.Offset))
if v != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat32(b, v)
+ b = appendFloat32(ctx, b, v)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4505,21 +4568,21 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndFloat32Ptr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyFloat32Ptr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
@@ -4527,24 +4590,24 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndFloat32PtrString:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
b = append(b, '"')
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyFloat32PtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat32(b, ptrToFloat32(p))
+ b = appendFloat32(ctx, b, ptrToFloat32(p))
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4552,51 +4615,51 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
code = code.Next
case encoder.OpStructEndFloat64:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat64(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
b = appendStructKey(ctx, code, b)
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyFloat64:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat64(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if v != 0 {
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
b = appendStructKey(ctx, code, b)
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
}
code = code.Next
case encoder.OpStructEndFloat64String:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat64(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyFloat64String:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToFloat64(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToFloat64(p + uintptr(code.Offset))
if v != 0 {
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4605,10 +4668,10 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndFloat64Ptr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
b = appendStructEnd(ctx, code, b)
code = code.Next
break
@@ -4617,19 +4680,19 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyFloat64Ptr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
v := ptrToFloat64(p)
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
@@ -4637,24 +4700,24 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndFloat64PtrString:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
v := ptrToFloat64(p)
if math.IsInf(v, 0) || math.IsNaN(v) {
return nil, errUnsupportedFloat(v)
}
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyFloat64PtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
v := ptrToFloat64(p)
@@ -4662,7 +4725,7 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
return nil, errUnsupportedFloat(v)
}
b = append(b, '"')
- b = appendFloat64(b, v)
+ b = appendFloat64(ctx, b, v)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4670,35 +4733,35 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
code = code.Next
case encoder.OpStructEndString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendString(b, ptrToString(p+code.Offset))
+ b = appendString(ctx, b, ptrToString(p+uintptr(code.Offset)))
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyString:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToString(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToString(p + uintptr(code.Offset))
if v != "" {
b = appendStructKey(ctx, code, b)
- b = appendString(b, v)
+ b = appendString(ctx, b, v)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
}
code = code.Next
case encoder.OpStructEndStringString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- s := ptrToString(p + code.Offset)
- b = appendString(b, string(appendString([]byte{}, s)))
+ s := ptrToString(p + uintptr(code.Offset))
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, s)))
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyStringString:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToString(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToString(p + uintptr(code.Offset))
if v != "" {
b = appendStructKey(ctx, code, b)
- b = appendString(b, string(appendString([]byte{}, v)))
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, v)))
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
@@ -4706,21 +4769,21 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndStringPtr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendString(b, ptrToString(p))
+ b = appendString(ctx, b, ptrToString(p))
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyStringPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendString(b, ptrToString(p))
+ b = appendString(ctx, b, ptrToString(p))
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
@@ -4728,58 +4791,58 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndStringPtrString:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendString(b, string(appendString([]byte{}, ptrToString(p))))
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, ptrToString(p))))
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyStringPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendString(b, string(appendString([]byte{}, ptrToString(p))))
+ b = appendString(ctx, b, string(appendString(ctx, []byte{}, ptrToString(p))))
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
}
code = code.Next
case encoder.OpStructEndBool:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendBool(b, ptrToBool(p+code.Offset))
+ b = appendBool(ctx, b, ptrToBool(p+uintptr(code.Offset)))
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyBool:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToBool(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToBool(p + uintptr(code.Offset))
if v {
b = appendStructKey(ctx, code, b)
- b = appendBool(b, v)
+ b = appendBool(ctx, b, v)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
}
code = code.Next
case encoder.OpStructEndBoolString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendBool(b, ptrToBool(p+code.Offset))
+ b = appendBool(ctx, b, ptrToBool(p+uintptr(code.Offset)))
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyBoolString:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToBool(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToBool(p + uintptr(code.Offset))
if v {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendBool(b, v)
+ b = appendBool(ctx, b, v)
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4788,21 +4851,21 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndBoolPtr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyBoolPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
@@ -4810,24 +4873,24 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndBoolPtrString:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
b = append(b, '"')
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyBoolPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- b = appendBool(b, ptrToBool(p))
+ b = appendBool(ctx, b, ptrToBool(p))
b = append(b, '"')
b = appendStructEnd(ctx, code, b)
} else {
@@ -4835,17 +4898,17 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
code = code.Next
case encoder.OpStructEndBytes:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- b = appendByteSlice(b, ptrToBytes(p+code.Offset))
+ b = appendByteSlice(ctx, b, ptrToBytes(p+uintptr(code.Offset)))
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyBytes:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToBytes(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToBytes(p + uintptr(code.Offset))
if len(v) > 0 {
b = appendStructKey(ctx, code, b)
- b = appendByteSlice(b, v)
+ b = appendByteSlice(ctx, b, v)
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
@@ -4853,41 +4916,41 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndBytesPtr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- b = appendByteSlice(b, ptrToBytes(p))
+ b = appendByteSlice(ctx, b, ptrToBytes(p))
}
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyBytesPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- b = appendByteSlice(b, ptrToBytes(p))
+ b = appendByteSlice(ctx, b, ptrToBytes(p))
b = appendStructEnd(ctx, code, b)
} else {
b = appendStructEndSkipLast(ctx, code, b)
}
code = code.Next
case encoder.OpStructEndNumber:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
- bb, err := appendNumber(b, ptrToNumber(p+code.Offset))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p+uintptr(code.Offset)))
if err != nil {
return nil, err
}
b = appendStructEnd(ctx, code, bb)
code = code.Next
case encoder.OpStructEndOmitEmptyNumber:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToNumber(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToNumber(p + uintptr(code.Offset))
if v != "" {
b = appendStructKey(ctx, code, b)
- bb, err := appendNumber(b, v)
+ bb, err := appendNumber(ctx, b, v)
if err != nil {
return nil, err
}
@@ -4897,10 +4960,10 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
}
code = code.Next
case encoder.OpStructEndNumberString:
- p := load(ctxptr, code.HeadIdx)
+ p := load(ctxptr, code.Idx)
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- bb, err := appendNumber(b, ptrToNumber(p+code.Offset))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p+uintptr(code.Offset)))
if err != nil {
return nil, err
}
@@ -4908,12 +4971,12 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyNumberString:
- p := load(ctxptr, code.HeadIdx)
- v := ptrToNumber(p + code.Offset)
+ p := load(ctxptr, code.Idx)
+ v := ptrToNumber(p + uintptr(code.Offset))
if v != "" {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- bb, err := appendNumber(b, v)
+ bb, err := appendNumber(ctx, b, v)
if err != nil {
return nil, err
}
@@ -4925,12 +4988,12 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndNumberPtr:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
@@ -4939,11 +5002,11 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyNumberPtr:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
@@ -4954,13 +5017,13 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
code = code.Next
case encoder.OpStructEndNumberPtrString:
b = appendStructKey(ctx, code, b)
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p == 0 {
- b = appendNull(b)
+ b = appendNull(ctx, b)
} else {
b = append(b, '"')
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}
@@ -4969,12 +5032,12 @@ func Run(ctx *encoder.RuntimeContext, b []byte, codeSet *encoder.OpcodeSet, opt
b = appendStructEnd(ctx, code, b)
code = code.Next
case encoder.OpStructEndOmitEmptyNumberPtrString:
- p := load(ctxptr, code.HeadIdx)
- p = ptrToNPtr(p+code.Offset, code.PtrNum)
+ p := load(ctxptr, code.Idx)
+ p = ptrToNPtr(p+uintptr(code.Offset), code.PtrNum)
if p != 0 {
b = appendStructKey(ctx, code, b)
b = append(b, '"')
- bb, err := appendNumber(b, ptrToNumber(p))
+ bb, err := appendNumber(ctx, b, ptrToNumber(p))
if err != nil {
return nil, err
}