diff options
Diffstat (limited to 'erts/emulator/beam/index.c')
-rw-r--r-- | erts/emulator/beam/index.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/erts/emulator/beam/index.c b/erts/emulator/beam/index.c index a4a3007f93..7cd45440f4 100644 --- a/erts/emulator/beam/index.c +++ b/erts/emulator/beam/index.c @@ -135,3 +135,18 @@ void erts_index_merge(Hash* src, IndexTable* dst) } } } + +void index_erase_latest_from(IndexTable* t, Uint from_ix) +{ + if(from_ix < (Uint)t->entries) { + int ix; + for (ix = from_ix; ix < t->entries; ix++) { + IndexSlot* obj = t->seg_table[ix>>INDEX_PAGE_SHIFT][ix&INDEX_PAGE_MASK]; + hash_erase(&t->htable, obj); + } + t->entries = from_ix; + } + else { + ASSERT(from_ix == t->entries); + } +} |