github.com/fiatjaf/generic-ristretto@v0.0.1/contrib/demo/node_jemalloc.go (about)

     1  //go:build jemalloc && !allocator
     2  // +build jemalloc,!allocator
     3  
     4  package main
     5  
     6  import (
     7  	"unsafe"
     8  
     9  	"github.com/fiatjaf/generic-ristretto/z"
    10  )
    11  
    12  func newNode(val int) *node {
    13  	b := z.Calloc(nodeSz, "demo")
    14  	n := (*node)(unsafe.Pointer(&b[0]))
    15  	n.val = val
    16  	return n
    17  }
    18  
    19  func freeNode(n *node) {
    20  	buf := (*[z.MaxArrayLen]byte)(unsafe.Pointer(n))[:nodeSz:nodeSz]
    21  	z.Free(buf)
    22  }