)]}'
{
  "log": [
    {
      "commit": "bae88c0759d48acf29b58d960ad2665e3462dfda",
      "tree": "bcb16cb53ef55171875730b27f562fa893cb88f6",
      "parents": [
        "4e8e0a5a2a6b0404a5ecd118e647adcb50c464af"
      ],
      "author": {
        "name": "jaishank",
        "email": "jaishankar.rajendran@intel.com",
        "time": "Tue Jun 11 16:47:45 2019 +0530"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Aug 29 15:45:39 2019 +0000"
      },
      "message": "Supported AVX/AVX2 in art-interpreter\n\nPerformance Impact:\n10-12% Warm Launch Time Performance Improvement in YouTube App\n\nTest: run-test gtest\n\nChange-Id: I103147982a89dd6fc1ef1a271310de5c1804de21\nSigned-off-by: jaishank \u003cjaishankar.rajendran@intel.com\u003e\n"
    },
    {
      "commit": "9ce340f829f836560278ecd078fbefcf19c9d629",
      "tree": "3327d6d7dd3c0ff86861cdab67791ee7c8dbe3b8",
      "parents": [
        "d4fc62c66328c0944348a314e3770b4f2b8006ce"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Tue Jan 22 17:46:09 2019 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Aug 15 20:35:11 2019 +0000"
      },
      "message": "ARM64: toFloat() intrinsics with ARMv8 FP16.\n\nThis CL intrinsifies toFloat() method with ARMv8.2 FP16 instructions.\n\nThis CL depends on the android framework and libcore changes:\nmoving FP16 implementations into libcore.\n\nTested with local micro benchmark on Pixel 3, compared to original\nandroid.util.Half.toFloat() Java implementation, this intrinsic is\n50% faster.\n\nIn real-life case, the FP16 toFloat() intrinsic can help\naccelerate ColorLong ARGB decoding in Android framework.\n\nThis intrinsic implementation archieves bit-level compatibility with the\noriginal Java implementation android.util.Half.toFloat().\n\nTest: 580-fp16\nTest: art/test/testrunner/run_build_test_target.py -j80 art-test-javac\nTest: test-art-host, test-art-target\n\nChange-Id: I059c69747067b84f2c532465e32a1dcd3c25269f\n"
    },
    {
      "commit": "f56393cc933f01327e0a3a1455f38b1b3ff550d0",
      "tree": "70ec4475db963e89bac26081a07399699916c461",
      "parents": [
        "084fc289b4c0a1355e2c38076933bd80834a44d7"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 02 15:49:27 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 07 16:43:35 2019 +0000"
      },
      "message": "Switch-interpreter: Inline field getters and setters.\n\nThis makes the interpreter 5% faster and code 1% smaller.\n\nTest: test.py -b --host --64 --interpreter\nChange-Id: If4c16ea84e9a975d7ccae5ef88200d54cf62e27f\n"
    },
    {
      "commit": "635967b5d16e25630276c23aa47daf52ec493ea1",
      "tree": "4f9cba20e58ae2997b4d693d4e1e76ccd684637f",
      "parents": [
        "8d5a215a7e879d8aa9c7d9d2791ed107ecc41f59"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 07 10:15:39 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 07 14:11:21 2019 +0000"
      },
      "message": "Remove \tmessage ART creates for \"throw null\".\n\nThe new version of R8 transforms:\n  throw new NullPointerException()\n\nInto:\n  throw null\n\nART used to create a message for the pattern \"throw null\", which is\nsomething that now breaks ObjectsTest.requireNonNull.\n\nTest: libcore.java.util.ObjectsTest#test_requireNonNull_T\nChange-Id: I142ddc74a9c0cfc76d2479eb92078b7a7d077b27\n"
    },
    {
      "commit": "baa81b5f25e10dd054e3562688802468512f8f67",
      "tree": "3833d8d83baf6988e995b2dd757353f7925ba939",
      "parents": [
        "38a062eb7390f07ee0a318517f71d9b56491a5f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 02 10:14:04 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 05 20:35:53 2019 +0000"
      },
      "message": "Use ClassStatus::kVisiblyInitialized in interpreter.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter --interp-ac\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --interpreter --interp-ac\nBug: 36692143\nChange-Id: Ic081c3fab8fb98ba2667bc851fb2b7dd746e7020\n"
    },
    {
      "commit": "672c08092a7d95bb504bceb712812f72524d90da",
      "tree": "e539c269d8733b13e43c41f9784d0c6c8200a9d6",
      "parents": [
        "e91d787c2de859789ec6e467bd04ee28b22a8c4e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 26 13:03:13 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 29 12:33:14 2019 +0000"
      },
      "message": "Update Transaction for boot image extension.\n\nAnd clean up transaction-related code to keep test code\nout of the production binaries.\n\nTest: Add TransactionTest#Constraints to transaction_test.\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: aosp_taimen-userdebug boots.\nChange-Id: Iefe5f1cfde95f564069249148f9e7d71564d7a10\n"
    },
    {
      "commit": "1fc4d42d99a5059545e33bd0ab36250d8cc72b50",
      "tree": "fb7c5dae10cde80f709d2a1bd18191627ede28c0",
      "parents": [
        "450b27a534002f9bf1a940c2195688f673b2367d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 23 16:55:19 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jul 27 08:55:19 2019 +0000"
      },
      "message": "Check whether method is zygote-compiled less frequently.\n\nMove the check to MaybeCompileMethod which means\nit will do the look-up only once per 32 invokes.\n\nMore importantly, it means the interpreter can\nuse the invoke fast-path for pre-compiled methods.\n\nBug: 119800099\nChange-Id: Id10cdb7d3717807f60e3d3c71ca943ede8104f36\n"
    },
    {
      "commit": "27351be1c1b7cabf714872b9fa40c7ccbefe9b76",
      "tree": "9dd463a7b490265ff143a98b15578394f1944077",
      "parents": [
        "cffa254b3b7c307b557ba2250fc822db352d3293"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 12 13:39:34 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 22 13:11:55 2019 +0000"
      },
      "message": "Switch-interpreter: Add flatten attribute to handlers.\n\nEncourage the compiler to inline the methods a bit more.\nThis speeds up the switch interpreter by about 1.5%.\nIt adds 7k of code (arm64).\n\nTest: test.py -b -r --host --64 --interpreter\nChange-Id: I59729d73fc39d486ba988d6685b166fbdd9fe6dd\n"
    },
    {
      "commit": "323844002e54243e295497e7f829e46a533da621",
      "tree": "e6219f651332ee140042e4e0d4c975919f4fe9bf",
      "parents": [
        "297a0533d2e3f1d49f0b73c5d1e3b09ce0418de2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 17 20:06:44 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 18 13:12:57 2019 +0000"
      },
      "message": "jitzygote: Handle case of methods having the resolution stub.\n\nWe need to cache the compiled code until the class is initialized.\n\nTest: test.py\nTest: jitzygote config boots\nBug: 119800099\nChange-Id: Ib7a1efc3e101d9dabfad963621a1fe4a142e9b29\n"
    },
    {
      "commit": "8b770c42bf37975ac25aa9fe3745bf1e64992d67",
      "tree": "3977ccd3d913a43b07af98b20b9ba16043fe17f0",
      "parents": [
        "5071531ceb1f4ed82dff1da15f572201509cf23e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 12 15:14:29 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jul 16 14:49:55 2019 +0000"
      },
      "message": "Switch-interpreter: Fix large performance regression in preamble.\n\nIntroduced in CL/931678: JVMTI Force early return\n\nThis makes benchmarks on golem up to 50% faster.\n\nTest: run golem\nChange-Id: Ie5757ab2235df77bbd6584fccbceff34a38fe775\n"
    },
    {
      "commit": "bc919af448aef9e8043e56ca83a2aa4ff90b9ad6",
      "tree": "904105c3bd20d6ee9af1fbfcda19f1eaa7ffc42d",
      "parents": [
        "d78122b424c1be24f7e9ac7983af3f43e9d4e294"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 10 14:09:51 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jul 15 17:52:47 2019 +0000"
      },
      "message": "ART: Disallow unresolved return types after Q\n\nFor apps targeting future releases, do not allow type mismatches\ninvolving unresolved types. The behavior complicates the verifier\nand the runtime and does not conform to regular expected behavior.\n\nHistorically this has been done for app compatibility when non-native\nmultidex was a thing. In that situation, even at runtime when an \"early\"\nclass is being verified a type might not be available because it is\nsupplied by a later injected dex file.\n\nClassloader manipulations in this way are no longer supported. Classes\nhave to be available at verification time to not fail the class.\n\nBug: 121245951\nTest: m test-art-host\nChange-Id: I9608c79183be7b85b76892498d6a7007a29f2434\n"
    },
    {
      "commit": "e32d24c75bf62e3cb9bff266ad4be859634320a9",
      "tree": "73a9c51958a77b3040b0ce04041424930b709873",
      "parents": [
        "d17eac6b037f67494e31671d1a1d9d233ba3f237"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 05 10:28:59 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 05 15:36:58 2019 +0000"
      },
      "message": "Store zygote compiled code in a shared map.\n\n- Store flags in the ArtMethod to know that it is compiled by the zygote\n- Query the map when entering a zygote compiled method from the\ninterpreter.\n\nBug: 119800099\nTest: boots\nChange-Id: Ib1a38266573e28d371034d02d6bb83f9b8b2e317\n"
    },
    {
      "commit": "e81f10a3f672a8bcc421cab812e6435749181566",
      "tree": "076df5318e4bfdb6148fd6bb0faf5ea8de1d3336",
      "parents": [
        "9690542a9ed7740110459d3167708e6edc1a2686"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 04 10:00:12 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 05 00:20:19 2019 +0000"
      },
      "message": "Revert \"Remove ShadowFrame::dex_pc_ (but keep dex_pc_ptr_)\"\n\nThis reverts commit 50bc8fb89c79874e731f245abda3b9e48a541cfe.\n\nReason for revert: Performance regression\n\nChange-Id: Ib39ceb9e1f2753c518dd24fd193a824211fd5795\n"
    },
    {
      "commit": "50bc8fb89c79874e731f245abda3b9e48a541cfe",
      "tree": "c4dd3d8291ceac4b1d9b7dbca9886842c33967f2",
      "parents": [
        "8c344524e5251535e49cbe8e68ab5dc1cd7d1591"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 26 15:05:43 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 03 14:21:47 2019 +0000"
      },
      "message": "Remove ShadowFrame::dex_pc_ (but keep dex_pc_ptr_)\n\nThey store the same information which is redundant and error prone.\n\nTest: ./art/test.py --interpreter\nChange-Id: I379c20973b90645e3c1016c253d9a6db9a2417dc\n"
    },
    {
      "commit": "4d71e55eb7616b2f2dc6f39377be72fdfbf01b2a",
      "tree": "26ca50a97736ef59b2ad3a867c0ae377209f092c",
      "parents": [
        "e2d24beb1a9d9b718b0443b1eec63090c6fc19a4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 01 16:06:14 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 02 11:19:22 2019 +0000"
      },
      "message": "Remove ShadowFrame::HasReferenceArray()\n\nIt is always true.\n\nChange-Id: I96ddeeb87b8166d0fc08edafd1800b539eec3a7d\n"
    },
    {
      "commit": "8d335b61d637fa9b040eb9d559dbac98067467f1",
      "tree": "732fe4de2a4784493b4affb1b96aa018ce729c98",
      "parents": [
        "41249cd548d60d72b94532b00a261332451fd6f2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 06 14:25:42 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 26 09:27:15 2019 +0000"
      },
      "message": "Switch-interpreter: Refactor exception handling.\n\nMove exception handling code to the main loop.\n\nThe byte-code handlers must return false if there is an exception,\nand the main loop will then handle it in the common slow-path.\n\nThis allows us to remove the remaining helper macros,\nand it shrinks the interpreter uber-function by ~10%.\n\nTest: test.py -b -r --host --64 --interpreter\nTest: run-libjdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug --no-jit\nChange-Id: I38e9b31e33c609db800065c16df77023bea7c2e5\n"
    },
    {
      "commit": "64b56033c5c396937d52497b3f7e41b6f0f56afb",
      "tree": "89eef4f2f459fd4bc46f04c8ed34f52a55aa731f",
      "parents": [
        "f5a07ae078cb14bd58053a883633f235352275f3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 20 15:52:39 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 21 08:37:49 2019 +0000"
      },
      "message": "Abort transaction before finalizable allocation...\n\n... instead of aborting after the allocation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 26687569\nChange-Id: I933b3b940bbd2125f4b5316db8dcf78cb5c8c8fc\n"
    },
    {
      "commit": "c56a23e12039d846a899d8b2ff535019480912e5",
      "tree": "3951a1164c0a523a570a1956fa6ec6e9930d3273",
      "parents": [
        "4444f1b38aa9269365c4a5d506b6d92a3222841a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 05 17:45:49 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 14 08:51:05 2019 +0000"
      },
      "message": "Switch-interpreter: Make the instruction field constant.\n\nThe field is always set to the currently handled instruction.\n\nThe \u0027next\u0027 field stores the instruction to be executed next,\nwhich defaults to fallthrough unless overwritten by handler.\n\nTest: test.py -b -r --host --64 --interpreter\nTest: run-libjdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug --no-jit\nChange-Id: Iadae51ead3e2f657717f190d07b04f4c28890f43\n"
    },
    {
      "commit": "b7c640d364d32b79cb52d04750b063667a9a0c86",
      "tree": "9caafc96879f83f8e5dd3cd45b9005be6e2b7deb",
      "parents": [
        "3ffb5b1576f8af0c361284ebd8d2d54c70ede3ff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 20 15:52:13 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 10 18:33:25 2019 +0000"
      },
      "message": "JVMTI Force early return\n\nAdd support for can_force_early_return jvmti capability. This allows\none to force java frames to exit early. Exited frames have all of\ntheir normal locks released.\n\nWe implement this by modifying the existing method exit events to\nallow one to modify the exit value during the callback. This is used\nto implement ForceEarlyReturn by adding internal-only events that will\nchange the return value of methods once they return (using\nkForcePopFrame) avoiding the need to modify the actual interpreter\nvery deeply. This also makes it simple to continue to use the standard\ndeoptimization functions to force the actual return.\n\nIn order to simplify book-keeping the internal event is refcounted,\nnot associated with any specific jvmtiEnv, and only settable on\nspecific threads. The internal event is added by the ForceEarlyReturn\nfunction and then removed by the MethodExit event when we update the\nreturn value.\n\nBug: 130028055\nTest: ./test.py --host\nChange-Id: Ifa44605b4e8032605f503a654ddf4bd2fc6b60bf\n"
    },
    {
      "commit": "8867f3b017546ff187a99ac57bc91ac2bcf1f4f9",
      "tree": "29dbf68255584d48694bd8a50b23d8758987278c",
      "parents": [
        "d3b6664f454e7ea61597c0235b4a9df95056f4cd"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 31 20:01:46 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 07 17:01:44 2019 +0000"
      },
      "message": "Switch-interpreter: Add new \u0027next\u0027 instruction field.\n\nThis field is set by handlers to the next instruction to execute.\nIt is initialized to fall-through and can be overwritten as needed.\n\nAs the first step, only DCHECK its value against the \u0027inst\u0027 field.\nThe next step will be to remove all the inst-\u003eNext_xxx() calls.\n\nTest: test.py -b -r --host --64 --interpreter\nTest: run-libjdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug --no-jit\nChange-Id: I92740d21871cf3a5b34d9d1615ad2a71ba021339\n"
    },
    {
      "commit": "1332c26c69a0910a7d32232261c30b197348e603",
      "tree": "63d8522259bea08bde662ed11d8e532790d6f42d",
      "parents": [
        "ee12e3abd382a742fbb7aac7a50deba7591e2c00"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 04 13:13:37 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 05 12:46:38 2019 +0000"
      },
      "message": "Switch-interpreter: Reduce copy-pasted code in array handling.\n\nTest: test.py -b -r --host --64 --interpreter\nTest: run-libjdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug --no-jit\nChange-Id: I343b3f3d29fa1d043965bb0dbdef00442854cb42\n"
    },
    {
      "commit": "ee12e3abd382a742fbb7aac7a50deba7591e2c00",
      "tree": "07fdbe2624723ff6292d05643657273633158882",
      "parents": [
        "05e4b0263ffc91fef9729527cf176cae0fd7f22b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jun 03 15:18:57 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 05 12:46:38 2019 +0000"
      },
      "message": "Switch-interpreter: Reduce amount of copy-pasted code.\n\nTest: test.py -b --host --64 --interpreter\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug\nTest: run-libjdwp-tests.sh --mode\u003dhost --variant\u003dX64 --debug --no-jit\nChange-Id: I7b96a05bdaf13c16b900a0cf77ef911451cad61e\n"
    },
    {
      "commit": "bd613eced14bc56ece6beb276addab0f40337163",
      "tree": "2ed4633344615472d08f896e4f47fe840809fa78",
      "parents": [
        "6baf64482aa90b0af9cd6640247da64010910010"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 30 15:39:38 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 04 12:40:04 2019 +0000"
      },
      "message": "Switch-interpreter: Add boolean return value to opcodes.\n\nCurrently unused - this is in preparation for future CLs.\n\nThe intention is that \"return false\" must always immediately\npropagate all the way to the main loop, which can then use\nit to handle abnormal cases in uniform and localized way.\n\nTest: ./art/test.py -b --host --64 --interpreter\nChange-Id: I21b0a26b08488add0af4825469f68c6cbf507106\n"
    },
    {
      "commit": "6baf64482aa90b0af9cd6640247da64010910010",
      "tree": "cb14f87eae03e8d7739d8d9abba0e99d58eb1923",
      "parents": [
        "1cfbd2946c58cf9211a80f81222f805f00daab00"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 30 14:57:43 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 04 12:40:04 2019 +0000"
      },
      "message": "Switch-interpreter: Add GetVReg/SetVReg forwarding helpers.\n\nReduce the opcode verbosity and reformat the file.\n\nTest: diff libart.so disassembly\nChange-Id: I5bc109b083743e0746424f1d25405ccc65200897\n"
    },
    {
      "commit": "3068d582eff4552ff260d7966fcbdc93e17d0207",
      "tree": "bc894a414070a06ea2a231fb98607b57b8c3b0cb",
      "parents": [
        "991cd5cc16267b74e390f640eb441102062babb6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 28 16:39:29 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 31 14:15:59 2019 +0000"
      },
      "message": "Clean up creating handles from `this`.\n\nMake these member functions static and take an additional\nparameter `Handle\u003c.\u003e h_this`. Callers mostly already have\na Handle\u003c\u003e to pass, so we avoid an extra StackHandleScope.\nThis pattern was already used for some functions.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interpreter\nChange-Id: I4f4478b0526bcb2f3c23305d3b3cc4a65fff9ff5\n"
    },
    {
      "commit": "49af704f0f824202e73a0928d76fca27b71cc598",
      "tree": "737203c0a6cf93a4d073038d778947d41c09b4b5",
      "parents": [
        "bee28948fd9ca995568549e9cf95108e09fe2475"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed May 29 18:30:33 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 30 20:51:28 2019 +0000"
      },
      "message": "Ensure non-standard returns release monitors\n\nWe were incorrectly failing to unlock monitors that were acquired by a\nframe when the frame is popped off the stack in a non-standard manner.\nThis can lead to monitors having an incorrect count and being\nimpossible for any other thread to lock.\n\nTest: ./test.py --host\nBug: 133901254\nChange-Id: I2efbb8854dd5530c66d780f6853ec6e05a69c83b\n"
    },
    {
      "commit": "d6f579c1a9d3583f02081ca3724be75fec668b95",
      "tree": "4d99c630027a8d63d306ff7835924f21d9160842",
      "parents": [
        "27085041afdac79dcf643e80f80c0d9a57bd00b1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 29 18:09:30 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 30 09:30:43 2019 +0000"
      },
      "message": "Switch-interpreter: Use more helpers for opcode arguments.\n\nSecond half of the rename. The old VReg methods returned a variety\nof integer type (sign/size) so this CL isn\u0027t necessarily trivial.\n\nTest: diff libart.so disassembly between PS1 and PS2\nChange-Id: Ic41492e4e86e950b8cc2fb9c0b5ef68b97763811\n"
    },
    {
      "commit": "436f6c1e53b735ace36fbfe48c337ece07d76e62",
      "tree": "77cadf8842b3d33f0491441c4c2e0d873a391f40",
      "parents": [
        "9a292a1d28c11eba629f6bd62d475af83b155f9e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 22 13:28:42 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 24 17:55:27 2019 +0000"
      },
      "message": "Switch-interpreter: Add helpers to get opcode arguments.\n\nAdd trivial helpers to get opcodes arguments (A/B/C).\n\nEnsure the generic getters in Instruction can take\nadvantage of knowing the format at compile-time.\n\nAs the first step, I have simplified the code only where\nthe argument is used as index for SetVReg/GetVReg calls.\n\nTest: ART_USE_CXX_INTERPRETER\u003dtrue ./art/test.py -b --host\nTest: ART_USE_CXX_INTERPRETER\u003dtrue ./art/tools/run-jdwp-tests.sh \\\n      --mode\u003dhost --variant\u003dX32 --debug --no-jit\nChange-Id: I765c0eb16438806c3624fabe3aade040c7bb3387\n"
    },
    {
      "commit": "9b81ac36e161fd993eab17b43b93a96e8c63b5cc",
      "tree": "bac59dd8a62ae9f410c707a4086c330b8923a55b",
      "parents": [
        "92ed90ca3897ae7861b22aa12740065152839649"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 16:47:08 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 17 08:10:30 2019 +0000"
      },
      "message": "Add default argument kIsInstrumented\u003dtrue.\n\nkIsInstrumented\u003dfalse is reserved for use by specialized\nentrypoints which are used only when we can ensure that\nthe code is not instrumented. So add the default argument\nto simplify all other callers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3419795794fec9a1733ab3ad698b6415dbac679d\n"
    },
    {
      "commit": "d456117108c1efad790808698787868813b428e2",
      "tree": "d5785c40ad689dbd158fc52eed8b32c9ced967d5",
      "parents": [
        "ba2531826613a21736dd170d09877d3eb7990c5d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 30 17:48:25 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 13 15:36:23 2019 +0000"
      },
      "message": "ART: Mark StringBuilder.append()s as intrinsics.\n\nWe do not actually emit intrinsic implementations for these\nmethods but we use this designation to simplify their use\nknowing that they \"return this\". This also prepares for\nrecognizing and optimizing the StringBuilder append pattern.\n\nNote that intrinsics are never inlined but these methods are\ndefined in core-oj and therefore the rest of the boot image\nand prebuilts are not allowed to inline them anyway.\n\nBoot image sizes for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19756400\n   arm64/boot*.oat: 23415656\n - after:\n   arm/boot*.oat: 19653872 (-100KiB)\n   arm64/boot*.oat: 23292784 (-120KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 19575890\nChange-Id: I2f3bac17830ac1c51287b090a96facddd3d09f5c\n"
    },
    {
      "commit": "19711d479cd4bc4c2d02edf37526cd4e2a6235f7",
      "tree": "53851b37097ffe2b11e42fd271eb27869956f2c0",
      "parents": [
        "8311489bcaa94a4527d8e010df6a78d457273b53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 12 14:05:34 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 10:18:50 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify instrumentation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I95d9e1c9c9a0c9e460048c686c229618126b66d5\n"
    },
    {
      "commit": "765b2a04576f4e985a88165456f5ee55cdfe56b8",
      "tree": "1eb91d1e6dcdee31b5b396ee0ed8baf8c94aca96",
      "parents": [
        "023533677989028d48f4e64dad0a5b3b4e59b726"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 02 11:04:13 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 03 19:46:42 2019 +0000"
      },
      "message": "Add -verbose:interpreter\n\nAdds a mode to track what methods are being interpreted. Good\nfor debugging interpreter usage during app startup.\n\nBug: 130185360\nTest: test-art-host\n\nChange-Id: I8119f79e534cdad7d6a72d4f01115a288e9c8d9a\n"
    },
    {
      "commit": "7c5acbb122485b6215dc34defc1f19e07390bb95",
      "tree": "af0889bb17ef622b8c51d9f110991ca025caef16",
      "parents": [
        "51c655847f2f7d2a9127574d3aeda12755014608"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:54:52 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 25 20:41:37 2019 +0000"
      },
      "message": "ART: Fix some types\n\nUse better types and fix some typing issues exposed by clang-tidy\u0027s\nreadability-implicit-bool-conversion.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I787d291a4843a3192a84853d105d57377b774b23\n"
    },
    {
      "commit": "3483d0a9ddbbeefc8879c7a73de32bda6712d7a3",
      "tree": "8228e4923e9bf3d60bb992eb0f228f035f4273d5",
      "parents": [
        "9c8f34448e0e2b0b0b0094d75dadc3116f5610fa"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 04 16:16:17 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Apr 05 11:55:36 2019 +0000"
      },
      "message": "Fix mterp assembly to use uxtw instead of lsl where needed.\n\nThe old instructions are invalid according to the ARM spec.\n\nEvent though UXTW and LSL are aliases this is binary change:\n\"add x0, x1, w2, lsl #1\" was invalid and would be treated as\n\"add x0, x1, x2, uxtx #1\" which would keep the high bits.\n\nWith uxtw, we ignore the high bits, as expected in code.\n\nTest: test.py -r --target --interpreter\nChange-Id: I66f67ccc5a401d0cf6ac5b42d41d8df26a190046\n"
    },
    {
      "commit": "383f114f8d950f51eb2085ee5ea5375a2403cece",
      "tree": "eda6610fe4339e6ffa0d3affc2393e80075c83ba",
      "parents": [
        "6d4280c35023389a3886b4f67fe24db283a0abc9"
      ],
      "author": {
        "name": "yuguoxu",
        "email": "yuguoxu@allwinnertech.com",
        "time": "Thu Apr 04 17:41:33 2019 +0800"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 04 13:58:02 2019 +0000"
      },
      "message": "Fix ILL_ILLOPC issue-id 129895920 on 32bit armv7 device\n\n\u0027ldrd r0, r1, [r2, r1]\u0027 will be compiled to \u00270xe18200d1\u0027 by clang.\nThis is an unpredictable instruction on armv7 devices such as\nARM cortex-A7 and may case ILL_ILLOPC (or it may also work).\n\nBug: 129895920\nChange-Id: I7d087e46e59956af00f4261961dce22f1e6d0181\nSigned-off-by: yuguoxu \u003cyuguoxu@allwinnertech.com\u003e\n"
    },
    {
      "commit": "5dbd02a497f4bbdf33ae37e715159fe33594a02a",
      "tree": "63aa67209bb528d56d416f7d57f2acf0e5703d70",
      "parents": [
        "2c5bcb873f086c3db4f633e620de31d53cedede5"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 03 11:32:38 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 03 12:49:37 2019 +0000"
      },
      "message": "Make couple of mterp function names start with lower-case.\n\nMost of our hand-written-assembly functions have lower-case name.\n\nTest: test.py -b --host --interpreter\nChange-Id: Ie1641dd77fcf772bc4c1f0d1896a7ce721f5d5a8\n"
    },
    {
      "commit": "dfc0de7696a50a9aeee95dcf74dac036e3334314",
      "tree": "20a6edd33cca852f8e65ce8d20a85949b566904c",
      "parents": [
        "9ef308da0ea8d1df2edf65d4957599fafcc56aeb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 10:57:55 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 02 07:57:27 2019 +0000"
      },
      "message": "Partially ObjPtr\u003c\u003e-ify Object, fix stale ref in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I0c0bc669c0ab8d99185e662a2fec16f32a42a0a2\n"
    },
    {
      "commit": "4617d5823c8e7841fed813b3b9c72664d7fd4dc6",
      "tree": "9eafbee06717e02a2c4acd5d7ce1e6601955356e",
      "parents": [
        "d7e9bbf092b5a61048358fd54183526ef12284af"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:48:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Object::As*(), fix stale refs in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ia04c4996f5cbfa1f26acbadcd747342c57b1aac3\n"
    },
    {
      "commit": "d7e9bbf092b5a61048358fd54183526ef12284af",
      "tree": "620cee17c499bdb23217224b0b1332408d725a6e",
      "parents": [
        "bb206de72135271e66e58576b1196f3e08d5b6fd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:18:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "Clean up explicit conversions to ObjPtr\u003c\u003e.\n\nAdd an ObjPtr\u003c\u003e::DownCast() overload that takes a plain\npointer and remove unnecessary calls to MakeObjPtr(),\nusually preceding DownCast(). Move the MakeObjPtr() to\ncommon_art_test.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I2a243b6d8f3b2e773396dfc53b659c5f7d9ea44a\n"
    },
    {
      "commit": "0984e483c1b8033250a32b11f112ae3e65eef39b",
      "tree": "267b4f59818e5080dff726adf25e5b5710111377",
      "parents": [
        "621c8807f38fedab56ea701370a18df123177f67"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:41:41 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "Style cleanup for ObjPtr\u003c\u003e-ify changes.\n\nReplace \"ObjPtr\u003c.\u003e const\" with \"const ObjPtr\u003c.\u003e\".\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5a1c080bc88b091e15ee9eb0bb1ef6f6f290701c\n"
    },
    {
      "commit": "621c8807f38fedab56ea701370a18df123177f67",
      "tree": "058a0b3e4157ef726f909b0efe14965a7e336513",
      "parents": [
        "0eefb9bad0b098e892f977694ad1207f3ef42c90"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:18:18 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::CallSite.\n\nAnd remove unused function CallSite::Create().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I936cda76543fb79edda1c2cc8671b0684fb9f08a\n"
    },
    {
      "commit": "0eefb9bad0b098e892f977694ad1207f3ef42c90",
      "tree": "9c1abc5959eaf2d6a3a420369ba642381febca04",
      "parents": [
        "5aead700219d9c9fc05524d5d72dc32cb1807c61"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 15:04:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Field and mirror::Executable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ib536df95543cb7240a5816bef019391bb90e6369\n"
    },
    {
      "commit": "5aead700219d9c9fc05524d5d72dc32cb1807c61",
      "tree": "84dac95f7627fefc8fd8d3dfbd5d6baf5d1e1a01",
      "parents": [
        "4f1e3288a845b91a5ce369865ec7e249f4f94622"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 11:00:36 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify method/var handles, fix stale refs in tests.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I89ea84f7970899643e437161b598d3232a182e98\n"
    },
    {
      "commit": "423bebb17f15c3867a52315f0ae421f08f14544f",
      "tree": "97bdf50c7144ae21e6abfe8bdc26858a6a10f94d",
      "parents": [
        "93d99f3665cbd890509f4c707e1a62c5f26d320e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 15:17:21 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 09:45:20 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::ObjectArray.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I611b3e49d3feed306f6cd35d2b662a1e727e24c6\n"
    },
    {
      "commit": "c524e9e7e767be0801cf110310039635698c1532",
      "tree": "cd11699dce8c175a0940a583f5ea02ce89f73a85",
      "parents": [
        "2e1ec835d08ca0ab81b1c24436f659f952ace260"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 10:54:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Class.\n\nAnd move function definitions that rely on obj_ptr-inl.h\nfrom class.h to class-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5ccc765d0a02b1d37cb39ed68c17b8456faf92ea\n"
    },
    {
      "commit": "179b7c61ea6769b99f70c80a7a89cbb212423ec2",
      "tree": "06130898bfb2d8c3f71f4fe181277f20e1942726",
      "parents": [
        "c8b7d445e02b752a68d824e2bc69658dfb76288a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 22 13:38:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 25 16:54:37 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify String allocations, fix stale refs.\n\nObjPtr\u003c\u003e-ify String allocation functions and related code\nand remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr(). Fix\nstale reference uses in reference_table_test and stub_test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I42927fb8b7240e5132188f73318b2ccb218748fd\n"
    },
    {
      "commit": "4bb2af5e6163cf68ec65c5497983303302a15a09",
      "tree": "6cc72eae79472645b2c4833acb69f74849e43b0a",
      "parents": [
        "975b77427413977665f3be66d02e1d164df1efbc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 22 11:09:19 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 22 13:08:16 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify entrypoint utils.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interpreter\nBug: 31113334\nChange-Id: Id05ce5b827b5c11a0fa796bca0b939e29ecf3c5f\n"
    },
    {
      "commit": "09d3576c2acda0785047cf830a228e413a36e757",
      "tree": "60f319bde18191373f4db3c775b95d0013a0694a",
      "parents": [
        "a040ddc1378118ac6b3735fa8333c1a19e646fe1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 20 10:36:20 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 21 00:07:20 2019 +0000"
      },
      "message": "Update mips and mips64 mterp assembly\n\nCargo-cult the changes from Icc5eb98590243969dc47c59a65e39a3a406660f2\nand I45a39ec73abaefaecf5b8c636f3f9d519a0a8bb0 into mips and mips64.\nThis will fix errors from the mips genrules when all genrules are\nrun during checkbuilds.\n\nTest: m libart_mterp.mips64 libart_mterp.mips\nChange-Id: I7dab944d40dbc05893eae513f2323fc7c6ec6226\n"
    },
    {
      "commit": "3dacdd6343ea9a6471692914c7a9dff66d6453c7",
      "tree": "5e0a3b8f99e914a7fbd49822e5c8fb1bd4709f5c",
      "parents": [
        "939798e6a565a92e597136c589428e89c28bffd5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 15:45:47 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 09:52:59 2019 -0700"
      },
      "message": "Revert^4 \"Remove Global deopt requirement for several jvmti events\"\n\nIt was possible for the top frame of a thread to enter the\nartQuickToInterpreterBridge during runtime shutdown. This could be\ncaused by the libjdwp agent. If this happens the caller of the frame\nwill be \u0027null\u0027, which could cause a segv if not detected correctly.\n\nThis reverts commit 939798e6a565a92e597136c589428e89c28bffd5.\n\nReason for revert: Fixed issue that could cause crash during process\n                   shutdown.\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test.py --host\n\nChange-Id: I2aad1705c761edb4ed788cec4fc8a3068d67aee5\n"
    },
    {
      "commit": "939798e6a565a92e597136c589428e89c28bffd5",
      "tree": "3274ff355163df18cd2d7343ce0d34214f9d09c9",
      "parents": [
        "a55e8b5c9827cc4dc4e7f7c7ee07ef1fdafc35e0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:42 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Remove Global deopt requirement for several jvmti events\"\"\n\nThis reverts commit a75e5892fba6d0208f33e9ab8e19e732daf94996.\n\nReason for revert: Fails jdwp tests.\n\nChange-Id: Ic883f4f0108b07f1609c6c6a9565eae5903bfd2c\n"
    },
    {
      "commit": "a75e5892fba6d0208f33e9ab8e19e732daf94996",
      "tree": "3daff8c3ce1608bacba7358711ccf9bd61c0bb05",
      "parents": [
        "dd83a40a3c4fea0d917577de96742900a61ab548"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 11 15:49:40 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 11 21:59:44 2019 +0000"
      },
      "message": "Revert^2 \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit ad344b6a14feba90a06a205760e9bc766c56cab0.\n\nJit-on-first-use would cause the runtime to skip sending FramePop\nevents for exceptions in some circumstances due to longjmp-ing over\nthe frames. This requires forcing jit off from the first instant a\nthread can get frame popped events, which is unfortunate.\n\nReason for revert: Fixed issue causing 1925 to fail on\n                   jit-on-first-use and redefine-stress\nTest: ./test.py --host\nTest: ./art/test/testrunner/run_build_test_target.py -j50 art-jit-on-first-use\n\nChange-Id: I6ec2a799db1041262a055be10e1af1faece6f2fc\n"
    },
    {
      "commit": "ad344b6a14feba90a06a205760e9bc766c56cab0",
      "tree": "47801fc5b432b0baf544bb8fd522a9fd3b567a7e",
      "parents": [
        "739383c80684eeb41d380ca5d18e1e9a1fe9fd7f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 17:49:52 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 21:13:15 2019 +0000"
      },
      "message": "Revert \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit 334630ee9dffdd1932c1ee641d938f25362a4c1a.\n\nReason for revert: 1924-frame-pop-toggle fails on some configs.\n\nChange-Id: I5ed3846e0dfff09c67a468f319ff516e14c44e61\n"
    },
    {
      "commit": "334630ee9dffdd1932c1ee641d938f25362a4c1a",
      "tree": "81957d634aa76967d97c89014eb69158682b0128",
      "parents": [
        "5b76c16cca1984209e838ada4d79e370d7fda431"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 04 15:08:04 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 08 04:07:45 2019 +0000"
      },
      "message": "Remove Global deopt requirement for several jvmti events\n\nThe JVMTI_EVENT_SINGLE_STEP, JVMTI_EVENT_FIELD_MODIFICATION,\nJVMTI_EVENT_METHOD_EXIT, JVMTI_EVENT_SINGLE_FIELD_ACCESS, and\nJVMTI_EVENT_FRAME_POP events would all deoptimize all threads in all\ncases when enabled. This changes the behavior to instead only\ndeoptimize individual threads when possible. This should make some\ndebugger interactions faster.\n\nTest: ./test.py --host -j72\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nChange-Id: I42513cb17fd1144aeb03ca11afd3e3b05e918ce2\n"
    },
    {
      "commit": "d388390c556181942b78a5384c3c66afd1d34222",
      "tree": "ca62bd886f00c53260abe3053dd8c058354984d6",
      "parents": [
        "817a47faba3b9150fd9345fbbda1320b02ebfa01"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "message": "\"Revert^3 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 817a47faba3b9150fd9345fbbda1320b02ebfa01.\n\nReason for revert: Breaks build.\n\nChange-Id: I51a38e47186f778b4c1c119e9f21a5d5a1b786a8\n"
    },
    {
      "commit": "817a47faba3b9150fd9345fbbda1320b02ebfa01",
      "tree": "51d0876c8cb667384a25ee6a2eede761a121d455",
      "parents": [
        "e173798b890e3fdd2bbd68cda997d7b3d1a5a902"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 08 14:05:37 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 11:08:41 2019 +0000"
      },
      "message": "Revert^2 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 9fd68f6795eab7085986f80b1c4d00dc45a68485.\n\nTest: art/test.py -b --host --64\nTest: art/tools/run-libcore-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nTest: art/tools/run-libjdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nChange-Id: I9d2faeb8b88ce7cf42915890c6089c725907e6dd\n"
    },
    {
      "commit": "7210108e6d930f9b8bcf5eac6b7a03ea29f92f84",
      "tree": "809a2477f11a98eeb5f258635489424841e6feba",
      "parents": [
        "2ef01100bb56b3f8ab5fbc886a7066d721290d74"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 16:16:30 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 14:05:17 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in art/runtime/.\n\nAnd in art/test/.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I14c7cddd7ba4fb2183c643d32a89b594008d8bd0\n"
    },
    {
      "commit": "4bcd65753c1e49ceba2c41983f26af81ae319670",
      "tree": "3fc7bd53d37448621726dc508f173490807af9c7",
      "parents": [
        "2da3cbb4af20a64108e474c0bbbe0cc5d3af2aa2"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Feb 02 20:08:44 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 04 15:00:20 2019 +0000"
      },
      "message": "Take hidden API into account during getDeclaredMethod()\n\nGenerics make it possible for two methods to have the same name and list\nof parameters but differ in their return type. Class.getDeclaredMethod()\ndoes not allow callers to specify the type, so either of the matching\nmethods can be returned (ART will prefer the non-synthetic one).\n\nHowever, Class::GetDeclaredMethodInternal() did not use to take hidden API\ninto account and could return a hidden method, despite a non-hidden one\nbeing available. The reflective call would then reject the method and\nthrow NoSuchMethodException.\n\nThis patch modifies Class:GetDeclaredMethodInternal() to consider:\n(a) hidden/non-hidden\n(b) virtual/direct\n(c) synthetic/non-synthetic\nin that decreasing order of importance and pick the best matching\nmethod. The hiddenness checks are performed with AccessMethod::kNone\nso as to not trigger warnings. A hidden method may still be returned and\nthe caller should do the access check again with the appropriate\nAccessMethod.\n\nBug: 122291025\nTest: art/test.py -r -t 690-hiddenapi-same-name-methods\nChange-Id: Iaee780c1e87f5587f51e24b517b2b37101c729e3\n"
    },
    {
      "commit": "e7681823f8259c8c04ce0c361746216606784e69",
      "tree": "8bd248fc6be126d7d4e55bb4072ed24b2851ebbd",
      "parents": [
        "90faceb71e25748172ba6369209f8a2a66735394"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 14 16:25:33 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 10:22:27 2019 +0000"
      },
      "message": "hiddenapi: Print warnings for @CorePlatformApi violations\n\nWhen accessing a method/field at runtime, determine the context of both\nthe caller and the callee, and add new logic for the case\n\"platform -\u003e core-platform\" which used to be always allowed.\n\nIf the callee is marked with kAccCorePlatformApi, access is allowed.\nIf not, a warning is printed into logcat.\n\nBug: 119068555\nTest: 674-hiddenapi\nChange-Id: I64839596bf6eb06d7a169fd59b18fd82c140ce6e\n"
    },
    {
      "commit": "62629598f845c2efec0dff652e440e8fbcce4b8a",
      "tree": "7af96934e7ca5313787a9b328e85e6606645c4e5",
      "parents": [
        "d77abd9e128f60917f712b8da84bab46e3ed5870"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:08:31 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:09:07 2019 -0800"
      },
      "message": "ART: Some more IWYU in common headers\n\nForward-declare a few structs and classes. Remove unused includes.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I21215cee39269b373784d6a82577039322a4a950\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "ca7027d30aa8b1abf4ef76dda156dd893234ddca",
      "tree": "def9167e4686b07da887e0a51afb7558195d26dd",
      "parents": [
        "7201ef48fb42cc36824126a26f758f02c9200bad",
        "776a7c294f6356b314505369679bffc73f4a345e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 21 16:12:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 16:12:17 2018 +0000"
      },
      "message": "Merge \"ART: Add CRC32.updateByteBuffer intrinsic for ARM64\""
    },
    {
      "commit": "f05ad2a8d1e573c4d1aa0f3add9c721c0a8eb894",
      "tree": "8d26dcb9c406b9840586adfa62b4fdf0ec0a12b2",
      "parents": [
        "6c22540b2c21399285abd390fbef9f2ea1ea794f",
        "9fd68f6795eab7085986f80b1c4d00dc45a68485"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "message": "Merge \"Revert \"Suspend the runtime when switching interpreters.\"\""
    },
    {
      "commit": "9fd68f6795eab7085986f80b1c4d00dc45a68485",
      "tree": "960357f9bc42471a0a97ba6e7da5b380aeb83f87",
      "parents": [
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "message": "Revert \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 01e1d3217c9b6ad5b3f118a539bea6778ad6096c.\n\nReason for revert: JDWP JIT and Interpreter tests on hosts failing.\n\nChange-Id: I95bbda936c573983ff0c6041267bffaa73315cb7\n"
    },
    {
      "commit": "6c22540b2c21399285abd390fbef9f2ea1ea794f",
      "tree": "fd2d25c8d893aa2138280a2a0069b95aa4ebb4be",
      "parents": [
        "d88f3eba1a2c879b362ffdcb3ce0acfff4570db4",
        "e3fc2d1644fd788509b834b01b83a28595721c47"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 20 23:23:13 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 23:23:13 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Reduce the number of calls to Jit::AddSamples.\"\""
    },
    {
      "commit": "b7e23dcd0c499bc00632666328810483f39aece6",
      "tree": "061b7987e0d01e9c5689c2f50d7898802d2d5c70",
      "parents": [
        "adf595900e6f6328c68a15b88f53529cb5e520f3",
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "message": "Merge \"Suspend the runtime when switching interpreters.\""
    },
    {
      "commit": "776a7c294f6356b314505369679bffc73f4a345e",
      "tree": "ec1d678a0923d2c7ec869f806f5b4860e1a1a721",
      "parents": [
        "8ceeb2ede9a7280fab618dfcb55f424a79dc00ca"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Mon Dec 17 11:40:34 2018 +0000"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Wed Dec 19 23:01:02 2018 +0000"
      },
      "message": "ART: Add CRC32.updateByteBuffer intrinsic for ARM64\n\nUse crc32 instructions for\njava.util.zip.CRC32.updateByteBuffer(int, long, int, int).\n\nNote that CRC32 is an optional feature in ARMv8, this intrinsic\nis only enabled for devices supporting the CRC32 instructions.\n\nThe performance of the intrinsic is the same as the performance of the\nCRC32.updateBytes intrinsic. However the intrinsic does not have a\nrestriction on the size of the byte buffer. For big input data\nthe intrinsic will be faster than CRC32.updateBytes.\n\nTest: m test-art-target-gtest\nTest: m test-art-host-gtest\nTest: art/test.py --target --optimizing\nTest: art/test.py --host --optimizing\nTest: 580-crc32\n\nChange-Id: I6b6160b56e829731402bd5fc56bcac59664f634d\n"
    },
    {
      "commit": "01e1d3217c9b6ad5b3f118a539bea6778ad6096c",
      "tree": "7fc2ff1a143a66990485ed36afd24f98f50de646",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 19:48:58 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 17:02:46 2018 +0000"
      },
      "message": "Suspend the runtime when switching interpreters.\n\nMake the interpreter switch more deterministic by suspending.\n\nThis also allows to remove some of the checks - for example,\nif we are in mterp the conditions must be favourable already.\n\nTest: ./art/test.py -b --host --64\nChange-Id: Ic5fa70592393c7e17decfb84565f3138659340fe\n"
    },
    {
      "commit": "e3fc2d1644fd788509b834b01b83a28595721c47",
      "tree": "ed18c7651b9968486ea91d7717f6e6bd1dbdb674",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 30 13:41:14 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 16:32:47 2018 +0000"
      },
      "message": "Revert^2 \"Reduce the number of calls to Jit::AddSamples.\"\n\nThe method is called for every invoke which is expensive.\nAdd samples, but don\u0027t check the consequences every time.\n\nThis reduces its cost from 3.5% to 1% (maps on device).\n\nThis reverts commit 0402f4b019c1d6c567b1c56589f1ea9170ab5dcc\nand fixes 667-jit-jni-stub which relied on being able to set\nthe sample count to exactly one below the compilation threshold,\nand then expected the compilation to happen on the next sample.\n\nTest: ./art/test.py -b --host -r --ndebug\nTest: ./art/test.py -b -r -t 570\nChange-Id: I99c6d03f565f17fe6539ed89632d8f8bbda68107\n"
    },
    {
      "commit": "81c61bf0ef90c1fd79694aab49758e16cd0dd044",
      "tree": "7af6bdf9457c4f10c654ec1975fc7b22a9c63cf1",
      "parents": [
        "c2f685a64f819193fb563d33924d233872b8970a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 11 18:57:39 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 13 10:52:08 2018 -0800"
      },
      "message": "ART: Add integrity check\n\nBoot classpath classes are expected to be fully verified. Check in\nthe interpreter that we are not running access-checks for the boot\nclasspath.\n\nBug: 115834172\nTest: m test-art-host\nChange-Id: I39a9313e9a3b99133115e764c0155f2303b65f10\n"
    },
    {
      "commit": "91f1032505cfaec3aef51fc0a3085b213813f0ed",
      "tree": "6469e772d9fb562d26dc1d22dd0b71844bbb743f",
      "parents": [
        "573b3877fac3c5a4a9703301502694fe7219b21c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:04:10 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:13:55 2018 +0000"
      },
      "message": "Revert^2 \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit db4b1deebf425be5f1d0f597d1ef540f19908324.\n\nFixed JDWP tests, see \"Test:\" stanzas below.\n\nChange-Id: I6fb56ac990b78164cbd3f93c9f6df66e0dd9a813\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\nBug: 119868597\n"
    },
    {
      "commit": "db4b1deebf425be5f1d0f597d1ef540f19908324",
      "tree": "5851aab8a4d71b49dbd272b822bfd1ae2cbd08df",
      "parents": [
        "e3c6dfe2009d2fad6f8e4401cb17935bdd09ab9e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:18:07 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:23:26 2018 +0000"
      },
      "message": "Revert \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit d19085141ad9c71eae1b0ff585999ac8e27dadd4.\n\nAlso squash a revert of\n    Fix oatdump tests on target.\n    (commit 77eea0898aca2881a87afd177a0422870c39a318)\n\nReason for revert: Broke JDWP tests.\nBug: 119868597\nChange-Id: I005097d2d96014c961e5a4c0b089e7675004febc\n"
    },
    {
      "commit": "a6dd280a61bdb09f608dd920d23394a5b6223ef4",
      "tree": "b1fad48bb4d4ed7ca39ec5c250d20d1238739028",
      "parents": [
        "17ed987eeebdebbd1b923c3c2a6887a233cb7517",
        "15c5b97d0093a804881acf3a53bda8b6b4c1521d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 10:19:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 07 10:19:34 2018 +0000"
      },
      "message": "Merge \"ART: Add CRC32.updateBytes intrinsic for ARM64\""
    },
    {
      "commit": "a9a0973ff03ce2c2d1ec65695ad0f4cd8ed170a7",
      "tree": "9f00efead2c694b2a590f8c4890a9052571bbcff",
      "parents": [
        "260a50cb43618dfdd325e7c89745d8bc38b20292",
        "d19085141ad9c71eae1b0ff585999ac8e27dadd4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 07:51:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 07 07:51:00 2018 +0000"
      },
      "message": "Merge \"Pass boot class path to ImageSpace::LoadBootImage.\""
    },
    {
      "commit": "15c5b97d0093a804881acf3a53bda8b6b4c1521d",
      "tree": "ad6befd10a3d6dee0f1667d254374e267ad89ce7",
      "parents": [
        "cfc4b3ac67b364d753d970d1adcf97668114e959"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Tue Nov 20 13:41:40 2018 +0000"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Thu Dec 06 22:19:23 2018 +0000"
      },
      "message": "ART: Add CRC32.updateBytes intrinsic for ARM64\n\nUse crc32 instructions for\njava.util.zip.CRC32.updateBytes(int,byte[],int,int).\n\nThe intrinsic is used if a number of processed bytes is less or equal to\nkCRC32UpdateBytesThreshold. If it exceeds kCRC32UpdateBytesThreshold the\ncore library provided function is used.\n\nNote that CRC32 is an optional feature in ARMv8, this intrinsic\nis only enabled for devices supporting the CRC32 instructions.\n\nThe CL is based on code from tim.zhang@linaro.org.\n\nPerformance improvements - speedup:\narray size | Cortex-A53 | Cortex-A57\n------------------------------------\n128        | 14x        | 20x\n256        | 10x        | 14x\n512        | 8x         | 11x\n1024       | 7x         | 9x\n2048       | 6x         | 8x\n4096       | 5x         | 7x\n8192       | 5x         | 7x\n16384      | 5x         | 7x\n32768      | 5x         | 7x\n65536      | 5x         | 7x\n\nTest: m test-art-target-gtest\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --target --optimizing --interpreter\nTest: art/test/testrunner/testrunner.py --target --jit\nTest: art/test/testrunner/testrunner.py --host --optimizing --interpreter\nTest: art/test/testrunner/testrunner.py --host --jit\nTest: 580-crc32\n\nChange-Id: I0054cea41b5fc3e712e18b0afc7e3eacbf41feb6\n"
    },
    {
      "commit": "7fbc4a59ba2e60d869313d7961662430df83b2cb",
      "tree": "59520285df8d2075412ddc566a0d4d96d4c7e109",
      "parents": [
        "7cc45fd1dbcf5704e442d0443e437aa2ae3fe21b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 28 08:26:47 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Move to using locks.h instead of mutex.h\n\nWhen only annotating lock requirements, use locks.h.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1608b03254712feff0072ebad012c3af0cc3dda4\n"
    },
    {
      "commit": "d19085141ad9c71eae1b0ff585999ac8e27dadd4",
      "tree": "24284e84f5df4601bacc2a97c56af1bc5950c253",
      "parents": [
        "523940b40f9701504d6e007dd2af48f315038dc1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 22 14:57:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 06 14:43:07 2018 +0000"
      },
      "message": "Pass boot class path to ImageSpace::LoadBootImage.\n\nWhen loading the boot image by ImageSpace, do not rely on\nthe boot class path (BCP) recorded in the primary boot image\noat file. Instead, check the BCP from image against the BCP\nprovided by the Runtime, i.e. from -Xbootclasspath:_ or the\nenvironment variable BOOTCLASSPATH. For now, allow Runtime\nto extract the BCP from the primary boot image oat file when\nwe have -Ximage:_ but no BCP.\n\nAlso pass the boot class path components down to the OatFile\nso that we can open and use the original dex files when we\ndo not have copies in the vdex files. This allows compiling\napp prebuilts when the boot dex files are uncompressed and\naligned in the original jars.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: Manually create boot image jars with uncompressed and\n      aligned dex files, compile a boot image with dex files\n      not copied into vdex files and use this boot image for\n      compiling a prebuilt services.{art,vdex,odex}.\nBug: 119868597\nChange-Id: If9411ddbecf6bb90bfa9233040931c5e833f6aee\n"
    },
    {
      "commit": "f355ec703f519c3091853d85f61904be6dfb68aa",
      "tree": "82486a5104742260ab35382c0678165ebff85112",
      "parents": [
        "0e211e55fe51adbd6bab7278ff1ceabea21faf78",
        "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 22:51:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 22:51:00 2018 +0000"
      },
      "message": "Merge \"C++17 compatibility: make WITH_TIDY\u003d1 happy again.\""
    },
    {
      "commit": "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06",
      "tree": "b68a5f5163f8da0da87d671a225addaa2a13095f",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "message": "C++17 compatibility: make WITH_TIDY\u003d1 happy again.\n\nBug: http://b/111067277\nTest: builds\nChange-Id: I8b69ea3815e14bb6eb27f40c0dd01a85b340a355\n"
    },
    {
      "commit": "c89a28730fb8dff57c6cb5b18295fec45fe85d09",
      "tree": "5d596ced1f30cb59c86179c05f4fb2a947ba5253",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be",
        "0402f4b019c1d6c567b1c56589f1ea9170ab5dcc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 19:19:10 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 19:19:10 2018 +0000"
      },
      "message": "Merge \"Revert \"Reduce the number of calls to Jit::AddSamples.\"\""
    },
    {
      "commit": "0402f4b019c1d6c567b1c56589f1ea9170ab5dcc",
      "tree": "fb0705380c3d1600a08c0e95ed581a967bdf0da0",
      "parents": [
        "db94f2be59e60bde11ac903c5bf30e63ead67992"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 19:18:46 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 19:18:46 2018 +0000"
      },
      "message": "Revert \"Reduce the number of calls to Jit::AddSamples.\"\n\nThis reverts commit db94f2be59e60bde11ac903c5bf30e63ead67992.\n\nReason for revert: Break 667-jit-jni-stub\n\nChange-Id: Ia84a78be8acb62e87f7cd93e43c2967efac8caab\n"
    },
    {
      "commit": "b2eeca05130c2bb9249850d83aad8281ddfcf5c5",
      "tree": "5a73aa2362725ef41140132d054abb08f313fb46",
      "parents": [
        "9a9f8f627ebcbf609813df548115fe9452556ebf",
        "db94f2be59e60bde11ac903c5bf30e63ead67992"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 29 14:50:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 14:50:36 2018 +0000"
      },
      "message": "Merge \"Reduce the number of calls to Jit::AddSamples.\""
    },
    {
      "commit": "9a9f8f627ebcbf609813df548115fe9452556ebf",
      "tree": "73d1d2a2cec915631be13b6dce6950901da54638",
      "parents": [
        "d8eb2f2f2d6ddca682b4aa0703f00bb34069e298",
        "68b926eaa1d907dc830afc8b3f2f0677d134833e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 29 13:44:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 13:44:47 2018 +0000"
      },
      "message": "Merge \"Check consistency of mterp vregs before every opcode for slow debug.\""
    },
    {
      "commit": "db94f2be59e60bde11ac903c5bf30e63ead67992",
      "tree": "95d66a33cefefac89f84534ac4f023e76ff096d9",
      "parents": [
        "076c9da66b606057109e5fb2902d28129d120b96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 09 12:58:28 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 29 11:41:07 2018 +0000"
      },
      "message": "Reduce the number of calls to Jit::AddSamples.\n\nThe method is called for every invoke which is expensive.\nAdd samples, but don\u0027t check the consequences every time.\n\nThis reduces its cost from 3.5% to 1% (maps on device).\n\nTest: ./art/test.py -b -r --host --64\nChange-Id: Ie90da905d067b5d85a3c494c7c9af81b24dc8135\n"
    },
    {
      "commit": "68b926eaa1d907dc830afc8b3f2f0677d134833e",
      "tree": "b3ef5af3a02b282004780967adfc4bb8c3d75d4b",
      "parents": [
        "8f50b2c27f9b32726bbadfcebba910640b94036e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 17:43:42 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 18:23:02 2018 +0000"
      },
      "message": "Check consistency of mterp vregs before every opcode for slow debug.\n\nTest: ./art/test.py -b -r -t 525 --runtime-option\u003d-XX:SlowDebug\u003dtrue\nChange-Id: Ia156567fb454dc547191941a1bc999a289cd39ed\n"
    },
    {
      "commit": "124bb24394ca89bdc20ff12cafc0546beaf83615",
      "tree": "f9c83798f21a27094ff65d5338844f2fc3f213b5",
      "parents": [
        "8f50b2c27f9b32726bbadfcebba910640b94036e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 23 21:08:49 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 17:09:41 2018 +0000"
      },
      "message": "Mterp: Add missing shadow reg clear to op_long_to_double\n\nBug: 118647289\nTest: ./art/test.py -b -r --target --32 --interpreter --gcstress -t 525\n      with shadow_frame-\u003eCheckConsistentVRegs() added to MterpCheckBefore.\nChange-Id: I49c12e9f5c8250b7172e0e8fae7c932b2eb10f69\n"
    },
    {
      "commit": "a0ca79a603a0aecc1f3a723b25589aafb91943c7",
      "tree": "ad4e7325b3ecda008d40d621a31ca7bfdaad7214",
      "parents": [
        "08005628d20b862ea8b3a510a06cf5d6e0147328",
        "561303f94b5262bf939b91eb11feff5dc3a6aab9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 14:02:02 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 28 14:02:02 2018 +0000"
      },
      "message": "Merge \"Mterp: Always use macros for vreg reads/writes.\""
    },
    {
      "commit": "e36e7f2226e4e08b7a7094f78cb80bbe0e729c2b",
      "tree": "0787ae19a232728121a60791f3a18094529120f1",
      "parents": [
        "244470afafdb1c5aba17507ef793d316b9c4d038"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 14 14:21:23 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 27 17:31:01 2018 +0000"
      },
      "message": "Store ImtIndex in ArtMethod.\n\nThis avoids recalculation and reduces pressure on the thread local cache.\n\nThis halves the time we spend hashing from 2% to 1% (maps on device).\n\nTest: ./art/test.py -b --host --64\nChange-Id: I2407bd9c222de4ddc6eea938908a1ac6d7abc35b\n"
    },
    {
      "commit": "561303f94b5262bf939b91eb11feff5dc3a6aab9",
      "tree": "818a142401e8e969848dec39867e7854dbb4380d",
      "parents": [
        "244470afafdb1c5aba17507ef793d316b9c4d038"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 20 21:55:42 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Nov 25 14:31:56 2018 +0000"
      },
      "message": "Mterp: Always use macros for vreg reads/writes.\n\nThis makes is easier to find/modify the related code.\n\nTest: No change of the assembly instructions in libart.so\nChange-Id: Ia01a5cbda247bcb06fad4c1d1c903d8c53a56e93\n"
    },
    {
      "commit": "f50ac103426588d9f7c014ef2d2b9c766f8dc25e",
      "tree": "bac6537c3cd63cc382e24d9b94f0eb64f18ab0a4",
      "parents": [
        "b56e8353020acda1a8285daa11c69f57060cd015"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 17 18:00:06 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Nov 14 16:49:40 2018 +0000"
      },
      "message": "Simplify hidden_api.h logic\n\nRefactor GetMemberAction to return a boolean whether access to a class\nmember should be denied. This also moves StrictMode consumer\nnotification into hidden_api.cc and removes notifications for toasts.\nTests are changed accordingly.\n\nTest: phone boots\nTest: m test-art\nMerged-In: I02902143de0ff91d402ba79c83f28226b1822a6f\nChange-Id: I02902143de0ff91d402ba79c83f28226b1822a6f\n(cherry picked from commit 51995f90adaa0e5047dee56d22f15e4225e70517)\n"
    },
    {
      "commit": "790ff518ad4d08ed4fb105f5c011c0ec47e092cd",
      "tree": "bf9def1c8a0567905bec3946ee67fe7410ca3715",
      "parents": [
        "4630f9a032575f75be317fe0d8dc054bbce5790a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 09 18:55:19 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 14 10:01:02 2018 +0000"
      },
      "message": "Add mterp checks after monitor entry/exit opcodes.\n\nCheck whether we are allowed to continue running in mterp.\n\nThis tries to enforce that we bail out of mterp after suspend point\nif needed (in particular, if debugger event switches interpreters).\n\nTest: ./art/test.py -b -r --interpreter\nChange-Id: If2d55e5ece22831ef864c181b7d6d5c70ca50e5d\n"
    },
    {
      "commit": "5f250014f4cc348a573798c4daa191ea1381078d",
      "tree": "ea7937619632fa1fa341563a5b8c443bcf77fd2f",
      "parents": [
        "fdf6401e1594e71a1e86d455d55333b939160bd9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 14:16:38 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 09 11:42:17 2018 +0000"
      },
      "message": "Make exception handling code in switch interpreter NO_INLINE.\n\nExceptions should be rare so the code can be shared.\nThe compiler needs a bit of help with optimization.\n\nIt saves 81k(arm32) and 150k(arm64) from libart.so.\n\nPerformance difference is within noise (golem using the switch).\n\nTest: \"./art/test.py -b -r --interpreter --host\" with switch interpreter.\nChange-Id: I08a5690ceaf6b3cae8c2a486ab809e5604b88e0a\n"
    },
    {
      "commit": "8ed45c876077771455d63dd7e315b439230812f8",
      "tree": "239cc6db092fa00908af0be433b80baff16b172e",
      "parents": [
        "a5de05da46e8a93436e68e7e0d242dce46269527"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 15:08:57 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 17:09:16 2018 +0000"
      },
      "message": "Add test configuration for the switch interpreter.\n\nBug: 31358597\nTest: ./art/test/testrunner/run_build_test_target.py art-interpreter-cxx\nChange-Id: Iebb7a3a5168a27654984f3749a7b86542422671b\n"
    },
    {
      "commit": "a4a96afd95e0819f4f35ece733e9a0731355d0d2",
      "tree": "60abbacda9fcbbdb56392e540aa5c683000812ff",
      "parents": [
        "d4c1c08773414451dda32a4228253c0f443313a2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 16:34:58 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 12:25:15 2018 +0000"
      },
      "message": "Share the preamble in switch interpreter.\n\nMove the preamble code to the main loop to avoid replicating it.\n\nThis halves per-file compile time to 0.5 min.\n\nIt saves 225k(arm32) and 348k(arm64) from libart.so.\n\nPerformance difference is within noise (golem using the switch).\n\nTest: \"test.py -b -r --interpreter --host\" with switch interpreter.\nChange-Id: I2615b3568eb79560d2d342ac3dd28f6269ee5e74\n"
    },
    {
      "commit": "47ad3763e0f0e74c6469e899af883a6c4d09d7bf",
      "tree": "d6e67f431a21ee8fbdfe6d2283e1e04587a8aeca",
      "parents": [
        "fe59955fc41e277bf1c60378202ba785abb1e4a8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 12:43:40 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 10:30:21 2018 +0000"
      },
      "message": "Replace switch interpreter macros with C++ functions.\n\nC++ code is more maintainable than huge macros.\n\nThe \"return\" statement was used within the macros to skip the rest\nof the interpreted opcode.  This is slightly more tricky in functions.\nAll such use cases have been replaced with \"return false\", and the\ncalling functions always check the return value and propagate it up.\n\nPerformance difference is within noise (golem using the switch).\n\nThis halves per-file compile time to 1min.\n\nTest: \"test.py -b -r --interpreter --host\" with switch interpreter.\nChange-Id: I01d861dec1c4a7e95e412fd4b662e5a4d7bd55a8\n"
    },
    {
      "commit": "6da8247ebe2e063cc14a5e943fa8b3416edf936a",
      "tree": "2765ad9af2e9aa4132ca66218ee927b35943ec95",
      "parents": [
        "4fc843c4fc9f33c4ba49c1303d526d0e0e6a3788"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 23 14:03:08 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 06 16:22:06 2018 +0000"
      },
      "message": "Split interpreter_switch_impl into smaller functions.\n\nSplit the uber switch statement into smaller functions.\nThose functions are still always inlined in the switch,\nso it makes little difference for the time being.\n\nHowever the separation should allow us to:\n - Remove the excessive use of macros in the interpreter.\n - Add helpers to handle similar opcodes.\n - Simplify the individual opcode handlers.\n - Simplify interactions with mterp.\n - Easily experiment (e.g. switch vs goto dispatch).\n\nPerformance difference is within noise (golem using the switch).\n\nTest: \"test.py -r --interpreter --host\" with switch interpreter.\nChange-Id: I6075b354e0439bf89061f492dd9b9cbe743145cb\n"
    },
    {
      "commit": "cb58b07d233c5f8e910e6e5946da8ac4ec3099f5",
      "tree": "bd19cb9a44555adf51e2d145c322a592c6cd3527",
      "parents": [
        "e2acc339ede3c620a476827880cf68d044dcd53e"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri Oct 13 12:06:56 2017 +0100"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Fri Nov 02 10:07:12 2018 +0000"
      },
      "message": "ART: Add CRC32.udate(int,int) intrinsic for ARM64\n\nUse crc32 instructions for java.util.zip.CRC32.update(int,int).\n\nNote that CRC32 is an optional feature on ARMv8, this intrinsic\nis only enabled for devices with CRC32 intruction support.\n\nOriginal author: tim.zhang@linaro.org\n\nPerformance improvements in CRC32Bench.UpdateInt:\nPixel 2: 22.8x\nNexus 6P:\n  little core: 28.3x\n  big core   : 21.6x\n\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing --jit --interpreter\nTest: 580-crc32\n\nChange-Id: I1a9bc2befd2934b04103a27ce05806e919874070\n"
    },
    {
      "commit": "9581e6176c78f3f2a8f40ff9d5a6c4d4029253fb",
      "tree": "e12f130a067566c9360b04e14714e8743c9e21ae",
      "parents": [
        "30890f6af9bae6ece7267c72e3c82e3c61da4d9e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 14:29:43 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 09:42:07 2018 +0000"
      },
      "message": "Cache whether we should use interpreter invoke fast-path.\n\nThere is many conditions to check on each invoke.  If they all pass,\ncache the result in the access flags of the called ArtMethod.\n\nThis speeds up arm64 golem interpreter benchmarks by 4%.\n\nTest: ./art/test.py -b -r --interpreter --host --64\nChange-Id: I86313dbdba84cbf8c707aae84e0ff05b6e034700\n"
    },
    {
      "commit": "30890f6af9bae6ece7267c72e3c82e3c61da4d9e",
      "tree": "88473f05ace3839eb8b0ea51b9d76d80d17e1c96",
      "parents": [
        "6b72b77e0823849fb75201461af80e69e1b4d803",
        "08cb7382573f122c70b84656370dfa9a18d833b1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 22:42:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 22:42:05 2018 +0000"
      },
      "message": "Merge \"Add invoke fast-path support for quickened invokes.\""
    },
    {
      "commit": "08cb7382573f122c70b84656370dfa9a18d833b1",
      "tree": "e583bbe955094ca081a0112549b46fd3708c4214",
      "parents": [
        "dc0156dd2e76d518bf1432ae95785ddff9144b78"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 09:27:59 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 22:40:56 2018 +0000"
      },
      "message": "Add invoke fast-path support for quickened invokes.\n\nQuickened invokes had their own handler implementation.\nMerge it into the generic DoInvoke which has the fast-path.\n\nThis speeds up arm64 golem interpreter benchmarks by 6%.\n\nTest: test.py -b -r --interpreter --host --64\nChange-Id: Icac9e073f61df67780242877179111ed7bee7154\n"
    },
    {
      "commit": "fd63bbf88147e19c32c21678b90d8cc450496fc3",
      "tree": "d78f12fbfd72bf29b16e13a7f3fabfca5f1d3f88",
      "parents": [
        "0ee508253edcdee41a80fcbf1511234ca176233d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 29 12:55:35 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 30 10:57:42 2018 -0700"
      },
      "message": "ART: Add string-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for string allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I68d3bcf2b3615d12231010940d0a24a1dbc03826\n"
    }
  ],
  "next": "dc0156dd2e76d518bf1432ae95785ddff9144b78"
}
