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 }