@@ -317,10 +317,11 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
317
317
}
318
318
}
319
319
c , err := e .compileHead (& encodeCompileContext {
320
- typ : header .typ ,
321
- root : code .root ,
322
- withIndent : e .enabledIndent ,
323
- indent : code .indent ,
320
+ typ : header .typ ,
321
+ root : code .root ,
322
+ withIndent : e .enabledIndent ,
323
+ indent : code .indent ,
324
+ structTypeToCompiledCode : map [uintptr ]* compiledCode {},
324
325
})
325
326
if err != nil {
326
327
return nil , err
@@ -4157,17 +4158,13 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
4157
4158
} else {
4158
4159
b = append (b , '{' )
4159
4160
b = e .encodeKey (b , code )
4160
- var buf bytes.Buffer
4161
- enc := NewEncoder (& buf )
4162
4161
s := e .ptrToString (ptr + code .offset )
4163
4162
if e .enabledHTMLEscape {
4164
- enc . buf = encodeEscapedString (enc . buf , s )
4163
+ b = e . encodeString ( b , string ( encodeEscapedString ([] byte {} , s )) )
4165
4164
} else {
4166
- enc . buf = encodeNoEscapedString (enc . buf , s )
4165
+ b = e . encodeString ( b , string ( encodeNoEscapedString ([] byte {} , s )) )
4167
4166
}
4168
- b = e .encodeString (b , string (enc .buf ))
4169
4167
b = encodeComma (b )
4170
- enc .release ()
4171
4168
code = code .next
4172
4169
}
4173
4170
case opStructFieldPtrAnonymousHeadStringTagString :
@@ -4706,15 +4703,12 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
4706
4703
b = e .encodeIndent (b , code .indent + 1 )
4707
4704
b = e .encodeKey (b , code )
4708
4705
b = append (b , ' ' )
4709
- var buf bytes.Buffer
4710
- enc := NewEncoder (& buf )
4711
4706
s := e .ptrToString (ptr + code .offset )
4712
4707
if e .enabledHTMLEscape {
4713
- enc . buf = encodeEscapedString (enc . buf , s )
4708
+ b = e . encodeString ( b , string ( encodeEscapedString ([] byte {} , s )) )
4714
4709
} else {
4715
- enc . buf = encodeNoEscapedString (enc . buf , s )
4710
+ b = e . encodeString ( b , string ( encodeNoEscapedString ([] byte {} , s )) )
4716
4711
}
4717
- b = e .encodeString (b , string (enc .buf ))
4718
4712
b = encodeIndentComma (b )
4719
4713
code = code .next
4720
4714
}
@@ -5908,10 +5902,8 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
5908
5902
case opStructFieldStringTagString :
5909
5903
ptr := load (ctxptr , code .headIdx )
5910
5904
b = e .encodeKey (b , code )
5911
- var buf bytes.Buffer
5912
- enc := NewEncoder (& buf )
5913
- enc .buf = enc .encodeString (enc .buf , e .ptrToString (ptr + code .offset ))
5914
- b = e .encodeString (b , string (enc .buf ))
5905
+ s := e .ptrToString (ptr + code .offset )
5906
+ b = e .encodeString (b , string (encodeEscapedString ([]byte {}, s )))
5915
5907
code = code .next
5916
5908
case opStructFieldStringTagBool :
5917
5909
ptr := load (ctxptr , code .headIdx )
@@ -6065,12 +6057,9 @@ func (e *Encoder) run(ctx *encodeRuntimeContext, b []byte, code *opcode) ([]byte
6065
6057
b = e .encodeIndent (b , code .indent )
6066
6058
b = e .encodeKey (b , code )
6067
6059
b = append (b , ' ' )
6068
- var buf bytes.Buffer
6069
- enc := NewEncoder (& buf )
6070
- enc .buf = enc .encodeString (enc .buf , e .ptrToString (ptr + code .offset ))
6071
- b = e .encodeString (b , string (enc .buf ))
6060
+ s := e .ptrToString (ptr + code .offset )
6061
+ b = e .encodeString (b , string (encodeEscapedString ([]byte {}, s )))
6072
6062
b = encodeIndentComma (b )
6073
- enc .release ()
6074
6063
code = code .next
6075
6064
case opStructFieldStringTagBoolIndent :
6076
6065
ptr := load (ctxptr , code .headIdx )
0 commit comments