Skip to content

Flambda 2 patches to the Lambda types #69

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

Closed
wants to merge 75 commits into from

Conversation

lthls
Copy link
Contributor

@lthls lthls commented Jun 30, 2021

The first commit combines several modifications to the Pfield primitive, plus a change to Lswitch structures (that I could split if needed).
The second commit handles the addition of Immutable_unique to Lmbda.mutable_flag, used for extension constructors.

mshinwell and others added 30 commits April 13, 2021 19:26
git-subtree-dir: ocaml
git-subtree-split: ae3e5528f45f084a5f2984d81ecc635ba8c38f31
…b6f1a67704cdec)

Change the default policy to best-fit and space overhead to 100
Ensure that string representations of scopes are shared.
…ops files (still needs .gitignore + way of generating these files)
gretay-js and others added 24 commits May 27, 2021 13:57
Used `replace` instead of `add` on the interfaces Hash table (which is
being used as a set), to avoid duplicate entries. The duplicate entries
lead to enormous `caml_globals_map` values.

Also use `replace` instead of `add` on another hash table usage, not
because it was causing any problems but because it seems like `add`
should be avoided outside unusual situations.
git-subtree-dir: external/memtrace
git-subtree-split: ad4099fd60562dc3e1d9a33812da54491f9dbadc
…aml-flambda#30)

Use the same options as in the upstream Makefiles, based on ocaml/Makefile.config
This fixes the missing -ffunction-sections in compilation of C stubs.
We should disable dune behavior of taking C compiler options from
"ocamlc -config" when we move to dune 2.8.
* Add intrinsics for ext_pointer and native_pointer

* Add two_args

* remove XCR

* Add intrinisics for storing and loading int64,int32,nativeint

Fix up names

* Remove "unsafe" from the name of one of the intrinsics

* Address review comments

Use Word_int instead of Word_val for {load,store}_immediate intrinsics

Co-authored-by: Mark Shinwell <[email protected]>
Reduces peak memory usage, which is important when a build system
tries to run many large links in parallel.
* Import the code of ocamlcfg.

* Fix imported code.

* Optionally go through ocamlcfg.

* Merge in the latest CFG version

* Fix compilation warning 18.

* Add copyright header to cfg files.

The head is a copy of the LICENSE file at the root of ocamlcfg library

Co-authored-by: xclerc <[email protected]>
)

Fix error "integer literal exceeds the range of representable integers
of type nativeint" in the code that runs only on 64-bit targets, but
need to compile on 32-bit target.
- Mutability on field reads
- Tag and size (if known) on field reads
- Tag and size on switch block branches
@mshinwell
Copy link
Collaborator

I was envisaging only trying to upstream the Pfield mutability annotation changes at the present time. Those were needed for multicore, but probably aren't any longer (since there is no longer a read barrier) -- however, they do solve the remaining problems in ocaml/ocaml#9562. As such I think they will likely be acceptable.

However I fear that the remainder of this patch won't be acceptable upstream at the present time, although it looks like a lot less work to submit these changes together. @lthls @stedolan what do you both think?

@mshinwell mshinwell added the flambda2 Prerequisite for, or part of, flambda2 label Jun 30, 2021
@poechsel poechsel closed this Jul 1, 2021
riaqn added a commit to riaqn/flambda-backend that referenced this pull request Feb 23, 2023
c703f5f Incorporate upstream comments into type-variable refactor (ocaml-flambda#121)
362ba23 Constrain curry modes to increase along applications (ocaml-flambda#108)
b1f0cf9 Simplify the extension handling (ocaml-flambda#114)
4fd53a1 Remove pat_mode from typedtree (ocaml-flambda#105)
cf6fcbc Handle attributes on lambdas with locally abstract types (ocaml-flambda#120)
5fa80fe Don't track attributes inside attributes for warning 53 (ocaml-flambda#115)
8a69777 Handle unclosed `[: ... :]` patterns (via `Generic_array` machinery) (ocaml-flambda#117)
b0737f4 Add promote-one Makefile target (ocaml-flambda#118)
c6ad684 Refactoring and fixes around module lookup (ocaml-flambda#107)
b0a6495 Add documentation for global constructor arguments (ocaml-flambda#69)
dd79aec Print `nlocal` in the `-d(raw)lambda` output (ocaml-flambda#112)
8035026 Fix `nlocal` in the generated Lambda for list comprehensions (ocaml-flambda#113)
afbcdf0 Immutable arrays (ocaml-flambda#47)
bfe1490 fix several issues when removing exp_mode (ocaml-flambda#110)
8f46060 Better error message for under-applied functions (ocaml-flambda#74)
27331d8 Consistently use Lmutvar or Lvar in comprehensions (ocaml-flambda#111)
01e965b Skip failing test for now
0131357 Fix test case to use comprehensions_experimental
22a7368 Temporarily disable list comprehensions tests due to locals bug
e08377d Make `comprehensions` into `comprehensions_experimental` for now (ocaml-flambda#109)
947cf89 List and array comprehensions (ocaml-flambda#46)
bd9e051 remove exp_mode from typedtree (ocaml-flambda#100)
a9268d2 Fix misplaced attribute warning when using external parser (and some cleanup) (ocaml-flambda#101)
2b33f24 Refactor toplevel local escape check (ocaml-flambda#104)
ed2aec6 Comment functions exported from TyVarEnv.
87838ba Move new variable creation into TyVarEnv.
a3f60ab Encapsulate functions that work with tyvars
43d83a6 Prevent possibility of forgetting to re-widen
2f3dd34 Encapsulate context when narrowing type env't
d78ff6d Make immediate64 things mode cross (ocaml-flambda#97)
aa25ab9 Fix version number (ocaml-flambda#94)
d01ffa0 Fix .depend file (ocaml-flambda#93)
942f2ab Bootstrap (ocaml-flambda#92)
05f7e38 Check Menhir version (ocaml-flambda#91)
1569b58 Move the CI jobs from 4.12 to 4.14. (ocaml-flambda#90)

git-subtree-dir: ocaml
git-subtree-split: c703f5f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
flambda2 Prerequisite for, or part of, flambda2
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants