)]}'
{
  "commit": "61ba8d2421a98e9b16510be4f9af7ca7bc4c9055",
  "tree": "9a79331dd5ebd46ed46f853b24ab072f43debf28",
  "parents": [
    "eb369ce3669be74dd89b21f8b3ab31ace4a47086"
  ],
  "author": {
    "name": "Nicolas Geoffray",
    "email": "ngeoffray@google.com",
    "time": "Tue Aug 07 09:55:57 2018 +0100"
  },
  "committer": {
    "name": "Nicolas Geoffray",
    "email": "ngeoffray@google.com",
    "time": "Mon Aug 20 17:18:31 2018 +0100"
  },
  "message": "Fix longstanding bug around implicit NPEs and GC, version 2.\n\nThe TODO has been there since M (so forever :)):\nhttps://android-review.googlesource.com/c/platform/art/+/122794/13//COMMIT_MSG#13\n\nWe hardly see the issue in our tests as we need to have:\n1) A GC happening while creating the NPE object.\n2) ParallelMoves between the NullCheck and implicit null check operation\n   that moves references.\n\nThe CL piggy backs on the \"IsEmittedAtUseSite\" flag, to set implicit\nnull checks with it. The liveness analysis then special cases implicit\nnull checks to record environment uses at the location of the actual\ninstruction that will do the implicit null check.\n\nTest: test.py --gcstress\nTest: run-libcore-tests --gcstress\nbug: 111545159\nChange-Id: I3ecea4fe0d7e483e93db83281ca10db47da228c5\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a13efcaee2db09d942385ccd41029a7038444f22",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/code_generator.cc",
      "new_id": "a90ff3f8853b1900a67068673effb46236035189",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/code_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "260920cb0cd751f50d720ef6c022f40056ee69ad",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/code_generator_arm64.cc",
      "new_id": "4ebe12e3af7c46171ce2e8dd969decae5277bf52",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/code_generator_arm64.cc"
    },
    {
      "type": "modify",
      "old_id": "86687e60a99ef77776a14e694d944f049b1c4d4d",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/codegen_test.cc",
      "new_id": "f186191a0fa8dbc8368fbc1952d6f977a7bc4c5a",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/codegen_test.cc"
    },
    {
      "type": "modify",
      "old_id": "91811262de6c79372b67cbb69b0ed7f1a28b059c",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/codegen_test_utils.h",
      "new_id": "8c062f03b7392f9310af27fa1e994f90371a497c",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/codegen_test_utils.h"
    },
    {
      "type": "modify",
      "old_id": "0fb90fb370d2c200d67225cc25f0eb6c7316a6ed",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/live_ranges_test.cc",
      "new_id": "60f513ca48670f0d04fbf9e18d01eec824b3ca11",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/live_ranges_test.cc"
    },
    {
      "type": "modify",
      "old_id": "72f995e7730d53c42e3c99b0b54a9e363eccc9e9",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/liveness_test.cc",
      "new_id": "f11f7a977914b148fb9119305620ff69df414853",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/liveness_test.cc"
    },
    {
      "type": "modify",
      "old_id": "8b9e1da0d3ae18f4ac28321502fd085935ebdf20",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/nodes.h",
      "new_id": "d88b0364f5fdcd9b4658909cbcd018b3fe83073a",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/nodes.h"
    },
    {
      "type": "modify",
      "old_id": "c40cbcf52a0c07a0c23210d1278572560dde883c",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/optimizing_compiler.cc",
      "new_id": "f52b96dac9b1643c541e395a2c6edc2f71fd8ba8",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/optimizing_compiler.cc"
    },
    {
      "type": "modify",
      "old_id": "060613d349cee6154b3150e7efcdee1738ec59b0",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/prepare_for_register_allocation.cc",
      "new_id": "fc81740013bf2fa4b46dde8bb13de51ae508ce03",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/prepare_for_register_allocation.cc"
    },
    {
      "type": "modify",
      "old_id": "f6e4d3ef99bc75f2b4a8552f7e6c22a0fb5cb62e",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/prepare_for_register_allocation.h",
      "new_id": "2978add703079c99194ae998ba9119c9891d75be",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/prepare_for_register_allocation.h"
    },
    {
      "type": "modify",
      "old_id": "2f782f39fcbf77e5571837daa926ff7f51770058",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/ssa_liveness_analysis.cc",
      "new_id": "62a70d6b1292dfd77c1d6975b9fc7309a0fe189e",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/ssa_liveness_analysis.cc"
    },
    {
      "type": "modify",
      "old_id": "83ca5bd5fac307e65765d4d819ca77d87811828f",
      "old_mode": 33188,
      "old_path": "compiler/optimizing/ssa_liveness_analysis.h",
      "new_id": "cebd4adcd825a3bc93e3abaa8f36f95ed41ce21a",
      "new_mode": 33188,
      "new_path": "compiler/optimizing/ssa_liveness_analysis.h"
    },
    {
      "type": "modify",
      "old_id": "6b6619fa43be69f723b8cc38e5603899f8b6e5a9",
      "old_mode": 33188,
      "old_path": "test/565-checker-condition-liveness/src/Main.java",
      "new_id": "374e1368857c153893744a666243ea55d80ec764",
      "new_mode": 33188,
      "new_path": "test/565-checker-condition-liveness/src/Main.java"
    },
    {
      "type": "modify",
      "old_id": "7322a35884fa81fd098d365ed3ee60fc53e589ec",
      "old_mode": 33188,
      "old_path": "test/knownfailures.json",
      "new_id": "9378bffbcb47c756f83e552cf665d344b52c0381",
      "new_mode": 33188,
      "new_path": "test/knownfailures.json"
    },
    {
      "type": "modify",
      "old_id": "6840f9ebec06bcc200af17f36e7c98e4df799da2",
      "old_mode": 33188,
      "old_path": "tools/libcore_gcstress_failures.txt",
      "new_id": "965e85c3598fa19ba9d7ec87eddc529fc47310b2",
      "new_mode": 33188,
      "new_path": "tools/libcore_gcstress_failures.txt"
    }
  ]
}
