summaryrefslogtreecommitdiff
path: root/starts/meaning-vm/level-0/memorystore.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'starts/meaning-vm/level-0/memorystore.cpp')
-rw-r--r--starts/meaning-vm/level-0/memorystore.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/starts/meaning-vm/level-0/memorystore.cpp b/starts/meaning-vm/level-0/memorystore.cpp
index 220d0c3..edb75b1 100644
--- a/starts/meaning-vm/level-0/memorystore.cpp
+++ b/starts/meaning-vm/level-0/memorystore.cpp
@@ -17,10 +17,10 @@ static auto & index()
namespace concepts {
- ref allocator() { static ref ret = basic_alloc(); return ret; };
- ref allocates() { static ref ret = basic_alloc(); return ret; };
- ref allocations() { static ref ret = basic_alloc(); return ret; };
- ref level0allocations() { static ref ret = basic_alloc(); return ret; };
+ ref allocator() { static ref ret = basic_alloc(); return ret; }
+ ref allocates() { static ref ret = basic_alloc(); return ret; }
+ ref allocations() { static ref ret = basic_alloc(); return ret; }
+ ref level0allocations() { static ref ret = basic_alloc(); return ret; }
}
struct init { init()
@@ -117,8 +117,9 @@ void dealloc_from(ref source)
}
try {
for (auto allocation : ours ) {
- if (allocation.linked(concepts::allocates())) {
- dealloc_from(allocation);
+ for (auto suballocation : allocation.getAll(concepts::allocates())) {
+ // check for this link to find subgroups
+ throw still_referenced_by(allocation, suballocation);
}
}
for (auto ghost : ours) {