stackitem: reusable serialization context
We serialize items a lot and this allows to avoid a number of allocations.
This commit is contained in:
parent
3d4076ca36
commit
c3d989ebda
13 changed files with 111 additions and 42 deletions
|
@ -160,8 +160,8 @@ func newStd() *Std {
|
|||
return s
|
||||
}
|
||||
|
||||
func (s *Std) serialize(_ *interop.Context, args []stackitem.Item) stackitem.Item {
|
||||
data, err := stackitem.Serialize(args[0])
|
||||
func (s *Std) serialize(ic *interop.Context, args []stackitem.Item) stackitem.Item {
|
||||
data, err := ic.DAO.GetItemCtx().Serialize(args[0], false)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
@ -169,7 +169,7 @@ func (s *Std) serialize(_ *interop.Context, args []stackitem.Item) stackitem.Ite
|
|||
panic(errors.New("too big item"))
|
||||
}
|
||||
|
||||
return stackitem.NewByteArray(data)
|
||||
return stackitem.NewByteArray(slice.Copy(data)) // Serialization context can be reused.
|
||||
}
|
||||
|
||||
func (s *Std) deserialize(_ *interop.Context, args []stackitem.Item) stackitem.Item {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue