-
Notifications
You must be signed in to change notification settings - Fork 76
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
flambda-backend: Basic mixed blocks for
float#
in runtime 5 (#2380)
* Records mixing immediates, floats, and float64s Should be configured with: --enable-runtime5 --disable-naked-pointers --enable-reserved-header-bits=8 * Cleanup of names * Slightly more intelligible implementation of record shape detection * Small simplification + remove comment * More renames than before * Raise on poly compare and hash * Fix some, but not all, bugs in bytecomp: we segfault on the 100-generation * Fix off-by-one for zero value prefix len * No more runtime mixed blocks in bytecode Instead, just use normal blocks. This only "drops support" for 64 bit bytecode as 32 bit would just not work. (Also we don't have bits to spare in the header in 32 bit.) * Macroize things more * Support weak pointer shallow copy * A few more places where we need to check for mixed blocks * Most issues fixed * Rename more 'abstract' things to 'mixed' * Remove ability to mix boxed floats with unboxed floats * Fix bugs and more accurately track offsets * Fix bugs and more accurately track budgets * Get let-rec working with mixed blocks * Clarify comment * Use corrected-style tests and actually run the small generated examples * Fix recursive values test * Fix typo in generated TEST stanza * comment and format * Restore support for floats * Flesh out the test suite a bit to cover records with floats in the prefix * Fix bug * Small tweaks to comments / bugfixes in dead code * Fix up Chris's old tests * Cleanup and comments * Commit to storing floats flat in mixed-float-float# blocks * Actually test all floats mixed records * Finish resolving type errors related to conflicts after merge * Resolve some CRs * Resolve more CRs * Clarify that bytecode operations don't raise * Back out an unnecessary change to backend/cmm_helpers.ml * Back out probably unnecessary changes to cmmgen.ml * Add test for too many fields to show error message * Fix local test to actually test something. Use better macros. * Make polymorphic hash raise for mixed blocks * Fix updating of dummy blocks * Add some comments about mixed blocks * Revert unintentional changes to runtime4 * make fmt * Move mixed records to layouts alpha * Always set reserved header bits to 8 * Reenable support for enable-profinfo-width in runtime 4 * Fix segfault in printing + in no-allocness of hash * Most of stedolan's comments * Adopt stedolan's suggestion for structure of `oldify_one` and `oldify_mopup` * Accept TheNumbat's suggestions * Address rest of @TheNumbat's comments * Revert change to conflict markers irrelevant to this PR * no u * Segregate runtime 4 and 5 tests * Fix typo * Clarify comment * Clarify comment * Factor out a gnarly function * Use mixed_block version of primitives for getting/setting value fields * make fmt * Fix bug in all-float mixed records and fix accidental omission in tests * Segregate tests for all-float mixed records and mixed blocks * Correct comment in float64 tests * Rework test structure * Comment raisiness * Fix bug in printing * Fix confusing name * Flat_imm_element -> Imm_element * Reshuffle tests so we don't get error message clashes between runtime 4 and 5 * Stop unnecessarily numbering tests * Fix upstream build * 'Fix' upstream build * Respond to stedolan's comments * Respond to review of @TheNumbat and @lthls * Fix bug in oldify_one * Re-enable test of recursive value (accidentally disabled) and allow recursive mixed blocks * Simplify generated test code, and just check in full test * Remove unnecessary test.reference file * Fix printing bug in bytecode * Allow the Obj.double_field call in printing to work on mixed blocks * Fix tests that I accidentally broke * Continue rejecting mixed blocks from runtime 4 type-checker * Resolve hash CR: implement hash differently in native code vs. bytecode * Revert to hashing a constant for mixed blocks * Just take the hash of the scannable prefix * Minimize needless diff in runtime * Re-enable an accidentally disabled test and fix a bug related to Obj.with_tag * Slightly more consistent name (`caml_alloc_small_with_reserved`) * Add missing functionality and test for mixed block over young wosize limit (so is allocated via a different code path) * add new function to headers --------- Co-authored-by: Chris Casinghino <[email protected]>
- Loading branch information
1 parent
962b0c6
commit dd9c221
Showing
70 changed files
with
9,990 additions
and
214 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Oops, something went wrong.