blob: ce1ff6aa127466e57ce929f2a531eb94c540a882 [file] [log] [blame]
John Portoe82b5602016-02-24 15:58:55 -08001//===- subzero/src/IceMemory.cpp - Memory management definitions -*- C++ -*-==//
2//
3// The Subzero Code Generator
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9///
10/// \file
11/// \brief Implements memory management related routines for subzero.
12/////
13//===----------------------------------------------------------------------===//
14
15#include "IceMemory.h"
16
17#include "IceCfg.h"
John Porto7bb9cab2016-04-01 05:43:09 -070018#include "IceLiveness.h"
John Portoe82b5602016-02-24 15:58:55 -080019#include "IceTLS.h"
20
21#include <cassert>
22#include <utility>
23
24namespace Ice {
25ICE_TLS_DEFINE_FIELD(ArenaAllocator *, CfgAllocatorTraits, CfgAllocator);
26
27CfgAllocatorTraits::allocator_type CfgAllocatorTraits::current() {
28 return ICE_TLS_GET_FIELD(CfgAllocator);
29}
30
31void CfgAllocatorTraits::set_current(const manager_type *Manager) {
32 ArenaAllocator *Allocator =
33 Manager == nullptr ? nullptr : Manager->Allocator.get();
Nicolas Capensa9a92a52016-09-06 12:59:58 -040034 set_current(Allocator);
35}
36
37void CfgAllocatorTraits::set_current(ArenaAllocator *Allocator) {
John Portoe82b5602016-02-24 15:58:55 -080038 ICE_TLS_SET_FIELD(CfgAllocator, Allocator);
39}
40
Jim Stichnoth5d5b6622016-09-09 09:29:08 -070041void CfgAllocatorTraits::set_current(std::nullptr_t) {
Nicolas Capensa9a92a52016-09-06 12:59:58 -040042 ICE_TLS_SET_FIELD(CfgAllocator, nullptr);
43}
44
John Porto7bb9cab2016-04-01 05:43:09 -070045ICE_TLS_DEFINE_FIELD(ArenaAllocator *, LivenessAllocatorTraits,
46 LivenessAllocator);
47
48LivenessAllocatorTraits::allocator_type LivenessAllocatorTraits::current() {
49 return ICE_TLS_GET_FIELD(LivenessAllocator);
50}
51
52void LivenessAllocatorTraits::set_current(const manager_type *Manager) {
53 ArenaAllocator *Allocator =
54 Manager == nullptr ? nullptr : Manager->getAllocator();
55 ICE_TLS_SET_FIELD(LivenessAllocator, Allocator);
56}
John Portoe82b5602016-02-24 15:58:55 -080057} // end of namespace Ice