mirror of
https://github.com/golang/go
synced 2024-10-04 22:21:22 -06:00
d4cc557b0d
Old code was using recursion to traverse object graph. New code uses an explicit stack, cutting the per-pointer footprint to two words during the recursion and avoiding the standard allocator and stack splitting code. in test/garbage: Reduces parser runtime by 2-3% Reduces Peano runtime by 40% Increases tree runtime by 4-5% R=r CC=golang-dev https://golang.org/cl/2150042
27 lines
379 B
C
27 lines
379 B
C
#include "runtime.h"
|
|
#include "defs.h"
|
|
#include "os.h"
|
|
#include "malloc.h"
|
|
|
|
void*
|
|
SysAlloc(uintptr n)
|
|
{
|
|
mstats.sys += n;
|
|
return runtime_mmap(nil, n, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_ANON|MAP_PRIVATE, -1, 0);
|
|
}
|
|
|
|
void
|
|
SysUnused(void *v, uintptr n)
|
|
{
|
|
USED(v);
|
|
USED(n);
|
|
// TODO(rsc): call madvise MADV_DONTNEED
|
|
}
|
|
|
|
void
|
|
SysFree(void *v, uintptr n)
|
|
{
|
|
runtime_munmap(v, n);
|
|
}
|
|
|