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

Store key Spur GC parameters in image header #477

Open
eliotmiranda opened this issue Feb 20, 2020 · 8 comments
Open

Store key Spur GC parameters in image header #477

eliotmiranda opened this issue Feb 20, 2020 · 8 comments
Assignees

Comments

@eliotmiranda
Copy link
Contributor

It would be convenient if the Spur headroom growth size, shrinking ratio, and heap growth ratio for full GCs/old space were stored in the image header as “desired” values, alongside new space, code zone, and stack zone sizes.

[this request from Cyril Ferlicot]

@eliotmiranda eliotmiranda self-assigned this Feb 20, 2020
@fniephaus
Copy link
Member

Just wondering: why waste precious space in the image header if we could have some sort of VM configuration object in the specialObjectsArray?

@OpenSmalltalk-Bot
Copy link

OpenSmalltalk-Bot commented Feb 20, 2020 via email

@eliotmiranda
Copy link
Contributor Author

Hi Fabio,

two issues here.  One is that I don’t think space is precious anymore.  I *think* the vm stores the image header size in the first or second 32-bit word, and to the header is effectively stretchy.  I will check. The other issue is that anything in the specialObjectsArray is available only after the image is loaded, which implies adding a post-load configuration stage.  Currently all the size config is done before the image loads.

@eliotmiranda
Copy link
Contributor Author

Hi Tobias,

I very much want to keep the class table, free lists, finalization queue, mark stack etc hidden.  These are very much implementation dependent, and revealing them to the image as objects creates the potential god coupling to the implementation.  Just as the vm hides the existence of JIT code, stack frames, and other implementation details, hidden from the Smalltalk programmer, so should it hide that it uses a lass table, etc.  this gives freedom for us to improve the implementation by using a better representation of someone comes up with one.

We can still observe these structures through vmParameterAt:, clumsy though if may be, because we can carefully control access. Even so, these parameters are inconvenient to work with. Just look at the number of changes/reinterpretations/new parameters between v3 and Spur.

So my vote/design principle is to keep these implementation details encapsulated as much as possible in the vm.

@j4yk
Copy link
Contributor

j4yk commented Feb 20, 2020

And why not in the ini file?

@OpenSmalltalk-Bot
Copy link

OpenSmalltalk-Bot commented Feb 20, 2020 via email

@OpenSmalltalk-Bot
Copy link

OpenSmalltalk-Bot commented Feb 20, 2020 via email

@OpenSmalltalk-Bot
Copy link

OpenSmalltalk-Bot commented Feb 21, 2020 via email

hogoww referenced this issue in hogoww/opensmalltalk-vm Dec 23, 2021
hogoww referenced this issue in hogoww/opensmalltalk-vm Dec 23, 2021
…od [ is:onObjStack: ] SURVIVED 8/8 test cases.
hogoww referenced this issue in hogoww/opensmalltalk-vm Feb 26, 2022
… [ scavengingGCTenuringIf: ] 14 test cases.
hogoww referenced this issue in hogoww/opensmalltalk-vm Feb 26, 2022
…[ scavengingGCTenuringIf: ] 14/14 test case are EQUIVALENT
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants