Allow finalizers on custom blocks in the minor heap, fix pr 3612#92
Allow finalizers on custom blocks in the minor heap, fix pr 3612#92chambart wants to merge 5 commits intoocaml:trunkfrom
Conversation
When allocating this kind of blocks to the minor heap, they are added to 'caml_finalize_table' which is traversed on 'caml_empty_table' to check if any of such block is dead.
|
For me, perfect pull request:
Perhaps just some additional comments. |
There was a problem hiding this comment.
Could you add that for "the finalizer of the others will be called during mark_sweep when they became unreachable?". I just forget that custom_block are not finalized as usual ocaml values....
There was a problem hiding this comment.
I am not sure this is the right place to add that kind of comment: it may become obsolete if sweep_slice evolve.
This reverts commit 5a0cff9.
|
This PR have been discussed during the last developers' meeting, where I had the pleasure to be. To sum-up:
|
|
The patch should be merge-ready, but on my machine many backtrace-related tests fail because of it. Can you reproduce the failures? |
|
PS: I have pushed the rebased version of this patch (moving headers to the |
|
I reviewed the rebased version and I'm (more than ever) OK for merging. |
|
So the backtrace problem seems to be due to a bug in byterun/backtrace.c, I'll fix it before merging this one. |
|
Merged in trunk. Thanks for the good work! Congratulations for fixing the oldest fixed issue in the release cycle for now. The next contender, PR#4539, is 3 years older. |
|
For reference this change had consequences on lablgtk: http://caml.inria.fr/mantis/view.php?id=7162 |
|
@bobot I think that the breakage is a bug in lablgtk. |
c703f5f Incorporate upstream comments into type-variable refactor (ocaml#121) 362ba23 Constrain curry modes to increase along applications (ocaml#108) b1f0cf9 Simplify the extension handling (ocaml#114) 4fd53a1 Remove pat_mode from typedtree (ocaml#105) cf6fcbc Handle attributes on lambdas with locally abstract types (ocaml#120) 5fa80fe Don't track attributes inside attributes for warning 53 (ocaml#115) 8a69777 Handle unclosed `[: ... :]` patterns (via `Generic_array` machinery) (ocaml#117) b0737f4 Add promote-one Makefile target (ocaml#118) c6ad684 Refactoring and fixes around module lookup (ocaml#107) b0a6495 Add documentation for global constructor arguments (ocaml#69) dd79aec Print `nlocal` in the `-d(raw)lambda` output (ocaml#112) 8035026 Fix `nlocal` in the generated Lambda for list comprehensions (ocaml#113) afbcdf0 Immutable arrays (ocaml#47) bfe1490 fix several issues when removing exp_mode (ocaml#110) 8f46060 Better error message for under-applied functions (ocaml#74) 27331d8 Consistently use Lmutvar or Lvar in comprehensions (ocaml#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#109) 947cf89 List and array comprehensions (ocaml#46) bd9e051 remove exp_mode from typedtree (ocaml#100) a9268d2 Fix misplaced attribute warning when using external parser (and some cleanup) (ocaml#101) 2b33f24 Refactor toplevel local escape check (ocaml#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#97) aa25ab9 Fix version number (ocaml#94) d01ffa0 Fix .depend file (ocaml#93) 942f2ab Bootstrap (ocaml#92) 05f7e38 Check Menhir version (ocaml#91) 1569b58 Move the CI jobs from 4.12 to 4.14. (ocaml#90) git-subtree-dir: ocaml git-subtree-split: c703f5f
This subsume the pull request #82
Note that this also make functions like Bigarray.Array1.sub a lot faster:
Is more than twice faster.