{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "com.cloudbees.jenkins.GitHubPushCause",
          "shortDescription" : "Started by GitHub push by xavierleroy"
        },
        {
          "_class" : "com.cloudbees.jenkins.GitHubPushCause",
          "shortDescription" : "Started by GitHub push by gasche"
        }
      ]
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "origin/trunk" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 200,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "83c4909d525514d7b68dab4c8a33aa25f9d86277",
            "branch" : [
              {
                "SHA1" : "83c4909d525514d7b68dab4c8a33aa25f9d86277",
                "name" : "origin/trunk"
              }
            ]
          },
          "revision" : {
            "SHA1" : "83c4909d525514d7b68dab4c8a33aa25f9d86277",
            "branch" : [
              {
                "SHA1" : "83c4909d525514d7b68dab4c8a33aa25f9d86277",
                "name" : "origin/trunk"
              }
            ]
          }
        },
        "origin/4.11" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 188,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "ee89787b21127aaaab2f379f7fc289df2eafa204",
            "branch" : [
              {
                "SHA1" : "ee89787b21127aaaab2f379f7fc289df2eafa204",
                "name" : "origin/4.11"
              }
            ]
          },
          "revision" : {
            "SHA1" : "ee89787b21127aaaab2f379f7fc289df2eafa204",
            "branch" : [
              {
                "SHA1" : "ee89787b21127aaaab2f379f7fc289df2eafa204",
                "name" : "origin/4.11"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "83c4909d525514d7b68dab4c8a33aa25f9d86277",
        "branch" : [
          {
            "SHA1" : "83c4909d525514d7b68dab4c8a33aa25f9d86277",
            "name" : "origin/trunk"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/ocaml/ocaml"
      ],
      "scmName" : ""
    },
    {
      "_class" : "hudson.plugins.git.GitTagAction"
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#200",
  "duration" : 2717093,
  "estimatedDuration" : 2534434,
  "executor" : None,
  "fullDisplayName" : "Risc-V-legacy #200",
  "id" : "200",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 200,
  "queueId" : 55250,
  "result" : "SUCCESS",
  "timestamp" : 1592924316454,
  "url" : "https://ci.inria.fr/ocaml/view/all/job/Risc-V-legacy/200/",
  "builtOn" : "olive",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "runtime/caml/address_class.h"
        ],
        "commitId" : "6e9d39bb264e1fa0d53e94fa0f1101ed394fe699",
        "timestamp" : 1592899639000,
        "author" : {
          "absoluteUrl" : "https://ci.inria.fr/ocaml/user/xavier.leroy",
          "fullName" : "xavier.leroy"
        },
        "authorEmail" : "xavier.leroy@college-de-france.fr",
        "comment" : "Is_in_value_area is always true in no-naked-pointers mode\u000a\u000aSince there are no naked pointers, all pointers are to well-formed\u000aOCaml blocks.\u000a",
        "date" : "2020-06-23 10:07:19 +0200",
        "id" : "6e9d39bb264e1fa0d53e94fa0f1101ed394fe699",
        "msg" : "Is_in_value_area is always true in no-naked-pointers mode",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "runtime/caml/address_class.h"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "runtime/extern.c",
          "runtime/hash.c",
          "runtime/compare.c"
        ],
        "commitId" : "247c1da515fbbce23596113afdd77c7f73497072",
        "timestamp" : 1592901030000,
        "author" : {
          "absoluteUrl" : "https://ci.inria.fr/ocaml/user/xavier.leroy",
          "fullName" : "xavier.leroy"
        },
        "authorEmail" : "xavier.leroy@college-de-france.fr",
        "comment" : "Remove some `#ifndef NO_NAKED_POINTERS` that are now redundant\u000a\u000aHaving Is_in_value_area always true in no-naked-pointers mode\u000aachieves the same result as the `#ifndef NO_NAKED_POINTERS` removed here.\u000a",
        "date" : "2020-06-23 10:30:30 +0200",
        "id" : "247c1da515fbbce23596113afdd77c7f73497072",
        "msg" : "Remove some `#ifndef NO_NAKED_POINTERS` that are now redundant",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "runtime/extern.c"
          },
          {
            "editType" : "edit",
            "file" : "runtime/compare.c"
          },
          {
            "editType" : "edit",
            "file" : "runtime/hash.c"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "runtime/caml/weak.h",
          "runtime/weak.c"
        ],
        "commitId" : "55fcf9fa893d022c622f75c014a85c0f66c20e6f",
        "timestamp" : 1592901040000,
        "author" : {
          "absoluteUrl" : "https://ci.inria.fr/ocaml/user/xavier.leroy",
          "fullName" : "xavier.leroy"
        },
        "authorEmail" : "xavier.leroy@college-de-france.fr",
        "comment" : "weak.[ch]: use Is_in_value_area instead of Is_in_heap_or_young.\u000a\u000aIn weak.c there are two tests determining whether a value is a custom\u000ablock or not.  The original code, using Is_in_heap_or_young, would\u000aconclude \"not a custom block\" for statically-allocated custom blocks\u000alike int64 literals.\u000a\u000aIn weak.h there is one test Is_in_heap_or_young (child) that guards\u000a1- a test for forward blocks\u000a2- a test for white blocks.\u000a\u000aBoth guarded tests are false for a statically-allocated block:\u000a- test 1 because lazy values are not statically allocated normally\u000a- test 2 because statically-allocated blocks must have black headers.\u000a\u000aHence it makes no difference to test Is_in_value_area (child).\u000a",
        "date" : "2020-06-23 10:30:40 +0200",
        "id" : "55fcf9fa893d022c622f75c014a85c0f66c20e6f",
        "msg" : "weak.[ch]: use Is_in_value_area instead of Is_in_heap_or_young.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "runtime/weak.c"
          },
          {
            "editType" : "edit",
            "file" : "runtime/caml/weak.h"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "runtime/caml/address_class.h"
        ],
        "commitId" : "8c062185cc422d759d7084afcb732d1b9bec5bf8",
        "timestamp" : 1592901040000,
        "author" : {
          "absoluteUrl" : "https://ci.inria.fr/ocaml/user/xavier.leroy",
          "fullName" : "xavier.leroy"
        },
        "authorEmail" : "xavier.leroy@college-de-france.fr",
        "comment" : "Is_in_heap_or_young is always true in no-naked-pointers mode\u000a\u000aThis is in preparation for the complete removal of the page table.\u000a\u000aWithout the page table, there is no way to distinguish pointers into\u000athe heaps (minor or major) from pointers outside the heaps,\u000ae.g. structured constants statically allocated by ocamlopt.\u000a\u000aHence, the difference between Is_in_heap_or_young and Is_in_value_area\u000a(behavior on static data) disappears, and both should always return true.\u000a\u000aAll uses of Is_in_heap_or_young but one are in assertions, which\u000atherefore become useless, but not wrong.\u000a\u000aThe one use inside the code is when registering a finalisation with\u000a`Gc.finalise`.  Today, `Invalid_argument` is raised if the value to be\u000afinalised is statically allocated.  With this commit and in\u000ano-naked-pointers mode, `GC.finalise` succeeds, but the finalisation\u000afunction will never be called.\u000a",
        "date" : "2020-06-23 10:30:40 +0200",
        "id" : "8c062185cc422d759d7084afcb732d1b9bec5bf8",
        "msg" : "Is_in_heap_or_young is always true in no-naked-pointers mode",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "runtime/caml/address_class.h"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "runtime/major_gc.c",
          "runtime/weak.c"
        ],
        "commitId" : "2aa502e1b99eb2a94ecb682e66df6614ee27f8ae",
        "timestamp" : 1592901040000,
        "author" : {
          "absoluteUrl" : "https://ci.inria.fr/ocaml/user/xavier.leroy",
          "fullName" : "xavier.leroy"
        },
        "authorEmail" : "xavier.leroy@college-de-france.fr",
        "comment" : "Replace some uses of Is_in_heap with !Is_young\u000a\u000aThis is in preparation for the complete removal of the page table.\u000a\u000aWithout the page table, there is no way to distinguish pointers into\u000athe major heap from pointers to structured constants statically\u000aallocated by ocamlopt.  The only distinction we can make between pointers\u000ais whether they point to the minor heap (Is_young) or not.\u000a\u000aHowever, we cannot (yet) define Is_in_heap(v) as !Is_young(v), because\u000aIs_in_heap with its current meaning is used\u000a- in the compactor\u000a- in many assertions.\u000a\u000aYet, there are a few places, mostly in the handling of ephemerons,\u000awhere Is_in_heap(v) can safely be replaced with !Is_young(v).\u000aThis is done in this commit.\u000a",
        "date" : "2020-06-23 10:30:40 +0200",
        "id" : "2aa502e1b99eb2a94ecb682e66df6614ee27f8ae",
        "msg" : "Replace some uses of Is_in_heap with !Is_young",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "runtime/weak.c"
          },
          {
            "editType" : "edit",
            "file" : "runtime/major_gc.c"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "testsuite/tests/asmcomp/is_static.ml",
          "runtime/caml/address_class.h"
        ],
        "commitId" : "40a55c71a1f32e1988f52e15b8178c7771c76239",
        "timestamp" : 1592901040000,
        "author" : {
          "absoluteUrl" : "https://ci.inria.fr/ocaml/user/xavier.leroy",
          "fullName" : "xavier.leroy"
        },
        "authorEmail" : "xavier.leroy@college-de-france.fr",
        "comment" : "Is_in_static_data is not available in no-naked-pointers mode\u000a\u000aThis is another classification macro that requires the page table.\u000aIts only uses in the whole OPAM universe is two of our own tests\u000a(tests/asmcomp/is_static.ml and tests/lib-obj/reachable_words_np.ml)\u000awhich are now run only in naked-pointers mode.\u000a",
        "date" : "2020-06-23 10:30:40 +0200",
        "id" : "40a55c71a1f32e1988f52e15b8178c7771c76239",
        "msg" : "Is_in_static_data is not available in no-naked-pointers mode",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "testsuite/tests/asmcomp/is_static.ml"
          },
          {
            "editType" : "edit",
            "file" : "runtime/caml/address_class.h"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://ci.inria.fr/ocaml/user/xavier.leroy",
      "fullName" : "xavier.leroy"
    }
  ]
}