Subzero. Liveness memory management.
Creates a local arena allocator for holding liveness data structures.
BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4366
R=stichnot@chromium.org
Review URL: https://codereview.chromium.org/1838973005 .
diff --git a/src/IceMemory.cpp b/src/IceMemory.cpp
index 936a2c8..57c969e 100644
--- a/src/IceMemory.cpp
+++ b/src/IceMemory.cpp
@@ -15,6 +15,7 @@
#include "IceMemory.h"
#include "IceCfg.h"
+#include "IceLiveness.h"
#include "IceTLS.h"
#include <cassert>
@@ -33,4 +34,16 @@
ICE_TLS_SET_FIELD(CfgAllocator, Allocator);
}
+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