diff options
author | olpc user <olpc@xo-5d-f7-86.localdomain> | 2019-12-12 01:35:42 -0800 |
---|---|---|
committer | olpc user <olpc@xo-5d-f7-86.localdomain> | 2019-12-12 01:35:42 -0800 |
commit | f04b23092c201e13229ee90625d03e97286649f4 (patch) | |
tree | 8b8651b3ac2c9dfb2e06d94ef6ae6abb2f91d033 /starts/meaning-vm/level-0 | |
parent | c87af57ce54cac3ae7f49758f3fc3fb6e0abb451 (diff) | |
download | standingwithresilience-f04b23092c201e13229ee90625d03e97286649f4.tar.gz standingwithresilience-f04b23092c201e13229ee90625d03e97286649f4.zip |
this code appears to make a try{} block loop in a weird compiler exception edgecase, narroing
Diffstat (limited to 'starts/meaning-vm/level-0')
-rw-r--r-- | starts/meaning-vm/level-0/memorystore.cpp | 13 | ||||
-rw-r--r-- | starts/meaning-vm/level-0/memorystore.hpp | 1 |
2 files changed, 7 insertions, 7 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) { diff --git a/starts/meaning-vm/level-0/memorystore.hpp b/starts/meaning-vm/level-0/memorystore.hpp index f4faa13..55723b2 100644 --- a/starts/meaning-vm/level-0/memorystore.hpp +++ b/starts/meaning-vm/level-0/memorystore.hpp @@ -44,7 +44,6 @@ void basic_dealloc(ref allocated); ref alloc(ref allocator, std::any data = {}); // new concept void alloc(ref allocated, ref allocator); // extra ownership for concept void realloc(ref allocated, ref allocator); // move ownership for concept to allocator -[[deprecated("can make recursion: turn to workable habits")]] void dealloc(ref allocated, ref allocator); // remove ownership for concept std::size_t allocated(); |