github.com/chenzhuoyu/iasm@v0.9.1/expr/pools.go (about)

     1  package expr
     2  
     3  import (
     4      `sync`
     5  )
     6  
     7  var (
     8      expressionPool sync.Pool
     9  )
    10  
    11  func newExpression() *Expr {
    12      if v := expressionPool.Get(); v == nil {
    13          return new(Expr)
    14      } else {
    15          return resetExpression(v.(*Expr))
    16      }
    17  }
    18  
    19  func freeExpression(p *Expr) {
    20      expressionPool.Put(p)
    21  }
    22  
    23  func resetExpression(p *Expr) *Expr {
    24      *p = Expr{}
    25      return p
    26  }