Commit Graph

12 Commits

Author SHA1 Message Date
Masaaki Goshima f5daa592fa Improve encoding performance 2020-12-25 03:53:48 +09:00
Masaaki Goshima 9e97505584 Remove sync.Pool for encodeRuntimeContext 2020-12-20 20:09:41 +09:00
Cuong Manh Le e58b1eabaf
Remove all usages of reflect.SliceHeader
There're some problem with current usage of reflect.SliceHeader.

First, it violates the unsafe pointer conversion (rule 6th), that said,
reflect.SliceHeader must not used as plain struct.

Second, the lowest version that go-json supports, go1.12, reflect
package did not use SliceHeader in typedslicecopy, but use the safety
version. There's no reason that go-json continue using them.

See:

 - https://golang.org/pkg/unsafe/#Pointer
 - https://github.com/golang/go/blob/release-branch.go1.12/src/reflect/value.go#L2702
2020-11-16 20:33:49 +07:00
Masaaki Goshima 02e04238a2 Add keepRefs field 2020-09-04 20:28:27 +09:00
Masaaki Goshima 3aa921e884 Fix encoding engine 2020-09-01 22:26:26 +09:00
Masaaki Goshima 72bc598dd4 Remove state variables from opcode 2020-08-31 21:59:22 +09:00
Masaaki Goshima a6276c4d8e Optimize opcode.idx and seenPtr 2020-08-31 03:14:37 +09:00
Masaaki Goshima 572d4842a5 Reset seenPtr 2020-08-31 00:14:32 +09:00
Masaaki Goshima 70f8f01ef3 Use encodeRuntimeContext.ptrs instead of opcode.ptr 2020-08-30 23:58:58 +09:00
Masaaki Goshima cb194687a0 Add encodeRuntimeContext 2020-08-30 17:52:59 +09:00
Masaaki Goshima a9e2386e42 Add opcodeIndex to opcode 2020-08-30 17:32:26 +09:00
Masaaki Goshima e508ad41ba Refactor indent parameter 2020-08-29 15:35:03 +09:00