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

Flambda 2 patches to the Lambda types #69

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 <mshinwell@gmail.com>
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 <xclerc@janestreet.com>
)

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
c703f5f777 Incorporate upstream comments into type-variable refactor (ocaml-flambda#121)
362ba2349f Constrain curry modes to increase along applications (ocaml-flambda#108)
b1f0cf9f91 Simplify the extension handling (ocaml-flambda#114)
4fd53a1f6f Remove pat_mode from typedtree (ocaml-flambda#105)
cf6fcbc129 Handle attributes on lambdas with locally abstract types (ocaml-flambda#120)
5fa80fe23f Don't track attributes inside attributes for warning 53 (ocaml-flambda#115)
8a69777a3c Handle unclosed `[: ... :]` patterns (via `Generic_array` machinery) (ocaml-flambda#117)
b0737f46c4 Add promote-one Makefile target (ocaml-flambda#118)
c6ad684608 Refactoring and fixes around module lookup (ocaml-flambda#107)
b0a649516b Add documentation for global constructor arguments (ocaml-flambda#69)
dd79aeca91 Print `nlocal` in the `-d(raw)lambda` output (ocaml-flambda#112)
8035026661 Fix `nlocal` in the generated Lambda for list comprehensions (ocaml-flambda#113)
afbcdf0642 Immutable arrays (ocaml-flambda#47)
bfe1490dfb fix several issues when removing exp_mode (ocaml-flambda#110)
8f46060dc5 Better error message for under-applied functions (ocaml-flambda#74)
27331d848d Consistently use Lmutvar or Lvar in comprehensions (ocaml-flambda#111)
01e965b549 Skip failing test for now
0131357265 Fix test case to use comprehensions_experimental
22a73684b7 Temporarily disable list comprehensions tests due to locals bug
e08377d2d1 Make `comprehensions` into `comprehensions_experimental` for now (ocaml-flambda#109)
947cf892b5 List and array comprehensions (ocaml-flambda#46)
bd9e051900 remove exp_mode from typedtree (ocaml-flambda#100)
a9268d29b4 Fix misplaced attribute warning when using external parser (and some cleanup) (ocaml-flambda#101)
2b33f2465c Refactor toplevel local escape check (ocaml-flambda#104)
ed2aec61c6 Comment functions exported from TyVarEnv.
87838ba0c2 Move new variable creation into TyVarEnv.
a3f60ab586 Encapsulate functions that work with tyvars
43d83a6554 Prevent possibility of forgetting to re-widen
2f3dd34d3d Encapsulate context when narrowing type env't
d78ff6de46 Make immediate64 things mode cross (ocaml-flambda#97)
aa25ab9baf Fix version number (ocaml-flambda#94)
d01ffa06ec Fix .depend file (ocaml-flambda#93)
942f2ab220 Bootstrap (ocaml-flambda#92)
05f7e383d2 Check Menhir version (ocaml-flambda#91)
1569b580b9 Move the CI jobs from 4.12 to 4.14. (ocaml-flambda#90)

git-subtree-dir: ocaml
git-subtree-split: c703f5f7772dd4252405b086be11c15a3c67f2ac
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.

None yet

7 participants