Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid over-splitting #240

Open
smarr opened this issue Mar 20, 2018 · 0 comments
Open

Avoid over-splitting #240

smarr opened this issue Mar 20, 2018 · 0 comments
Labels
bug Fixes an issue, incorrect implementation
Milestone

Comments

@smarr
Copy link
Owner

smarr commented Mar 20, 2018

With #231 we unfortunately regress on the ClosureDefFibonacci benchmark, because we do not avoid splitting any more.

#177 introduce a mechanism that can avoid splitting.
Unfortunately it is incorrect, because scope elements have a parent scope, which can't be correctly maintained when we avoid splitting scopes.

A correct solution needs to disentangle lexical representations and run-time representations completely, so that splitting can be applied only on the run-time representations, and as independent as possible from other scopes.

The run-time representations probably should be the root nodes (Invokable/Method/Primitive) and SBlock/SObject with enclosing object.
We can use those to walk the scope chain, when possible to determine concrete run time objects.

The lexical scope structures can remain, but we need to move all information about specialization to the run time objects. Thus, things like frame descriptors, variable type info, etc needs to go to the root nodes, etc.

We should also revisit which information we actually use to determine whether splitting can happen, we might be able to track less, and remove some unused code.

@smarr smarr added the bug Fixes an issue, incorrect implementation label Mar 20, 2018
@smarr smarr added this to the later milestone Mar 20, 2018
smarr added a commit that referenced this issue Sep 1, 2018
This change needs to be revised later when we address issue #240.
We assume here that slots belong to one descriptor.

Signed-off-by: Stefan Marr <[email protected]>
smarr added a commit that referenced this issue Sep 1, 2018
This change needs to be revised later when we address issue #240.
We assume here that slots belong to one descriptor.

Signed-off-by: Stefan Marr <[email protected]>
smarr added a commit that referenced this issue Sep 1, 2018
This change needs to be revised later when we address issue #240.
We assume here that slots belong to one descriptor.

Signed-off-by: Stefan Marr <[email protected]>
smarr added a commit that referenced this issue Sep 1, 2018
This change needs to be revised later when we address issue #240.
We assume here that slots belong to one descriptor.

Signed-off-by: Stefan Marr <[email protected]>
smarr added a commit that referenced this issue Sep 2, 2018
This change needs to be revised later when we address issue #240.
We assume here that slots belong to one descriptor.

Signed-off-by: Stefan Marr <[email protected]>
clementbera pushed a commit to clementbera/SOMns that referenced this issue Jan 11, 2019
This change needs to be revised later when we address issue smarr#240.
We assume here that slots belong to one descriptor.

Signed-off-by: Stefan Marr <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Fixes an issue, incorrect implementation
Projects
None yet
Development

No branches or pull requests

1 participant