]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Optimize requesting peerId Uintptr allocation
authorMatt Joiner <anacrolix@gmail.com>
Fri, 10 Sep 2021 13:02:20 +0000 (23:02 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 10 Sep 2021 13:07:10 +0000 (23:07 +1000)
requesting.go

index 15033bb0bf55377fc692bbc09337233d0ee4aa8c..16da8393727c5706d3f28e829434b105b943bd7b 100644 (file)
@@ -84,7 +84,10 @@ func (cl *Client) doRequests() {
                                },
                                DownloadRate: p.downloadRate(),
                                Age:          time.Since(p.completedHandshake),
-                               Id:           (*peerId)(p),
+                               Id: peerId{
+                                       Peer: p,
+                                       ptr:  uintptr(unsafe.Pointer(p)),
+                               },
                        })
                })
                ts = append(ts, rst)
@@ -98,14 +101,17 @@ func (cl *Client) doRequests() {
        }
 }
 
-type peerId Peer
+type peerId struct {
+       *Peer
+       ptr uintptr
+}
 
-func (p *peerId) Uintptr() uintptr {
-       return uintptr(unsafe.Pointer(p))
+func (p peerId) Uintptr() uintptr {
+       return p.ptr
 }
 
 func setPeerNextRequestState(_p request_strategy.PeerId, rp request_strategy.PeerNextRequestState) {
-       p := (*Peer)(_p.(*peerId))
+       p := _p.(peerId).Peer
        p.nextRequestState = rp
        p.onNextRequestStateChanged()
 }