// This file contains the fallback implementations of YTAlloc-specific stuff. // These implementations are annotated with Y_WEAK to ensure that if the actual YTAlloc // is available at the link time, the latter is preferred over the fallback. #include "ytalloc.h" #include #include #include namespace NYT::NYTAlloc { //////////////////////////////////////////////////////////////////////////////// Y_WEAK void* Allocate(size_t size) { return ::malloc(size); } Y_WEAK void* AllocatePageAligned(size_t size) { #if defined(_win_) return ::_aligned_malloc(size, PageSize); #elif defined(_darwin_) || !defined(_musl_) return ::valloc(size); #else return ::memalign(PageSize, size); #endif } Y_WEAK void* AllocateSmall(size_t rank) { return ::malloc(SmallRankToSize[rank]); } Y_WEAK void Free(void* ptr) { ::free(ptr); } Y_WEAK void FreeNonNull(void* ptr) { Y_ASSERT(ptr); ::free(ptr); } Y_WEAK size_t GetAllocationSize(const void* /*ptr*/) { return 0; } Y_WEAK size_t GetAllocationSize(size_t size) { return size; } //////////////////////////////////////////////////////////////////////////////// Y_WEAK void SetCurrentMemoryZone(EMemoryZone /*zone*/) { } Y_WEAK EMemoryZone GetCurrentMemoryZone() { return EMemoryZone::Normal; } Y_WEAK EMemoryZone GetAllocationMemoryZone(const void* /*ptr*/) { return EMemoryZone::Normal; } //////////////////////////////////////////////////////////////////////////////// Y_WEAK void SetCurrentFiberId(TFiberId /*id*/) { } Y_WEAK TFiberId GetCurrentFiberId() { return 0; } //////////////////////////////////////////////////////////////////////////////// Y_WEAK void EnableLogging(TLogHandler /*logHandler*/) { } //////////////////////////////////////////////////////////////////////////////// Y_WEAK void SetBacktraceProvider(TBacktraceProvider /*provider*/) { } Y_WEAK void SetBacktraceFormatter(TBacktraceFormatter /*formatter*/) { } //////////////////////////////////////////////////////////////////////////////// Y_WEAK void EnableStockpile() { } Y_WEAK void SetStockpileInterval(TDuration /*value*/) { } Y_WEAK void SetStockpileThreadCount(int /*value*/) { } Y_WEAK void SetStockpileSize(size_t /*value*/) { } Y_WEAK void SetLargeUnreclaimableCoeff(double /*value*/) { } Y_WEAK void SetMinLargeUnreclaimableBytes(size_t /*value*/) { } Y_WEAK void SetMaxLargeUnreclaimableBytes(size_t /*value*/) { } Y_WEAK void SetTimingEventThreshold(TDuration /*value*/) { } Y_WEAK void SetAllocationProfilingEnabled(bool /*value*/) { } Y_WEAK void SetAllocationProfilingSamplingRate(double /*rate*/) { } Y_WEAK void SetSmallArenaAllocationProfilingEnabled(size_t /*rank*/, bool /*value*/) { } Y_WEAK void SetLargeArenaAllocationProfilingEnabled(size_t /*rank*/, bool /*value*/) { } Y_WEAK void SetProfilingBacktraceDepth(int /*depth*/) { } Y_WEAK void SetMinProfilingBytesUsedToReport(size_t /*size*/) { } Y_WEAK void SetEnableEagerMemoryRelease(bool /*value*/) { } Y_WEAK void SetEnableMadvisePopulate(bool /*value*/) { } //////////////////////////////////////////////////////////////////////////////// Y_WEAK TEnumIndexedArray GetTotalAllocationCounters() { return {}; } Y_WEAK TEnumIndexedArray GetSmallAllocationCounters() { return {}; } Y_WEAK TEnumIndexedArray GetLargeAllocationCounters() { return {}; } Y_WEAK std::array, SmallRankCount> GetSmallArenaAllocationCounters() { return {}; } Y_WEAK std::array, LargeRankCount> GetLargeArenaAllocationCounters() { return {}; } Y_WEAK TEnumIndexedArray GetHugeAllocationCounters() { return {}; } Y_WEAK TEnumIndexedArray GetSystemAllocationCounters() { return {}; } Y_WEAK TEnumIndexedArray GetUndumpableAllocationCounters() { return {}; } Y_WEAK TEnumIndexedArray GetTimingEventCounters() { return {}; } //////////////////////////////////////////////////////////////////////////////// Y_WEAK std::vector GetProfiledAllocationStatistics() { return {}; } //////////////////////////////////////////////////////////////////////////////// } // namespace NYT::NYTAlloc