Conversation
543459f to
bd3d472
Compare
|
@lthls is going to review this. |
40c1f45 to
ef2ee75
Compare
|
Rebased on current main. |
|
I took a quick look at the changes under
|
|
I realized after writing this that these two points are related:
Because our goal is to avoid ever needing to calculate the layout for a val layout : Env.t -> Types.sort -> Types.type_expr -> Lambda.layout
val value_kind : Env.t -> Types.type_expr -> Lambda.value_kindThe idea being that the former doesn't actually look at the Does that make sense? |
|
Ah yes, I see, this would probably be better indeed as it would avoid having to look at the There might be a few cases where we need some more changes to the typed tree to avoid having to recompute the layouts in all cases: these correspond to all uses of |
ef2ee75 to
f22cfdc
Compare
77434f0 flambda-backend: Bump magic numbers for 4.14.1-5 (oxcaml#1190) 3a78e83 flambda-backend: Revert "Instance compilation units" (oxcaml#1175) 9a683c9 flambda-backend: Move compute_layout to Lambda (oxcaml#1167) 0ea58e9 flambda-backend: Revert "Add a proper top and bottom layout" (oxcaml#1169) 1e5e23a flambda-backend: Add hint for common misplaced [@unboxed] attribute (oxcaml#1164) 10f870a flambda-backend: Add a proper top and bottom layout (oxcaml#1158) d1be563 flambda-backend: Don't warn about misplaced attributes in -i mode (oxcaml#1163) feefcaa flambda-backend: Remove immutable arrays from stdlib.ml and stdlib.mli (oxcaml#1154) ba101be flambda-backend: Shrink the ref_table if it grows large (oxcaml#1156) 777fda7 flambda-backend: Preserve backtraces from failing `Lazy_backtrack` computations (oxcaml#805) 56d014e flambda-backend: Remove remaining `layout_top` after oxcaml#1084 (oxcaml#1138) dc1c1ce flambda-backend: Layouts for parameters in lambda & remove most layout_top (oxcaml#1084) 49fea78 flambda-backend: Instance compilation units (oxcaml#1113) 1127fd2 flambda-backend: Merge pull request oxcaml#1143 from riaqn/merge-ocaml-jst f458733 flambda-backend: fix things after merge b43d385 flambda-backend: File magic updates (oxcaml#306) 9f604aa flambda-backend: Merge ocaml-jst 1f54613 flambda-backend: More assertions for local alloc and letrec (oxcaml#1081) 0c95280 flambda-backend: Remove most layout_top in closure (oxcaml#1127) 8ad48b5 flambda-backend: Use only `.ocamlformat*` to enable or disable ocamlformat (oxcaml#1135) 1aa2885 flambda-backend: Build all boot targets in `make hacking` (oxcaml#1133) 6b6c25a flambda-backend: Hide `Compilation_unit.t`'s definition in a submodule (oxcaml#1134) 529d66b flambda-backend: Compile refactor (oxcaml#1096) df798c1 flambda-backend: Propagates layouts through Flambda1 (oxcaml#1115) 9bce50b flambda-backend: Add `gc-timings` to collect timing information from the GC (oxcaml#1089) d431d3b flambda-backend: Use the type of primitive declarations to make their layout (oxcaml#1118) 8da887e flambda-backend: Changes to arity in clambda (oxcaml#1106) db20e97 flambda-backend: Fix simplify-exits (oxcaml#1108) 6a63906 flambda-backend: Add layout on Lregion (oxcaml#1107) c562fb3 flambda-backend: caml_{curry,apply,send}* for unboxed types (oxcaml#1104) 50ee311 flambda-backend: Temporary fix for incorrect layout for result of custom and operators (oxcaml#1119) c89512d flambda-backend: More error checking for natdynlink symbols (oxcaml#1005) 27d68bf flambda-backend: Flambda1 region deletion and locals fixes (oxcaml#1000) 0e3e057 flambda-backend: Add identifiers for instantiated functor units (oxcaml#1092) 4b75b46 flambda-backend: Fix build system under ocaml/runtime (oxcaml#1085) 7c9fc32 flambda-backend: Fix valid character range computation for compilation units (oxcaml#1110) 40c754a flambda-backend: Add result layout in Lapply and Lsend (oxcaml#1102) cedaea1 flambda-backend: Add layout type in Lambda (oxcaml#1032) 47c0e23 flambda-backend: Configure: Add flag to use legacy library layout (oxcaml#1098) eed5888 flambda-backend: Restructure LIBDIR: Move Dynlink, Str and Unix to sub-directories (port part of ocaml/PR11198) (oxcaml#1094) 5b98caf flambda-backend: Revert "Restructure LIBDIR" (oxcaml#1093) 46f1b16 flambda-backend: Remove a stray character from dynlink Makefile (oxcaml#1090) e515442 flambda-backend: Restructure LIBDIR: Move Dynlink, Str and Unix to sub-directories (port PR#11198) (oxcaml#895) 9307e7c flambda-backend: inline fast path of caml_applyN (oxcaml#934) 3244386 flambda-backend: Bump magic numbers (oxcaml#1077) 7c9e15d flambda-backend: Fix bug in arguments to `get_unit_info` (oxcaml#1069) a2f4c9e flambda-backend: Closure rename static catch (oxcaml#1070) 2ee705a flambda-backend: Backport oxcaml#946 to ocaml/ subfolder (oxcaml#1061) 569703f flambda-backend: Merge ocaml-jst#97 (oxcaml#1063) 7b1779a flambda-backend: Port value_kind changes to testsuite/tools to fix parsecmm.mly (oxcaml#1060) 49505d1 flambda-backend: Bugfix for Ctype.nondep_type (oxcaml#1059) 654c63c flambda-backend: Backport oxcaml#295 kind changes to ocaml/ subfolder (oxcaml#1018) 50a9ce0 flambda-backend: Fix extern_closure_up_to_env (oxcaml#1053) bc2c78d flambda-backend: Remove obsolete pack-related code (oxcaml#1051) 872ff38 flambda-backend: Fix error-prone syntax resulting from reformatting (oxcaml#1050) d03b346 flambda-backend: Fix different .cmi files being produced by ocamlopt and ocamlc when using -pack (oxcaml#1049) 90ee37b flambda-backend: Revert "Revert "Use Import_info.t in Cmt_format"" (oxcaml#1045) ac12d90 flambda-backend: Fix version number (oxcaml#1043) 75e0154 flambda-backend: Revert "Use Import_info.t in Cmt_format" (oxcaml#1042) ecab74c flambda-backend: Use Import_info.t in Cmt_format (oxcaml#1037) 7661d4d flambda-backend: Bootstrap 1098a56 flambda-backend: Update .depend files a7292da flambda-backend: Revert ocaml/toplevel/native/dune 7584479 flambda-backend: Remove alloc-check from ocaml/ git-subtree-dir: ocaml git-subtree-split: 77434f0
bcae5ff flambda-backend: Bump buffer size to avoid gcc warning (#1247) d6c170b flambda-backend: Remove `-absname` to improve dune build errors (#1233) 1b2bcb4 flambda-backend: Put frametables in .text with relative offsets for return addresses. (#1227) 999d523 flambda-backend: Small optimisation for caml_modify (#1226) b16493b flambda-backend: Add timestamps to GC logs (#1229) 95f7e80 flambda-backend: Provide a no-naked-pointers runtime and use it for the compiler (#1224) ba77581 flambda-backend: Replace assertion with a match statement (#1225) cfb3cd2 flambda-backend: Memoise last substitution composition (#1209) 1c4db44 flambda-backend: Port PR1202 and PR1205 to the ocaml/ subtree (#1211) 577410e flambda-backend: Correctly stack debuginfo for inlined body in classic mode (#1152) 6733de6 flambda-backend: Fix dune install in otherlibs: missing cmt and typo. (#1194) 4c97d26 flambda-backend: Unboxed numbers (#1165) 1ad7252 flambda-backend: Revert "Revert "Add a proper top and bottom layout" (#1169)" (#1191) dea4b3e flambda-backend: Don't get the layout of arguments from patterns (#1179) 6d3e85b flambda-backend: Don't copy when resolving aliases in try_modtypes (#1184) 73e52b7 flambda-backend: Clarify the types used for static jump/catch (#1180) 273a40d flambda-backend: Reenable backtrace testsuite folder for flambda2 (#1161) 77434f0 flambda-backend: Bump magic numbers for 4.14.1-5 (#1190) 3a78e83 flambda-backend: Revert "Instance compilation units" (#1175) 9a683c9 flambda-backend: Move compute_layout to Lambda (#1167) 0ea58e9 flambda-backend: Revert "Add a proper top and bottom layout" (#1169) 1e5e23a flambda-backend: Add hint for common misplaced [@unboxed] attribute (#1164) 10f870a flambda-backend: Add a proper top and bottom layout (#1158) d1be563 flambda-backend: Don't warn about misplaced attributes in -i mode (#1163) feefcaa flambda-backend: Remove immutable arrays from stdlib.ml and stdlib.mli (#1154) ba101be flambda-backend: Shrink the ref_table if it grows large (#1156) 777fda7 flambda-backend: Preserve backtraces from failing `Lazy_backtrack` computations (#805) 56d014e flambda-backend: Remove remaining `layout_top` after #1084 (#1138) dc1c1ce flambda-backend: Layouts for parameters in lambda & remove most layout_top (#1084) 49fea78 flambda-backend: Instance compilation units (#1113) 1127fd2 flambda-backend: Merge pull request #1143 from riaqn/merge-ocaml-jst f458733 flambda-backend: fix things after merge b43d385 flambda-backend: File magic updates (#306) 9f604aa flambda-backend: Merge ocaml-jst 1f54613 flambda-backend: More assertions for local alloc and letrec (#1081) 0c95280 flambda-backend: Remove most layout_top in closure (#1127) 8ad48b5 flambda-backend: Use only `.ocamlformat*` to enable or disable ocamlformat (#1135) 1aa2885 flambda-backend: Build all boot targets in `make hacking` (#1133) 6b6c25a flambda-backend: Hide `Compilation_unit.t`'s definition in a submodule (#1134) 529d66b flambda-backend: Compile refactor (#1096) df798c1 flambda-backend: Propagates layouts through Flambda1 (#1115) 9bce50b flambda-backend: Add `gc-timings` to collect timing information from the GC (#1089) d431d3b flambda-backend: Use the type of primitive declarations to make their layout (#1118) 8da887e flambda-backend: Changes to arity in clambda (#1106) db20e97 flambda-backend: Fix simplify-exits (#1108) 6a63906 flambda-backend: Add layout on Lregion (#1107) c562fb3 flambda-backend: caml_{curry,apply,send}* for unboxed types (#1104) 50ee311 flambda-backend: Temporary fix for incorrect layout for result of custom and operators (#1119) c89512d flambda-backend: More error checking for natdynlink symbols (#1005) 27d68bf flambda-backend: Flambda1 region deletion and locals fixes (#1000) 0e3e057 flambda-backend: Add identifiers for instantiated functor units (#1092) 4b75b46 flambda-backend: Fix build system under ocaml/runtime (#1085) 7c9fc32 flambda-backend: Fix valid character range computation for compilation units (#1110) 40c754a flambda-backend: Add result layout in Lapply and Lsend (#1102) cedaea1 flambda-backend: Add layout type in Lambda (#1032) 47c0e23 flambda-backend: Configure: Add flag to use legacy library layout (#1098) eed5888 flambda-backend: Restructure LIBDIR: Move Dynlink, Str and Unix to sub-directories (port part of ocaml/PR11198) (#1094) 5b98caf flambda-backend: Revert "Restructure LIBDIR" (#1093) 46f1b16 flambda-backend: Remove a stray character from dynlink Makefile (#1090) e515442 flambda-backend: Restructure LIBDIR: Move Dynlink, Str and Unix to sub-directories (port PR#11198) (#895) 9307e7c flambda-backend: inline fast path of caml_applyN (#934) 3244386 flambda-backend: Bump magic numbers (#1077) 7c9e15d flambda-backend: Fix bug in arguments to `get_unit_info` (#1069) a2f4c9e flambda-backend: Closure rename static catch (#1070) 2ee705a flambda-backend: Backport #946 to ocaml/ subfolder (#1061) 569703f flambda-backend: Merge ocaml-jst#97 (#1063) 7b1779a flambda-backend: Port value_kind changes to testsuite/tools to fix parsecmm.mly (#1060) 49505d1 flambda-backend: Bugfix for Ctype.nondep_type (#1059) 654c63c flambda-backend: Backport #295 kind changes to ocaml/ subfolder (#1018) 50a9ce0 flambda-backend: Fix extern_closure_up_to_env (#1053) bc2c78d flambda-backend: Remove obsolete pack-related code (#1051) 872ff38 flambda-backend: Fix error-prone syntax resulting from reformatting (#1050) d03b346 flambda-backend: Fix different .cmi files being produced by ocamlopt and ocamlc when using -pack (#1049) 90ee37b flambda-backend: Revert "Revert "Use Import_info.t in Cmt_format"" (#1045) ac12d90 flambda-backend: Fix version number (#1043) 75e0154 flambda-backend: Revert "Use Import_info.t in Cmt_format" (#1042) ecab74c flambda-backend: Use Import_info.t in Cmt_format (#1037) 7661d4d flambda-backend: Bootstrap 1098a56 flambda-backend: Update .depend files a7292da flambda-backend: Revert ocaml/toplevel/native/dune 7584479 flambda-backend: Remove alloc-check from ocaml/ git-subtree-dir: ocaml git-subtree-split: bcae5ff
For now, we simply have the type
type layout = Pvalue of value_kind, to prepare for the addition of layouts everywhere. Besides, this also adds several pre-defined layouts (often equal toPvalue Pgenval), so that we know whyPgenvalwas used, for instance whether it was a truetopvalue or whether it was the kind of a function.There are quite a number of
layout_topinstances, which will need to be removed with further PRs, as there is notoplayout once we start getting non-value layouts. Hopefully, this PR is the one with the most global effect, and other PRs can start cleaning the code with a smaller scope at a time.I'd especially like reviews concerning the
translmod,translobjandtranslclassfiles, where there were a lot of instances ofPgenval, and I was unsure how to categorize a lot of them (so they ended up aslayout_top).