Permalink
Commits on Oct 16, 2018
  1. Merge pull request #226 from ocamllabs/multicore-lazy

    kayceesrk committed Oct 16, 2018
    Multicore-safe implementation of Lazy
  2. Add comment in translcore.ml

    kayceesrk committed Oct 16, 2018
  3. Bootstrap for lazy

    kayceesrk committed Oct 16, 2018
Commits on Oct 13, 2018
  1. Update tests

    kayceesrk committed Oct 13, 2018
  2. Multicore safe lazy

    kayceesrk committed Oct 13, 2018
Commits on Oct 5, 2018
  1. Merge pull request #225 from ocamllabs/memory-model-refactor

    stedolan committed Oct 5, 2018
    Use C11 atomics to enforce the OCaml memory model.
  2. caml_domain_alone() optimisations in minor_gc.c

    stedolan committed Oct 5, 2018
  3. Re-add caml_domain_alone

    stedolan committed Oct 5, 2018
  4. Support for fetch_and_add and exchange atomics.

    stedolan committed Oct 4, 2018
    (and bootstrap)
  5. Use C11 atomics to enforce the OCaml memory model.

    stedolan committed Oct 4, 2018
      - Add Hp_atomic_val and Op_atomic_val to get atomic block accesses
      - Hp_val(v) is no longer an lvalue
      - Remove all uses of old GCC __sync_foo primitives
      - Remove architecture-specific atomic code in platform.h
        (except cpu_relax(), which annoyingly isn't in C11)
    
    See the long comment in memory.c to understand how the OCaml memory
    model is encoded in C11.
Commits on Oct 4, 2018
  1. Added opam file for OPAM 2.0 workflow

    kayceesrk committed Oct 4, 2018
    This should be removed once opam-compiler-conf is updated to OPAM 2.0.
  2. Merge pull request #224 from ocamllabs/intern-refactor

    kayceesrk committed Oct 4, 2018
    Custom object intern fixes
  3. Re-enable some now-working tests

    stedolan committed Oct 3, 2018
  4. Deserialisation using custom lengths.

    stedolan committed Oct 3, 2018
    Partially reverts 9a42dde.
  5. Add CODE_CUSTOM_FIXED for fixed-size custom serializers.

    stedolan committed Jul 3, 2018
    As a space optimisation, custom serializers that always consume
    the same number of bytes need not send the lengths explicitly.
Commits on Oct 3, 2018
  1. Make marshalled Custom_tag objects store their length.

    stedolan committed Mar 29, 2018
    Adds a new marshal code CODE_CUSTOM_LEN, which stores the lengths
    (for both 32- and 64-bit) of each marshalled custom block. The
    marshaller only uses CODE_CUSTOM_LEN, but the unmarshaller still
    understands CODE_CUSTOM (So, old files still unmarshal, but new ones
    don't work on old versions).
    
    This allows the unmarshaller to know exactly how much memory is
    needed before calling a custom `deserialize` function.
Commits on Oct 2, 2018
Commits on Sep 11, 2018
  1. Merge pull request #221 from ocamllabs/scheduling

    stedolan committed Sep 11, 2018
    Scheduling
Commits on Sep 10, 2018
  1. Merge branch 'master' into scheduling

    kayceesrk committed Sep 10, 2018
  2. Merge pull request #220 from ocamllabs/incremental_ephemeron_marking

    kayceesrk committed Sep 10, 2018
    Make ephemeron marking incremental.
  3. Merge branch 'incremental_ephemeron_marking' into scheduling

    kayceesrk committed Sep 10, 2018
  4. Make ephemeron marking incremental.

    kayceesrk committed Sep 10, 2018
    Without incremental marking of ephemerons, with sufficiently large
    ephemeron list, the GC would fail to make progress as it would start
    scanning the ephemeron list from the beginning every time.
Commits on Sep 8, 2018
Commits on Sep 7, 2018
  1. Gc.stat does a Gc.full_major instead of Gc.major

    kayceesrk committed Sep 7, 2018
    With Gc.major, objects that become garbage in the last cycle will be
    counted towards live words. Such objects will have colour UNMARKED after
    the major GC, but will only be swept in the GC following the subsequent
    one. With a full major, both live_words and heap_words will have an
    accurate result.
Commits on Sep 6, 2018
  1. Merge pull request #219 from ocamllabs/no-minor-scan

    kayceesrk committed Sep 6, 2018
    Fix a missed optimisation in root scanning.
  2. Fix a missed optimisation in root scanning.

    stedolan committed Sep 6, 2018
    Trunk OCaml scans newly-initialised globals during minor GC, as
    they may contain newly-allocated minor objects. Multicore deleted
    the tracking of which globals were newly initialised, as the
    synchronisation of this variable was tricky.
    
    So, multicore scans all globals during minor GC. This was a
    temporary hack, with the better fix being to make initialisation
    of globals promote before initialisation, so that newly-initialised
    globals never contain minor heap pointers.
    
    The better fix got implemented, but I forgot to remove the hack,
    so minor GC has been uselessly scanning globals for quite a while.
    This commit removes the unnecessary scan.
Commits on Sep 5, 2018