Skip to content

[interp] Rework frame data storage - #38085

Merged
BrzVlad merged 1 commit into
dotnet:masterfrom
monojenkins:sync-pr-19985-from-mono
Jun 21, 2020
Merged

BrzVlad merged 1 commit into
dotnet:masterfrom
monojenkins:sync-pr-19985-from-mono

Conversation

@monojenkins

Copy link
Copy Markdown
Contributor

!! This PR is a copy of mono/mono#19985, please do not edit or review it in this repo !!
Do not automatically approve this PR:

* Consider how the changes affect configurations in this repo,
* Check effects on files that are not mirrored,
* Identify test cases that may be needed in this repo.

!! Merge the PR only after the original PR is merged !!



This PR has 2 objectives. First it makes the interp stack allocated in a single contiguous area of memory. This will enable us to do fast pointer bumping when switching between frames and not have to worry about scattered memory fragments. Second, it makes the stack space used by a frame (locals + execution stack) a compile time constant. This could prove useful for future optimizations, because we can tell at compile time at which stack offset every instruction outputs its result. In order to achieve this, localloc memory has been kicked out of the normal stack space into its own allocator, which is almost identical to the old stack fragment allocator.

@ghost

ghost commented Jun 18, 2020

Copy link
Copy Markdown

Tagging subscribers to this area: @BrzVlad, @lewurm
Notify danmosemsft if you want to be subscribed.

This PR has 2 objectives. First it makes the interp stack allocated in a single contiguous area of memory. This will enable us to do fast pointer bumping when switching between frames and not have to worry about scattered memory fragments. Second, it makes the stack space used by a frame (locals + execution stack) a compile time constant. This could prove useful for future optimizations, because we can tell at compile time at which stack offset every instruction outputs its result. In order to achieve this, localloc memory has been kicked out of the normal stack space into its own allocator, which is almost identical to the old stack fragment allocator.
@monojenkins
monojenkins force-pushed the sync-pr-19985-from-mono branch from 82cef9b to 5a1a5f0 Compare June 18, 2020 12:57
@BrzVlad
BrzVlad merged commit 1f4d0db into dotnet:master Jun 21, 2020
@ghost ghost locked as resolved and limited conversation to collaborators Dec 8, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants