1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52

base / allocator / partition_allocator / src / partition_alloc / shim / winheap_stubs_win.h [blame]

// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Thin allocation wrappers for the windows heap. This file should be deleted
// once the win-specific allocation shim has been removed, and the generic shim
// has becaome the default.

#ifndef PARTITION_ALLOC_SHIM_WINHEAP_STUBS_WIN_H_
#define PARTITION_ALLOC_SHIM_WINHEAP_STUBS_WIN_H_

#include <cstdint>

#include "partition_alloc/buildflags.h"

#if PA_BUILDFLAG(USE_ALLOCATOR_SHIM)
#include "partition_alloc/partition_alloc_base/component_export.h"

namespace allocator_shim {

// Set to true if the link-time magic has successfully hooked into the CRT's
// heap initialization.
PA_COMPONENT_EXPORT(ALLOCATOR_SHIM)
extern bool g_is_win_shim_layer_initialized;

// Thin wrappers to implement the standard C allocation semantics on the
// CRT's Windows heap.
void* WinHeapMalloc(size_t size);
void WinHeapFree(void* ptr);
void* WinHeapRealloc(void* ptr, size_t size);

// Returns a lower-bound estimate for the full amount of memory consumed by the
// the allocation |ptr|.
size_t WinHeapGetSizeEstimate(void* ptr);

// Call the new handler, if one has been set.
// Returns true on successfully calling the handler, false otherwise.
bool WinCallNewHandler(size_t size);

// Wrappers to implement the interface for the _aligned_* functions on top of
// the CRT's Windows heap. Exported for tests.
PA_COMPONENT_EXPORT(ALLOCATOR_SHIM)
void* WinHeapAlignedMalloc(size_t size, size_t alignment);
PA_COMPONENT_EXPORT(ALLOCATOR_SHIM)
void* WinHeapAlignedRealloc(void* ptr, size_t size, size_t alignment);
PA_COMPONENT_EXPORT(ALLOCATOR_SHIM) void WinHeapAlignedFree(void* ptr);

}  // namespace allocator_shim

#endif  // PA_BUILDFLAG(USE_ALLOCATOR_SHIM)

#endif  // PARTITION_ALLOC_SHIM_WINHEAP_STUBS_WIN_H_