summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-04-27 12:16:57 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-04-27 16:59:17 -0700
commitf4aaf7bfce3808c95554100606cc73916a09fc44 (patch)
treee20dec61f3433ea10f87a93daae7f88044818544 /src
parent6db9e90affac38d9bbcec89d978f67877923f207 (diff)
downloadbinaryen-f4aaf7bfce3808c95554100606cc73916a09fc44.tar.gz
binaryen-f4aaf7bfce3808c95554100606cc73916a09fc44.tar.bz2
binaryen-f4aaf7bfce3808c95554100606cc73916a09fc44.zip
clean up in emscripten-optimizer arenas
Diffstat (limited to 'src')
-rw-r--r--src/emscripten-optimizer/simple_ast.cpp9
-rw-r--r--src/emscripten-optimizer/simple_ast.h1
2 files changed, 10 insertions, 0 deletions
diff --git a/src/emscripten-optimizer/simple_ast.cpp b/src/emscripten-optimizer/simple_ast.cpp
index 285686b9a..dddaeab02 100644
--- a/src/emscripten-optimizer/simple_ast.cpp
+++ b/src/emscripten-optimizer/simple_ast.cpp
@@ -56,6 +56,15 @@ bool Ref::operator!() {
Arena arena;
+Arena::~Arena() {
+ for (auto* chunk : chunks) {
+ delete[] chunk;
+ }
+ for (auto* chunk : arr_chunks) {
+ delete[] chunk;
+ }
+}
+
Ref Arena::alloc() {
if (chunks.size() == 0 || index == CHUNK_SIZE) {
chunks.push_back(new Value[CHUNK_SIZE]);
diff --git a/src/emscripten-optimizer/simple_ast.h b/src/emscripten-optimizer/simple_ast.h
index 75b7987be..bfb42c510 100644
--- a/src/emscripten-optimizer/simple_ast.h
+++ b/src/emscripten-optimizer/simple_ast.h
@@ -84,6 +84,7 @@ struct Arena {
int arr_index;
Arena() : index(0), arr_index(0) {}
+ ~Arena();
Ref alloc();
ArrayStorage* allocArray();