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

Optimize allocation of xregs #954

Closed
wants to merge 13 commits into from

Conversation

pguyot
Copy link
Collaborator

@pguyot pguyot commented Nov 19, 2023

This PR is an optimization on top of #943

These changes are made under both the "Apache 2.0" and the "GNU Lesser General
Public License 2.1 or later" license terms (dual license).

SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later

@pguyot pguyot force-pushed the w46/optimize-allocation-of-xregs branch 2 times, most recently from 2fa75a3 to 02cfb33 Compare November 22, 2023 07:20
UncleGrumpy and others added 13 commits February 16, 2024 14:24
Varios typo fixes.

Signed-off-by: Winford <winford@object.stream>
Links to other files made by reference (rather than relative links) do not
resolve in the publisged epub and pdf documentation. Links to other files in the
documentation build tree should be made relative to the current file, i.e. use:
`[Title](./my-other-file.md)`
or for sections links:
`[Title](./my-other-file.md#section)`

Links made by reference (i.e. `[Title](my-other-file.md)` only work in the
published html, but result in links not being created for the epub and pdf
versions of the documentation.

Signed-off-by: Winford <winford@object.stream>
Updates to information in the guides.

Removes old (or undocumented) doxygen elements from being included in the
generated indexes, and adds new elements that have been documneted, but not yet
added to the `*.rst` index files.

Signed-off-by: Winford <winford@object.stream>
Comments out and adds todo for sections outlined in doc/src/atomvm-internals.md
that are outlined, but not written yet.

Signed-off-by: Winford <winford@object.stream>
Adds links to functions and modules documentation where they are discussed in
the various chapters and guides.  Changes some existing links to other guides
to more specific sections of the guide, where apropriate.

Some section names have been changed from repeated, or generic names to names
more specific to the section. This is done both to reduce build warnings
(repeated secion names), but more importantly make it possible to link to these
sections in the future, both in the documentation itself, but also to share
these links in social media, forum, or issue posts.

Fixes a few reference links to work in the pdf and epub versions of the docs,
by making them relative. (i.e. add missing `./` before filenames)

Signed-off-by: Winford <winford@object.stream>
Changes the unordered list descibing a javascript promise transaction from an
unordered to an ordered list (incrimentally numbered), since this is describing
a specific series of events that occur in a specific order.

Fixes the indention of some sub-lists. Markdown sublist items should have 2
spaces indention for each new sub-level.

Signed-off-by: Winford <winford@object.stream>
Adds styled admonitions to the published documentation that highlight the
intention of "Notes" in the documentation. Using styles we can better draw
attention to important or critical warnings. These styled admonitions are a
common feature seen in the documentation of many projects, including ESP-IDF
and the new `ex_doc` versons of some of the core OTP modules.

Adds stlyed code blocks for better presentation of various Erlang, C, and
shell code examples in the published documentation.

Signed-off-by: Winford <winford@object.stream>
The "AtomVM Internals" chapter has been enhanced, by including doxygen generated
content for some of the data structures and functions discussed in the guide.
This extra material is not included in the epub and pdf versions of the docs,
due to the fact that the rest of the doxygen C API documentation is already
excluded.

Signed-off-by: Winford <winford@object.stream>
Signed-off-by: Fred Dushin <fred@dushin.net>
Updates to the generated documentation sources

Various updates and corrections top the published documentation. Some
improvements have been made to the rendering of the documentation, including
language highlighting, styled notes, and formatting fixes to make wide text
blocks fit in the display. Links have been added for most function and module
APIs when they are referenced in the guides. Note, these links will not be
enabled until atomvm#1037 is merged. They rely on `myst_heading_anchors = 5`

closes atomvm#1008

These changes are made under both the "Apache 2.0" and the "GNU Lesser General
Public License 2.1 or later" license terms (dual license).

SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
Fix beam CI on macOS

These changes are made under both the "Apache 2.0" and the "GNU Lesser General
Public License 2.1 or later" license terms (dual license).

SPDX-License-Identifier: Apache-2.0 OR LGPL-2.1-or-later
X registers are saved in context on context switching but are otherwise
allocated only once per scheduler thread, thus allowing up to 1024 registers
as the compiler allows

Signed-off-by: Paul Guyot <pguyot@kallisys.net>
Limit allocation to the actual number of registers required by loaded modules.
This helps keeping the allocation low unless code requiring many registers is
used.

Signed-off-by: Paul Guyot <pguyot@kallisys.net>
@pguyot pguyot force-pushed the w46/optimize-allocation-of-xregs branch from 02cfb33 to 1b4d7be Compare February 24, 2024 18:12
@pguyot pguyot closed this Feb 25, 2024
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

Successfully merging this pull request may close these issues.

4 participants