From 8cd7bbcf2d46a01f11ba2d5617028e001b0a7b03 Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Tue, 29 Nov 2016 09:46:55 +0100 Subject: [PATCH] miner: removed unnecessary state.Copy() --- miner/miner.go | 5 +++++ miner/worker.go | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/miner/miner.go b/miner/miner.go index c85a1cd8e3..dcec9d8dd9 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -187,6 +187,11 @@ func (self *Miner) Pending() (*types.Block, *state.StateDB) { return self.worker.pending() } +// PendingBlock returns the currently pending block. +func (self *Miner) PendingBlock() *types.Block { + return self.worker.pendingBlock() +} + func (self *Miner) SetEtherbase(addr common.Address) { self.coinbase = addr self.worker.setEtherbase(addr) diff --git a/miner/worker.go b/miner/worker.go index 2933b6bd3b..c9f66fb9fc 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -176,6 +176,21 @@ func (self *worker) pending() (*types.Block, *state.StateDB) { return self.current.Block, self.current.state.Copy() } +func (self *worker) pendingBlock() *types.Block { + self.currentMu.Lock() + defer self.currentMu.Unlock() + + if atomic.LoadInt32(&self.mining) == 0 { + return types.NewBlock( + self.current.header, + self.current.txs, + nil, + self.current.receipts, + ) + } + return self.current.Block +} + func (self *worker) start() { self.mu.Lock() defer self.mu.Unlock()