- Remove recursion level check.
This is a great improvement!- Remove recursion level check.How can we remove the recursion level check?
To do this properly, I'd like to experiment placing a guard page.
Checking this explicitly on every ensureMarked() call is a significant cost that we would like to avoid.
To do this properly, I'd like to experiment placing a guard page.
Checking this explicitly on every ensureMarked() call is a significant cost that we would like to avoid.Please refer to the previous discussion thread about eager tracing. We concluded that we cannot go with a guard page. We need to have a logic to fall back to a manual stack when stack overflows.
What you could do to reduce the number of CPU instructions is something like:void Heap::collectGarbage() {intptr_t dummy;s_stackEnd = &dummy - 10 * 1024; // Allow 10 KB stack for eager tracing...;}void mark(void* object) {intptr_t dummy;if (LIKELY(s_stackEnd <= &dummy)) {object->mark();return;}pushToMarkingStack(object);}
To unsubscribe from this group and stop receiving emails from it, send an email to oilpan-review...@chromium.org.