blob: 2269c60680c0e1d13b542ebbc9a56451382560b5 [file] [log] [blame]
Ben Murdochda12d292016-06-02 14:46:10 +01001// Copyright 2016 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "src/base/accounting-allocator.h"
6
7#include <cstdlib>
8
9#if V8_LIBC_BIONIC
10#include <malloc.h> // NOLINT
11#endif
12
13namespace v8 {
14namespace base {
15
16void* AccountingAllocator::Allocate(size_t bytes) {
17 void* memory = malloc(bytes);
18 if (memory) NoBarrier_AtomicIncrement(&current_memory_usage_, bytes);
19 return memory;
20}
21
22void AccountingAllocator::Free(void* memory, size_t bytes) {
23 free(memory);
24 NoBarrier_AtomicIncrement(&current_memory_usage_,
25 -static_cast<AtomicWord>(bytes));
26}
27
28size_t AccountingAllocator::GetCurrentMemoryUsage() const {
29 return NoBarrier_Load(&current_memory_usage_);
30}
31
32} // namespace base
33} // namespace v8