vere64 - #970
Open
matthew-levan wants to merge 267 commits into
Open
Conversation
…rroneous `u3a_mark_ptr`
…s` calc in `_init_once`
@matthew-levan, when trying to deduplicate now_w definition we might've forgotten to update `now_z` as well.
…ing in the last of four trap sites
the 64-bit ball travels in `u3R->esc.why_w` rather than longjmp's int return, which had spread thirteen `#ifdef` fragments across the four trap sites and `u3m_bail` -- three per site, one of which was missed. consolidates them into a macro pair, leaving every trap site identical in both bitnesses. `u3m_trap` latches the ball in the controlling expression rather than in the body of the `else`, so a bail in the escape path cannot clobber `esc.why_w` before it is read. the trap side must stay a macro: a `jmp_buf` does not outlive the frame that filled it. also drops the dead `u3m_trap()`, unused and silently wrong under VERE64, along with the `#if 0`'d function declaration beside it.
on windows `_longjmp` expands to a brace-enclosed block rather than an
expression, so the VERE64 arm's comma operator was a syntax error under
x86_64-windows-gnu. `u3m_escape` is only ever used as a statement, so
both arms become `do { ... } while ( 0 )`.
`u3m_trap` is unaffected: windows `setjmp` does expand to a
parenthesized expression.
dozreg-toplud
requested changes
Aug 12, 2026
| return u3m_bail(c3__fail); | ||
| } | ||
|
|
||
| // We don't currently support atoms 2GB or larger (fails while |
Contributor
There was a problem hiding this comment.
does this still hold?
|
|
||
| static inline void | ||
| _set_rounding(c3_w a) | ||
| _set_rounding(c3_y a) |
Contributor
There was a problem hiding this comment.
here and elsewhere: this must be a u3_atom or a type of the same width. Otherwise an indirect atom will get incorrectly interpreted
…on for `c3_align_w`
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cribbed from #794.
This PR introduces 64-bit Vere.
c3_wis now either 32 or 64 bit, depending on if it was compiled with-DVERE64(off by default, or on withzig build -Dvere64).The following work still needs to be done:
trace.{c,h}ship.{c,h}nock.hversion.himprison.{c,h}jets.{c,h}allocate.{c,h}retrieve.{c,h}*_tests.clook at diff of pre and post VERE64 compilation with -Wconversion flag. Investigate every instance.size_tto support 64-bit #842(mug .(eny 0, now 0))equality test for fakezods booted in 32-bit and 64-bit modesBenchmarks:
a959ae4e75c9ea959ae4e75c9e