Testing vector indexing
This commit is contained in:
parent
fb4cd8eb9b
commit
e745593d94
2 changed files with 14 additions and 11 deletions
|
|
@ -130,7 +130,8 @@ namespace GC
|
||||||
// Check if there are any freed chunks large enough for current request
|
// Check if there are any freed chunks large enough for current request
|
||||||
for (size_t i = 0; i < heap.m_freed_chunks.size(); i++)
|
for (size_t i = 0; i < heap.m_freed_chunks.size(); i++)
|
||||||
{
|
{
|
||||||
auto chunk = Heap::get_at(heap.m_freed_chunks, i);
|
// auto chunk = Heap::get_at(heap.m_freed_chunks, i);
|
||||||
|
auto chunk = heap.m_freed_chunks[i];
|
||||||
auto iter = heap.m_freed_chunks.begin();
|
auto iter = heap.m_freed_chunks.begin();
|
||||||
advance(iter, i);
|
advance(iter, i);
|
||||||
if (chunk->m_size > size)
|
if (chunk->m_size > size)
|
||||||
|
|
@ -373,14 +374,16 @@ namespace GC
|
||||||
{
|
{
|
||||||
std::vector<Chunk *> filtered;
|
std::vector<Chunk *> filtered;
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
auto prev = Heap::get_at(heap.m_freed_chunks, i++);
|
// auto prev = Heap::get_at(heap.m_freed_chunks, i++);
|
||||||
|
auto prev = heap.m_freed_chunks[i++];
|
||||||
prev->m_marked = true;
|
prev->m_marked = true;
|
||||||
filtered.push_back(prev);
|
filtered.push_back(prev);
|
||||||
cout << filtered.back()->m_start << endl;
|
cout << filtered.back()->m_start << endl;
|
||||||
for (; i < heap.m_freed_chunks.size(); i++)
|
for (; i < heap.m_freed_chunks.size(); i++)
|
||||||
{
|
{
|
||||||
prev = filtered.back();
|
prev = filtered.back();
|
||||||
auto next = Heap::get_at(heap.m_freed_chunks, i);
|
// auto next = Heap::get_at(heap.m_freed_chunks, i);
|
||||||
|
auto next = heap.m_freed_chunks[i];
|
||||||
auto p_start = (uintptr_t)(prev->m_start);
|
auto p_start = (uintptr_t)(prev->m_start);
|
||||||
auto p_size = (uintptr_t)(prev->m_size);
|
auto p_size = (uintptr_t)(prev->m_size);
|
||||||
auto n_start = (uintptr_t)(next->m_start);
|
auto n_start = (uintptr_t)(next->m_start);
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,9 @@ void test_some_types() {
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
GC::Heap::init();
|
GC::Heap::init();
|
||||||
GC::Heap *gc = GC::Heap::debug_the();
|
GC::Heap &gc = GC::Heap::the();
|
||||||
gc->set_profiler(true);
|
gc.set_profiler(true);
|
||||||
gc->check_init();
|
gc.check_init();
|
||||||
auto stack_start = reinterpret_cast<uintptr_t *>(__builtin_frame_address(0));
|
auto stack_start = reinterpret_cast<uintptr_t *>(__builtin_frame_address(0));
|
||||||
std::cout << "Stack start from main:\t" << stack_start << std::endl;
|
std::cout << "Stack start from main:\t" << stack_start << std::endl;
|
||||||
|
|
||||||
|
|
@ -86,7 +86,7 @@ int main() {
|
||||||
longs++;
|
longs++;
|
||||||
} */
|
} */
|
||||||
|
|
||||||
Node *root = static_cast<Node *>(gc->alloc(sizeof(Node)));
|
Node *root = static_cast<Node *>(gc.alloc(sizeof(Node)));
|
||||||
root = test_chain(3, false);
|
root = test_chain(3, false);
|
||||||
Node *root_child = root->child;
|
Node *root_child = root->child;
|
||||||
std::cout << "Adress of root:\t" << &root << std::endl;
|
std::cout << "Adress of root:\t" << &root << std::endl;
|
||||||
|
|
@ -95,9 +95,9 @@ int main() {
|
||||||
std::cout << "Root child, child:\t" << root_child->child << std::endl;
|
std::cout << "Root child, child:\t" << root_child->child << std::endl;
|
||||||
|
|
||||||
|
|
||||||
gc->collect(GC::COLLECT_ALL);
|
gc.collect(GC::COLLECT_ALL);
|
||||||
gc->print_contents();
|
gc.print_contents();
|
||||||
|
|
||||||
gc->dispose();
|
gc.dispose();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue