)]}'
{
  "log": [
    {
      "commit": "37fd800e917269df7824052452bcbd65f5528a3e",
      "tree": "46a1c77e994a5d238d385d579320eaf3224c6630",
      "parents": [
        "98071159668576ae08c2b0de80b0565d58f409f2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 02 14:29:04 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 03 08:35:17 2021 +0000"
      },
      "message": "Use mmap for compiled code for gtest.\n\nAvoid executing code in memory allocated with malloc() as\npointers to that memory can be tagged which interferes with\nmanaged stack walk.\n\nTest: m test-art-host-gtest.\nBug: 177816575\nChange-Id: Id376091f82d5686adf3ab18d2980a42e78de57ce\n"
    },
    {
      "commit": "f3f1c8b41ebee81a34cb104417e1a78e6ad45173",
      "tree": "9cf3b4ef81d4b7c1d6e7bd5861d621b736d1e692",
      "parents": [
        "a7c66e7e5845b26711b261773179abf0f8b34ced"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jan 26 13:44:07 2021 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Jan 28 21:45:09 2021 +0000"
      },
      "message": "Add comment to art_jni_trampoline.\n\nBug: 175226454\nTest: N/A\nChange-Id: Ia83c3afa69d7e1efb9685cfaa5401242712fa02a\n"
    },
    {
      "commit": "a7c66e7e5845b26711b261773179abf0f8b34ced",
      "tree": "a621a91059f9a7d2cefc92710fac2cd28350d133",
      "parents": [
        "af2aabc47d97556bf0fde258e6ddb472eebe0855"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 27 11:41:58 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 28 21:23:25 2021 +0000"
      },
      "message": "Avoid potential null dereference\n\nIn a log statement we were dereferencing a pointer that could\npotentially be null. Add support for safely dereferencing a pointer\nfor ostreams.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: Ibe04811883575902a9b2fe8a064f18de2b2cea7b\n"
    },
    {
      "commit": "3a73ffb70151dbc99fa41f300a237f8c29783e0e",
      "tree": "8debef1b372e5bea27d5265a9019446229955e3d",
      "parents": [
        "e585964df42e9fd2fab6f209810cb03e1b261ab1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 25 14:11:05 2021 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 25 07:01:32 2021 -0800"
      },
      "message": "Revert^4 \"Partial Load Store Elimination\"\n\nThis reverts commit 791df7a161ecfa28eb69862a4bc285282463b960.\nThis unreverts commit fc1ce4e8be0d977e3d41699f5ec746d68f63c024.\nThis unreverts commit b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07.\n\nWe incorrectly failed to include PredicatedInstanceFieldGet in a few\nconditions, including a DCHECK. This caused tests to fail under the\nread-barrier-table-lookup configuration.\n\nReason for revert: Fixed 2 incorrect checks\n\nBug: 67037140\nTest: ./art/test/testrunner/run_build_test_target.py -j70 art-gtest-read-barrier-table-lookup\n\nChange-Id: I32b01b29fb32077fb5074e7c77a0226bd1fcaab4\n"
    },
    {
      "commit": "791df7a161ecfa28eb69862a4bc285282463b960",
      "tree": "a43b022307ea2df82a360164bdf2627cd07eb5b1",
      "parents": [
        "805769bb3800c1e47b0a76ce2c5ebb270a4ac69d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 13:28:56 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Jan 24 17:18:55 2021 +0000"
      },
      "message": "Revert \"Revert^2 \"Partial Load Store Elimination\"\"\n\nThis reverts commit fc1ce4e8be0d977e3d41699f5ec746d68f63c024.\n\nBug: 67037140\n\nReason for revert: Fails read-barrier-table-lookup tests.\n\nChange-Id: I373867c728789bc14a4370b93a045481167d5f76\n"
    },
    {
      "commit": "fc1ce4e8be0d977e3d41699f5ec746d68f63c024",
      "tree": "b656aa7c9e62aa181dfbf7fd4f2a0d32b8bf0704",
      "parents": [
        "c6da1be58086e873c9695f8c4c1a3a8ca718696e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 14:05:13 2021 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:51 2021 -0800"
      },
      "message": "Revert^2 \"Partial Load Store Elimination\"\n\nThis reverts commit 47ac53100303e7e864b7f6d65f17b23088ccf1d6.\n\nThere was a bug in LSE where we would incorrectly record the\nshadow$_monitor_ field as not having a default initial value. This\ncaused partial LSE to be unable to compile the Object.identityHashCode\nfunction, causing crashes. This issue was fixed in a parent CL. Also\nupdated all Offsets in LSE_test to be outside of the object header\nregardless of configuration.\n\nTest: ./test.py --host\nBug: 67037140\n\nReason for revert: Fixed issue with shadow$_monitor_ field and offsets\n\nChange-Id: I4fb2afff4d410da818db38ed833927dfc0f6be33\n"
    },
    {
      "commit": "c6da1be58086e873c9695f8c4c1a3a8ca718696e",
      "tree": "1d445a789a52b537a349aab00ca5fed761cad273",
      "parents": [
        "b171bc4b117e0d8d399f7a71a95ca5ec6cff19ca"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 06:58:44 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:21 2021 -0800"
      },
      "message": "Enable LSE of shadow$_monitor_ field\n\nThe shadow$_monitor_ field is an object header field. Unlike\nshadow_klass this field has regular default initialization and we\nshould record this in LSE. This won\u0027t have any actual effect generally\nsince the only (java) use of the field is in Object.identityHashCode\nand the object always escapes if the value is 0. Still this simplifies\npartial LSE since we will not need to special case this field.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I68a8e4a4d84d42cd206e0dce37cefb19fd099b20\n"
    },
    {
      "commit": "b171bc4b117e0d8d399f7a71a95ca5ec6cff19ca",
      "tree": "2e2c6cfd5e27dc964a6cae1eaf774c875bf4a9bc",
      "parents": [
        "ef01e763eb700b513e4042ef7a1fbd22ecb10fc4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 06:43:28 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 22 07:15:17 2021 -0800"
      },
      "message": "Change offsets in LSE_test to be outside of Object\n\nSeveral tests in load_store_elimination_test used field offsets that\nwere within the ObjectHeader on read-barrier configurations. Since LSE\nspecial cases object-header fields this could cause tests to\nincorrectly fail.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I3146f5310dd4474bbc7079ac2e7584459e5c5ac6\n"
    },
    {
      "commit": "7968cae11af60796b27398a95c32ff0cc31457a4",
      "tree": "b430aba1941e3bbe41f17ed1970c6e96100309c2",
      "parents": [
        "47ac53100303e7e864b7f6d65f17b23088ccf1d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 19 12:02:35 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 22 12:08:58 2021 +0000"
      },
      "message": "arm: Implement VarHandle intrinsics for byte array views.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                             before after\nGetByteArrayViewInt          28.989 0.028\nSetByteArrayViewInt          30.114 0.028\nGetByteArrayViewBigEndianInt 28.974 0.030\nSetByteArrayViewBigEndianInt 30.130 0.030\n\nTest: testrunner.py --target --32 --optimizing\nBug: 71781600\nChange-Id: I40c1c2fdd829f17872c457994010f78549c895de\n"
    },
    {
      "commit": "47ac53100303e7e864b7f6d65f17b23088ccf1d6",
      "tree": "95730c6ba84ef0eebca6236428c8ba51c5eaf280",
      "parents": [
        "51d771db35cc0647bc1fd2a32ed6348d181a7a41"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:41:08 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:41:39 2021 +0000"
      },
      "message": "Revert \"Partial Load Store Elimination\"\n\nThis reverts commit b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07.\n\nBug: 67037140\n\nReason for revert: Fails a few tests.\n\nChange-Id: Icf0635bffbfbba93bf0a5b854a9582c418198136\n"
    },
    {
      "commit": "b8686ce4c93eba7192ed7ef89e7ffd9f3aa6cd07",
      "tree": "1721ee940f978736a2212d693271ee698897cb0b",
      "parents": [
        "625048049558d394d50b6e98885b8c210e481bf1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 02 08:48:33 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 21 17:58:10 2021 +0000"
      },
      "message": "Partial Load Store Elimination\n\nAdd partial load-store elimination to the LSE pass. Partial LSE will\nmove object allocations which only escape along certain execution\npaths closer to the escape point and allow more values to be\neliminated. It does this by creating new predicated load and store\ninstructions that are used when an object has only escaped some of the\ntime. In cases where the object has not escaped a default value will\nbe used.\n\nTest: ./test.py --host\nTest: ./test.py --target\nBug: 67037140\n\nChange-Id: Idde67eb59ec90de79747cde17b552eec05b58497\n"
    },
    {
      "commit": "d5a8695394f8f6e8f9a66752441623dc31b97660",
      "tree": "591ac4892304365282a57262c91e1945ac94c6a9",
      "parents": [
        "2fb37411e42455a00fdad90f0e612c3214e5bd1a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 19 10:35:54 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 21 14:07:57 2021 +0000"
      },
      "message": "Reland \"Improve invokeinterface for nterp.\"\n\nThis reverts commit f1d06474baa2f7c00761db39099b89ddab71bbe4.\n\nBug: 177554973\nBug: 112676029\n\nTest: test.py\nTest: 815-invokeinterface-default\nTest: enable text-to-speech on device, no crash\n\nReason for revert: Fixed issue with recursive default methods\n\nChange-Id: I2fb9336adb6c4fc920f39aa19bfe7f0a92ce059a\n"
    },
    {
      "commit": "09e2337f8a971c318c560444912d50b06d723e35",
      "tree": "77fe1058fe435d0dc8c83b4133b9407f9cc472fa",
      "parents": [
        "f5a84cb8a950632cd4e730839c7f9f34b52c81d1"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:42:11 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 19:14:24 2021 +0000"
      },
      "message": "Avoid passing around LSE Phase\n\nStore LSE phase into an instance field to avoid needing to pass it\naround to various functions and allow functions to assert they are in\nthe correct phase more easily.\n\nTest: ./test.py --host\nChange-Id: I39d39718c24b49b8ad2c541359edca21f7c01c20\n"
    },
    {
      "commit": "f5a84cb8a950632cd4e730839c7f9f34b52c81d1",
      "tree": "0d65d3536ac3e09cf7a3d12ea5b68aac7c005285",
      "parents": [
        "1e414eb83c62ba7eb5b7f2b94e7c988879f3beb3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:35:38 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 19:14:24 2021 +0000"
      },
      "message": "Rename Value::Unknown to Value::PureUnknown\n\nThis matches the IsPureUnknown function and avoids confusion with the\nIsUnknown function which also checks for MergedUnknowns\n\nTest: ./test.py --host\nChange-Id: I1488d52dc36d79043588df76a95229e91e6b8716\n"
    },
    {
      "commit": "1e414eb83c62ba7eb5b7f2b94e7c988879f3beb3",
      "tree": "98079a50e245e388f0f51b8a67de400516483b78",
      "parents": [
        "deef200ec3f54035e580596031b3093ac2fd66cc"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:38:18 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 19:14:24 2021 +0000"
      },
      "message": "Make MaterializeLoopPhis more explicit\n\nMaterializeLoopPhis used a combination of Unknown and Invalid Values\nto keep track of what phis needed to be created. This was somewhat\nconfusing so it has been replaced with using an optional to denote\nwhether we found anything at all and Invalid for if we can\u0027t avoid\nmaterializing values. Also added some correctness DCHECKS.\n\nTest: ./test.py --host\nChange-Id: Icd8578051b33c25ef1a43f8d50f463a367de5057\n"
    },
    {
      "commit": "deef200ec3f54035e580596031b3093ac2fd66cc",
      "tree": "f1b22cc86b57aa86dd430811b8658be094a9c837",
      "parents": [
        "fa81f71b27bb1290848e7ce1fe31b4241110031d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 15 08:53:07 2021 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 15 18:33:40 2021 +0000"
      },
      "message": "Fix minor formatting issue\n\nA previous CL made a declaration have misaligned arguments\n\nTest: None\nChange-Id: Idc5a3c9747c910673c3e8de05d4b20e3d59b32d1\n"
    },
    {
      "commit": "dc281e776c0395b54200c62626f90417f092a2bf",
      "tree": "5e0a458e7ec1968f365b5a6dcc7454d417f11416",
      "parents": [
        "da946fc92b3f6f9664167ef3a0f1324694417b71"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jan 06 12:35:31 2021 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 08 22:35:17 2021 +0000"
      },
      "message": "Add operator\u003c\u003c for HGraph and HInstructions.\n\nInclude helpers for printing arguments as well.\n\nTest: ./test.py --host\nChange-Id: I692fd5bd32a8a39da0defd9454d56ccf2480f229\n"
    },
    {
      "commit": "98873affc25ef6bc96f8c65f828f28530b8f3fcd",
      "tree": "be471ad310edb1aa3a7b3df44528905ec7ce9a6c",
      "parents": [
        "771708f3f0a15c1ae50617b4141c5f5dd47bf94f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 16 12:10:03 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 08 13:44:10 2021 +0000"
      },
      "message": "arm64: Implement VarHandle intrinsics for byte array views.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                             before after\nGetByteArrayViewInt          27.093 0.024\nSetByteArrayViewInt          28.067 0.024\nGetByteArrayViewBigEndianInt 27.142 0.026\nSetByteArrayViewBigEndianInt 28.040 0.025\n\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I604326675042bd63dce8ec15075714003ca9915d\n"
    },
    {
      "commit": "54ed0150a42297a1a5e477d6569619193fcbffd0",
      "tree": "9ba815d49f5222b47f6d81127379c11b8876ba3a",
      "parents": [
        "a714dd3f13b67ea2b0caf3ed15e7691cbb94f1a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 17:29:32 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 07 09:09:26 2021 +0000"
      },
      "message": "Handle VERIFY_ERROR_INSTANTIATION in compiler and nterp.\n\nNterp always supported it, but the compiler was missing a check.\n\nTest: test.py\nTest: 600-verifier-fails\nChange-Id: I8675ca6f61c68c4152212c81843da8248781f18a\n"
    },
    {
      "commit": "bd570591eab2d683eb634ac057dbf9f0e1337f8c",
      "tree": "b50ac19257a71cd9efb2ce596764b445a89cae87",
      "parents": [
        "bde70600e1bfa837fa48ea8da350f60b50272aa6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 23 16:37:44 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 16:31:10 2021 +0000"
      },
      "message": "Handle missing methods in compiler and nterp.\n\nNterp already supported it, but there was a missing check in the\ncompiler.\n\nTest: test.py\nTest: 552-invoke-non-existent-super\n\nChange-Id: Ife9f3f6782f09bd9780940bcb78160aa11db12d2\n"
    },
    {
      "commit": "c9fcfd02a69170cedcd4cf2e66826f246dff6267",
      "tree": "2bc39091ec4dbc71bad37efafde41d13d168f0ca",
      "parents": [
        "782fb716122d37dc4c4d7482afb21f6e68be04b4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 05 16:57:30 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 06 15:06:24 2021 +0000"
      },
      "message": "Optimizing: Add debugging output for HInstruction.\n\nAllow printing individual instruction and its arguments with\nthe HGraphVisualizer. Arguments are dumped \"recursively\"\n(but implemented with a queue instead of actual recursion).\n\nFor example, printing the Return instruction from the method\nMain.testLoop17 in 530-checker-lse yields\n\nv28 Return [i27] dex_pc:23 loop:none\n  i27 Add [i24,i26] dex_pc:22 loop:none\n    i24 Phi [i5,i15] dex_pc:n/a reg:0 is_catch_phi:false loop:none\n      i5 IntConstant dex_pc:0 1 loop:none\n      i15 IntConstant dex_pc:5 2 loop:none\n    i26 InstanceFieldGet [l6] dex_pc:20 field_name:TestClass.i field_type:Int32 loop:none\n      l6 NullCheck [l1] dex_pc:1 env:[[i5,_,_,l1,i2]] loop:none\n        l1 ParameterValue dex_pc:n/a loop:none\n\nTest: Manual; modify LSE to print the instruction above.\nChange-Id: Iaf41ba62cd6a5a36236ad0abca082ebffcf6a20e\n"
    },
    {
      "commit": "cb5f97df7fd3d40a6c92fa46ba98894d5d327efb",
      "tree": "0dd0ef8bb3776517cb24c6a418ff6827a1a25b0a",
      "parents": [
        "f6b9e40be37818012cf13341ea968d5761bb64e4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 05 15:30:41 2021 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 06 10:43:05 2021 +0000"
      },
      "message": "Use ResolveFieldJLS in compiler.\n\nNow that the compiler compiles methods that have\nIncompatibleClassChangeError, we need to use the right ResolveField\nmethod.\n\nMissed from previous commit:\nhttps://android-review.googlesource.com/c/platform/art/+/1539969\n\nTest: art/test/run-test --host --prebuild --compact-dex-level fast --jit --runtime-option -Xjitthreshold:0 --no-relocate --runtime-option -Xcheck:jni 073-mismatched-field\nChange-Id: I41bc878f20512f5fb9b7ca3b3e1db7e933a8c672\n"
    },
    {
      "commit": "f6b9e40be37818012cf13341ea968d5761bb64e4",
      "tree": "933773c663aecae8e3a01069622f42caa3a76445",
      "parents": [
        "6e6f1b2ffb243b3e5ae112bba3cd52031deb31ba"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Wed Dec 30 22:55:57 2020 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Jan 05 22:08:35 2021 +0000"
      },
      "message": "Add constexpr annotations to LSEVisitor member functions.\n\nNewer versions of clang rightly warn about LSEVisitor::Value::Equals\nnot being a constexpr function because it calls the non-constexpr\nfunction LSEVisitor::IsValid(). Silence the warning by marking that\nfunction and its callees as constexpr.\n\nChange-Id: Ib3c36bd02232f8e465eac4eceabfa7ac069a634f\n"
    },
    {
      "commit": "ef28d24d7625943cc2b53e10bbece86a305b3ffd",
      "tree": "2bfd8cf9cbda1d4b2e463493cfdff450c1e9511f",
      "parents": [
        "1332a5702eab9facc2b67ea524e0b41a055524e4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 17 20:21:51 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 28 15:57:32 2020 +0000"
      },
      "message": "Avoid PhiPlaceholder pointers\n\nThe LSE pass passed around const PhiPlaceholder* in many places. This\nmeant it was difficult to extend the PhiPlaceholder system in some\nways. Change to have the list of PhiPlaceholders be implicit and pass\nthem around by value when needed.\n\nTest: 67037140\nBug: ./test.py --host\n\nChange-Id: I57ef0b0d39893340a14055c3f78ae4abc14721e1\n"
    },
    {
      "commit": "6d32723f7f2c319dff1f907f217454d11b8700f9",
      "tree": "80b7e73c45b0068a89ab5675f96a8a05816511f8",
      "parents": [
        "479cbad17b924755c8190e613f3f53c083b0fddd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 11 11:00:25 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 14 17:09:38 2020 +0000"
      },
      "message": "arm: Implement VarHandle intrinsics for arrays.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                      before after\nGetArrayElementInt    28.252 0.021\nGetArrayElementString 29.299 0.025\nSetArrayElementInt    29.737 0.021\nSetArrayElementString 32.842 0.025\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 --optimizing\nBug: 71781600\nChange-Id: I7a77696c33213b0c811be963acca3f61f5ed7593\n"
    },
    {
      "commit": "479cbad17b924755c8190e613f3f53c083b0fddd",
      "tree": "1db99f8748140b16e6df07c5b6822956920f0723",
      "parents": [
        "1480f090379622ed0f4387714f71832711f5ae2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 10 16:10:09 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 14 15:33:09 2020 +0000"
      },
      "message": "arm64: Implement VarHandle intrinsics for arrays.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                      before after\nGetArrayElementInt    26.925 0.020\nGetArrayElementString 27.585 0.024\nSetArrayElementInt    28.168 0.020\nSetArrayElementString 31.162 0.024\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I1be78e6edc2d51210c95597c875489554833ecfc\n"
    },
    {
      "commit": "3ac2f5a25e9cae22ec8f5ae5e28de93f34d6485a",
      "tree": "70b8e5628d1d98490229ae98b370cf3407cfcc04",
      "parents": [
        "0b8b5a731f37491e1b135f577b16a5376bf4b753"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 18 12:23:48 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Dec 10 18:09:40 2020 +0000"
      },
      "message": "Make RTP::Visit robust against input order\n\nReferenceTypePropogation::Visit(ArrayRef) relied on the input having a\nparticular order with known values at the front then topological. This\ncould cause issues if the list was not properly sorted, causing the\nRTP to silently fail. This makes RTP robust against the ordering of\ninputs for this function.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: I03c522ea745f271ce438c82f7c6f3ab476c8249a\n"
    },
    {
      "commit": "0615dd9138d273567da6cca17176bdf560377418",
      "tree": "fb4f5c025b488efc35177b7d55c62de83d27b232",
      "parents": [
        "d259ffb453b04b6b8e0c48daf6dd6554ec80ee97"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 12:30:21 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 10 17:01:19 2020 +0000"
      },
      "message": "arm: Better document memory barriers for Unsafe/VarHandle.\n\nDefer to the codegen for the memory barriers instead of\nexplicit calls to assembler to emit the DMB instruction.\nThis use of MemBarrierKind allows us to better express\nthe required ordering even though codegen then generates\nthe same code anyway.\n\nTest: testrunner.py --target --32 --optimizing\nBug: 71781600\nChange-Id: I80cd8a6040b9f58ade4aa2adc9f98cfdfbdc758e\n"
    },
    {
      "commit": "2610dfeeafc061049452f5cbb778646ce43e8a9a",
      "tree": "14a32fb7454322fe43d27bd0cf9ea35333943c73",
      "parents": [
        "e9fb15381802428696dfaf848ea2187a0956fa7d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 07 16:26:43 2020 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 09 16:29:48 2020 +0000"
      },
      "message": "Enable LSE of shadow-klass field\n\nThe Object.shadow$_klass_ field is special in that it has a non-null\ndefault value. Previously, however, LSE would always treat it as\nhaving an Unknown value. This meant LSE was unable to handle reads\nfrom the shadow$_klass_ field and replace it with the associated\nLoadClass, leading to some allocations not being eliminated.\n\nThis change correctly informs LSE that the value should initially be\nthe LoadClass instruction.\n\nTest: ./test.py --host\nBug: 67037140\n\nChange-Id: I9099001211c6c099a5d1ab4188e2b11f79e2ad9e\n"
    },
    {
      "commit": "86d6cd53385eae365f16f45e1a5947cc6595eb63",
      "tree": "ce94ee1f5d574b2891163f9b9695c97142efd00d",
      "parents": [
        "af17e5f33380ad39d83c31d97a29f3c836150fa1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 02 18:13:10 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 04 14:31:35 2020 +0000"
      },
      "message": "Remove DexCache arrays from image.\n\nRemove the hashtable storage from the image and allocate it at\nruntime instead (but keep the DexCache object in the image).\n\nFor compiled code, we have largely moved to using .bss, so the\nDexCache just costs us unnecessary extra space and dirty pages.\n\nFor interpreted code, the hashtables are too small and will be\noverridden many times over at run-time regardless.\n\nThe next step will be to make DexCache variable-size so it can\nadapt to both of the extremes (taking minimal amount of memory\nfor compiled code and avoiding cache evictions in interpreter).\n\nTest: test.py --host\nChange-Id: I9f89e8f19829b812cf85dea1a964259ed8b87f4d\n"
    },
    {
      "commit": "8331963d62776c3e3c9b15eeedeea5bcbe2eac7a",
      "tree": "dce2b9b2118c390b1b33f92fb7f1539f8be85165",
      "parents": [
        "c8178f5eb06aa54f78237145d7fdc05609c02962"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 02 11:19:28 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 02 22:39:05 2020 +0000"
      },
      "message": "Remove duplicated test in LSA tests\n\nAn execution-subgraph test was duplicated in\nload_store_analysis_test.cc. Remove it.\n\nTest: ./test.py --host\nChange-Id: Ibbd6a530ad3bb03e9760bef8273595170e997e1f\n"
    },
    {
      "commit": "c8178f5eb06aa54f78237145d7fdc05609c02962",
      "tree": "e69d3979efb81ca752f5f2d469279e26f22329aa",
      "parents": [
        "e8cdb0bb53e42316e8c7379d41a647ca672c4bee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 24 10:38:16 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 20:20:49 2020 +0000"
      },
      "message": "arm64: Clean up VarHandle intrinsics implementation.\n\nFix some typos and update some table lookup code that\u0027s\ncurrently unused. Bring in a few things from arm (naming,\nstatic assertion, pull an expression to a named variable).\n\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: If2f2c4417942a272a8ad672c6b876e0569f8827c\n"
    },
    {
      "commit": "526569ac1e4939afeb15c5970e5e6e41e7cbfdcd",
      "tree": "d101df24783a05a4e91e39ce9155e5022ec4defa",
      "parents": [
        "402361beeade7cf30229698ad904cb28c6671706"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 30 15:48:38 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Dec 02 12:20:59 2020 +0000"
      },
      "message": "arm: Implement VarHandle GetAndUpdate intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                      before after\nGetAndAddStaticFieldInt               25.119 0.030\nGetAndAddFieldInt                     28.785 0.031\nGetAndAddStaticFieldFloat             25.195 0.033\nGetAndAddFieldFloat                   28.924 0.034\nGetAndAddAcquireStaticFieldInt        25.101 0.029\nGetAndAddAcquireFieldInt              28.767 0.031\nGetAndAddAcquireStaticFieldFloat      25.186 0.031\nGetAndAddAcquireFieldFloat            28.948 0.034\nGetAndAddReleaseStaticFieldInt        25.138 0.026\nGetAndAddReleaseFieldInt              28.798 0.028\nGetAndAddReleaseStaticFieldFloat      25.186 0.029\nGetAndAddReleaseFieldFloat            28.937 0.031\nGetAndBitwiseOrStaticFieldInt         25.134 0.030\nGetAndBitwiseOrFieldInt               28.860 0.032\nGetAndBitwiseOrAcquireStaticFieldInt  25.126 0.029\nGetAndBitwiseOrAcquireFieldInt        28.801 0.031\nGetAndBitwiseOrReleaseStaticFieldInt  25.129 0.026\nGetAndBitwiseOrReleaseFieldInt        28.794 0.028\nGetAndBitwiseXorStaticFieldInt        25.120 0.030\nGetAndBitwiseXorFieldInt              28.778 0.031\nGetAndBitwiseXorAcquireStaticFieldInt 25.111 0.029\nGetAndBitwiseXorAcquireFieldInt       28.749 0.031\nGetAndBitwiseXorReleaseStaticFieldInt 25.167 0.026\nGetAndBitwiseXorReleaseFieldInt       28.804 0.028\nGetAndBitwiseAndStaticFieldInt        25.194 0.030\nGetAndBitwiseAndFieldInt              28.917 0.031\nGetAndBitwiseAndAcquireStaticFieldInt 25.195 0.029\nGetAndBitwiseAndAcquireFieldInt       28.843 0.031\nGetAndBitwiseAndReleaseStaticFieldInt 25.187 0.026\nGetAndBitwiseAndReleaseFieldInt       28.867 0.028\nGetAndSetStaticFieldInt               24.912 0.030\nGetAndSetStaticFieldString            29.681 0.040\nGetAndSetFieldInt                     28.612 0.031\nGetAndSetFieldString                  32.699 0.041\nGetAndSetAcquireStaticFieldInt        24.875 0.029\nGetAndSetAcquireStaticFieldString     29.692 0.036\nGetAndSetAcquireFieldInt              28.604 0.031\nGetAndSetAcquireFieldString           32.606 0.038\nGetAndSetReleaseStaticFieldInt        24.872 0.026\nGetAndSetReleaseStaticFieldString     29.691 0.037\nGetAndSetReleaseFieldInt              28.699 0.028\nGetAndSetReleaseFieldString           32.721 0.039\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 -optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nBug: 71781600\nChange-Id: I6c110de362c01f0f8e80960aae731038b35fda64\n"
    },
    {
      "commit": "210a78d9ec4349601ac57381046229f4da1197f4",
      "tree": "dba581ba26ba7f6add0c3c1a2968d4f5d5dc8336",
      "parents": [
        "59d4b53e70bc1e0589ce05428c945b4585e28d0f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 30 16:58:05 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Dec 01 20:12:45 2020 +0000"
      },
      "message": "Ensure ClearLoopInformation doesn\u0027t require particular ordering\n\nThe ClearLoopInformation call used to use the RPO list to find\nblocks which potentially had loop-information. This meant that if one\nwas also clearing the dominance information (which is quite common)\none needed to be sure to call ClearLoopInformation before calling\nClearDominanceInformation or else loop information will not be fully\ncleared. This could cause quite perplexing errors if dominance\ninformation is recomputed later (also quite common). This error is in\nfact present in several tests (none of which use loops which is how it\ngot missed).\n\nFix this issue by just looping over all blocks. Also add a new\nGetActiveBlocks function which does the filtering of null blocks\nautomatically. In many cases (such as these) we use RPO purely because\nit doesn\u0027t require filtering. This should be able to replace these\nuses.\n\nTest: ./test.py --host\nChange-Id: I60c7defc409111471064e9bf02b7ae3a0eb10584\n"
    },
    {
      "commit": "3d350a8ab8ca1fbc3e9fd3cab903fa777dfb329b",
      "tree": "d1ec9fe70b68423b28e69e3370c96c970fb39a0f",
      "parents": [
        "2ecdbc45535f7594dc1684a06b47624aaeff8502"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 18 14:14:27 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 01 15:04:38 2020 +0000"
      },
      "message": "arm: Implement VarHandle CAS intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                           before after\nCompareAndSetStaticFieldInt                26.452 0.031\nCompareAndSetStaticFieldString             31.672 0.037\nCompareAndSetFieldInt                      29.569 0.033\nCompareAndSetFieldString                   34.095 0.042\nWeakCompareAndSetStaticFieldInt            26.470 0.031\nWeakCompareAndSetStaticFieldString         31.604 0.038\nWeakCompareAndSetFieldInt                  29.619 0.033\nWeakCompareAndSetFieldString               34.058 0.040\nWeakCompareAndSetPlainStaticFieldInt       26.508 0.026\nWeakCompareAndSetPlainStaticFieldString    31.675 0.031\nWeakCompareAndSetPlainFieldInt             29.635 0.028\nWeakCompareAndSetPlainFieldString          34.116 0.034\nWeakCompareAndSetAcquireStaticFieldInt     26.512 0.030\nWeakCompareAndSetAcquireStaticFieldString  31.661 0.035\nWeakCompareAndSetAcquireFieldInt           29.661 0.032\nWeakCompareAndSetAcquireFieldString        34.120 0.038\nWeakCompareAndSetReleaseStaticFieldInt     26.566 0.027\nWeakCompareAndSetReleaseStaticFieldString  31.659 0.034\nWeakCompareAndSetReleaseFieldInt           29.676 0.029\nWeakCompareAndSetReleaseFieldString        34.204 0.037\nCompareAndExchangeStaticFieldInt           25.550 0.031\nCompareAndExchangeStaticFieldString        31.219 0.039\nCompareAndExchangeFieldInt                 28.923 0.032\nCompareAndExchangeFieldString              33.622 0.040\nCompareAndExchangeAcquireStaticFieldInt    25.559 0.029\nCompareAndExchangeAcquireStaticFieldString 31.177 0.037\nCompareAndExchangeAcquireFieldInt          28.807 0.031\nCompareAndExchangeAcquireFieldString       33.524 0.038\nCompareAndExchangeReleaseStaticFieldInt    25.481 0.027\nCompareAndExchangeReleaseStaticFieldString 31.132 0.036\nCompareAndExchangeReleaseFieldInt          28.825 0.029\nCompareAndExchangeReleaseFieldString       33.511 0.038\n\nOddly, this rewrite makes the Unsafe CAS benchmarks regress\na bit on this configuration. However, experiments show that\nadding useless CLZ+LSR operating on a temporary register\n(corresponding to the old code\u0027s result calculation) would\nrestore the performance to the old level. We prefer not to\nadd these useless instructions as the situation is likely\nto be reversed on different CPU cores.\n\nTest: Covered by existing tests.\nTest: testrunner.py --target --32 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nTest: run-gtests.sh\nBug: 71781600\nChange-Id: I591009d7494533cdf60a47be2f8826144e059ff5\n"
    },
    {
      "commit": "d6bd107ed83502eb0bbaf66911ab036ecf74612d",
      "tree": "81686cdcb1e29b7fc077a9ba31db4c448ac7d007",
      "parents": [
        "f6332e8b09599bea16666e9bbc6bdfd0c3fb2cef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 30 18:42:01 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 30 18:46:19 2020 +0000"
      },
      "message": "Fix invokeinterface sharpened with kRuntimeCall.\n\nBug: 174260111\nBug: 173677667\n\nTest: 728-imt-conflict-zygote\nTest: atest com.android.bootimageprofile.BootImageProfileTest#testSystemServerProfile\nTest: adb install com.google.android.art.apex\nChange-Id: Ie600a0c8c8eb38d9084b796bac9184c06ea0a2f4\n"
    },
    {
      "commit": "ac3fcff3ad61fe468517163f47ec2239dff4e17f",
      "tree": "16c6188f3957ea91453d19c46702ecf71cc64eed",
      "parents": [
        "b1cbfc7419eb0491f49c94191bcc920de2a3724e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 17 12:17:58 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 20 11:03:41 2020 +0000"
      },
      "message": "arm: Implement VarHandle.get/set intrinsics.\n\nIncluding Opaque, Acquire/Release and Volatile variants.\nRefactor Unsafe.get/put operations to share code with the\nnew VarHandle intrinsics, fixing potentially non-atomic\n64-bit \"Ordered\" operations in the process.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                             before after\nGetStaticFieldInt            23.937 0.014\nGetStaticFieldString         24.497 0.019\nGetFieldInt                  27.510 0.016\nGetFieldString               28.000 0.021\nGetAcquireStaticFieldInt     23.953 0.017\nGetAcquireStaticFieldString  24.532 0.021\nGetAcquireFieldInt           27.457 0.020\nGetAcquireFieldString        28.137 0.023\nGetOpaqueStaticFieldInt      23.955 0.014\nGetOpaqueStaticFieldString   24.530 0.019\nGetOpaqueFieldInt            27.461 0.016\nGetOpaqueFieldString         28.164 0.021\nGetVolatileStaticFieldInt    23.971 0.017\nGetVolatileStaticFieldString 24.612 0.021\nGetVolatileFieldInt          27.518 0.020\nGetVolatileFieldString       28.178 0.023\nSetStaticFieldInt            25.291 0.014\nSetStaticFieldString         28.873 0.018\nSetFieldInt                  28.676 0.016\nSetFieldString               32.286 0.021\nSetVolatileStaticFieldInt    25.339 0.021\nSetVolatileStaticFieldString 28.904 0.028\nSetVolatileFieldInt          28.730 0.023\nSetVolatileFieldString       32.322 0.030\nSetOpaqueStaticFieldInt      25.343 0.014\nSetOpaqueStaticFieldString   28.992 0.018\nSetOpaqueFieldInt            28.749 0.016\nSetOpaqueFieldString         32.317 0.022\nSetReleaseStaticFieldInt     25.354 0.016\nSetReleaseStaticFieldString  28.906 0.025\nSetReleaseFieldInt           28.678 0.017\nSetReleaseFieldString        32.262 0.027\n\nTest: Covered by existing test 712-varhandle-invocations.\nTest: testrunner.py --target --32 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nBug: 71781600\nChange-Id: I0ac6d0c154791d787d5c4abd8095e3c2eee9abbb\n"
    },
    {
      "commit": "86fe9b85c5243debe5f695c1625bae03bf738452",
      "tree": "5de78b8292a0225b617e1825817cbd12b46b6fa3",
      "parents": [
        "cc9df4fa1e666b90c5dd8eac94773763f8421f1e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 16 16:54:01 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 18 20:26:53 2020 +0000"
      },
      "message": "Revert^4 \"Partial LSE analysis \u0026 store removal\"\n\nWe incorrectly handled merging unknowns in some situations.\nSpecifically in cases where we are unable to materialize loop-phis we\ncould end up with PureUnknowns which could end up hiding stores that\nneed to be kept.\n\nIn an unrelated issue we were incorrectly considering some values as\nescapes when live at the point of an invoke. Since\nSearchPhiPlaceholdersForKeptStores used a more precise notion of\nescapes we could end up removing stores without being able to replace\nthe values.\n\nThis reverts commit 2316b3a0779f3721a78681f5c70ed6624ecaebef.\nThis unreverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Fixed issue causing incorrect store elimination\nTest: ./test.py --host\nTest: Boot cuttlefish\n      atest FrameworksServicesTests:com.android.server.job.BackgroundRestrictionsTest#testPowerWhiteList\n\nChange-Id: I2ebae9ccfaf5169d551c5019b547589d0fce1dc9\n"
    },
    {
      "commit": "c2d5c707a2cfeaaafcf8f5d7e5193dd2d5c59592",
      "tree": "5d978a37a409b8801e6e00178a05c0857cef58ef",
      "parents": [
        "cfc6e9d55263d49e2d8d19a4a3a7d38567bb4fb9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 15:28:33 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 17 09:11:29 2020 +0000"
      },
      "message": "arm64: Implement VarHandle GetAndBitwiseOp intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                      before after\nGetAndBitwiseOrStaticFieldInt         23.917 0.026\nGetAndBitwiseOrFieldInt               26.828 0.026\nGetAndBitwiseOrAcquireStaticFieldInt  23.908 0.025\nGetAndBitwiseOrAcquireFieldInt        26.822 0.026\nGetAndBitwiseOrReleaseStaticFieldInt  23.906 0.026\nGetAndBitwiseOrReleaseFieldInt        26.831 0.026\nGetAndBitwiseXorStaticFieldInt        23.829 0.026\nGetAndBitwiseXorFieldInt              26.784 0.026\nGetAndBitwiseXorAcquireStaticFieldInt 23.841 0.025\nGetAndBitwiseXorAcquireFieldInt       26.788 0.026\nGetAndBitwiseXorReleaseStaticFieldInt 23.835 0.026\nGetAndBitwiseXorReleaseFieldInt       26.788 0.026\nGetAndBitwiseAndStaticFieldInt        23.874 0.026\nGetAndBitwiseAndFieldInt              26.797 0.026\nGetAndBitwiseAndAcquireStaticFieldInt 23.871 0.025\nGetAndBitwiseAndAcquireFieldInt       26.792 0.026\nGetAndBitwiseAndReleaseStaticFieldInt 23.865 0.026\nGetAndBitwiseAndReleaseFieldInt       26.786 0.026\n\nTest: Covered by existing test 712-varhandle-invocations.\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I8263f6b1b125c46190da06a9a05e60335bf69992\n"
    },
    {
      "commit": "a07de551da5147f3635c665a31f262cf65647118",
      "tree": "d6f8199cc45ab8b6ef779f97ef0e8f0d04520ef8",
      "parents": [
        "4483d2a4ed7e6c018e304c234484940ec0476039"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Sun Nov 01 22:42:43 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Nov 16 14:31:54 2020 +0000"
      },
      "message": "Revert^2 \"ART: Fix breaking changes from recent VIXL update.\"\n\nThis reverts commit eeaf47f7c9bbad29afab84a0f199a5751d9c616b.\n\nAlso fixes the gtest failure when VIXL simulator stack\nwas overflown.\n\nTest: test-art-target, test-art-host.\nTest: ART_USE_READ_BARRIER\u003dfalse \\\n      SANITIZE_HOST\u003daddress \\\n      ASAN_OPTIONS\u003d\u0027detect_leaks\u003d0\u0027 \\\n      SOONG_ALLOW_MISSING_DEPENDENCIES\u003dtrue \\\n      ART_HEAP_POISONING\u003dtrue m test-art-host-gtest\n\nChange-Id: Ibc1f21204940083879f767d6993127bdde8326af\n"
    },
    {
      "commit": "e1510d4b8aff0d025adacac8e6d42fa9d1dcedf9",
      "tree": "77150893b2e584a1913dddd84287b4a5312c4c19",
      "parents": [
        "436977d92a803be16ba2ad825793daeb462ce373"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 11:07:13 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 16 10:37:00 2020 +0000"
      },
      "message": "arm64: Implement VarHandle GetAndAdd intrinsics.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                 before after\nGetAndAddStaticFieldInt          23.640 0.026\nGetAndAddFieldInt                26.673 0.026\nGetAndAddStaticFieldFloat        23.588 0.029\nGetAndAddFieldFloat              26.732 0.029\nGetAndAddAcquireStaticFieldInt   23.618 0.025\nGetAndAddAcquireFieldInt         26.677 0.026\nGetAndAddAcquireStaticFieldFloat 23.592 0.028\nGetAndAddAcquireFieldFloat       26.736 0.029\nGetAndAddReleaseStaticFieldInt   23.612 0.026\nGetAndAddReleaseFieldInt         26.708 0.026\nGetAndAddReleaseStaticFieldFloat 23.596 0.029\nGetAndAddReleaseFieldFloat       26.747 0.029\n\nTest: Covered by existing test 712-varhandle-invocations.\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nChange-Id: I3e435a3635f2d7164b9b410f5588fefb076edd07\n"
    },
    {
      "commit": "436977d92a803be16ba2ad825793daeb462ce373",
      "tree": "5eeb799688f4990af7d82f4f83e2c57e79229935",
      "parents": [
        "cc5629c1480b3be6189391b335d17911c9ddb6ad"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 12:41:06 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Nov 16 09:58:38 2020 +0000"
      },
      "message": "arm64: VarHandle intrinsics improvements.\n\nUnify allocation of the temporary register for offset.\nWe now allocate an extra temporary for most Get intrinsics\nbut arm64 has enough registers and this simplifies the code.\n\nAdd bug number to cases unimplemented due to b/173104084.\n\nAnd use CBNZ instead of CMP+BNE when checking the primitive\ntype for references (kPrimNot has value 0).\n\nTest: testrunner.py --target --64 --optimizing\nBug: 71781600\nBug: 173104084\nChange-Id: Ia39f4ff2810ef2e310545b65792b2f988c8c38fe\n"
    },
    {
      "commit": "cc5629c1480b3be6189391b335d17911c9ddb6ad",
      "tree": "8fe09ed193c0514e614ea6e3b3bc2a17f453d5ca",
      "parents": [
        "2316b3a0779f3721a78681f5c70ed6624ecaebef"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Oct 30 16:12:01 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 14 21:55:00 2020 +0000"
      },
      "message": "Clarify allocation entry point semantics\n\nTest: Treehugger\nBug: 171993478\nChange-Id: I03a95b7028ef98a5438011ce53b43de44f23bec8\n"
    },
    {
      "commit": "2316b3a0779f3721a78681f5c70ed6624ecaebef",
      "tree": "8aa4682729b839a97b2578e6cbe05ee5d35be923",
      "parents": [
        "aeb7f9f8fe718219cfb04e0da5df62683250477d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Nov 14 01:28:22 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Nov 14 02:54:26 2020 +0000"
      },
      "message": "Revert^3 \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit b6837f0350ff66c13582b0e94178dd5ca283ff0a\nThis unreverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis rereverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\nBug: 173120044\n\nReason for revert: Git-blame seems to point to the CL as cause of\nb/173120044. Revert during investigation.\n\nChange-Id: I46f557ce79c15f07f4e77aacded1926b192754c3\n"
    },
    {
      "commit": "b6837f0350ff66c13582b0e94178dd5ca283ff0a",
      "tree": "f79fff81352545efe967850e3d17e32255dcfecd",
      "parents": [
        "32c2eb81320f24b5bab24754204b8be95faa08b0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Nov 12 17:05:28 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 13 10:07:21 2020 +0000"
      },
      "message": "Revert^2 \"Partial LSE analysis \u0026 store removal\"\n\nA ScopedArenaAllocator in a single test was accidentally loaded using\noperator new which is not supported. This caused a memory leak.\n\nThis reverts commit fe270426c8a2a69a8f669339e83b86fbf40e25a1.\nThis unreverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: Fixed memory leak in\nLoadStoreAnalysisTest.PartialEscape test case\n\nTest: SANITIZE_HOST\u003daddress ASAN_OPTIONS\u003ddetect_leaks\u003d0 m test-art-host-gtest-dependencies\n      Run art_compiler_tests\n\nChange-Id: I34fa2079df946ae54b8c91fa771a44d56438a719\n"
    },
    {
      "commit": "32c2eb81320f24b5bab24754204b8be95faa08b0",
      "tree": "6c8d6978f05d2046baf26829d7ba00ae8ef647ad",
      "parents": [
        "b209a043a0d5965f25dcb9fde2049df493dcf602"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 10 16:58:47 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 13 08:59:35 2020 +0000"
      },
      "message": "arm64: Implement VarHandle GetAndSet intrinsics.\n\nAdd an extra test to 160-read-barrier-stress. The main path\nis sufficiently exercised by 712-varhandle-invocations.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                  before after\nGetAndSetStaticFieldInt           23.809 0.027\nGetAndSetStaticFieldString        27.112 0.035\nGetAndSetFieldInt                 26.988 0.028\nGetAndSetFieldString              29.626 0.034\nGetAndSetAcquireStaticFieldInt    23.900 0.025\nGetAndSetAcquireStaticFieldString 27.084 0.034\nGetAndSetAcquireFieldInt          26.972 0.026\nGetAndSetAcquireFieldString       29.617 0.032\nGetAndSetReleaseStaticFieldInt    23.876 0.027\nGetAndSetReleaseStaticFieldString 27.093 0.035\nGetAndSetReleaseFieldInt          26.969 0.028\nGetAndSetReleaseFieldString       29.609 0.034\n\nTest: testrunner.py --target --64 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\n      (Ignore two pre-existing checker test failures.)\nBug: 71781600\nChange-Id: I6a03858b1446354919cd4d08348ef93b725aafc6\n"
    },
    {
      "commit": "fe270426c8a2a69a8f669339e83b86fbf40e25a1",
      "tree": "c048fdec8e37cefb7238218a087709c01d5d3923",
      "parents": [
        "e17530a19a717879c8dd8e70073de6aaf4ee455f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 14:12:52 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 12 16:33:50 2020 +0000"
      },
      "message": "Revert \"Partial LSE analysis \u0026 store removal\"\n\nThis reverts commit bb6cda60e4418c0ab557ea4090e046bed8206763.\n\nBug: 67037140\n\nReason for revert: memory leak detected in the test.\n\nChange-Id: I81cc2f61494e96964d8be40389eddcd7c66c9266\n"
    },
    {
      "commit": "e17530a19a717879c8dd8e70073de6aaf4ee455f",
      "tree": "745e7e23519d37ae5fcafcf9f63c5e707779ce1b",
      "parents": [
        "bb6cda60e4418c0ab557ea4090e046bed8206763"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 11 17:02:26 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 12 10:53:53 2020 +0000"
      },
      "message": "arm64: Fix VarHandle intrinsics for non-Baker read barrier.\n\nIt turns out the artReadBarrierSlow() ignores the passed\nreference and reloads the field from the object. This makes\nsome of the VarHandle intrinsics broken for the TABLELOOKUP\nconfiguration. This change disables the broken variants of\nthese intrinsics (but leaves support code in place) and\ncleans up locations for those variants that remain active.\n\nAlso refactor reference argument checks and do a few other\nsmall cleanups (renames, comment updates, etc.).\n\nTest: testrunner.py --target --64 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\n      (Ignore two pre-existing checker test failures.)\nBug: 71781600\nChange-Id: I8d28a4883771a8db2b283737bb643b36c7038c26\n"
    },
    {
      "commit": "bb6cda60e4418c0ab557ea4090e046bed8206763",
      "tree": "f6b94510108cb653a80e0ea14d50ad6616c9f44a",
      "parents": [
        "670ff8854cf075617e0abee77b2259903757d86e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 09 13:24:56 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 12 02:08:44 2020 +0000"
      },
      "message": "Partial LSE analysis \u0026 store removal\n\nThis is the first piece of partial LSE for art. This CL adds analysis\ntools needed to implement partial LSE. More immediately, it improves\nLSE so that it will remove stores that are provably non-observable\nbased on the location they occur. For example:\n\n```\nFoo o \u003d new Foo();\nif (xyz) {\n  check(foo);\n  foo.x++;\n} else {\n  foo.x \u003d 12;\n}\nreturn foo.x;\n```\n\nThe store of 12 can be removed because the only escape in this method\nis unreachable and was not executed by the point we reach the store.\n\nThe main purpose of this CL is to add the analysis tools needed to\nimplement partial Load-Store elimination. Namely it includes tracking\nof which blocks are escaping and the groups of blocks that we cannot\nremove allocations from.\n\nThe actual impact of this change is incredibly minor, being triggered\nonly once in a AOSP code. go/lem shows only minor effects to\ncompile-time and no effect on the compiled code. See\ngo/lem-allight-partial-lse-2 for numbers. Compile time shows an\naverage of 1.4% regression (max regression is 7% with 0.2 noise).\n\nThis CL adds a new \u0027reachability\u0027 concept to the HGraph. If this has\nbeen calculated it allows one to quickly query whether there is any\nexecution path containing two blocks in a given order. This is used to\ndefine a notion of sections of graph from which the escape of some\nallocation is inevitable.\n\nTest: art_compiler_tests\nTest: treehugger\nBug: 67037140\nChange-Id: I0edc8d6b73f7dd329cb1ea7923080a0abe913ea6\n"
    },
    {
      "commit": "eff9b011ddad5119ac6ba609d572e9b265c6d878",
      "tree": "1379b2a49120fe78eb7075409b744078ddbbed54",
      "parents": [
        "37f4945a45eeb5665b6d75eddc29906ac7759370"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 06 14:22:08 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 11 15:21:32 2020 +0000"
      },
      "message": "Move VarHandle fences to unreachable intrinsics.\n\nThese were erroneously moved to unimplemented intrinsics in\n    https://android-review.googlesource.com/1372099 .\n\nTest: m\nBug: 71781600\nChange-Id: Ic348ec1be92e7db8722575dd44f22826e770cc75\n"
    },
    {
      "commit": "1bff99f706a1b1a4c1799e0f037d9f59f303587a",
      "tree": "06cabecf52fbd336a2e65dbde991c45ce10bc64a",
      "parents": [
        "b15e8797d2ca6fb480a940887c66dd2aae7c9065"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 02 15:07:33 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 10 10:36:19 2020 +0000"
      },
      "message": "arm64: Implement VarHandle CAS intrinsics.\n\nAnd refactor Unsafe CAS intrinsics for code reuse.\n\nAdd extra tests to the 160-read-barrier-stress to test the\nslow paths. The main path is sufficiently exercised by the\n712-varhandle-invocations test. The refactored Unsafe CAS is\nalready covered by 004-Unsafe and 160-read-barrier-stress.\n\nUsing benchmarks provided by\n    https://android-review.googlesource.com/1420959\non blueline little cores with fixed frequency 1420800:\n                                           before after\nCompareAndSetStaticFieldInt                24.721 0.026\nCompareAndSetStaticFieldString             29.015 0.032\nCompareAndSetFieldInt                      27.237 0.028\nCompareAndSetFieldString                   31.326 0.033\nWeakCompareAndSetStaticFieldInt            24.735 0.027\nWeakCompareAndSetStaticFieldString         28.970 0.031\nWeakCompareAndSetFieldInt                  27.252 0.028\nWeakCompareAndSetFieldString               31.309 0.036\nWeakCompareAndSetPlainStaticFieldInt       24.738 0.026\nWeakCompareAndSetPlainStaticFieldString    29.004 0.030\nWeakCompareAndSetPlainFieldInt             27.252 0.027\nWeakCompareAndSetPlainFieldString          31.326 0.035\nWeakCompareAndSetAcquireStaticFieldInt     24.728 0.026\nWeakCompareAndSetAcquireStaticFieldString  28.977 0.030\nWeakCompareAndSetAcquireFieldInt           27.250 0.027\nWeakCompareAndSetAcquireFieldString        31.306 0.034\nWeakCompareAndSetReleaseStaticFieldInt     24.738 0.026\nWeakCompareAndSetReleaseStaticFieldString  28.994 0.032\nWeakCompareAndSetReleaseFieldInt           27.250 0.028\nWeakCompareAndSetReleaseFieldString        31.312 0.035\nCompareAndExchangeStaticFieldInt           23.898 0.026\nCompareAndExchangeStaticFieldString        28.544 0.032\nCompareAndExchangeFieldInt                 26.787 0.027\nCompareAndExchangeFieldString              31.022 0.034\nCompareAndExchangeAcquireStaticFieldInt    23.957 0.026\nCompareAndExchangeAcquireStaticFieldString 28.586 0.031\nCompareAndExchangeAcquireFieldInt          26.785 0.026\nCompareAndExchangeAcquireFieldString       31.011 0.033\nCompareAndExchangeReleaseStaticFieldInt    23.963 0.026\nCompareAndExchangeReleaseStaticFieldString 28.511 0.032\nCompareAndExchangeReleaseFieldInt          26.729 0.027\nCompareAndExchangeReleaseFieldString       30.938 0.034\n\nTest: testrunner.py --target --64 --optimizing\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\n      (Ignore two pre-existing checker test failures.)\nBug: 71781600\nChange-Id: I01b2218bb812bc636a941f9bd67c844aee5f8b41\n"
    },
    {
      "commit": "8f2eb25ca40136a36a5d7002c8ca5a05723e334e",
      "tree": "51778c592bdd3eb65d3fde8c21997eec30bd1e23",
      "parents": [
        "8411c5ddb824bae1d3202a3bc2e42c77d351e916"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 06 13:39:54 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Nov 06 15:26:27 2020 +0000"
      },
      "message": "Remove NeedsDexCache logic from the compiler.\n\nThe compiled code and runtime stubs don\u0027t need to have direct access to\nthe dex cache anymore.\n\nTest: test.py\nChange-Id: Id3aab9b10445ba2599e1a9ffd8e36506a745bfec\n"
    },
    {
      "commit": "94d2c81caaa0a7155b0ec45ac2bd55247a50fb9a",
      "tree": "128954d088110272a2e2d8baf3f994a1a9e96183",
      "parents": [
        "1960c42c5df95f3011c020b07328d03716532037"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 05 10:04:45 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 05 10:18:14 2020 +0000"
      },
      "message": "Fix DCHECK()s in read barrier slow paths.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/1478798\nto fix non-Baker read barrier configurations.\n\nTest: ART_READ_BARRIER_TYPE\u003dTABLELOOKUP m test-art-host-gtest\nBug: 170286013\nChange-Id: I6044d4fba720e0ed11b254990021f5b8236964a3\n"
    },
    {
      "commit": "01b65526c1dce94abb8ed98d473ddcd2b8fcd692",
      "tree": "edc3f88f666415ffb459bad64a585fa576dc65ab",
      "parents": [
        "908759b00ba0d84445636cc7cfcaf830b45e7b73"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 28 15:43:54 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 04 18:06:08 2020 +0000"
      },
      "message": "Implement Reference.getReferent() intrinsic.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 170286013\nChange-Id: I4762f7c1cf3d61de2215ec8f1d14be80289c2372\n"
    },
    {
      "commit": "de91ca90389e4b41ed27b320a6c43ff56a6d75ff",
      "tree": "2e18ff33d30fce88d578ea68b8b1037755aececc",
      "parents": [
        "9ca92fb4646eccff9f972f6a2a21709676b65460"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 13:41:40 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 29 15:42:52 2020 +0000"
      },
      "message": "Refactor Integer.valueOf() intrinsic implementation.\n\nPrepare for Reference.getReferent() intrinsic implementation\nby a refactoring to separate the retrieval of an intrinsic\nmethod\u0027s declaring class to its own helper function, rather\nthan being a part of a larger one.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 170286013\nChange-Id: Ib6c0e55d0c6fcc932999428f21c51afe32ab7ef2\n"
    },
    {
      "commit": "eeaf47f7c9bbad29afab84a0f199a5751d9c616b",
      "tree": "3b1572bd8c3cd89dbe060b52d1760bd857e999ed",
      "parents": [
        "1f3612f93759823d630e117be5216f694e0702e9"
      ],
      "author": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Wed Oct 28 15:59:29 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 28 17:42:50 2020 +0000"
      },
      "message": "Revert \"ART: Fix breaking changes from recent VIXL update.\"\n\nRevert submission 1331125-VIXL_UPDATE_SVE\n\nReason for revert: broken build git_master-art-host/art-gtest-heap-poisoning @ 6936943\nReverted Changes:\nIc10af84a0:Merge remote-tracking branch \u0027aosp/upstream-master...\nI752a0b0ba:ART: Fix breaking changes from recent VIXL update....\n\nBug: 171879890\nChange-Id: Idb0d5c2e88948d799a4ef2c828be2828ea2270ea\n"
    },
    {
      "commit": "4955036617ff4940bd35fa8ce63f0728c1042902",
      "tree": "20ebe9c047b9ed5e21e99f2f0a00a3946fa731e8",
      "parents": [
        "036b0708c12a33469db4a5adde9ded152b5eb700"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jul 05 18:23:03 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 28 12:03:34 2020 +0000"
      },
      "message": "ART: Fix breaking changes from recent VIXL update.\n\nAlso fixes the vixl-related headers includes.\n\nTest: test-art-target, test-art-host\n\nChange-Id: I752a0b0baf741aa2a0693253155042104c8b3b27\n"
    },
    {
      "commit": "eb9eb00868106af52386d7113a8aafaa6d44e8b6",
      "tree": "05b1243b30b31d6e2d3215ebdaa329c90d9875f8",
      "parents": [
        "5fa36f99fdb5617d1ced977c637dcaa2762704fc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 02 13:54:19 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 19 17:01:09 2020 +0000"
      },
      "message": "Faster @CriticalNative for boot image.\n\nThe @CriticalNative call does not need the target method, so\nwe can avoid one instruction on x86, x86-64 and arm64. The\ncurrent approach for arm does not allow such optimization.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --64 --optimizing\nBug: 112189621\nChange-Id: I11b7e415be2697757cbb11c9cccf4058d1d72d7d\n"
    },
    {
      "commit": "8d34a182fea1b24f7b8361b55e930cb953cf3fb2",
      "tree": "4f5ed9d9ac417dfd69fd18f64412b2272c448e05",
      "parents": [
        "8ecbc4e844fc3b73e6a5c5151eda914d53297180"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 16 09:46:58 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 07 08:32:52 2020 +0000"
      },
      "message": "Change interface conflict stub to take the interface method.\n\nTo avoid doing dex cache lookup, pass the interface method instead. This\ncosts a few hundred KBs on speed compiled APKs (\u003c 0.5% code size), but\nimproves performance when hitting a conflict (as seen on dogfood data).\n\nFor nterp, we currently pass the conflict method instead of the\ninterface method. We need to handle default methods before optimizing\nit.\n\nThis removes our last use of dex cache in compiled code. A follow-up CL\nwill remove the NeedsDexCacheOfDeclaringClass from HInvokeInterface.\n\nTest: test.py\n\nChange-Id: I3cdd4543ad7d904b3e81950af46a48a48af6991a\n"
    },
    {
      "commit": "8ecbc4e844fc3b73e6a5c5151eda914d53297180",
      "tree": "702ce0e2469b46bb63440d7b6ddb6a9e8b1637c2",
      "parents": [
        "cbbc8df2264e8ce0528e7b7bfe43e430e5bb3e81"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 06 12:57:45 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 06 15:54:28 2020 +0000"
      },
      "message": "Fix compiler crash in BCE.\n\nRemove a bogus call to HInstruction::AsConstant() that\ncauses a crash if the instruction is not a constant.\n\nTest: New test in 449-checker-bce-rem\nTest: testrunner.py --host --optimizing -t 449-checker-bce-rem\nBug: 169669115\nChange-Id: I7f962441b652538b2d1cc4238eb9ab66abc1286c\n"
    },
    {
      "commit": "2d98dc23d6e9b74ef004d4358d6c3d53503b12a7",
      "tree": "52e950bc8fead0bbb93cef38b17cec9723604fe1",
      "parents": [
        "cd8ffcbca3e25c3ee8c0ffeaadac4167db6f2b58"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 01 11:21:37 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 02 10:02:09 2020 +0000"
      },
      "message": "arm64: VarHandle.{get,set}{Opaque,Acquire,Volatile}.\n\nExtend the VarHandle.{get,set} for fields to similar\nvariants with additional memory ordering requirements.\n\nTest: testrunner.py --target --64 -t 712-varhandle-invocations\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nBug: 65872996\nChange-Id: I400802a1e089a5a81149316f88bb90979f8988e6\n"
    },
    {
      "commit": "baade40270fbfdc36cd0500d5245408debe7737e",
      "tree": "6c081f03e5531cdb90da8e0b53c51b5f0358e628",
      "parents": [
        "8f63f1084b013a129f66cf8a7ed8ab1cae9f02aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 14:45:39 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 14:51:18 2020 +0000"
      },
      "message": "arm: Fix LoadClass/BssEntry{Public,Package}\n\nAlso update oatdump to list the new entries.\n\nTest: testrunner.py --target --32 --optimizing -t 727\nBug: 161898207\nChange-Id: I34b400531498cfac3c9606fa82b0894841054457\n"
    },
    {
      "commit": "8f63f1084b013a129f66cf8a7ed8ab1cae9f02aa",
      "tree": "6e9bbf5ad71a55f701f740e2995e0b84e9b87307",
      "parents": [
        "7aa2bfc09541ea5d2516738de84c24cd0269fed0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 12:10:28 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 30 13:58:32 2020 +0000"
      },
      "message": "Faster access to unresolved classes from compiled code.\n\nAdd two new load kinds to LoadClass, similar to kBssEntry\nbut using the access-checking entrypoint on the slow-path.\nOne is used for classes that are in the literal package and\nthe other for classes outside the literal package of the\ncompiling class. Associate new .bss entries with these load\nkinds and update them from entrypoints based on the resolved\nclass properties. If the resolved class is public, both\ntypes of entries can be updated, otherwise only the package\nlocal entry can be updated and only if the defining class\nloader of the class is the same as the caller\u0027s defining\nclass loader (which is identical for all code in an oat\nfile) because the run time access check for same package\nrequires both class loader and literal package name match.\n\nTest: Additional tests in 727-checker-unresolved-class.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 161898207\nChange-Id: I281e06ac2825caf81c6d7ee3128af833abd39992\n"
    },
    {
      "commit": "407468761d72c1031a871c18c29238135d9f0a88",
      "tree": "d9655da2c6a95806476f3b4bfcfd522feafaad06",
      "parents": [
        "9636062c4d4839bbb2fd979ee56b2f38d8615f1e"
      ],
      "author": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Sep 29 13:58:10 2020 +0100"
      },
      "committer": {
        "name": "Martin Stjernholm",
        "email": "mast@google.com",
        "time": "Tue Sep 29 14:55:40 2020 +0000"
      },
      "message": "Link libart-disassembler statically into static libart-compiler.\n\nNecessary to avoid runtime dlopen of non-existing\nlibart(d)-disassembler.so in host dex2oat. This increases the stripped\ndex2oat binary size by 4.8% or ~800 KB.\n\nTest: art/tools/buildbot-build.sh --host \u0026\u0026 \\\n  art/test/testrunner/testrunner.py --optimizing --host --ndebug -t 465\n  with and without HOST_PREFER_32_BIT\u003dtrue\nBug: 145934348\nChange-Id: I623019132175bd0430d30a421655484bdcb71857\n"
    },
    {
      "commit": "270e10a8122d4a2abe4d92db55451e2b62f32188",
      "tree": "c79d39ac402c7c1dce256da512f4fa6fb9793bd4",
      "parents": [
        "1938b35c92396fdf8c4386e191e4fc2d95bb1898"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 11:48:47 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 14:55:24 2020 +0000"
      },
      "message": "Improve codegen for referrer\u0027s class...\n\n... for unresolved compiling class.\n\nTest: Update test 727-checker-unresolved-class.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --host --optimizing --interpreter --jvm -t 727\nBug: 161898207\nChange-Id: I1a931179060ae435ca52d5a6eca3c641b9356c03\n"
    },
    {
      "commit": "2f47a3110a16d60128a16b280191941df4ecf237",
      "tree": "37894e0e71d843de44f23c9b32d367ab99e51a67",
      "parents": [
        "e470ff7e4e5e58d292b316681fcf4e889e80638a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 20 14:23:45 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 28 09:22:55 2020 +0100"
      },
      "message": "Integer.divideUnsigned() intrinsic on ARM.\n\nTest: Covered by 082-inline-execute.\nTest: testrunner.py --target --optimizing --32\nBug: 156736938\nChange-Id: I902c3b62b4382f94b045a36493ca7b1c799746d2\n"
    },
    {
      "commit": "a3bd4ec050e10fbfb6df0fe024bc6f3851bcc326",
      "tree": "8a373f87b05b3580f564bd8561bf0dd4ebb9161e",
      "parents": [
        "b0f405e1482df602fc57ee2ed4434456c4dc2555"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Thu Aug 27 16:26:17 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 25 09:16:33 2020 +0000"
      },
      "message": "Introduce Long.divideUnsigned() intrinsic on ARM64.\n\nExtends the 082-inline-execute test and reorders\ndivideUnsigned intrinsic code before VarHandle code.\n\nTest: 082-inline-execute.\nTest: testrunner.py --target --optimizing --64\nBug: 156736938\nChange-Id: I8acf3db184da30640aff36cf02570ae0c6d2b88c\n"
    },
    {
      "commit": "b0f405e1482df602fc57ee2ed4434456c4dc2555",
      "tree": "61d493a3ae65489090b186767ae83c7c1d893de1",
      "parents": [
        "5ba66998281af9719e5d5ef84fd095181d4cf9a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 24 15:10:35 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 25 08:39:47 2020 +0000"
      },
      "message": "Move the resolved_method_reference to HInvoke.\n\nIn order to also be used by HInvokeInterface.\n\nTest: test.py\nChange-Id: If72071a5347a13843f2c3ad8da4af4d6aaee6444\n"
    },
    {
      "commit": "5ba66998281af9719e5d5ef84fd095181d4cf9a8",
      "tree": "96d6b307af969eade69f390a1af3ab623523b8a1",
      "parents": [
        "6076b6959ac6dd2f5f6c93d119b37899f70a30a8"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Sep 23 15:04:36 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 25 04:46:32 2020 +0000"
      },
      "message": "Refactor Escape-analysis to use visitors\n\nThe current escape-analysis is entirely built around finding a single\n\u0027does-escape\u0027 boolean (and a few ancillary booleans). This change adds\na new VisitEscapes function that allows one to more easily track which\ninstructions cause escapes and rewrites the other escape-analysis\nfunctions in terms of this VisitEscapes function.\n\nTest: ./test.py --host\nBug: 67037140\nChange-Id: Ie5ad7580544be21713d040c2943cae19ff5414d4\n"
    },
    {
      "commit": "370948e9b91bd1a63d548b434a5d155b794c47c9",
      "tree": "9b191c71fd7e37d6c4dea54376b8402679f68e8a",
      "parents": [
        "c616530e7290ad21693b9ec626c55811c1f2c473"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Wed Sep 23 08:07:25 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 11:54:30 2020 +0000"
      },
      "message": "X86: Implement VarHandle.compareAndExchange\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nBug: 65872996\nChange-Id: I880ba6176050591e7398f95b92fc3f74f566b042\n"
    },
    {
      "commit": "8942b3a769729e9c1fb65f5b738317483124dc45",
      "tree": "e99c60039c9ef27d05a6d43269232953b72058be",
      "parents": [
        "0571d479f52781df0b4d94caaf704631122ba6e6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 20 10:42:15 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 10:51:06 2020 +0000"
      },
      "message": "Integer.divideUnsigned() intrinsic on ARM64.\n\nImplements the intrinsic for arm64; adds a comment\nfor a DCHECK() that prevented kNoOutputOverlap usage\nin intrinsics with slow paths.\n\nAuthor: Vladimir Marko.\nCommitter: Artem Serov.\n\nTest: Covered by 082-inline-execute.\nTest: testrunner.py --target --optimizing --64\nBug: 156736938\nChange-Id: Ie1e61c19afe6a899fd4152206e5dbf9ad013e602\n"
    },
    {
      "commit": "0571d479f52781df0b4d94caaf704631122ba6e6",
      "tree": "4d2ec8b223d592074bc380cd6dc40ddc063ecad9",
      "parents": [
        "5437e6fa3c5a1865e4146356d05e0a48764a5e3b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 22 10:14:39 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 24 10:08:56 2020 +0000"
      },
      "message": "LSE: Better elimination of array stores.\n\nThis replaces the workaround from\n    https://android-review.googlesource.com/1427546\nwith a proper fix that precisely tracks the needed stores.\n\nAlso fix spelling of Floyd-Warshall.\n\nTest: Additional tests in 530-checker-lse\nTest: testrunner.py --host --optimizing --interpreter --jvm -t 530\nTest: testrunner.py --host --optimizing\nBug: 168446366\nBug: 77906240\nChange-Id: I0cd7acb600ed210ac09d0006b28f045758c2c3ec\n"
    },
    {
      "commit": "25b9c7da44cd4652aa2ba26aa105509a6d035632",
      "tree": "b11d09d13e3d3c29d9782ab9b7f8521bc58747e8",
      "parents": [
        "6d69b52f331f788cbd1f21ffd5b87cb3b39965e4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 17:34:34 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 24 08:26:53 2020 +0000"
      },
      "message": "Don\u0027t store copied methods in BSS.\n\nOtherwise, we can end up in a state where the method on the stack is\nunrelated to the receiver.\n\nAlso fix a comment related to GetCanonicalMethod and\nStackVisitor::ValidateFrame.\n\nTest: 810-checker-invoke-super-default\nChange-Id: I3030e4af6059f7a4a7a1f046f2aabae8ce9057da\n"
    },
    {
      "commit": "6d69b52f331f788cbd1f21ffd5b87cb3b39965e4",
      "tree": "2bca1001afb4c3fc45cbb198765c51aa65e45c42",
      "parents": [
        "e407d97b0f25562110511d025058dcefdacca623"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 14:47:28 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 14:47:28 2020 +0100"
      },
      "message": "Move MethodLoadKind out of HInvokeStaticOrDirect.\n\nTo prepare for using it in HInvokeInterface. For consistency, also move\nCodePtrLocation.\n\nTest: test.py\nChange-Id: I84f973764275002e2adb71080ebc833b2bafb975\n"
    },
    {
      "commit": "9dfb1a9d642b9eb627895ef3364736fc839b4fe4",
      "tree": "776f1e58c13f620829bde196163ebab089506d1b",
      "parents": [
        "c372314fe478afe6aec5573c26bca378d686072d"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Sep 22 13:27:18 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 23 08:05:32 2020 +0000"
      },
      "message": "X86: Implement VarHandle.getAndSet, getAndSetAcquire, getAndSetRelease\n\nThis commit implements VarHandle getAndSet variants. This implied adding\nxchgb and xchgw instructions and tests for them.\n\nAlso, all the varType checks were moved to GenerateVarHandleCommonChecks.\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nTest: m test-art-host-gtest\nBug: 65872996\n\nChange-Id: I675f47e1dbb51a5ece42f20ad8ce552cfef63ffe\n"
    },
    {
      "commit": "49cde240141d84bc0d79ed2225aff5b1a7f8a65e",
      "tree": "b60cdbd4cc4ecc4e69007c41d299165fe49c1076",
      "parents": [
        "d0f71f26f0f23d7a054ccdde552a9c6003fd33a6"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Sep 22 08:38:50 2020 +0000"
      },
      "committer": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Sep 22 12:00:59 2020 +0000"
      },
      "message": "X86: Add VarHandle.getAndAddAcquire and getAndAddRelease\n\nTest: art/test.py --host -r -t 712-varhandle-invocation --32\nTest: art/test/run-test  --dex2oat-jobs 4 --host --prebuild --compact-dex-level fast --jit --no-relocate --runtime-option -Xcheck:jni  954-invoke-polymorphic-verifier\nBug: 65872996\nChange-Id: I685831b0dc57c0a2781f512515480db7fc830750\n"
    },
    {
      "commit": "d0f71f26f0f23d7a054ccdde552a9c6003fd33a6",
      "tree": "4a86250064448fc85678969ba70e9c28d487e65a",
      "parents": [
        "fdb81da69234b482ddcf5089d6821bb60dc93868"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Thu Sep 17 09:00:15 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 22 11:52:55 2020 +0000"
      },
      "message": "X86: Add the other get VarHandles (getVolatile, getAcquire, getOpaque)\n\nThis commit implements VarHandle.getVolatile, getAcquire and getOpaque\nintrinsics.\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dtrue art/test.py --host -r -t 712-varhandle-invocation --32\nTest: ART_USE_READ_BARRIER\u003dfalse art/test.py --host -r -t 712-varhandle-invocation --32\nBug: 65872996\nChange-Id: I38501c226c9d5af0a9e5a1230abcb3114aad4737\n"
    },
    {
      "commit": "6edcc087ac793ab5d22846854c84df5320b6d75f",
      "tree": "0dff891ce09455c09e2113306999d59001912e6c",
      "parents": [
        "71b26b2b5d3a963002d697c0a72c8fc4fe1c1db2"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Fri Sep 18 09:21:26 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 22 07:45:57 2020 +0000"
      },
      "message": "X86: Implement VarHandle.getAndBitwise\u003cOperation\u003e intrinsics\n\nThis commit implements VarHandle getAndBitwiseAnd, getAndBitwiseOr\nand getAndBitwiseXor. Acquire and Release variants are also added, as\nthey are very similar.\n\nTest: art/test.py --host -r -t 712-varhandle-invocation --32\nBug: 65872996\nChange-Id: I3d9171f499f36e083cca5412746152944f60d773\n"
    },
    {
      "commit": "71b26b2b5d3a963002d697c0a72c8fc4fe1c1db2",
      "tree": "bb5a309719674b56778cf6270ed87053d48bf917",
      "parents": [
        "2eb1f8337b4852b25517d9197ce3f313248f9b85"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Sun Sep 20 09:01:38 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 21 16:44:39 2020 +0000"
      },
      "message": "X86: Ensure atomicity for VarHandle.setRelease and setOpaque\n\nThis commit corrects setRelease and setOpaque: they both need to ensure\natomicity which until now was not guaranteed.\n\nTest: art/test.py --host -r -t 712-varhandle-invocation --32\nBug: 65872996\nChange-Id: Id12cc6beb60cb089cc72cd006694c375c40d77c9\n"
    },
    {
      "commit": "d6ea38b1c5b1137c9bc49b970e6f5b0c9008b4bf",
      "tree": "e259191f349a85bee4c2117578d4ec177a4aef84",
      "parents": [
        "c679fe3915fee6c490c1e8478a6c455f62c10a3f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 18 13:57:23 2020 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Sep 18 13:57:23 2020 +0100"
      },
      "message": "Fix a clang-tidy warning in VisitVarHandleGetAndAdd()\n\nFixes a commented argument name mismatch in\nIntrinsicCodeGeneratorX86::VisitVarHandleGetAndAdd().\n\nBug: 168883594\nTest: WITH_TIDY\u003d1 m\nChange-Id: I526dbe05610301d34457a735dee5fe162ab3230a\n"
    },
    {
      "commit": "c679fe3915fee6c490c1e8478a6c455f62c10a3f",
      "tree": "f0f676afba57ee13a3e040bce1a5636d5e6b838a",
      "parents": [
        "952c0904d46f4170c6a2578c19a702a0499e57f4"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Mon Sep 14 14:02:40 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 18 12:23:51 2020 +0000"
      },
      "message": "ARM: Optimize div/rem when dividend is compared with a non-negative\n\nWhen a divisor is a positive constant and a dividend is compared with a\nnon-negative value, the result of the comparison can guarantee that the\ndividend is non-negative. In such a case there is no need to generate\ninstructions correcting the result of div/rem.\n\nThe CL implements this optimization for ARM32/ARM64.\n\nTest: 411-checker-hdiv-hrem-pow2\nTest: 411-checker-hdiv-hrem-const\nTest: test.py --host --optimizing --jit --gtest --interpreter\nTest: test.py -target --optimizing --jit --interpreter\nTest: run-gtests.sh\nChange-Id: If1dc1389f6e34d2be3480ef620a626f389ca53a5\n"
    },
    {
      "commit": "8b8d93d16ce2b409b27b4655bad0ee41987cb06d",
      "tree": "947ca0d8507b5860de45659c79e1cfafa7b1c305",
      "parents": [
        "eb2c9dd52679d590428a33556f45fb49eaef5e0e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 14:30:01 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 18 08:37:07 2020 +0000"
      },
      "message": "Use kTieredHotnessMask in arm32 and x86 baseline backends.\n\nThose backends were missed when introducing kTieredHotnessMask.\n\nTest: test.py\n\nChange-Id: If72c00f4c1c7d668e0cd360773313c3717fd9456\n"
    },
    {
      "commit": "eb2c9dd52679d590428a33556f45fb49eaef5e0e",
      "tree": "9bb849944b66c9b3ec20536e7c5a37af41a54195",
      "parents": [
        "f61e0617b89e4ad60373f36da56812c20a3e0b20"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Mon Sep 14 13:22:40 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 18 08:21:00 2020 +0000"
      },
      "message": "X86: Implement VarHandle.getAndAdd intrinsic\n\nThis commit implements VarHandle getAndAdd intrinsic. This also implied\nadding xadd instruction and tests for it.\n\nTest: art/test.py --host -r -t 712-varhandle-invocation --32\nTest: m test-art-host-gtest\nBug: 65872996\nChange-Id: I84dd95ba6464c8a73ace03a13817147c7099677a\n"
    },
    {
      "commit": "cde98193476cc295339e54a608110f2546eb8308",
      "tree": "cea46ad451e18a677a2380dc4c0e7c8ad76d2b5f",
      "parents": [
        "9dec90a069386a5e538f5cfb9ff7ef789bdbafdb"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Sun Sep 13 12:32:09 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Sep 17 09:00:53 2020 +0000"
      },
      "message": "X86: Add the other set VarHandles (setVolatile, setRelease, setOpaque)\n\nThis commit implements VarHandle.setVolatile, setRelease and setOpaque\nintrisics. This also implied refactoring HandleFieldSet to be reused in\nall set VarHandles, as the code is very similar.\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host --all-compiler -r --32\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host --all-compiler -r --32\nTest: ART_USE_READ_BARRIER\u003dtrue art/test.py --host --all-compiler -r --32\nTest: ART_USE_READ_BARRIER\u003dfalse art/test.py --host --all-compiler -r --32\nBug: 65872996\nChange-Id: I9a1d5fec6c5086c1e77ba65c3337da1133b3e3f1\n"
    },
    {
      "commit": "9dec90a069386a5e538f5cfb9ff7ef789bdbafdb",
      "tree": "61db592006bf40f0a120efeb3ecf0aca5820b898",
      "parents": [
        "77cba3cc758ac6141abbf1297de8bd2df7083bbd"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 14 17:58:28 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 16 21:28:50 2020 +0000"
      },
      "message": "Fix LSE-array overlap issue\n\nIn cases where an array has overlapping accesses on separate\niterations LSE could get confused and incorrectly believe removing\narray stores is safe even when later iterations rely on the store\noccurring. For example consider the following code:\n\n```\nint do_cal(int len) {\n  if (len \u003c 5) {\n    return -1;\n  }\n  int w[] \u003d new w[len];\n  int t \u003d 0;\n  for (int i \u003d 5; i \u003c w.length; i++) {\n    w[i] \u003d please_interleave(w[i - 1], w[i - 5]);\n    t \u003d please_select(w[i], i);\n  }\n  return t;\n}\n```\n\nWe would either need to materialize 5 PHIs to hold the values\n`w[i - 1], ..., w[i - 5]` or avoid removing the write to `w[i]`. Our\nLSE pass is unable to do the former and would (incorrectly) fail to\nrecognize that, by not being able to determine the values of `w[i -\n1]` and `w[i-5]` that the later store to `w[i]` must be preserved.\n\nBug: 168446366\nTest: ./test.py --host\nChange-Id: I89772c8bf49ebf6de70f86bd68484e14bd189406\n"
    },
    {
      "commit": "52d2c0c3af51b9da9e20cfe6b10d72b816ddb7af",
      "tree": "73545ea3b9948923bcd94ec7cdbf9b1b17d2edfb",
      "parents": [
        "afad9f95c5321e2d6fe312c377dc8a11336f5fa4"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Sep 15 14:27:21 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Sep 16 14:47:30 2020 +0000"
      },
      "message": "X86: Add the other variants of VarHandle.compareAndSet\n\nThis commit implements VarHandle WeakCompareAndSet,\nWeakCompareAndSetPlain, WeakCompareAndSetAcquire,\nWeakCompareAndSetRelease.\n\nTest: art/test.py --host -r -t 712-varhandle-invocation --32\nChange-Id: I1e0f5e7dcb21cd0f107d5a74cb534cef992ef9fc\n"
    },
    {
      "commit": "afad9f95c5321e2d6fe312c377dc8a11336f5fa4",
      "tree": "0474fba76600ef62e9ae5253f234ec6cde3e9026",
      "parents": [
        "07927bf6136f2472646ef3c7de2886f804ee063e"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Sep 15 15:38:32 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 16 13:09:17 2020 +0000"
      },
      "message": "X86: Optimize GenCAS\n\nThis commit adds a small optimization to GenCAS: skip the MarkGCCard if\nthe value was not set (cmpxchg fails).\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host --all-compiler -r --32\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host --all-compiler -r --32\nTest: ART_USE_READ_BARRIER\u003dtrue art/test.py --host --all-compiler -r --32\nTest: ART_USE_READ_BARRIER\u003dfalse art/test.py --host --all-compiler -r --32\nChange-Id: Ic483c4ccb0a58f7c21e6fd9f3bc90ba8c56492b8\n"
    },
    {
      "commit": "c992e42601a9dc99a8ddcaecbc7f9d5048d77a38",
      "tree": "56e192bc533d7d97f1954d1ee50d9333363757da",
      "parents": [
        "ff6d5fa6add68a6ab2b699444c3539ee1950d491"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Wed Sep 16 08:12:02 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 16 11:11:46 2020 +0000"
      },
      "message": "X86: Clarify HandleFieldSet constant volatile Float64 case\n\nIn case of a constant Float64 value code generation, we ensure that the\nfield is not volatile.\n\nTest: art/test.py --host --all-compiler --optimizing --32 -r\nChange-Id: I512c89dffc446fd9a44d2f409c6d2ddac756e111\n"
    },
    {
      "commit": "ff6d5fa6add68a6ab2b699444c3539ee1950d491",
      "tree": "982c33f5c6b4294b336219078c1cc89746488f6c",
      "parents": [
        "2fe9dbdc9ba1eea74cd67e530d5b31076d4554de"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Wed Sep 16 07:08:24 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Sep 16 09:26:55 2020 +0000"
      },
      "message": "X86: Fix GenCAS DCHECK(kUseBakerReadBarrier) misplacement\n\nThis commit fixes a bug previously introduced by refactoring VarHandle\ncompareAndSet and UnsafeCAS. The check for using only baker read barrier\nwas supposed to be done only for references.\n\nTest: ART_READ_BARRIER_TYPE\u003dTABLE_LOOKUP art/test.py --host --all-compiler --optimizing --32 -r\nBug: 168645609\nChange-Id: Ic6d1cf5ca0e3c4d10abb0d7a793623592a11c74c\n"
    },
    {
      "commit": "8d8380a2fafef53836127a79bc772f0d1ff41df0",
      "tree": "e85cbdc0db74023df6506ee736dfbcba178849dc",
      "parents": [
        "3d9c0d9d8beb8a1d2ea65c53e14e7c2499b7ce10"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Fri Sep 11 09:24:01 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Sep 15 08:12:58 2020 +0000"
      },
      "message": "X86: Refactor UnsafeCAS and VarHandle.compareAndSet intrinsics.\n\nThis commit overloads GenCAS method to have the possibility to use it\nfor code generation of both UnsafeCAS and VarHandle.compareAndSet. This\nalso implied readjusting the locations builder of VarHandle\ncompareAndSet.\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host --all-compiler -r --32\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host --all-compiler -r --32\nTest: ART_USE_READ_BARRIER\u003dtrue art/test.py --host --all-compiler -r --32\nTest: ART_USE_READ_BARRIER\u003dfalse art/test.py --host --all-compiler -r --32\nBug: 65872996\n\nChange-Id: Iaabcbf3d239313cb701c622f2f63e46d11e9f982\n"
    },
    {
      "commit": "19a73a22227bb6b47ba2e7c1a45e07148492a26f",
      "tree": "abb428a4def89edd94af534518250b736da05c2f",
      "parents": [
        "ea2dfb903fa3289210e2d249a0b5045e32593fe1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 11 19:03:06 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Sep 14 08:23:47 2020 +0000"
      },
      "message": "Fix clang-tidy error.\n\nTest: WITH_TIDY\u003dtrue m\nBug: 65872996\nChange-Id: Iecafee0e4a7bc411d69b1351f6482a90e8f92a0f\n"
    },
    {
      "commit": "e00e7d230af50c7872c219028d7b7bd159b5aecd",
      "tree": "3deac68098f8db32357a47b6ede3694a2297ac26",
      "parents": [
        "1fef877c66f066f01653ea98bfefe29304198193"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 11 14:10:40 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 11 14:14:28 2020 +0000"
      },
      "message": "arm64: Fix VarHandle intrinsics for heap poisoning.\n\nUnpoison coordinateType0 for type check.\n\nTest: testrunner.py --target --64 -t 712\nBug: 65872996\nChange-Id: Ie9401c69149574e44a29b2d0b933ab7444126537\n"
    },
    {
      "commit": "1fef877c66f066f01653ea98bfefe29304198193",
      "tree": "65561c8b15844cabe32728b61d1e5d586976acf3",
      "parents": [
        "a41ea2708d143b5982f1969864513b62706d11d4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 09 13:57:17 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 11 13:20:58 2020 +0000"
      },
      "message": "Handle more cases of super calls in the compiler.\n\nAdd support for calling super methods that are not referenced within the\ncompiling dex file.\n\nTest: 808-checker-invoke-super\nTest: 809-checker-invoke-super-bss\nChange-Id: Ib103f818ac8b612a79b6b18cc8eda81131bb3149\n"
    },
    {
      "commit": "a41ea2708d143b5982f1969864513b62706d11d4",
      "tree": "dfe5d58ffb7dd6d9220e87430416b8ea2deef617",
      "parents": [
        "1e2d5679e56364b090c989427f43ad6273359904"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 07 15:24:36 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 11 10:33:12 2020 +0000"
      },
      "message": "arm64: VarHandle.get/set intrinsic for fields.\n\nTest: testrunner.py --target --64 --optimizing -t 712-varhandle-invocation\nTest: Repeat with ART_USE_READ_BARRIER\u003dfalse ART_HEAP_POISONING\u003dtrue.\nTest: Repeat with ART_READ_BARRIER_TYPE\u003dTABLELOOKUP.\nBug: 65872996\nChange-Id: Ic0ec2eba7b493ef3b1d15291b67e0214e6e2de0e\n"
    },
    {
      "commit": "5e13d453acc03fda08dae23e085f7161a73f7032",
      "tree": "713b60fff222f3ed1b4ad518ee7e95c9cba041ce",
      "parents": [
        "8376a6543b8500c5321ddd6f6ead04e1397ceab8"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Sep 08 14:35:09 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 10 12:48:50 2020 +0000"
      },
      "message": "X86: Implement VarHandle.compareAndSet() for fields.\n\nThis commit implements VarHandle compareAndExchange access mode for\nfields (both static and instance).\n\nInt64 and Float64 are not implemented because ParallelMove might fail\nwhen moving register pairs.\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host --32 -r -t 712-varhandle-invocations\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host --32 -r -t 712-varhandle-invocations\nBug: 65872996\nChange-Id: I92e51c348f076c23413e419948f03197c286a619\n"
    },
    {
      "commit": "306188923b6210a5574b1dc534e99cf60b43768c",
      "tree": "f820a67e6d08244c4e3367caf717d06e4291bedd",
      "parents": [
        "12891f9756eb0a6f08564d4c8df21ee1803c5f79"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Wed Sep 09 05:45:35 2020 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Wed Sep 09 05:45:35 2020 -0700"
      },
      "message": "Avoid potential null dereference\n\nTest: TreeHugger\nChange-Id: I3a6825a5f95eabe94a5f88d778d2535390893eea\n"
    },
    {
      "commit": "e6c0f2a75bd969253279580e2e4772e54787034b",
      "tree": "79598b2b6b457d9c718ddb18e29a0211a73ae85a",
      "parents": [
        "63c0c2d9da31d26781f5e77aba6125f0d0988795"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 07 08:30:52 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 08 13:51:53 2020 +0000"
      },
      "message": "Pass a full  MethodReference of the invoke in HInvoke nodes.\n\nCleanup to ensure we don\u0027t make mistakes when passing a dex method index\nto the HInvoke constructor, and we know which dex file it relates to.\n\nTest: test.py\nChange-Id: I625949add88a6b97e1dafeb7aed37961e105d6aa\n"
    },
    {
      "commit": "63c0c2d9da31d26781f5e77aba6125f0d0988795",
      "tree": "b80d12dee72053edd1feddf115a602ff51a328a2",
      "parents": [
        "5c2914dd610e21e9a4a2bbe5c2e28b29f1cd37d6"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Mon Sep 07 15:50:40 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 08 10:56:45 2020 +0000"
      },
      "message": "X86: Fix bug in GenerateVarHandleAccessModeCheck\n\nThe condition of taking the slow path for VarHandle access mode check\nwas reversed.\n\nSolving this bug revealed another problem: in the case of an instance\nfield, the object might be null. The null check is now done for the\nobject.\n\nTest: art/test.py --host --32 -r -t 712-varhandle-invocations\nBug: 65872996\nChange-Id: I8d047cc0ecba3d05178ea67945afe762c545c27e\n"
    },
    {
      "commit": "43d57558bafccff3ec3c5aecb201d7a8a57b2435",
      "tree": "5273085c43f2e7eb074461606778d23fc59590b0",
      "parents": [
        "b309240781b17ee994d088648d5fc76814dde436"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 07 12:30:17 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 07 15:34:58 2020 +0000"
      },
      "message": "Do not build intrinsic graph for signature polymorphic methods.\n\nThe InstructionBuilder cannot build HInvokePolymorphic for\nan intrinsic graph. It would be rather useless to allow this\nas signature polymorphic method intrinsics always need the\nslow-path for unhandled cases, and we would therefore reject\nthe compiled code anyway. Instead, prevent the construction\nof the intrinsic graph for signature polymorphic methods.\n\nTest: testrunner.py --host --optimizing -t 712-varhandle-invocations\nBug: 65872996\nChange-Id: Id82f1f282383dbd45d6db2bd2a96d838b685d7ed\n"
    },
    {
      "commit": "73c3180e6355ce82fc40b3ded2c6eec0fee199f9",
      "tree": "b793b5066fa9f3fd3fe3297e867a11be207d2541",
      "parents": [
        "f96ef4d4253adbc1418ed02386463e37027f998c"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Sep 01 13:17:05 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 07 10:31:32 2020 +0000"
      },
      "message": "X86: Implement VarHandle.set() for fields.\n\nThis commit implements VarHandle set access mode for fields (both static\nand instance). This also implied refactorizing the common parts of get\nand set access modes (e.g. coordinate type checks).\n\nNon-constant Int64 set value is not implemented.\n\nTest: ART_HEAP_POISONING\u003dtrue art/test.py --host --32 -r -t 712-varhandle-invocations\nTest: ART_HEAP_POISONING\u003dfalse art/test.py --host --32 -r -t 712-varhandle-invocations\nBug: 65872996\nChange-Id: I384c09e08f7a772fc7ec372b1ebb5f882ecc5586\n"
    }
  ],
  "next": "4717175e40a19e79af904dfb7b7dd13f046debd7"
}
