it is not very clear what AllocationPolicy applies to. - Is it process-wide, per script host or per-thread?
This need to be made more apparent.
it is not easy to obtain AllocationPolicy. There are several patterns in use and applicable in deifferent situations. Perhaps there is a reason for the complexity here, but maybe there is a simpler way?
ownership of AllocationPolicy is not very clear. We often retrieve it via recycler, but recycler itself does not own a policy. Should it be recycler, thread context, script context or should the policy be process-wide?
it is especially confusing when we handle allocation of external memory via recycler, but it does not track that memory, so freeing still needs to be handled externally.
also when external memory is involved, we also need to manipulate memory pressure. And it could be confusing. Perhaps adding/freeing external memory for the purpose of allocation policy should also handle adding/removing memory/GC pressure automatically.
there are scenarios when we transfer the ownership of memory from one object to another and we handle that by temporarily "freeing" the allocation limit and then adding it back. That is fragile and redundant. We need helpers to "move" the allocation charge. (could be a noop in release)
From the issues found in https://github.com/Microsoft/ChakraCore/pull/5099
AllocationPolicy
seems fairly confusing to use. Especially when external allocations are involved.AllocationPolicy
applies to. - Is it process-wide, per script host or per-thread? This need to be made more apparent.AllocationPolicy
. There are several patterns in use and applicable in deifferent situations. Perhaps there is a reason for the complexity here, but maybe there is a simpler way?AllocationPolicy
is not very clear. We often retrieve it via recycler, but recycler itself does not own a policy. Should it be recycler, thread context, script context or should the policy be process-wide?