From 34b662b98e6b2f9f679cc0e224c4258d60c63a4a Mon Sep 17 00:00:00 2001 From: Masaaki Goshima Date: Thu, 3 Sep 2020 15:36:11 +0900 Subject: [PATCH] Add InterfaceEnd operation --- cmd/generator/main.go | 2 + encode_opcode.go | 9 +- encode_optype.go | 1576 +++++++++++++++++++++-------------------- encode_vm.go | 41 +- 4 files changed, 846 insertions(+), 782 deletions(-) diff --git a/cmd/generator/main.go b/cmd/generator/main.go index 971dc5b..c6a3c9e 100644 --- a/cmd/generator/main.go +++ b/cmd/generator/main.go @@ -220,6 +220,7 @@ func (t opType) fieldToStringTagField() opType { opTypes := []opType{ {"End", "EndIndent", "Op"}, {"Interface", "InterfaceIndent", "Op"}, + {"InterfaceEnd", "InterfaceEndIndent", "Op"}, {"Ptr", "PtrIndent", "Op"}, {"SliceHead", "SliceHeadIndent", "SliceHead"}, {"RootSliceHead", "RootSliceHeadIndent", "SliceHead"}, @@ -252,6 +253,7 @@ func (t opType) fieldToStringTagField() opType { {"StructFieldOmitEmpty", "StructFieldOmitEmptyIndent", "StructField"}, {"StructFieldStringTag", "StructFieldStringTagIndent", "StructField"}, {"StructFieldRecursive", "StructFieldRecursiveIndent", "StructFieldRecursive"}, + {"StructFieldRecursiveEnd", "StructFieldRecursiveEndIndent", "Op"}, {"StructEnd", "StructEndIndent", "StructField"}, {"StructAnonymousEnd", "StructAnonymousEndIndent", "StructField"}, } diff --git a/encode_opcode.go b/encode_opcode.go index a3d9e1a..9b0cc81 100644 --- a/encode_opcode.go +++ b/encode_opcode.go @@ -80,7 +80,10 @@ func (c *opcode) beforeLastCode() *opcode { func (c *opcode) totalLength() int { var idx int for code := c; code.op != opEnd; { - idx = code.displayIdx + idx = int(code.idx / uintptrSize) + if code.op == opInterfaceEnd { + break + } switch code.op.codeType() { case codeArrayElem, codeSliceElem, codeMapKey: code = code.end @@ -88,7 +91,7 @@ func (c *opcode) totalLength() int { code = code.next } } - return idx + 1 + return idx + 2 // opEnd + 1 } func (c *opcode) decOpcodeIndex() { @@ -378,8 +381,8 @@ func newInterfaceCode(ctx *encodeCompileContext) *opcode { displayIdx: ctx.opcodeIndex, idx: opcodeOffset(ctx.ptrIndex), indent: ctx.indent, - next: newEndOp(ctx), root: ctx.root, + next: newEndOp(ctx), } } diff --git a/encode_optype.go b/encode_optype.go index 21c2835..dccc3d5 100644 --- a/encode_optype.go +++ b/encode_optype.go @@ -21,780 +21,784 @@ type opType int const ( opEnd opType = 0 opInterface opType = 1 - opPtr opType = 2 - opSliceHead opType = 3 - opRootSliceHead opType = 4 - opSliceElem opType = 5 - opRootSliceElem opType = 6 - opSliceEnd opType = 7 - opArrayHead opType = 8 - opArrayElem opType = 9 - opArrayEnd opType = 10 - opMapHead opType = 11 - opMapHeadLoad opType = 12 - opRootMapHead opType = 13 - opMapKey opType = 14 - opRootMapKey opType = 15 - opMapValue opType = 16 - opMapEnd opType = 17 - opStructFieldHead opType = 18 - opStructFieldHeadOmitEmpty opType = 19 - opStructFieldHeadStringTag opType = 20 - opStructFieldAnonymousHead opType = 21 - opStructFieldAnonymousHeadOmitEmpty opType = 22 - opStructFieldPtrAnonymousHeadOmitEmpty opType = 23 - opStructFieldAnonymousHeadStringTag opType = 24 - opStructFieldPtrAnonymousHeadStringTag opType = 25 - opStructFieldPtrHead opType = 26 - opStructFieldPtrHeadOmitEmpty opType = 27 - opStructFieldPtrHeadStringTag opType = 28 - opStructFieldPtrAnonymousHead opType = 29 - opStructField opType = 30 - opStructFieldOmitEmpty opType = 31 - opStructFieldStringTag opType = 32 - opStructFieldRecursive opType = 33 - opStructEnd opType = 34 - opStructAnonymousEnd opType = 35 - opInt opType = 36 - opInt8 opType = 37 - opInt16 opType = 38 - opInt32 opType = 39 - opInt64 opType = 40 - opUint opType = 41 - opUint8 opType = 42 - opUint16 opType = 43 - opUint32 opType = 44 - opUint64 opType = 45 - opFloat32 opType = 46 - opFloat64 opType = 47 - opBool opType = 48 - opString opType = 49 - opBytes opType = 50 - opArray opType = 51 - opMap opType = 52 - opMapLoad opType = 53 - opSlice opType = 54 - opStruct opType = 55 - opMarshalJSON opType = 56 - opMarshalText opType = 57 - opStructFieldHeadInt opType = 58 - opStructFieldHeadInt8 opType = 59 - opStructFieldHeadInt16 opType = 60 - opStructFieldHeadInt32 opType = 61 - opStructFieldHeadInt64 opType = 62 - opStructFieldHeadUint opType = 63 - opStructFieldHeadUint8 opType = 64 - opStructFieldHeadUint16 opType = 65 - opStructFieldHeadUint32 opType = 66 - opStructFieldHeadUint64 opType = 67 - opStructFieldHeadFloat32 opType = 68 - opStructFieldHeadFloat64 opType = 69 - opStructFieldHeadBool opType = 70 - opStructFieldHeadString opType = 71 - opStructFieldHeadBytes opType = 72 - opStructFieldHeadArray opType = 73 - opStructFieldHeadMap opType = 74 - opStructFieldHeadMapLoad opType = 75 - opStructFieldHeadSlice opType = 76 - opStructFieldHeadStruct opType = 77 - opStructFieldHeadMarshalJSON opType = 78 - opStructFieldHeadMarshalText opType = 79 - opStructFieldHeadOmitEmptyInt opType = 80 - opStructFieldHeadOmitEmptyInt8 opType = 81 - opStructFieldHeadOmitEmptyInt16 opType = 82 - opStructFieldHeadOmitEmptyInt32 opType = 83 - opStructFieldHeadOmitEmptyInt64 opType = 84 - opStructFieldHeadOmitEmptyUint opType = 85 - opStructFieldHeadOmitEmptyUint8 opType = 86 - opStructFieldHeadOmitEmptyUint16 opType = 87 - opStructFieldHeadOmitEmptyUint32 opType = 88 - opStructFieldHeadOmitEmptyUint64 opType = 89 - opStructFieldHeadOmitEmptyFloat32 opType = 90 - opStructFieldHeadOmitEmptyFloat64 opType = 91 - opStructFieldHeadOmitEmptyBool opType = 92 - opStructFieldHeadOmitEmptyString opType = 93 - opStructFieldHeadOmitEmptyBytes opType = 94 - opStructFieldHeadOmitEmptyArray opType = 95 - opStructFieldHeadOmitEmptyMap opType = 96 - opStructFieldHeadOmitEmptyMapLoad opType = 97 - opStructFieldHeadOmitEmptySlice opType = 98 - opStructFieldHeadOmitEmptyStruct opType = 99 - opStructFieldHeadOmitEmptyMarshalJSON opType = 100 - opStructFieldHeadOmitEmptyMarshalText opType = 101 - opStructFieldHeadStringTagInt opType = 102 - opStructFieldHeadStringTagInt8 opType = 103 - opStructFieldHeadStringTagInt16 opType = 104 - opStructFieldHeadStringTagInt32 opType = 105 - opStructFieldHeadStringTagInt64 opType = 106 - opStructFieldHeadStringTagUint opType = 107 - opStructFieldHeadStringTagUint8 opType = 108 - opStructFieldHeadStringTagUint16 opType = 109 - opStructFieldHeadStringTagUint32 opType = 110 - opStructFieldHeadStringTagUint64 opType = 111 - opStructFieldHeadStringTagFloat32 opType = 112 - opStructFieldHeadStringTagFloat64 opType = 113 - opStructFieldHeadStringTagBool opType = 114 - opStructFieldHeadStringTagString opType = 115 - opStructFieldHeadStringTagBytes opType = 116 - opStructFieldHeadStringTagArray opType = 117 - opStructFieldHeadStringTagMap opType = 118 - opStructFieldHeadStringTagMapLoad opType = 119 - opStructFieldHeadStringTagSlice opType = 120 - opStructFieldHeadStringTagStruct opType = 121 - opStructFieldHeadStringTagMarshalJSON opType = 122 - opStructFieldHeadStringTagMarshalText opType = 123 - opStructFieldAnonymousHeadInt opType = 124 - opStructFieldAnonymousHeadInt8 opType = 125 - opStructFieldAnonymousHeadInt16 opType = 126 - opStructFieldAnonymousHeadInt32 opType = 127 - opStructFieldAnonymousHeadInt64 opType = 128 - opStructFieldAnonymousHeadUint opType = 129 - opStructFieldAnonymousHeadUint8 opType = 130 - opStructFieldAnonymousHeadUint16 opType = 131 - opStructFieldAnonymousHeadUint32 opType = 132 - opStructFieldAnonymousHeadUint64 opType = 133 - opStructFieldAnonymousHeadFloat32 opType = 134 - opStructFieldAnonymousHeadFloat64 opType = 135 - opStructFieldAnonymousHeadBool opType = 136 - opStructFieldAnonymousHeadString opType = 137 - opStructFieldAnonymousHeadBytes opType = 138 - opStructFieldAnonymousHeadArray opType = 139 - opStructFieldAnonymousHeadMap opType = 140 - opStructFieldAnonymousHeadMapLoad opType = 141 - opStructFieldAnonymousHeadSlice opType = 142 - opStructFieldAnonymousHeadStruct opType = 143 - opStructFieldAnonymousHeadMarshalJSON opType = 144 - opStructFieldAnonymousHeadMarshalText opType = 145 - opStructFieldAnonymousHeadOmitEmptyInt opType = 146 - opStructFieldAnonymousHeadOmitEmptyInt8 opType = 147 - opStructFieldAnonymousHeadOmitEmptyInt16 opType = 148 - opStructFieldAnonymousHeadOmitEmptyInt32 opType = 149 - opStructFieldAnonymousHeadOmitEmptyInt64 opType = 150 - opStructFieldAnonymousHeadOmitEmptyUint opType = 151 - opStructFieldAnonymousHeadOmitEmptyUint8 opType = 152 - opStructFieldAnonymousHeadOmitEmptyUint16 opType = 153 - opStructFieldAnonymousHeadOmitEmptyUint32 opType = 154 - opStructFieldAnonymousHeadOmitEmptyUint64 opType = 155 - opStructFieldAnonymousHeadOmitEmptyFloat32 opType = 156 - opStructFieldAnonymousHeadOmitEmptyFloat64 opType = 157 - opStructFieldAnonymousHeadOmitEmptyBool opType = 158 - opStructFieldAnonymousHeadOmitEmptyString opType = 159 - opStructFieldAnonymousHeadOmitEmptyBytes opType = 160 - opStructFieldAnonymousHeadOmitEmptyArray opType = 161 - opStructFieldAnonymousHeadOmitEmptyMap opType = 162 - opStructFieldAnonymousHeadOmitEmptyMapLoad opType = 163 - opStructFieldAnonymousHeadOmitEmptySlice opType = 164 - opStructFieldAnonymousHeadOmitEmptyStruct opType = 165 - opStructFieldAnonymousHeadOmitEmptyMarshalJSON opType = 166 - opStructFieldAnonymousHeadOmitEmptyMarshalText opType = 167 - opStructFieldAnonymousHeadStringTagInt opType = 168 - opStructFieldAnonymousHeadStringTagInt8 opType = 169 - opStructFieldAnonymousHeadStringTagInt16 opType = 170 - opStructFieldAnonymousHeadStringTagInt32 opType = 171 - opStructFieldAnonymousHeadStringTagInt64 opType = 172 - opStructFieldAnonymousHeadStringTagUint opType = 173 - opStructFieldAnonymousHeadStringTagUint8 opType = 174 - opStructFieldAnonymousHeadStringTagUint16 opType = 175 - opStructFieldAnonymousHeadStringTagUint32 opType = 176 - opStructFieldAnonymousHeadStringTagUint64 opType = 177 - opStructFieldAnonymousHeadStringTagFloat32 opType = 178 - opStructFieldAnonymousHeadStringTagFloat64 opType = 179 - opStructFieldAnonymousHeadStringTagBool opType = 180 - opStructFieldAnonymousHeadStringTagString opType = 181 - opStructFieldAnonymousHeadStringTagBytes opType = 182 - opStructFieldAnonymousHeadStringTagArray opType = 183 - opStructFieldAnonymousHeadStringTagMap opType = 184 - opStructFieldAnonymousHeadStringTagMapLoad opType = 185 - opStructFieldAnonymousHeadStringTagSlice opType = 186 - opStructFieldAnonymousHeadStringTagStruct opType = 187 - opStructFieldAnonymousHeadStringTagMarshalJSON opType = 188 - opStructFieldAnonymousHeadStringTagMarshalText opType = 189 - opStructFieldPtrHeadInt opType = 190 - opStructFieldPtrHeadInt8 opType = 191 - opStructFieldPtrHeadInt16 opType = 192 - opStructFieldPtrHeadInt32 opType = 193 - opStructFieldPtrHeadInt64 opType = 194 - opStructFieldPtrHeadUint opType = 195 - opStructFieldPtrHeadUint8 opType = 196 - opStructFieldPtrHeadUint16 opType = 197 - opStructFieldPtrHeadUint32 opType = 198 - opStructFieldPtrHeadUint64 opType = 199 - opStructFieldPtrHeadFloat32 opType = 200 - opStructFieldPtrHeadFloat64 opType = 201 - opStructFieldPtrHeadBool opType = 202 - opStructFieldPtrHeadString opType = 203 - opStructFieldPtrHeadBytes opType = 204 - opStructFieldPtrHeadArray opType = 205 - opStructFieldPtrHeadMap opType = 206 - opStructFieldPtrHeadMapLoad opType = 207 - opStructFieldPtrHeadSlice opType = 208 - opStructFieldPtrHeadStruct opType = 209 - opStructFieldPtrHeadMarshalJSON opType = 210 - opStructFieldPtrHeadMarshalText opType = 211 - opStructFieldPtrHeadOmitEmptyInt opType = 212 - opStructFieldPtrHeadOmitEmptyInt8 opType = 213 - opStructFieldPtrHeadOmitEmptyInt16 opType = 214 - opStructFieldPtrHeadOmitEmptyInt32 opType = 215 - opStructFieldPtrHeadOmitEmptyInt64 opType = 216 - opStructFieldPtrHeadOmitEmptyUint opType = 217 - opStructFieldPtrHeadOmitEmptyUint8 opType = 218 - opStructFieldPtrHeadOmitEmptyUint16 opType = 219 - opStructFieldPtrHeadOmitEmptyUint32 opType = 220 - opStructFieldPtrHeadOmitEmptyUint64 opType = 221 - opStructFieldPtrHeadOmitEmptyFloat32 opType = 222 - opStructFieldPtrHeadOmitEmptyFloat64 opType = 223 - opStructFieldPtrHeadOmitEmptyBool opType = 224 - opStructFieldPtrHeadOmitEmptyString opType = 225 - opStructFieldPtrHeadOmitEmptyBytes opType = 226 - opStructFieldPtrHeadOmitEmptyArray opType = 227 - opStructFieldPtrHeadOmitEmptyMap opType = 228 - opStructFieldPtrHeadOmitEmptyMapLoad opType = 229 - opStructFieldPtrHeadOmitEmptySlice opType = 230 - opStructFieldPtrHeadOmitEmptyStruct opType = 231 - opStructFieldPtrHeadOmitEmptyMarshalJSON opType = 232 - opStructFieldPtrHeadOmitEmptyMarshalText opType = 233 - opStructFieldPtrHeadStringTagInt opType = 234 - opStructFieldPtrHeadStringTagInt8 opType = 235 - opStructFieldPtrHeadStringTagInt16 opType = 236 - opStructFieldPtrHeadStringTagInt32 opType = 237 - opStructFieldPtrHeadStringTagInt64 opType = 238 - opStructFieldPtrHeadStringTagUint opType = 239 - opStructFieldPtrHeadStringTagUint8 opType = 240 - opStructFieldPtrHeadStringTagUint16 opType = 241 - opStructFieldPtrHeadStringTagUint32 opType = 242 - opStructFieldPtrHeadStringTagUint64 opType = 243 - opStructFieldPtrHeadStringTagFloat32 opType = 244 - opStructFieldPtrHeadStringTagFloat64 opType = 245 - opStructFieldPtrHeadStringTagBool opType = 246 - opStructFieldPtrHeadStringTagString opType = 247 - opStructFieldPtrHeadStringTagBytes opType = 248 - opStructFieldPtrHeadStringTagArray opType = 249 - opStructFieldPtrHeadStringTagMap opType = 250 - opStructFieldPtrHeadStringTagMapLoad opType = 251 - opStructFieldPtrHeadStringTagSlice opType = 252 - opStructFieldPtrHeadStringTagStruct opType = 253 - opStructFieldPtrHeadStringTagMarshalJSON opType = 254 - opStructFieldPtrHeadStringTagMarshalText opType = 255 - opStructFieldPtrAnonymousHeadInt opType = 256 - opStructFieldPtrAnonymousHeadInt8 opType = 257 - opStructFieldPtrAnonymousHeadInt16 opType = 258 - opStructFieldPtrAnonymousHeadInt32 opType = 259 - opStructFieldPtrAnonymousHeadInt64 opType = 260 - opStructFieldPtrAnonymousHeadUint opType = 261 - opStructFieldPtrAnonymousHeadUint8 opType = 262 - opStructFieldPtrAnonymousHeadUint16 opType = 263 - opStructFieldPtrAnonymousHeadUint32 opType = 264 - opStructFieldPtrAnonymousHeadUint64 opType = 265 - opStructFieldPtrAnonymousHeadFloat32 opType = 266 - opStructFieldPtrAnonymousHeadFloat64 opType = 267 - opStructFieldPtrAnonymousHeadBool opType = 268 - opStructFieldPtrAnonymousHeadString opType = 269 - opStructFieldPtrAnonymousHeadBytes opType = 270 - opStructFieldPtrAnonymousHeadArray opType = 271 - opStructFieldPtrAnonymousHeadMap opType = 272 - opStructFieldPtrAnonymousHeadMapLoad opType = 273 - opStructFieldPtrAnonymousHeadSlice opType = 274 - opStructFieldPtrAnonymousHeadStruct opType = 275 - opStructFieldPtrAnonymousHeadMarshalJSON opType = 276 - opStructFieldPtrAnonymousHeadMarshalText opType = 277 - opStructFieldPtrAnonymousHeadOmitEmptyInt opType = 278 - opStructFieldPtrAnonymousHeadOmitEmptyInt8 opType = 279 - opStructFieldPtrAnonymousHeadOmitEmptyInt16 opType = 280 - opStructFieldPtrAnonymousHeadOmitEmptyInt32 opType = 281 - opStructFieldPtrAnonymousHeadOmitEmptyInt64 opType = 282 - opStructFieldPtrAnonymousHeadOmitEmptyUint opType = 283 - opStructFieldPtrAnonymousHeadOmitEmptyUint8 opType = 284 - opStructFieldPtrAnonymousHeadOmitEmptyUint16 opType = 285 - opStructFieldPtrAnonymousHeadOmitEmptyUint32 opType = 286 - opStructFieldPtrAnonymousHeadOmitEmptyUint64 opType = 287 - opStructFieldPtrAnonymousHeadOmitEmptyFloat32 opType = 288 - opStructFieldPtrAnonymousHeadOmitEmptyFloat64 opType = 289 - opStructFieldPtrAnonymousHeadOmitEmptyBool opType = 290 - opStructFieldPtrAnonymousHeadOmitEmptyString opType = 291 - opStructFieldPtrAnonymousHeadOmitEmptyBytes opType = 292 - opStructFieldPtrAnonymousHeadOmitEmptyArray opType = 293 - opStructFieldPtrAnonymousHeadOmitEmptyMap opType = 294 - opStructFieldPtrAnonymousHeadOmitEmptyMapLoad opType = 295 - opStructFieldPtrAnonymousHeadOmitEmptySlice opType = 296 - opStructFieldPtrAnonymousHeadOmitEmptyStruct opType = 297 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSON opType = 298 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalText opType = 299 - opStructFieldPtrAnonymousHeadStringTagInt opType = 300 - opStructFieldPtrAnonymousHeadStringTagInt8 opType = 301 - opStructFieldPtrAnonymousHeadStringTagInt16 opType = 302 - opStructFieldPtrAnonymousHeadStringTagInt32 opType = 303 - opStructFieldPtrAnonymousHeadStringTagInt64 opType = 304 - opStructFieldPtrAnonymousHeadStringTagUint opType = 305 - opStructFieldPtrAnonymousHeadStringTagUint8 opType = 306 - opStructFieldPtrAnonymousHeadStringTagUint16 opType = 307 - opStructFieldPtrAnonymousHeadStringTagUint32 opType = 308 - opStructFieldPtrAnonymousHeadStringTagUint64 opType = 309 - opStructFieldPtrAnonymousHeadStringTagFloat32 opType = 310 - opStructFieldPtrAnonymousHeadStringTagFloat64 opType = 311 - opStructFieldPtrAnonymousHeadStringTagBool opType = 312 - opStructFieldPtrAnonymousHeadStringTagString opType = 313 - opStructFieldPtrAnonymousHeadStringTagBytes opType = 314 - opStructFieldPtrAnonymousHeadStringTagArray opType = 315 - opStructFieldPtrAnonymousHeadStringTagMap opType = 316 - opStructFieldPtrAnonymousHeadStringTagMapLoad opType = 317 - opStructFieldPtrAnonymousHeadStringTagSlice opType = 318 - opStructFieldPtrAnonymousHeadStringTagStruct opType = 319 - opStructFieldPtrAnonymousHeadStringTagMarshalJSON opType = 320 - opStructFieldPtrAnonymousHeadStringTagMarshalText opType = 321 - opStructFieldInt opType = 322 - opStructFieldInt8 opType = 323 - opStructFieldInt16 opType = 324 - opStructFieldInt32 opType = 325 - opStructFieldInt64 opType = 326 - opStructFieldUint opType = 327 - opStructFieldUint8 opType = 328 - opStructFieldUint16 opType = 329 - opStructFieldUint32 opType = 330 - opStructFieldUint64 opType = 331 - opStructFieldFloat32 opType = 332 - opStructFieldFloat64 opType = 333 - opStructFieldBool opType = 334 - opStructFieldString opType = 335 - opStructFieldBytes opType = 336 - opStructFieldArray opType = 337 - opStructFieldMap opType = 338 - opStructFieldMapLoad opType = 339 - opStructFieldSlice opType = 340 - opStructFieldStruct opType = 341 - opStructFieldMarshalJSON opType = 342 - opStructFieldMarshalText opType = 343 - opStructFieldOmitEmptyInt opType = 344 - opStructFieldOmitEmptyInt8 opType = 345 - opStructFieldOmitEmptyInt16 opType = 346 - opStructFieldOmitEmptyInt32 opType = 347 - opStructFieldOmitEmptyInt64 opType = 348 - opStructFieldOmitEmptyUint opType = 349 - opStructFieldOmitEmptyUint8 opType = 350 - opStructFieldOmitEmptyUint16 opType = 351 - opStructFieldOmitEmptyUint32 opType = 352 - opStructFieldOmitEmptyUint64 opType = 353 - opStructFieldOmitEmptyFloat32 opType = 354 - opStructFieldOmitEmptyFloat64 opType = 355 - opStructFieldOmitEmptyBool opType = 356 - opStructFieldOmitEmptyString opType = 357 - opStructFieldOmitEmptyBytes opType = 358 - opStructFieldOmitEmptyArray opType = 359 - opStructFieldOmitEmptyMap opType = 360 - opStructFieldOmitEmptyMapLoad opType = 361 - opStructFieldOmitEmptySlice opType = 362 - opStructFieldOmitEmptyStruct opType = 363 - opStructFieldOmitEmptyMarshalJSON opType = 364 - opStructFieldOmitEmptyMarshalText opType = 365 - opStructFieldStringTagInt opType = 366 - opStructFieldStringTagInt8 opType = 367 - opStructFieldStringTagInt16 opType = 368 - opStructFieldStringTagInt32 opType = 369 - opStructFieldStringTagInt64 opType = 370 - opStructFieldStringTagUint opType = 371 - opStructFieldStringTagUint8 opType = 372 - opStructFieldStringTagUint16 opType = 373 - opStructFieldStringTagUint32 opType = 374 - opStructFieldStringTagUint64 opType = 375 - opStructFieldStringTagFloat32 opType = 376 - opStructFieldStringTagFloat64 opType = 377 - opStructFieldStringTagBool opType = 378 - opStructFieldStringTagString opType = 379 - opStructFieldStringTagBytes opType = 380 - opStructFieldStringTagArray opType = 381 - opStructFieldStringTagMap opType = 382 - opStructFieldStringTagMapLoad opType = 383 - opStructFieldStringTagSlice opType = 384 - opStructFieldStringTagStruct opType = 385 - opStructFieldStringTagMarshalJSON opType = 386 - opStructFieldStringTagMarshalText opType = 387 - opEndIndent opType = 388 - opInterfaceIndent opType = 389 - opPtrIndent opType = 390 - opSliceHeadIndent opType = 391 - opRootSliceHeadIndent opType = 392 - opSliceElemIndent opType = 393 - opRootSliceElemIndent opType = 394 - opSliceEndIndent opType = 395 - opArrayHeadIndent opType = 396 - opArrayElemIndent opType = 397 - opArrayEndIndent opType = 398 - opMapHeadIndent opType = 399 - opMapHeadLoadIndent opType = 400 - opRootMapHeadIndent opType = 401 - opMapKeyIndent opType = 402 - opRootMapKeyIndent opType = 403 - opMapValueIndent opType = 404 - opMapEndIndent opType = 405 - opStructFieldHeadIndent opType = 406 - opStructFieldHeadOmitEmptyIndent opType = 407 - opStructFieldHeadStringTagIndent opType = 408 - opStructFieldAnonymousHeadIndent opType = 409 - opStructFieldAnonymousHeadOmitEmptyIndent opType = 410 - opStructFieldPtrAnonymousHeadOmitEmptyIndent opType = 411 - opStructFieldAnonymousHeadStringTagIndent opType = 412 - opStructFieldPtrAnonymousHeadStringTagIndent opType = 413 - opStructFieldPtrHeadIndent opType = 414 - opStructFieldPtrHeadOmitEmptyIndent opType = 415 - opStructFieldPtrHeadStringTagIndent opType = 416 - opStructFieldPtrAnonymousHeadIndent opType = 417 - opStructFieldIndent opType = 418 - opStructFieldOmitEmptyIndent opType = 419 - opStructFieldStringTagIndent opType = 420 - opStructFieldRecursiveIndent opType = 421 - opStructEndIndent opType = 422 - opStructAnonymousEndIndent opType = 423 - opIntIndent opType = 424 - opInt8Indent opType = 425 - opInt16Indent opType = 426 - opInt32Indent opType = 427 - opInt64Indent opType = 428 - opUintIndent opType = 429 - opUint8Indent opType = 430 - opUint16Indent opType = 431 - opUint32Indent opType = 432 - opUint64Indent opType = 433 - opFloat32Indent opType = 434 - opFloat64Indent opType = 435 - opBoolIndent opType = 436 - opStringIndent opType = 437 - opBytesIndent opType = 438 - opArrayIndent opType = 439 - opMapIndent opType = 440 - opMapLoadIndent opType = 441 - opSliceIndent opType = 442 - opStructIndent opType = 443 - opMarshalJSONIndent opType = 444 - opMarshalTextIndent opType = 445 - opStructFieldHeadIntIndent opType = 446 - opStructFieldHeadInt8Indent opType = 447 - opStructFieldHeadInt16Indent opType = 448 - opStructFieldHeadInt32Indent opType = 449 - opStructFieldHeadInt64Indent opType = 450 - opStructFieldHeadUintIndent opType = 451 - opStructFieldHeadUint8Indent opType = 452 - opStructFieldHeadUint16Indent opType = 453 - opStructFieldHeadUint32Indent opType = 454 - opStructFieldHeadUint64Indent opType = 455 - opStructFieldHeadFloat32Indent opType = 456 - opStructFieldHeadFloat64Indent opType = 457 - opStructFieldHeadBoolIndent opType = 458 - opStructFieldHeadStringIndent opType = 459 - opStructFieldHeadBytesIndent opType = 460 - opStructFieldHeadArrayIndent opType = 461 - opStructFieldHeadMapIndent opType = 462 - opStructFieldHeadMapLoadIndent opType = 463 - opStructFieldHeadSliceIndent opType = 464 - opStructFieldHeadStructIndent opType = 465 - opStructFieldHeadMarshalJSONIndent opType = 466 - opStructFieldHeadMarshalTextIndent opType = 467 - opStructFieldHeadOmitEmptyIntIndent opType = 468 - opStructFieldHeadOmitEmptyInt8Indent opType = 469 - opStructFieldHeadOmitEmptyInt16Indent opType = 470 - opStructFieldHeadOmitEmptyInt32Indent opType = 471 - opStructFieldHeadOmitEmptyInt64Indent opType = 472 - opStructFieldHeadOmitEmptyUintIndent opType = 473 - opStructFieldHeadOmitEmptyUint8Indent opType = 474 - opStructFieldHeadOmitEmptyUint16Indent opType = 475 - opStructFieldHeadOmitEmptyUint32Indent opType = 476 - opStructFieldHeadOmitEmptyUint64Indent opType = 477 - opStructFieldHeadOmitEmptyFloat32Indent opType = 478 - opStructFieldHeadOmitEmptyFloat64Indent opType = 479 - opStructFieldHeadOmitEmptyBoolIndent opType = 480 - opStructFieldHeadOmitEmptyStringIndent opType = 481 - opStructFieldHeadOmitEmptyBytesIndent opType = 482 - opStructFieldHeadOmitEmptyArrayIndent opType = 483 - opStructFieldHeadOmitEmptyMapIndent opType = 484 - opStructFieldHeadOmitEmptyMapLoadIndent opType = 485 - opStructFieldHeadOmitEmptySliceIndent opType = 486 - opStructFieldHeadOmitEmptyStructIndent opType = 487 - opStructFieldHeadOmitEmptyMarshalJSONIndent opType = 488 - opStructFieldHeadOmitEmptyMarshalTextIndent opType = 489 - opStructFieldHeadStringTagIntIndent opType = 490 - opStructFieldHeadStringTagInt8Indent opType = 491 - opStructFieldHeadStringTagInt16Indent opType = 492 - opStructFieldHeadStringTagInt32Indent opType = 493 - opStructFieldHeadStringTagInt64Indent opType = 494 - opStructFieldHeadStringTagUintIndent opType = 495 - opStructFieldHeadStringTagUint8Indent opType = 496 - opStructFieldHeadStringTagUint16Indent opType = 497 - opStructFieldHeadStringTagUint32Indent opType = 498 - opStructFieldHeadStringTagUint64Indent opType = 499 - opStructFieldHeadStringTagFloat32Indent opType = 500 - opStructFieldHeadStringTagFloat64Indent opType = 501 - opStructFieldHeadStringTagBoolIndent opType = 502 - opStructFieldHeadStringTagStringIndent opType = 503 - opStructFieldHeadStringTagBytesIndent opType = 504 - opStructFieldHeadStringTagArrayIndent opType = 505 - opStructFieldHeadStringTagMapIndent opType = 506 - opStructFieldHeadStringTagMapLoadIndent opType = 507 - opStructFieldHeadStringTagSliceIndent opType = 508 - opStructFieldHeadStringTagStructIndent opType = 509 - opStructFieldHeadStringTagMarshalJSONIndent opType = 510 - opStructFieldHeadStringTagMarshalTextIndent opType = 511 - opStructFieldAnonymousHeadIntIndent opType = 512 - opStructFieldAnonymousHeadInt8Indent opType = 513 - opStructFieldAnonymousHeadInt16Indent opType = 514 - opStructFieldAnonymousHeadInt32Indent opType = 515 - opStructFieldAnonymousHeadInt64Indent opType = 516 - opStructFieldAnonymousHeadUintIndent opType = 517 - opStructFieldAnonymousHeadUint8Indent opType = 518 - opStructFieldAnonymousHeadUint16Indent opType = 519 - opStructFieldAnonymousHeadUint32Indent opType = 520 - opStructFieldAnonymousHeadUint64Indent opType = 521 - opStructFieldAnonymousHeadFloat32Indent opType = 522 - opStructFieldAnonymousHeadFloat64Indent opType = 523 - opStructFieldAnonymousHeadBoolIndent opType = 524 - opStructFieldAnonymousHeadStringIndent opType = 525 - opStructFieldAnonymousHeadBytesIndent opType = 526 - opStructFieldAnonymousHeadArrayIndent opType = 527 - opStructFieldAnonymousHeadMapIndent opType = 528 - opStructFieldAnonymousHeadMapLoadIndent opType = 529 - opStructFieldAnonymousHeadSliceIndent opType = 530 - opStructFieldAnonymousHeadStructIndent opType = 531 - opStructFieldAnonymousHeadMarshalJSONIndent opType = 532 - opStructFieldAnonymousHeadMarshalTextIndent opType = 533 - opStructFieldAnonymousHeadOmitEmptyIntIndent opType = 534 - opStructFieldAnonymousHeadOmitEmptyInt8Indent opType = 535 - opStructFieldAnonymousHeadOmitEmptyInt16Indent opType = 536 - opStructFieldAnonymousHeadOmitEmptyInt32Indent opType = 537 - opStructFieldAnonymousHeadOmitEmptyInt64Indent opType = 538 - opStructFieldAnonymousHeadOmitEmptyUintIndent opType = 539 - opStructFieldAnonymousHeadOmitEmptyUint8Indent opType = 540 - opStructFieldAnonymousHeadOmitEmptyUint16Indent opType = 541 - opStructFieldAnonymousHeadOmitEmptyUint32Indent opType = 542 - opStructFieldAnonymousHeadOmitEmptyUint64Indent opType = 543 - opStructFieldAnonymousHeadOmitEmptyFloat32Indent opType = 544 - opStructFieldAnonymousHeadOmitEmptyFloat64Indent opType = 545 - opStructFieldAnonymousHeadOmitEmptyBoolIndent opType = 546 - opStructFieldAnonymousHeadOmitEmptyStringIndent opType = 547 - opStructFieldAnonymousHeadOmitEmptyBytesIndent opType = 548 - opStructFieldAnonymousHeadOmitEmptyArrayIndent opType = 549 - opStructFieldAnonymousHeadOmitEmptyMapIndent opType = 550 - opStructFieldAnonymousHeadOmitEmptyMapLoadIndent opType = 551 - opStructFieldAnonymousHeadOmitEmptySliceIndent opType = 552 - opStructFieldAnonymousHeadOmitEmptyStructIndent opType = 553 - opStructFieldAnonymousHeadOmitEmptyMarshalJSONIndent opType = 554 - opStructFieldAnonymousHeadOmitEmptyMarshalTextIndent opType = 555 - opStructFieldAnonymousHeadStringTagIntIndent opType = 556 - opStructFieldAnonymousHeadStringTagInt8Indent opType = 557 - opStructFieldAnonymousHeadStringTagInt16Indent opType = 558 - opStructFieldAnonymousHeadStringTagInt32Indent opType = 559 - opStructFieldAnonymousHeadStringTagInt64Indent opType = 560 - opStructFieldAnonymousHeadStringTagUintIndent opType = 561 - opStructFieldAnonymousHeadStringTagUint8Indent opType = 562 - opStructFieldAnonymousHeadStringTagUint16Indent opType = 563 - opStructFieldAnonymousHeadStringTagUint32Indent opType = 564 - opStructFieldAnonymousHeadStringTagUint64Indent opType = 565 - opStructFieldAnonymousHeadStringTagFloat32Indent opType = 566 - opStructFieldAnonymousHeadStringTagFloat64Indent opType = 567 - opStructFieldAnonymousHeadStringTagBoolIndent opType = 568 - opStructFieldAnonymousHeadStringTagStringIndent opType = 569 - opStructFieldAnonymousHeadStringTagBytesIndent opType = 570 - opStructFieldAnonymousHeadStringTagArrayIndent opType = 571 - opStructFieldAnonymousHeadStringTagMapIndent opType = 572 - opStructFieldAnonymousHeadStringTagMapLoadIndent opType = 573 - opStructFieldAnonymousHeadStringTagSliceIndent opType = 574 - opStructFieldAnonymousHeadStringTagStructIndent opType = 575 - opStructFieldAnonymousHeadStringTagMarshalJSONIndent opType = 576 - opStructFieldAnonymousHeadStringTagMarshalTextIndent opType = 577 - opStructFieldPtrHeadIntIndent opType = 578 - opStructFieldPtrHeadInt8Indent opType = 579 - opStructFieldPtrHeadInt16Indent opType = 580 - opStructFieldPtrHeadInt32Indent opType = 581 - opStructFieldPtrHeadInt64Indent opType = 582 - opStructFieldPtrHeadUintIndent opType = 583 - opStructFieldPtrHeadUint8Indent opType = 584 - opStructFieldPtrHeadUint16Indent opType = 585 - opStructFieldPtrHeadUint32Indent opType = 586 - opStructFieldPtrHeadUint64Indent opType = 587 - opStructFieldPtrHeadFloat32Indent opType = 588 - opStructFieldPtrHeadFloat64Indent opType = 589 - opStructFieldPtrHeadBoolIndent opType = 590 - opStructFieldPtrHeadStringIndent opType = 591 - opStructFieldPtrHeadBytesIndent opType = 592 - opStructFieldPtrHeadArrayIndent opType = 593 - opStructFieldPtrHeadMapIndent opType = 594 - opStructFieldPtrHeadMapLoadIndent opType = 595 - opStructFieldPtrHeadSliceIndent opType = 596 - opStructFieldPtrHeadStructIndent opType = 597 - opStructFieldPtrHeadMarshalJSONIndent opType = 598 - opStructFieldPtrHeadMarshalTextIndent opType = 599 - opStructFieldPtrHeadOmitEmptyIntIndent opType = 600 - opStructFieldPtrHeadOmitEmptyInt8Indent opType = 601 - opStructFieldPtrHeadOmitEmptyInt16Indent opType = 602 - opStructFieldPtrHeadOmitEmptyInt32Indent opType = 603 - opStructFieldPtrHeadOmitEmptyInt64Indent opType = 604 - opStructFieldPtrHeadOmitEmptyUintIndent opType = 605 - opStructFieldPtrHeadOmitEmptyUint8Indent opType = 606 - opStructFieldPtrHeadOmitEmptyUint16Indent opType = 607 - opStructFieldPtrHeadOmitEmptyUint32Indent opType = 608 - opStructFieldPtrHeadOmitEmptyUint64Indent opType = 609 - opStructFieldPtrHeadOmitEmptyFloat32Indent opType = 610 - opStructFieldPtrHeadOmitEmptyFloat64Indent opType = 611 - opStructFieldPtrHeadOmitEmptyBoolIndent opType = 612 - opStructFieldPtrHeadOmitEmptyStringIndent opType = 613 - opStructFieldPtrHeadOmitEmptyBytesIndent opType = 614 - opStructFieldPtrHeadOmitEmptyArrayIndent opType = 615 - opStructFieldPtrHeadOmitEmptyMapIndent opType = 616 - opStructFieldPtrHeadOmitEmptyMapLoadIndent opType = 617 - opStructFieldPtrHeadOmitEmptySliceIndent opType = 618 - opStructFieldPtrHeadOmitEmptyStructIndent opType = 619 - opStructFieldPtrHeadOmitEmptyMarshalJSONIndent opType = 620 - opStructFieldPtrHeadOmitEmptyMarshalTextIndent opType = 621 - opStructFieldPtrHeadStringTagIntIndent opType = 622 - opStructFieldPtrHeadStringTagInt8Indent opType = 623 - opStructFieldPtrHeadStringTagInt16Indent opType = 624 - opStructFieldPtrHeadStringTagInt32Indent opType = 625 - opStructFieldPtrHeadStringTagInt64Indent opType = 626 - opStructFieldPtrHeadStringTagUintIndent opType = 627 - opStructFieldPtrHeadStringTagUint8Indent opType = 628 - opStructFieldPtrHeadStringTagUint16Indent opType = 629 - opStructFieldPtrHeadStringTagUint32Indent opType = 630 - opStructFieldPtrHeadStringTagUint64Indent opType = 631 - opStructFieldPtrHeadStringTagFloat32Indent opType = 632 - opStructFieldPtrHeadStringTagFloat64Indent opType = 633 - opStructFieldPtrHeadStringTagBoolIndent opType = 634 - opStructFieldPtrHeadStringTagStringIndent opType = 635 - opStructFieldPtrHeadStringTagBytesIndent opType = 636 - opStructFieldPtrHeadStringTagArrayIndent opType = 637 - opStructFieldPtrHeadStringTagMapIndent opType = 638 - opStructFieldPtrHeadStringTagMapLoadIndent opType = 639 - opStructFieldPtrHeadStringTagSliceIndent opType = 640 - opStructFieldPtrHeadStringTagStructIndent opType = 641 - opStructFieldPtrHeadStringTagMarshalJSONIndent opType = 642 - opStructFieldPtrHeadStringTagMarshalTextIndent opType = 643 - opStructFieldPtrAnonymousHeadIntIndent opType = 644 - opStructFieldPtrAnonymousHeadInt8Indent opType = 645 - opStructFieldPtrAnonymousHeadInt16Indent opType = 646 - opStructFieldPtrAnonymousHeadInt32Indent opType = 647 - opStructFieldPtrAnonymousHeadInt64Indent opType = 648 - opStructFieldPtrAnonymousHeadUintIndent opType = 649 - opStructFieldPtrAnonymousHeadUint8Indent opType = 650 - opStructFieldPtrAnonymousHeadUint16Indent opType = 651 - opStructFieldPtrAnonymousHeadUint32Indent opType = 652 - opStructFieldPtrAnonymousHeadUint64Indent opType = 653 - opStructFieldPtrAnonymousHeadFloat32Indent opType = 654 - opStructFieldPtrAnonymousHeadFloat64Indent opType = 655 - opStructFieldPtrAnonymousHeadBoolIndent opType = 656 - opStructFieldPtrAnonymousHeadStringIndent opType = 657 - opStructFieldPtrAnonymousHeadBytesIndent opType = 658 - opStructFieldPtrAnonymousHeadArrayIndent opType = 659 - opStructFieldPtrAnonymousHeadMapIndent opType = 660 - opStructFieldPtrAnonymousHeadMapLoadIndent opType = 661 - opStructFieldPtrAnonymousHeadSliceIndent opType = 662 - opStructFieldPtrAnonymousHeadStructIndent opType = 663 - opStructFieldPtrAnonymousHeadMarshalJSONIndent opType = 664 - opStructFieldPtrAnonymousHeadMarshalTextIndent opType = 665 - opStructFieldPtrAnonymousHeadOmitEmptyIntIndent opType = 666 - opStructFieldPtrAnonymousHeadOmitEmptyInt8Indent opType = 667 - opStructFieldPtrAnonymousHeadOmitEmptyInt16Indent opType = 668 - opStructFieldPtrAnonymousHeadOmitEmptyInt32Indent opType = 669 - opStructFieldPtrAnonymousHeadOmitEmptyInt64Indent opType = 670 - opStructFieldPtrAnonymousHeadOmitEmptyUintIndent opType = 671 - opStructFieldPtrAnonymousHeadOmitEmptyUint8Indent opType = 672 - opStructFieldPtrAnonymousHeadOmitEmptyUint16Indent opType = 673 - opStructFieldPtrAnonymousHeadOmitEmptyUint32Indent opType = 674 - opStructFieldPtrAnonymousHeadOmitEmptyUint64Indent opType = 675 - opStructFieldPtrAnonymousHeadOmitEmptyFloat32Indent opType = 676 - opStructFieldPtrAnonymousHeadOmitEmptyFloat64Indent opType = 677 - opStructFieldPtrAnonymousHeadOmitEmptyBoolIndent opType = 678 - opStructFieldPtrAnonymousHeadOmitEmptyStringIndent opType = 679 - opStructFieldPtrAnonymousHeadOmitEmptyBytesIndent opType = 680 - opStructFieldPtrAnonymousHeadOmitEmptyArrayIndent opType = 681 - opStructFieldPtrAnonymousHeadOmitEmptyMapIndent opType = 682 - opStructFieldPtrAnonymousHeadOmitEmptyMapLoadIndent opType = 683 - opStructFieldPtrAnonymousHeadOmitEmptySliceIndent opType = 684 - opStructFieldPtrAnonymousHeadOmitEmptyStructIndent opType = 685 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSONIndent opType = 686 - opStructFieldPtrAnonymousHeadOmitEmptyMarshalTextIndent opType = 687 - opStructFieldPtrAnonymousHeadStringTagIntIndent opType = 688 - opStructFieldPtrAnonymousHeadStringTagInt8Indent opType = 689 - opStructFieldPtrAnonymousHeadStringTagInt16Indent opType = 690 - opStructFieldPtrAnonymousHeadStringTagInt32Indent opType = 691 - opStructFieldPtrAnonymousHeadStringTagInt64Indent opType = 692 - opStructFieldPtrAnonymousHeadStringTagUintIndent opType = 693 - opStructFieldPtrAnonymousHeadStringTagUint8Indent opType = 694 - opStructFieldPtrAnonymousHeadStringTagUint16Indent opType = 695 - opStructFieldPtrAnonymousHeadStringTagUint32Indent opType = 696 - opStructFieldPtrAnonymousHeadStringTagUint64Indent opType = 697 - opStructFieldPtrAnonymousHeadStringTagFloat32Indent opType = 698 - opStructFieldPtrAnonymousHeadStringTagFloat64Indent opType = 699 - opStructFieldPtrAnonymousHeadStringTagBoolIndent opType = 700 - opStructFieldPtrAnonymousHeadStringTagStringIndent opType = 701 - opStructFieldPtrAnonymousHeadStringTagBytesIndent opType = 702 - opStructFieldPtrAnonymousHeadStringTagArrayIndent opType = 703 - opStructFieldPtrAnonymousHeadStringTagMapIndent opType = 704 - opStructFieldPtrAnonymousHeadStringTagMapLoadIndent opType = 705 - opStructFieldPtrAnonymousHeadStringTagSliceIndent opType = 706 - opStructFieldPtrAnonymousHeadStringTagStructIndent opType = 707 - opStructFieldPtrAnonymousHeadStringTagMarshalJSONIndent opType = 708 - opStructFieldPtrAnonymousHeadStringTagMarshalTextIndent opType = 709 - opStructFieldIntIndent opType = 710 - opStructFieldInt8Indent opType = 711 - opStructFieldInt16Indent opType = 712 - opStructFieldInt32Indent opType = 713 - opStructFieldInt64Indent opType = 714 - opStructFieldUintIndent opType = 715 - opStructFieldUint8Indent opType = 716 - opStructFieldUint16Indent opType = 717 - opStructFieldUint32Indent opType = 718 - opStructFieldUint64Indent opType = 719 - opStructFieldFloat32Indent opType = 720 - opStructFieldFloat64Indent opType = 721 - opStructFieldBoolIndent opType = 722 - opStructFieldStringIndent opType = 723 - opStructFieldBytesIndent opType = 724 - opStructFieldArrayIndent opType = 725 - opStructFieldMapIndent opType = 726 - opStructFieldMapLoadIndent opType = 727 - opStructFieldSliceIndent opType = 728 - opStructFieldStructIndent opType = 729 - opStructFieldMarshalJSONIndent opType = 730 - opStructFieldMarshalTextIndent opType = 731 - opStructFieldOmitEmptyIntIndent opType = 732 - opStructFieldOmitEmptyInt8Indent opType = 733 - opStructFieldOmitEmptyInt16Indent opType = 734 - opStructFieldOmitEmptyInt32Indent opType = 735 - opStructFieldOmitEmptyInt64Indent opType = 736 - opStructFieldOmitEmptyUintIndent opType = 737 - opStructFieldOmitEmptyUint8Indent opType = 738 - opStructFieldOmitEmptyUint16Indent opType = 739 - opStructFieldOmitEmptyUint32Indent opType = 740 - opStructFieldOmitEmptyUint64Indent opType = 741 - opStructFieldOmitEmptyFloat32Indent opType = 742 - opStructFieldOmitEmptyFloat64Indent opType = 743 - opStructFieldOmitEmptyBoolIndent opType = 744 - opStructFieldOmitEmptyStringIndent opType = 745 - opStructFieldOmitEmptyBytesIndent opType = 746 - opStructFieldOmitEmptyArrayIndent opType = 747 - opStructFieldOmitEmptyMapIndent opType = 748 - opStructFieldOmitEmptyMapLoadIndent opType = 749 - opStructFieldOmitEmptySliceIndent opType = 750 - opStructFieldOmitEmptyStructIndent opType = 751 - opStructFieldOmitEmptyMarshalJSONIndent opType = 752 - opStructFieldOmitEmptyMarshalTextIndent opType = 753 - opStructFieldStringTagIntIndent opType = 754 - opStructFieldStringTagInt8Indent opType = 755 - opStructFieldStringTagInt16Indent opType = 756 - opStructFieldStringTagInt32Indent opType = 757 - opStructFieldStringTagInt64Indent opType = 758 - opStructFieldStringTagUintIndent opType = 759 - opStructFieldStringTagUint8Indent opType = 760 - opStructFieldStringTagUint16Indent opType = 761 - opStructFieldStringTagUint32Indent opType = 762 - opStructFieldStringTagUint64Indent opType = 763 - opStructFieldStringTagFloat32Indent opType = 764 - opStructFieldStringTagFloat64Indent opType = 765 - opStructFieldStringTagBoolIndent opType = 766 - opStructFieldStringTagStringIndent opType = 767 - opStructFieldStringTagBytesIndent opType = 768 - opStructFieldStringTagArrayIndent opType = 769 - opStructFieldStringTagMapIndent opType = 770 - opStructFieldStringTagMapLoadIndent opType = 771 - opStructFieldStringTagSliceIndent opType = 772 - opStructFieldStringTagStructIndent opType = 773 - opStructFieldStringTagMarshalJSONIndent opType = 774 - opStructFieldStringTagMarshalTextIndent opType = 775 + opInterfaceEnd opType = 2 + opPtr opType = 3 + opSliceHead opType = 4 + opRootSliceHead opType = 5 + opSliceElem opType = 6 + opRootSliceElem opType = 7 + opSliceEnd opType = 8 + opArrayHead opType = 9 + opArrayElem opType = 10 + opArrayEnd opType = 11 + opMapHead opType = 12 + opMapHeadLoad opType = 13 + opRootMapHead opType = 14 + opMapKey opType = 15 + opRootMapKey opType = 16 + opMapValue opType = 17 + opMapEnd opType = 18 + opStructFieldHead opType = 19 + opStructFieldHeadOmitEmpty opType = 20 + opStructFieldHeadStringTag opType = 21 + opStructFieldAnonymousHead opType = 22 + opStructFieldAnonymousHeadOmitEmpty opType = 23 + opStructFieldPtrAnonymousHeadOmitEmpty opType = 24 + opStructFieldAnonymousHeadStringTag opType = 25 + opStructFieldPtrAnonymousHeadStringTag opType = 26 + opStructFieldPtrHead opType = 27 + opStructFieldPtrHeadOmitEmpty opType = 28 + opStructFieldPtrHeadStringTag opType = 29 + opStructFieldPtrAnonymousHead opType = 30 + opStructField opType = 31 + opStructFieldOmitEmpty opType = 32 + opStructFieldStringTag opType = 33 + opStructFieldRecursive opType = 34 + opStructFieldRecursiveEnd opType = 35 + opStructEnd opType = 36 + opStructAnonymousEnd opType = 37 + opInt opType = 38 + opInt8 opType = 39 + opInt16 opType = 40 + opInt32 opType = 41 + opInt64 opType = 42 + opUint opType = 43 + opUint8 opType = 44 + opUint16 opType = 45 + opUint32 opType = 46 + opUint64 opType = 47 + opFloat32 opType = 48 + opFloat64 opType = 49 + opBool opType = 50 + opString opType = 51 + opBytes opType = 52 + opArray opType = 53 + opMap opType = 54 + opMapLoad opType = 55 + opSlice opType = 56 + opStruct opType = 57 + opMarshalJSON opType = 58 + opMarshalText opType = 59 + opStructFieldHeadInt opType = 60 + opStructFieldHeadInt8 opType = 61 + opStructFieldHeadInt16 opType = 62 + opStructFieldHeadInt32 opType = 63 + opStructFieldHeadInt64 opType = 64 + opStructFieldHeadUint opType = 65 + opStructFieldHeadUint8 opType = 66 + opStructFieldHeadUint16 opType = 67 + opStructFieldHeadUint32 opType = 68 + opStructFieldHeadUint64 opType = 69 + opStructFieldHeadFloat32 opType = 70 + opStructFieldHeadFloat64 opType = 71 + opStructFieldHeadBool opType = 72 + opStructFieldHeadString opType = 73 + opStructFieldHeadBytes opType = 74 + opStructFieldHeadArray opType = 75 + opStructFieldHeadMap opType = 76 + opStructFieldHeadMapLoad opType = 77 + opStructFieldHeadSlice opType = 78 + opStructFieldHeadStruct opType = 79 + opStructFieldHeadMarshalJSON opType = 80 + opStructFieldHeadMarshalText opType = 81 + opStructFieldHeadOmitEmptyInt opType = 82 + opStructFieldHeadOmitEmptyInt8 opType = 83 + opStructFieldHeadOmitEmptyInt16 opType = 84 + opStructFieldHeadOmitEmptyInt32 opType = 85 + opStructFieldHeadOmitEmptyInt64 opType = 86 + opStructFieldHeadOmitEmptyUint opType = 87 + opStructFieldHeadOmitEmptyUint8 opType = 88 + opStructFieldHeadOmitEmptyUint16 opType = 89 + opStructFieldHeadOmitEmptyUint32 opType = 90 + opStructFieldHeadOmitEmptyUint64 opType = 91 + opStructFieldHeadOmitEmptyFloat32 opType = 92 + opStructFieldHeadOmitEmptyFloat64 opType = 93 + opStructFieldHeadOmitEmptyBool opType = 94 + opStructFieldHeadOmitEmptyString opType = 95 + opStructFieldHeadOmitEmptyBytes opType = 96 + opStructFieldHeadOmitEmptyArray opType = 97 + opStructFieldHeadOmitEmptyMap opType = 98 + opStructFieldHeadOmitEmptyMapLoad opType = 99 + opStructFieldHeadOmitEmptySlice opType = 100 + opStructFieldHeadOmitEmptyStruct opType = 101 + opStructFieldHeadOmitEmptyMarshalJSON opType = 102 + opStructFieldHeadOmitEmptyMarshalText opType = 103 + opStructFieldHeadStringTagInt opType = 104 + opStructFieldHeadStringTagInt8 opType = 105 + opStructFieldHeadStringTagInt16 opType = 106 + opStructFieldHeadStringTagInt32 opType = 107 + opStructFieldHeadStringTagInt64 opType = 108 + opStructFieldHeadStringTagUint opType = 109 + opStructFieldHeadStringTagUint8 opType = 110 + opStructFieldHeadStringTagUint16 opType = 111 + opStructFieldHeadStringTagUint32 opType = 112 + opStructFieldHeadStringTagUint64 opType = 113 + opStructFieldHeadStringTagFloat32 opType = 114 + opStructFieldHeadStringTagFloat64 opType = 115 + opStructFieldHeadStringTagBool opType = 116 + opStructFieldHeadStringTagString opType = 117 + opStructFieldHeadStringTagBytes opType = 118 + opStructFieldHeadStringTagArray opType = 119 + opStructFieldHeadStringTagMap opType = 120 + opStructFieldHeadStringTagMapLoad opType = 121 + opStructFieldHeadStringTagSlice opType = 122 + opStructFieldHeadStringTagStruct opType = 123 + opStructFieldHeadStringTagMarshalJSON opType = 124 + opStructFieldHeadStringTagMarshalText opType = 125 + opStructFieldAnonymousHeadInt opType = 126 + opStructFieldAnonymousHeadInt8 opType = 127 + opStructFieldAnonymousHeadInt16 opType = 128 + opStructFieldAnonymousHeadInt32 opType = 129 + opStructFieldAnonymousHeadInt64 opType = 130 + opStructFieldAnonymousHeadUint opType = 131 + opStructFieldAnonymousHeadUint8 opType = 132 + opStructFieldAnonymousHeadUint16 opType = 133 + opStructFieldAnonymousHeadUint32 opType = 134 + opStructFieldAnonymousHeadUint64 opType = 135 + opStructFieldAnonymousHeadFloat32 opType = 136 + opStructFieldAnonymousHeadFloat64 opType = 137 + opStructFieldAnonymousHeadBool opType = 138 + opStructFieldAnonymousHeadString opType = 139 + opStructFieldAnonymousHeadBytes opType = 140 + opStructFieldAnonymousHeadArray opType = 141 + opStructFieldAnonymousHeadMap opType = 142 + opStructFieldAnonymousHeadMapLoad opType = 143 + opStructFieldAnonymousHeadSlice opType = 144 + opStructFieldAnonymousHeadStruct opType = 145 + opStructFieldAnonymousHeadMarshalJSON opType = 146 + opStructFieldAnonymousHeadMarshalText opType = 147 + opStructFieldAnonymousHeadOmitEmptyInt opType = 148 + opStructFieldAnonymousHeadOmitEmptyInt8 opType = 149 + opStructFieldAnonymousHeadOmitEmptyInt16 opType = 150 + opStructFieldAnonymousHeadOmitEmptyInt32 opType = 151 + opStructFieldAnonymousHeadOmitEmptyInt64 opType = 152 + opStructFieldAnonymousHeadOmitEmptyUint opType = 153 + opStructFieldAnonymousHeadOmitEmptyUint8 opType = 154 + opStructFieldAnonymousHeadOmitEmptyUint16 opType = 155 + opStructFieldAnonymousHeadOmitEmptyUint32 opType = 156 + opStructFieldAnonymousHeadOmitEmptyUint64 opType = 157 + opStructFieldAnonymousHeadOmitEmptyFloat32 opType = 158 + opStructFieldAnonymousHeadOmitEmptyFloat64 opType = 159 + opStructFieldAnonymousHeadOmitEmptyBool opType = 160 + opStructFieldAnonymousHeadOmitEmptyString opType = 161 + opStructFieldAnonymousHeadOmitEmptyBytes opType = 162 + opStructFieldAnonymousHeadOmitEmptyArray opType = 163 + opStructFieldAnonymousHeadOmitEmptyMap opType = 164 + opStructFieldAnonymousHeadOmitEmptyMapLoad opType = 165 + opStructFieldAnonymousHeadOmitEmptySlice opType = 166 + opStructFieldAnonymousHeadOmitEmptyStruct opType = 167 + opStructFieldAnonymousHeadOmitEmptyMarshalJSON opType = 168 + opStructFieldAnonymousHeadOmitEmptyMarshalText opType = 169 + opStructFieldAnonymousHeadStringTagInt opType = 170 + opStructFieldAnonymousHeadStringTagInt8 opType = 171 + opStructFieldAnonymousHeadStringTagInt16 opType = 172 + opStructFieldAnonymousHeadStringTagInt32 opType = 173 + opStructFieldAnonymousHeadStringTagInt64 opType = 174 + opStructFieldAnonymousHeadStringTagUint opType = 175 + opStructFieldAnonymousHeadStringTagUint8 opType = 176 + opStructFieldAnonymousHeadStringTagUint16 opType = 177 + opStructFieldAnonymousHeadStringTagUint32 opType = 178 + opStructFieldAnonymousHeadStringTagUint64 opType = 179 + opStructFieldAnonymousHeadStringTagFloat32 opType = 180 + opStructFieldAnonymousHeadStringTagFloat64 opType = 181 + opStructFieldAnonymousHeadStringTagBool opType = 182 + opStructFieldAnonymousHeadStringTagString opType = 183 + opStructFieldAnonymousHeadStringTagBytes opType = 184 + opStructFieldAnonymousHeadStringTagArray opType = 185 + opStructFieldAnonymousHeadStringTagMap opType = 186 + opStructFieldAnonymousHeadStringTagMapLoad opType = 187 + opStructFieldAnonymousHeadStringTagSlice opType = 188 + opStructFieldAnonymousHeadStringTagStruct opType = 189 + opStructFieldAnonymousHeadStringTagMarshalJSON opType = 190 + opStructFieldAnonymousHeadStringTagMarshalText opType = 191 + opStructFieldPtrHeadInt opType = 192 + opStructFieldPtrHeadInt8 opType = 193 + opStructFieldPtrHeadInt16 opType = 194 + opStructFieldPtrHeadInt32 opType = 195 + opStructFieldPtrHeadInt64 opType = 196 + opStructFieldPtrHeadUint opType = 197 + opStructFieldPtrHeadUint8 opType = 198 + opStructFieldPtrHeadUint16 opType = 199 + opStructFieldPtrHeadUint32 opType = 200 + opStructFieldPtrHeadUint64 opType = 201 + opStructFieldPtrHeadFloat32 opType = 202 + opStructFieldPtrHeadFloat64 opType = 203 + opStructFieldPtrHeadBool opType = 204 + opStructFieldPtrHeadString opType = 205 + opStructFieldPtrHeadBytes opType = 206 + opStructFieldPtrHeadArray opType = 207 + opStructFieldPtrHeadMap opType = 208 + opStructFieldPtrHeadMapLoad opType = 209 + opStructFieldPtrHeadSlice opType = 210 + opStructFieldPtrHeadStruct opType = 211 + opStructFieldPtrHeadMarshalJSON opType = 212 + opStructFieldPtrHeadMarshalText opType = 213 + opStructFieldPtrHeadOmitEmptyInt opType = 214 + opStructFieldPtrHeadOmitEmptyInt8 opType = 215 + opStructFieldPtrHeadOmitEmptyInt16 opType = 216 + opStructFieldPtrHeadOmitEmptyInt32 opType = 217 + opStructFieldPtrHeadOmitEmptyInt64 opType = 218 + opStructFieldPtrHeadOmitEmptyUint opType = 219 + opStructFieldPtrHeadOmitEmptyUint8 opType = 220 + opStructFieldPtrHeadOmitEmptyUint16 opType = 221 + opStructFieldPtrHeadOmitEmptyUint32 opType = 222 + opStructFieldPtrHeadOmitEmptyUint64 opType = 223 + opStructFieldPtrHeadOmitEmptyFloat32 opType = 224 + opStructFieldPtrHeadOmitEmptyFloat64 opType = 225 + opStructFieldPtrHeadOmitEmptyBool opType = 226 + opStructFieldPtrHeadOmitEmptyString opType = 227 + opStructFieldPtrHeadOmitEmptyBytes opType = 228 + opStructFieldPtrHeadOmitEmptyArray opType = 229 + opStructFieldPtrHeadOmitEmptyMap opType = 230 + opStructFieldPtrHeadOmitEmptyMapLoad opType = 231 + opStructFieldPtrHeadOmitEmptySlice opType = 232 + opStructFieldPtrHeadOmitEmptyStruct opType = 233 + opStructFieldPtrHeadOmitEmptyMarshalJSON opType = 234 + opStructFieldPtrHeadOmitEmptyMarshalText opType = 235 + opStructFieldPtrHeadStringTagInt opType = 236 + opStructFieldPtrHeadStringTagInt8 opType = 237 + opStructFieldPtrHeadStringTagInt16 opType = 238 + opStructFieldPtrHeadStringTagInt32 opType = 239 + opStructFieldPtrHeadStringTagInt64 opType = 240 + opStructFieldPtrHeadStringTagUint opType = 241 + opStructFieldPtrHeadStringTagUint8 opType = 242 + opStructFieldPtrHeadStringTagUint16 opType = 243 + opStructFieldPtrHeadStringTagUint32 opType = 244 + opStructFieldPtrHeadStringTagUint64 opType = 245 + opStructFieldPtrHeadStringTagFloat32 opType = 246 + opStructFieldPtrHeadStringTagFloat64 opType = 247 + opStructFieldPtrHeadStringTagBool opType = 248 + opStructFieldPtrHeadStringTagString opType = 249 + opStructFieldPtrHeadStringTagBytes opType = 250 + opStructFieldPtrHeadStringTagArray opType = 251 + opStructFieldPtrHeadStringTagMap opType = 252 + opStructFieldPtrHeadStringTagMapLoad opType = 253 + opStructFieldPtrHeadStringTagSlice opType = 254 + opStructFieldPtrHeadStringTagStruct opType = 255 + opStructFieldPtrHeadStringTagMarshalJSON opType = 256 + opStructFieldPtrHeadStringTagMarshalText opType = 257 + opStructFieldPtrAnonymousHeadInt opType = 258 + opStructFieldPtrAnonymousHeadInt8 opType = 259 + opStructFieldPtrAnonymousHeadInt16 opType = 260 + opStructFieldPtrAnonymousHeadInt32 opType = 261 + opStructFieldPtrAnonymousHeadInt64 opType = 262 + opStructFieldPtrAnonymousHeadUint opType = 263 + opStructFieldPtrAnonymousHeadUint8 opType = 264 + opStructFieldPtrAnonymousHeadUint16 opType = 265 + opStructFieldPtrAnonymousHeadUint32 opType = 266 + opStructFieldPtrAnonymousHeadUint64 opType = 267 + opStructFieldPtrAnonymousHeadFloat32 opType = 268 + opStructFieldPtrAnonymousHeadFloat64 opType = 269 + opStructFieldPtrAnonymousHeadBool opType = 270 + opStructFieldPtrAnonymousHeadString opType = 271 + opStructFieldPtrAnonymousHeadBytes opType = 272 + opStructFieldPtrAnonymousHeadArray opType = 273 + opStructFieldPtrAnonymousHeadMap opType = 274 + opStructFieldPtrAnonymousHeadMapLoad opType = 275 + opStructFieldPtrAnonymousHeadSlice opType = 276 + opStructFieldPtrAnonymousHeadStruct opType = 277 + opStructFieldPtrAnonymousHeadMarshalJSON opType = 278 + opStructFieldPtrAnonymousHeadMarshalText opType = 279 + opStructFieldPtrAnonymousHeadOmitEmptyInt opType = 280 + opStructFieldPtrAnonymousHeadOmitEmptyInt8 opType = 281 + opStructFieldPtrAnonymousHeadOmitEmptyInt16 opType = 282 + opStructFieldPtrAnonymousHeadOmitEmptyInt32 opType = 283 + opStructFieldPtrAnonymousHeadOmitEmptyInt64 opType = 284 + opStructFieldPtrAnonymousHeadOmitEmptyUint opType = 285 + opStructFieldPtrAnonymousHeadOmitEmptyUint8 opType = 286 + opStructFieldPtrAnonymousHeadOmitEmptyUint16 opType = 287 + opStructFieldPtrAnonymousHeadOmitEmptyUint32 opType = 288 + opStructFieldPtrAnonymousHeadOmitEmptyUint64 opType = 289 + opStructFieldPtrAnonymousHeadOmitEmptyFloat32 opType = 290 + opStructFieldPtrAnonymousHeadOmitEmptyFloat64 opType = 291 + opStructFieldPtrAnonymousHeadOmitEmptyBool opType = 292 + opStructFieldPtrAnonymousHeadOmitEmptyString opType = 293 + opStructFieldPtrAnonymousHeadOmitEmptyBytes opType = 294 + opStructFieldPtrAnonymousHeadOmitEmptyArray opType = 295 + opStructFieldPtrAnonymousHeadOmitEmptyMap opType = 296 + opStructFieldPtrAnonymousHeadOmitEmptyMapLoad opType = 297 + opStructFieldPtrAnonymousHeadOmitEmptySlice opType = 298 + opStructFieldPtrAnonymousHeadOmitEmptyStruct opType = 299 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSON opType = 300 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalText opType = 301 + opStructFieldPtrAnonymousHeadStringTagInt opType = 302 + opStructFieldPtrAnonymousHeadStringTagInt8 opType = 303 + opStructFieldPtrAnonymousHeadStringTagInt16 opType = 304 + opStructFieldPtrAnonymousHeadStringTagInt32 opType = 305 + opStructFieldPtrAnonymousHeadStringTagInt64 opType = 306 + opStructFieldPtrAnonymousHeadStringTagUint opType = 307 + opStructFieldPtrAnonymousHeadStringTagUint8 opType = 308 + opStructFieldPtrAnonymousHeadStringTagUint16 opType = 309 + opStructFieldPtrAnonymousHeadStringTagUint32 opType = 310 + opStructFieldPtrAnonymousHeadStringTagUint64 opType = 311 + opStructFieldPtrAnonymousHeadStringTagFloat32 opType = 312 + opStructFieldPtrAnonymousHeadStringTagFloat64 opType = 313 + opStructFieldPtrAnonymousHeadStringTagBool opType = 314 + opStructFieldPtrAnonymousHeadStringTagString opType = 315 + opStructFieldPtrAnonymousHeadStringTagBytes opType = 316 + opStructFieldPtrAnonymousHeadStringTagArray opType = 317 + opStructFieldPtrAnonymousHeadStringTagMap opType = 318 + opStructFieldPtrAnonymousHeadStringTagMapLoad opType = 319 + opStructFieldPtrAnonymousHeadStringTagSlice opType = 320 + opStructFieldPtrAnonymousHeadStringTagStruct opType = 321 + opStructFieldPtrAnonymousHeadStringTagMarshalJSON opType = 322 + opStructFieldPtrAnonymousHeadStringTagMarshalText opType = 323 + opStructFieldInt opType = 324 + opStructFieldInt8 opType = 325 + opStructFieldInt16 opType = 326 + opStructFieldInt32 opType = 327 + opStructFieldInt64 opType = 328 + opStructFieldUint opType = 329 + opStructFieldUint8 opType = 330 + opStructFieldUint16 opType = 331 + opStructFieldUint32 opType = 332 + opStructFieldUint64 opType = 333 + opStructFieldFloat32 opType = 334 + opStructFieldFloat64 opType = 335 + opStructFieldBool opType = 336 + opStructFieldString opType = 337 + opStructFieldBytes opType = 338 + opStructFieldArray opType = 339 + opStructFieldMap opType = 340 + opStructFieldMapLoad opType = 341 + opStructFieldSlice opType = 342 + opStructFieldStruct opType = 343 + opStructFieldMarshalJSON opType = 344 + opStructFieldMarshalText opType = 345 + opStructFieldOmitEmptyInt opType = 346 + opStructFieldOmitEmptyInt8 opType = 347 + opStructFieldOmitEmptyInt16 opType = 348 + opStructFieldOmitEmptyInt32 opType = 349 + opStructFieldOmitEmptyInt64 opType = 350 + opStructFieldOmitEmptyUint opType = 351 + opStructFieldOmitEmptyUint8 opType = 352 + opStructFieldOmitEmptyUint16 opType = 353 + opStructFieldOmitEmptyUint32 opType = 354 + opStructFieldOmitEmptyUint64 opType = 355 + opStructFieldOmitEmptyFloat32 opType = 356 + opStructFieldOmitEmptyFloat64 opType = 357 + opStructFieldOmitEmptyBool opType = 358 + opStructFieldOmitEmptyString opType = 359 + opStructFieldOmitEmptyBytes opType = 360 + opStructFieldOmitEmptyArray opType = 361 + opStructFieldOmitEmptyMap opType = 362 + opStructFieldOmitEmptyMapLoad opType = 363 + opStructFieldOmitEmptySlice opType = 364 + opStructFieldOmitEmptyStruct opType = 365 + opStructFieldOmitEmptyMarshalJSON opType = 366 + opStructFieldOmitEmptyMarshalText opType = 367 + opStructFieldStringTagInt opType = 368 + opStructFieldStringTagInt8 opType = 369 + opStructFieldStringTagInt16 opType = 370 + opStructFieldStringTagInt32 opType = 371 + opStructFieldStringTagInt64 opType = 372 + opStructFieldStringTagUint opType = 373 + opStructFieldStringTagUint8 opType = 374 + opStructFieldStringTagUint16 opType = 375 + opStructFieldStringTagUint32 opType = 376 + opStructFieldStringTagUint64 opType = 377 + opStructFieldStringTagFloat32 opType = 378 + opStructFieldStringTagFloat64 opType = 379 + opStructFieldStringTagBool opType = 380 + opStructFieldStringTagString opType = 381 + opStructFieldStringTagBytes opType = 382 + opStructFieldStringTagArray opType = 383 + opStructFieldStringTagMap opType = 384 + opStructFieldStringTagMapLoad opType = 385 + opStructFieldStringTagSlice opType = 386 + opStructFieldStringTagStruct opType = 387 + opStructFieldStringTagMarshalJSON opType = 388 + opStructFieldStringTagMarshalText opType = 389 + opEndIndent opType = 390 + opInterfaceIndent opType = 391 + opInterfaceEndIndent opType = 392 + opPtrIndent opType = 393 + opSliceHeadIndent opType = 394 + opRootSliceHeadIndent opType = 395 + opSliceElemIndent opType = 396 + opRootSliceElemIndent opType = 397 + opSliceEndIndent opType = 398 + opArrayHeadIndent opType = 399 + opArrayElemIndent opType = 400 + opArrayEndIndent opType = 401 + opMapHeadIndent opType = 402 + opMapHeadLoadIndent opType = 403 + opRootMapHeadIndent opType = 404 + opMapKeyIndent opType = 405 + opRootMapKeyIndent opType = 406 + opMapValueIndent opType = 407 + opMapEndIndent opType = 408 + opStructFieldHeadIndent opType = 409 + opStructFieldHeadOmitEmptyIndent opType = 410 + opStructFieldHeadStringTagIndent opType = 411 + opStructFieldAnonymousHeadIndent opType = 412 + opStructFieldAnonymousHeadOmitEmptyIndent opType = 413 + opStructFieldPtrAnonymousHeadOmitEmptyIndent opType = 414 + opStructFieldAnonymousHeadStringTagIndent opType = 415 + opStructFieldPtrAnonymousHeadStringTagIndent opType = 416 + opStructFieldPtrHeadIndent opType = 417 + opStructFieldPtrHeadOmitEmptyIndent opType = 418 + opStructFieldPtrHeadStringTagIndent opType = 419 + opStructFieldPtrAnonymousHeadIndent opType = 420 + opStructFieldIndent opType = 421 + opStructFieldOmitEmptyIndent opType = 422 + opStructFieldStringTagIndent opType = 423 + opStructFieldRecursiveIndent opType = 424 + opStructFieldRecursiveEndIndent opType = 425 + opStructEndIndent opType = 426 + opStructAnonymousEndIndent opType = 427 + opIntIndent opType = 428 + opInt8Indent opType = 429 + opInt16Indent opType = 430 + opInt32Indent opType = 431 + opInt64Indent opType = 432 + opUintIndent opType = 433 + opUint8Indent opType = 434 + opUint16Indent opType = 435 + opUint32Indent opType = 436 + opUint64Indent opType = 437 + opFloat32Indent opType = 438 + opFloat64Indent opType = 439 + opBoolIndent opType = 440 + opStringIndent opType = 441 + opBytesIndent opType = 442 + opArrayIndent opType = 443 + opMapIndent opType = 444 + opMapLoadIndent opType = 445 + opSliceIndent opType = 446 + opStructIndent opType = 447 + opMarshalJSONIndent opType = 448 + opMarshalTextIndent opType = 449 + opStructFieldHeadIntIndent opType = 450 + opStructFieldHeadInt8Indent opType = 451 + opStructFieldHeadInt16Indent opType = 452 + opStructFieldHeadInt32Indent opType = 453 + opStructFieldHeadInt64Indent opType = 454 + opStructFieldHeadUintIndent opType = 455 + opStructFieldHeadUint8Indent opType = 456 + opStructFieldHeadUint16Indent opType = 457 + opStructFieldHeadUint32Indent opType = 458 + opStructFieldHeadUint64Indent opType = 459 + opStructFieldHeadFloat32Indent opType = 460 + opStructFieldHeadFloat64Indent opType = 461 + opStructFieldHeadBoolIndent opType = 462 + opStructFieldHeadStringIndent opType = 463 + opStructFieldHeadBytesIndent opType = 464 + opStructFieldHeadArrayIndent opType = 465 + opStructFieldHeadMapIndent opType = 466 + opStructFieldHeadMapLoadIndent opType = 467 + opStructFieldHeadSliceIndent opType = 468 + opStructFieldHeadStructIndent opType = 469 + opStructFieldHeadMarshalJSONIndent opType = 470 + opStructFieldHeadMarshalTextIndent opType = 471 + opStructFieldHeadOmitEmptyIntIndent opType = 472 + opStructFieldHeadOmitEmptyInt8Indent opType = 473 + opStructFieldHeadOmitEmptyInt16Indent opType = 474 + opStructFieldHeadOmitEmptyInt32Indent opType = 475 + opStructFieldHeadOmitEmptyInt64Indent opType = 476 + opStructFieldHeadOmitEmptyUintIndent opType = 477 + opStructFieldHeadOmitEmptyUint8Indent opType = 478 + opStructFieldHeadOmitEmptyUint16Indent opType = 479 + opStructFieldHeadOmitEmptyUint32Indent opType = 480 + opStructFieldHeadOmitEmptyUint64Indent opType = 481 + opStructFieldHeadOmitEmptyFloat32Indent opType = 482 + opStructFieldHeadOmitEmptyFloat64Indent opType = 483 + opStructFieldHeadOmitEmptyBoolIndent opType = 484 + opStructFieldHeadOmitEmptyStringIndent opType = 485 + opStructFieldHeadOmitEmptyBytesIndent opType = 486 + opStructFieldHeadOmitEmptyArrayIndent opType = 487 + opStructFieldHeadOmitEmptyMapIndent opType = 488 + opStructFieldHeadOmitEmptyMapLoadIndent opType = 489 + opStructFieldHeadOmitEmptySliceIndent opType = 490 + opStructFieldHeadOmitEmptyStructIndent opType = 491 + opStructFieldHeadOmitEmptyMarshalJSONIndent opType = 492 + opStructFieldHeadOmitEmptyMarshalTextIndent opType = 493 + opStructFieldHeadStringTagIntIndent opType = 494 + opStructFieldHeadStringTagInt8Indent opType = 495 + opStructFieldHeadStringTagInt16Indent opType = 496 + opStructFieldHeadStringTagInt32Indent opType = 497 + opStructFieldHeadStringTagInt64Indent opType = 498 + opStructFieldHeadStringTagUintIndent opType = 499 + opStructFieldHeadStringTagUint8Indent opType = 500 + opStructFieldHeadStringTagUint16Indent opType = 501 + opStructFieldHeadStringTagUint32Indent opType = 502 + opStructFieldHeadStringTagUint64Indent opType = 503 + opStructFieldHeadStringTagFloat32Indent opType = 504 + opStructFieldHeadStringTagFloat64Indent opType = 505 + opStructFieldHeadStringTagBoolIndent opType = 506 + opStructFieldHeadStringTagStringIndent opType = 507 + opStructFieldHeadStringTagBytesIndent opType = 508 + opStructFieldHeadStringTagArrayIndent opType = 509 + opStructFieldHeadStringTagMapIndent opType = 510 + opStructFieldHeadStringTagMapLoadIndent opType = 511 + opStructFieldHeadStringTagSliceIndent opType = 512 + opStructFieldHeadStringTagStructIndent opType = 513 + opStructFieldHeadStringTagMarshalJSONIndent opType = 514 + opStructFieldHeadStringTagMarshalTextIndent opType = 515 + opStructFieldAnonymousHeadIntIndent opType = 516 + opStructFieldAnonymousHeadInt8Indent opType = 517 + opStructFieldAnonymousHeadInt16Indent opType = 518 + opStructFieldAnonymousHeadInt32Indent opType = 519 + opStructFieldAnonymousHeadInt64Indent opType = 520 + opStructFieldAnonymousHeadUintIndent opType = 521 + opStructFieldAnonymousHeadUint8Indent opType = 522 + opStructFieldAnonymousHeadUint16Indent opType = 523 + opStructFieldAnonymousHeadUint32Indent opType = 524 + opStructFieldAnonymousHeadUint64Indent opType = 525 + opStructFieldAnonymousHeadFloat32Indent opType = 526 + opStructFieldAnonymousHeadFloat64Indent opType = 527 + opStructFieldAnonymousHeadBoolIndent opType = 528 + opStructFieldAnonymousHeadStringIndent opType = 529 + opStructFieldAnonymousHeadBytesIndent opType = 530 + opStructFieldAnonymousHeadArrayIndent opType = 531 + opStructFieldAnonymousHeadMapIndent opType = 532 + opStructFieldAnonymousHeadMapLoadIndent opType = 533 + opStructFieldAnonymousHeadSliceIndent opType = 534 + opStructFieldAnonymousHeadStructIndent opType = 535 + opStructFieldAnonymousHeadMarshalJSONIndent opType = 536 + opStructFieldAnonymousHeadMarshalTextIndent opType = 537 + opStructFieldAnonymousHeadOmitEmptyIntIndent opType = 538 + opStructFieldAnonymousHeadOmitEmptyInt8Indent opType = 539 + opStructFieldAnonymousHeadOmitEmptyInt16Indent opType = 540 + opStructFieldAnonymousHeadOmitEmptyInt32Indent opType = 541 + opStructFieldAnonymousHeadOmitEmptyInt64Indent opType = 542 + opStructFieldAnonymousHeadOmitEmptyUintIndent opType = 543 + opStructFieldAnonymousHeadOmitEmptyUint8Indent opType = 544 + opStructFieldAnonymousHeadOmitEmptyUint16Indent opType = 545 + opStructFieldAnonymousHeadOmitEmptyUint32Indent opType = 546 + opStructFieldAnonymousHeadOmitEmptyUint64Indent opType = 547 + opStructFieldAnonymousHeadOmitEmptyFloat32Indent opType = 548 + opStructFieldAnonymousHeadOmitEmptyFloat64Indent opType = 549 + opStructFieldAnonymousHeadOmitEmptyBoolIndent opType = 550 + opStructFieldAnonymousHeadOmitEmptyStringIndent opType = 551 + opStructFieldAnonymousHeadOmitEmptyBytesIndent opType = 552 + opStructFieldAnonymousHeadOmitEmptyArrayIndent opType = 553 + opStructFieldAnonymousHeadOmitEmptyMapIndent opType = 554 + opStructFieldAnonymousHeadOmitEmptyMapLoadIndent opType = 555 + opStructFieldAnonymousHeadOmitEmptySliceIndent opType = 556 + opStructFieldAnonymousHeadOmitEmptyStructIndent opType = 557 + opStructFieldAnonymousHeadOmitEmptyMarshalJSONIndent opType = 558 + opStructFieldAnonymousHeadOmitEmptyMarshalTextIndent opType = 559 + opStructFieldAnonymousHeadStringTagIntIndent opType = 560 + opStructFieldAnonymousHeadStringTagInt8Indent opType = 561 + opStructFieldAnonymousHeadStringTagInt16Indent opType = 562 + opStructFieldAnonymousHeadStringTagInt32Indent opType = 563 + opStructFieldAnonymousHeadStringTagInt64Indent opType = 564 + opStructFieldAnonymousHeadStringTagUintIndent opType = 565 + opStructFieldAnonymousHeadStringTagUint8Indent opType = 566 + opStructFieldAnonymousHeadStringTagUint16Indent opType = 567 + opStructFieldAnonymousHeadStringTagUint32Indent opType = 568 + opStructFieldAnonymousHeadStringTagUint64Indent opType = 569 + opStructFieldAnonymousHeadStringTagFloat32Indent opType = 570 + opStructFieldAnonymousHeadStringTagFloat64Indent opType = 571 + opStructFieldAnonymousHeadStringTagBoolIndent opType = 572 + opStructFieldAnonymousHeadStringTagStringIndent opType = 573 + opStructFieldAnonymousHeadStringTagBytesIndent opType = 574 + opStructFieldAnonymousHeadStringTagArrayIndent opType = 575 + opStructFieldAnonymousHeadStringTagMapIndent opType = 576 + opStructFieldAnonymousHeadStringTagMapLoadIndent opType = 577 + opStructFieldAnonymousHeadStringTagSliceIndent opType = 578 + opStructFieldAnonymousHeadStringTagStructIndent opType = 579 + opStructFieldAnonymousHeadStringTagMarshalJSONIndent opType = 580 + opStructFieldAnonymousHeadStringTagMarshalTextIndent opType = 581 + opStructFieldPtrHeadIntIndent opType = 582 + opStructFieldPtrHeadInt8Indent opType = 583 + opStructFieldPtrHeadInt16Indent opType = 584 + opStructFieldPtrHeadInt32Indent opType = 585 + opStructFieldPtrHeadInt64Indent opType = 586 + opStructFieldPtrHeadUintIndent opType = 587 + opStructFieldPtrHeadUint8Indent opType = 588 + opStructFieldPtrHeadUint16Indent opType = 589 + opStructFieldPtrHeadUint32Indent opType = 590 + opStructFieldPtrHeadUint64Indent opType = 591 + opStructFieldPtrHeadFloat32Indent opType = 592 + opStructFieldPtrHeadFloat64Indent opType = 593 + opStructFieldPtrHeadBoolIndent opType = 594 + opStructFieldPtrHeadStringIndent opType = 595 + opStructFieldPtrHeadBytesIndent opType = 596 + opStructFieldPtrHeadArrayIndent opType = 597 + opStructFieldPtrHeadMapIndent opType = 598 + opStructFieldPtrHeadMapLoadIndent opType = 599 + opStructFieldPtrHeadSliceIndent opType = 600 + opStructFieldPtrHeadStructIndent opType = 601 + opStructFieldPtrHeadMarshalJSONIndent opType = 602 + opStructFieldPtrHeadMarshalTextIndent opType = 603 + opStructFieldPtrHeadOmitEmptyIntIndent opType = 604 + opStructFieldPtrHeadOmitEmptyInt8Indent opType = 605 + opStructFieldPtrHeadOmitEmptyInt16Indent opType = 606 + opStructFieldPtrHeadOmitEmptyInt32Indent opType = 607 + opStructFieldPtrHeadOmitEmptyInt64Indent opType = 608 + opStructFieldPtrHeadOmitEmptyUintIndent opType = 609 + opStructFieldPtrHeadOmitEmptyUint8Indent opType = 610 + opStructFieldPtrHeadOmitEmptyUint16Indent opType = 611 + opStructFieldPtrHeadOmitEmptyUint32Indent opType = 612 + opStructFieldPtrHeadOmitEmptyUint64Indent opType = 613 + opStructFieldPtrHeadOmitEmptyFloat32Indent opType = 614 + opStructFieldPtrHeadOmitEmptyFloat64Indent opType = 615 + opStructFieldPtrHeadOmitEmptyBoolIndent opType = 616 + opStructFieldPtrHeadOmitEmptyStringIndent opType = 617 + opStructFieldPtrHeadOmitEmptyBytesIndent opType = 618 + opStructFieldPtrHeadOmitEmptyArrayIndent opType = 619 + opStructFieldPtrHeadOmitEmptyMapIndent opType = 620 + opStructFieldPtrHeadOmitEmptyMapLoadIndent opType = 621 + opStructFieldPtrHeadOmitEmptySliceIndent opType = 622 + opStructFieldPtrHeadOmitEmptyStructIndent opType = 623 + opStructFieldPtrHeadOmitEmptyMarshalJSONIndent opType = 624 + opStructFieldPtrHeadOmitEmptyMarshalTextIndent opType = 625 + opStructFieldPtrHeadStringTagIntIndent opType = 626 + opStructFieldPtrHeadStringTagInt8Indent opType = 627 + opStructFieldPtrHeadStringTagInt16Indent opType = 628 + opStructFieldPtrHeadStringTagInt32Indent opType = 629 + opStructFieldPtrHeadStringTagInt64Indent opType = 630 + opStructFieldPtrHeadStringTagUintIndent opType = 631 + opStructFieldPtrHeadStringTagUint8Indent opType = 632 + opStructFieldPtrHeadStringTagUint16Indent opType = 633 + opStructFieldPtrHeadStringTagUint32Indent opType = 634 + opStructFieldPtrHeadStringTagUint64Indent opType = 635 + opStructFieldPtrHeadStringTagFloat32Indent opType = 636 + opStructFieldPtrHeadStringTagFloat64Indent opType = 637 + opStructFieldPtrHeadStringTagBoolIndent opType = 638 + opStructFieldPtrHeadStringTagStringIndent opType = 639 + opStructFieldPtrHeadStringTagBytesIndent opType = 640 + opStructFieldPtrHeadStringTagArrayIndent opType = 641 + opStructFieldPtrHeadStringTagMapIndent opType = 642 + opStructFieldPtrHeadStringTagMapLoadIndent opType = 643 + opStructFieldPtrHeadStringTagSliceIndent opType = 644 + opStructFieldPtrHeadStringTagStructIndent opType = 645 + opStructFieldPtrHeadStringTagMarshalJSONIndent opType = 646 + opStructFieldPtrHeadStringTagMarshalTextIndent opType = 647 + opStructFieldPtrAnonymousHeadIntIndent opType = 648 + opStructFieldPtrAnonymousHeadInt8Indent opType = 649 + opStructFieldPtrAnonymousHeadInt16Indent opType = 650 + opStructFieldPtrAnonymousHeadInt32Indent opType = 651 + opStructFieldPtrAnonymousHeadInt64Indent opType = 652 + opStructFieldPtrAnonymousHeadUintIndent opType = 653 + opStructFieldPtrAnonymousHeadUint8Indent opType = 654 + opStructFieldPtrAnonymousHeadUint16Indent opType = 655 + opStructFieldPtrAnonymousHeadUint32Indent opType = 656 + opStructFieldPtrAnonymousHeadUint64Indent opType = 657 + opStructFieldPtrAnonymousHeadFloat32Indent opType = 658 + opStructFieldPtrAnonymousHeadFloat64Indent opType = 659 + opStructFieldPtrAnonymousHeadBoolIndent opType = 660 + opStructFieldPtrAnonymousHeadStringIndent opType = 661 + opStructFieldPtrAnonymousHeadBytesIndent opType = 662 + opStructFieldPtrAnonymousHeadArrayIndent opType = 663 + opStructFieldPtrAnonymousHeadMapIndent opType = 664 + opStructFieldPtrAnonymousHeadMapLoadIndent opType = 665 + opStructFieldPtrAnonymousHeadSliceIndent opType = 666 + opStructFieldPtrAnonymousHeadStructIndent opType = 667 + opStructFieldPtrAnonymousHeadMarshalJSONIndent opType = 668 + opStructFieldPtrAnonymousHeadMarshalTextIndent opType = 669 + opStructFieldPtrAnonymousHeadOmitEmptyIntIndent opType = 670 + opStructFieldPtrAnonymousHeadOmitEmptyInt8Indent opType = 671 + opStructFieldPtrAnonymousHeadOmitEmptyInt16Indent opType = 672 + opStructFieldPtrAnonymousHeadOmitEmptyInt32Indent opType = 673 + opStructFieldPtrAnonymousHeadOmitEmptyInt64Indent opType = 674 + opStructFieldPtrAnonymousHeadOmitEmptyUintIndent opType = 675 + opStructFieldPtrAnonymousHeadOmitEmptyUint8Indent opType = 676 + opStructFieldPtrAnonymousHeadOmitEmptyUint16Indent opType = 677 + opStructFieldPtrAnonymousHeadOmitEmptyUint32Indent opType = 678 + opStructFieldPtrAnonymousHeadOmitEmptyUint64Indent opType = 679 + opStructFieldPtrAnonymousHeadOmitEmptyFloat32Indent opType = 680 + opStructFieldPtrAnonymousHeadOmitEmptyFloat64Indent opType = 681 + opStructFieldPtrAnonymousHeadOmitEmptyBoolIndent opType = 682 + opStructFieldPtrAnonymousHeadOmitEmptyStringIndent opType = 683 + opStructFieldPtrAnonymousHeadOmitEmptyBytesIndent opType = 684 + opStructFieldPtrAnonymousHeadOmitEmptyArrayIndent opType = 685 + opStructFieldPtrAnonymousHeadOmitEmptyMapIndent opType = 686 + opStructFieldPtrAnonymousHeadOmitEmptyMapLoadIndent opType = 687 + opStructFieldPtrAnonymousHeadOmitEmptySliceIndent opType = 688 + opStructFieldPtrAnonymousHeadOmitEmptyStructIndent opType = 689 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalJSONIndent opType = 690 + opStructFieldPtrAnonymousHeadOmitEmptyMarshalTextIndent opType = 691 + opStructFieldPtrAnonymousHeadStringTagIntIndent opType = 692 + opStructFieldPtrAnonymousHeadStringTagInt8Indent opType = 693 + opStructFieldPtrAnonymousHeadStringTagInt16Indent opType = 694 + opStructFieldPtrAnonymousHeadStringTagInt32Indent opType = 695 + opStructFieldPtrAnonymousHeadStringTagInt64Indent opType = 696 + opStructFieldPtrAnonymousHeadStringTagUintIndent opType = 697 + opStructFieldPtrAnonymousHeadStringTagUint8Indent opType = 698 + opStructFieldPtrAnonymousHeadStringTagUint16Indent opType = 699 + opStructFieldPtrAnonymousHeadStringTagUint32Indent opType = 700 + opStructFieldPtrAnonymousHeadStringTagUint64Indent opType = 701 + opStructFieldPtrAnonymousHeadStringTagFloat32Indent opType = 702 + opStructFieldPtrAnonymousHeadStringTagFloat64Indent opType = 703 + opStructFieldPtrAnonymousHeadStringTagBoolIndent opType = 704 + opStructFieldPtrAnonymousHeadStringTagStringIndent opType = 705 + opStructFieldPtrAnonymousHeadStringTagBytesIndent opType = 706 + opStructFieldPtrAnonymousHeadStringTagArrayIndent opType = 707 + opStructFieldPtrAnonymousHeadStringTagMapIndent opType = 708 + opStructFieldPtrAnonymousHeadStringTagMapLoadIndent opType = 709 + opStructFieldPtrAnonymousHeadStringTagSliceIndent opType = 710 + opStructFieldPtrAnonymousHeadStringTagStructIndent opType = 711 + opStructFieldPtrAnonymousHeadStringTagMarshalJSONIndent opType = 712 + opStructFieldPtrAnonymousHeadStringTagMarshalTextIndent opType = 713 + opStructFieldIntIndent opType = 714 + opStructFieldInt8Indent opType = 715 + opStructFieldInt16Indent opType = 716 + opStructFieldInt32Indent opType = 717 + opStructFieldInt64Indent opType = 718 + opStructFieldUintIndent opType = 719 + opStructFieldUint8Indent opType = 720 + opStructFieldUint16Indent opType = 721 + opStructFieldUint32Indent opType = 722 + opStructFieldUint64Indent opType = 723 + opStructFieldFloat32Indent opType = 724 + opStructFieldFloat64Indent opType = 725 + opStructFieldBoolIndent opType = 726 + opStructFieldStringIndent opType = 727 + opStructFieldBytesIndent opType = 728 + opStructFieldArrayIndent opType = 729 + opStructFieldMapIndent opType = 730 + opStructFieldMapLoadIndent opType = 731 + opStructFieldSliceIndent opType = 732 + opStructFieldStructIndent opType = 733 + opStructFieldMarshalJSONIndent opType = 734 + opStructFieldMarshalTextIndent opType = 735 + opStructFieldOmitEmptyIntIndent opType = 736 + opStructFieldOmitEmptyInt8Indent opType = 737 + opStructFieldOmitEmptyInt16Indent opType = 738 + opStructFieldOmitEmptyInt32Indent opType = 739 + opStructFieldOmitEmptyInt64Indent opType = 740 + opStructFieldOmitEmptyUintIndent opType = 741 + opStructFieldOmitEmptyUint8Indent opType = 742 + opStructFieldOmitEmptyUint16Indent opType = 743 + opStructFieldOmitEmptyUint32Indent opType = 744 + opStructFieldOmitEmptyUint64Indent opType = 745 + opStructFieldOmitEmptyFloat32Indent opType = 746 + opStructFieldOmitEmptyFloat64Indent opType = 747 + opStructFieldOmitEmptyBoolIndent opType = 748 + opStructFieldOmitEmptyStringIndent opType = 749 + opStructFieldOmitEmptyBytesIndent opType = 750 + opStructFieldOmitEmptyArrayIndent opType = 751 + opStructFieldOmitEmptyMapIndent opType = 752 + opStructFieldOmitEmptyMapLoadIndent opType = 753 + opStructFieldOmitEmptySliceIndent opType = 754 + opStructFieldOmitEmptyStructIndent opType = 755 + opStructFieldOmitEmptyMarshalJSONIndent opType = 756 + opStructFieldOmitEmptyMarshalTextIndent opType = 757 + opStructFieldStringTagIntIndent opType = 758 + opStructFieldStringTagInt8Indent opType = 759 + opStructFieldStringTagInt16Indent opType = 760 + opStructFieldStringTagInt32Indent opType = 761 + opStructFieldStringTagInt64Indent opType = 762 + opStructFieldStringTagUintIndent opType = 763 + opStructFieldStringTagUint8Indent opType = 764 + opStructFieldStringTagUint16Indent opType = 765 + opStructFieldStringTagUint32Indent opType = 766 + opStructFieldStringTagUint64Indent opType = 767 + opStructFieldStringTagFloat32Indent opType = 768 + opStructFieldStringTagFloat64Indent opType = 769 + opStructFieldStringTagBoolIndent opType = 770 + opStructFieldStringTagStringIndent opType = 771 + opStructFieldStringTagBytesIndent opType = 772 + opStructFieldStringTagArrayIndent opType = 773 + opStructFieldStringTagMapIndent opType = 774 + opStructFieldStringTagMapLoadIndent opType = 775 + opStructFieldStringTagSliceIndent opType = 776 + opStructFieldStringTagStructIndent opType = 777 + opStructFieldStringTagMarshalJSONIndent opType = 778 + opStructFieldStringTagMarshalTextIndent opType = 779 ) func (t opType) String() string { @@ -803,6 +807,8 @@ func (t opType) String() string { return "End" case opInterface: return "Interface" + case opInterfaceEnd: + return "InterfaceEnd" case opPtr: return "Ptr" case opSliceHead: @@ -867,6 +873,8 @@ func (t opType) String() string { return "StructFieldStringTag" case opStructFieldRecursive: return "StructFieldRecursive" + case opStructFieldRecursiveEnd: + return "StructFieldRecursiveEnd" case opStructEnd: return "StructEnd" case opStructAnonymousEnd: @@ -1579,6 +1587,8 @@ func (t opType) String() string { return "EndIndent" case opInterfaceIndent: return "InterfaceIndent" + case opInterfaceEndIndent: + return "InterfaceEndIndent" case opPtrIndent: return "PtrIndent" case opSliceHeadIndent: @@ -1643,6 +1653,8 @@ func (t opType) String() string { return "StructFieldStringTagIndent" case opStructFieldRecursiveIndent: return "StructFieldRecursiveIndent" + case opStructFieldRecursiveEndIndent: + return "StructFieldRecursiveEndIndent" case opStructEndIndent: return "StructEndIndent" case opStructAnonymousEndIndent: @@ -2361,6 +2373,8 @@ func (t opType) codeType() codeType { return codeOp case opInterface: return codeOp + case opInterfaceEnd: + return codeOp case opPtr: return codeOp case opSliceHead: @@ -2425,6 +2439,8 @@ func (t opType) codeType() codeType { return codeStructField case opStructFieldRecursive: return codeStructFieldRecursive + case opStructFieldRecursiveEnd: + return codeOp case opStructEnd: return codeStructField case opStructAnonymousEnd: @@ -3137,6 +3153,8 @@ func (t opType) codeType() codeType { return codeOp case opInterfaceIndent: return codeOp + case opInterfaceEndIndent: + return codeOp case opPtrIndent: return codeOp case opSliceHeadIndent: @@ -3201,6 +3219,8 @@ func (t opType) codeType() codeType { return codeStructField case opStructFieldRecursiveIndent: return codeStructFieldRecursive + case opStructFieldRecursiveEndIndent: + return codeOp case opStructEndIndent: return codeStructField case opStructAnonymousEndIndent: @@ -3919,6 +3939,8 @@ func (t opType) toIndent() opType { return opEndIndent case opInterface: return opInterfaceIndent + case opInterfaceEnd: + return opInterfaceEndIndent case opPtr: return opPtrIndent case opSliceHead: @@ -3983,6 +4005,8 @@ func (t opType) toIndent() opType { return opStructFieldStringTagIndent case opStructFieldRecursive: return opStructFieldRecursiveIndent + case opStructFieldRecursiveEnd: + return opStructFieldRecursiveEndIndent case opStructEnd: return opStructEndIndent case opStructAnonymousEnd: @@ -4695,6 +4719,8 @@ func (t opType) toIndent() opType { return opEndIndent case opInterfaceIndent: return opInterfaceIndent + case opInterfaceEndIndent: + return opInterfaceEndIndent case opPtrIndent: return opPtrIndent case opSliceHeadIndent: @@ -4759,6 +4785,8 @@ func (t opType) toIndent() opType { return opStructFieldStringTagIndent case opStructFieldRecursiveIndent: return opStructFieldRecursiveIndent + case opStructFieldRecursiveEndIndent: + return opStructFieldRecursiveEndIndent case opStructEndIndent: return opStructEndIndent case opStructAnonymousEndIndent: diff --git a/encode_vm.go b/encode_vm.go index 81b9750..888bd7e 100644 --- a/encode_vm.go +++ b/encode_vm.go @@ -22,6 +22,7 @@ func store(base uintptr, idx uintptr, p uintptr) { } func (e *Encoder) run(ctx *encodeRuntimeContext, recursiveLevel int, seenPtr map[uintptr]struct{}, code *opcode) error { + ptrOffset := uintptr(0) ctxptr := ctx.ptr() for { switch code.op { @@ -142,13 +143,43 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, recursiveLevel int, seenPtr map } c = code } - ctx := &encodeRuntimeContext{ - ptrs: make([]uintptr, c.totalLength()), + + beforeLastCode := c.beforeLastCode() + lastCode := beforeLastCode.next + lastCode.idx = beforeLastCode.idx + uintptrSize + totalLength := uintptr(code.totalLength()) + nextTotalLength := uintptr(c.totalLength()) + curlen := uintptr(len(ctx.ptrs)) + offsetNum := ptrOffset / uintptrSize + oldOffset := ptrOffset + ptrOffset = ptrOffset + totalLength*uintptrSize // curlen * uintptrSize } - ctx.init(uintptr(header.ptr)) - if err := e.run(ctx, recursiveLevel+1, seenPtr, c); err != nil { - return err + newLen := offsetNum + totalLength + nextTotalLength + if curlen < newLen { + ctx.ptrs = append(ctx.ptrs, make([]uintptr, newLen-curlen)...) + store(ctx.ptr()+ptrOffset, 0, uintptr(header.ptr)) + } else { + store(ctx.ptr()+ptrOffset, 0, uintptr(header.ptr)) } + ctxptr = ctx.ptr() + ptrOffset // assign new ctxptr + if load(ctxptr, 0) != uintptr(header.ptr) { + panic(nil) + } + // save current ctxptr + store(ctxptr, lastCode.idx, oldOffset) + + // link lastCode ( opInterfaceEnd ) => code.next + lastCode.op = opInterfaceEnd + lastCode.next = code.next + + code = c + recursiveLevel++ + case opInterfaceEnd: + recursiveLevel-- + // restore ctxptr + offset := load(ctxptr, code.idx) + ctxptr = ctx.ptr() + offset + ptrOffset = offset code = code.next case opMarshalJSON: ptr := load(ctxptr, code.idx)