summaryrefslogtreecommitdiff
path: root/vendor/github.com/chenzhuoyu/iasm/expr/pools.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/chenzhuoyu/iasm/expr/pools.go')
-rw-r--r--vendor/github.com/chenzhuoyu/iasm/expr/pools.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/vendor/github.com/chenzhuoyu/iasm/expr/pools.go b/vendor/github.com/chenzhuoyu/iasm/expr/pools.go
new file mode 100644
index 000000000..fde422ee6
--- /dev/null
+++ b/vendor/github.com/chenzhuoyu/iasm/expr/pools.go
@@ -0,0 +1,26 @@
+package expr
+
+import (
+ `sync`
+)
+
+var (
+ expressionPool sync.Pool
+)
+
+func newExpression() *Expr {
+ if v := expressionPool.Get(); v == nil {
+ return new(Expr)
+ } else {
+ return resetExpression(v.(*Expr))
+ }
+}
+
+func freeExpression(p *Expr) {
+ expressionPool.Put(p)
+}
+
+func resetExpression(p *Expr) *Expr {
+ *p = Expr{}
+ return p
+}