| //===- subzero/src/IceMemory.cpp - Memory management definitions -*- C++ -*-==// | |
| // | |
| // The Subzero Code Generator | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| /// | |
| /// \file | |
| /// \brief Implements memory management related routines for subzero. | |
| ///// | |
| //===----------------------------------------------------------------------===// | |
| #include "IceMemory.h" | |
| #include "IceCfg.h" | |
| #include "IceLiveness.h" | |
| #include "IceTLS.h" | |
| #include <cassert> | |
| #include <utility> | |
| namespace Ice { | |
| ICE_TLS_DEFINE_FIELD(ArenaAllocator *, CfgAllocatorTraits, CfgAllocator); | |
| CfgAllocatorTraits::allocator_type CfgAllocatorTraits::current() { | |
| return ICE_TLS_GET_FIELD(CfgAllocator); | |
| } | |
| void CfgAllocatorTraits::set_current(const manager_type *Manager) { | |
| ArenaAllocator *Allocator = | |
| Manager == nullptr ? nullptr : Manager->Allocator.get(); | |
| set_current(Allocator); | |
| } | |
| void CfgAllocatorTraits::set_current(ArenaAllocator *Allocator) { | |
| ICE_TLS_SET_FIELD(CfgAllocator, Allocator); | |
| } | |
| void CfgAllocatorTraits::set_current(std::nullptr_t) { | |
| ICE_TLS_SET_FIELD(CfgAllocator, nullptr); | |
| } | |
| ICE_TLS_DEFINE_FIELD(ArenaAllocator *, LivenessAllocatorTraits, | |
| LivenessAllocator); | |
| LivenessAllocatorTraits::allocator_type LivenessAllocatorTraits::current() { | |
| return ICE_TLS_GET_FIELD(LivenessAllocator); | |
| } | |
| void LivenessAllocatorTraits::set_current(const manager_type *Manager) { | |
| ArenaAllocator *Allocator = | |
| Manager == nullptr ? nullptr : Manager->getAllocator(); | |
| ICE_TLS_SET_FIELD(LivenessAllocator, Allocator); | |
| } | |
| } // end of namespace Ice |