y := special
special = special.next
*specialp = special
- freespecial(y, unsafe.Pointer(p), size, false)
+ freespecial(y, unsafe.Pointer(p), size)
} else {
// This is profile record, but the object has finalizers (so kept alive).
// Keep special record.
// Do whatever cleanup needs to be done to deallocate s. It has
// already been unlinked from the MSpan specials list.
-func freespecial(s *special, p unsafe.Pointer, size uintptr, freed bool) {
+func freespecial(s *special, p unsafe.Pointer, size uintptr) {
switch s.kind {
case _KindSpecialFinalizer:
sf := (*specialfinalizer)(unsafe.Pointer(s))
unlock(&mheap_.speciallock)
case _KindSpecialProfile:
sp := (*specialprofile)(unsafe.Pointer(s))
- mProf_Free(sp.b, size, freed)
+ mProf_Free(sp.b, size)
lock(&mheap_.speciallock)
fixAlloc_Free(&mheap_.specialprofilealloc, unsafe.Pointer(sp))
unlock(&mheap_.speciallock)
}
// Called when freeing a profiled block.
-func mProf_Free(b *bucket, size uintptr, freed bool) {
+func mProf_Free(b *bucket, size uintptr) {
lock(&proflock)
mp := b.mp()
- if freed {
- mp.recent_frees++
- mp.recent_free_bytes += size
- } else {
- mp.prev_frees++
- mp.prev_free_bytes += size
- }
+ mp.prev_frees++
+ mp.prev_free_bytes += size
unlock(&proflock)
}