)]}'
{
  "log": [
    {
      "commit": "312f3b2fd0094c028a7d243b116947a35a745806",
      "tree": "3d7ec049ded98c489098c87250c75e3f711f8290",
      "parents": [
        "0a3d5eb2ff9e70fa5785638da938439835d0337e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 08:39:26 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 11:02:48 2018 -0700"
      },
      "message": "Move some remaining dex utilities\n\nThere were several utilities related to building/walking/testing dex\nfiles that were not in libdexfile.  This change consolidates these.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Id76e9179d03b8ec7d67f7e0f267121f54f0ec2e0\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "69147f165efaa9da152bb37da3a16dd5d8c6cf3c",
      "tree": "25dbec549b8c06cf24729a577c76ef0b6d3d4c7f",
      "parents": [
        "2202d56061941b4fecbdb018d84bcefb05b6c683"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 06 20:02:24 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 09 19:06:10 2017 -0800"
      },
      "message": "Add code item accessor helper classes\n\nAdd classes to abstract accesses to code item data. These classes\nhandle both standard dex and compact dex.\n\nAdded:\n- CodeItemInstructionsAccessor to handle code item instructions.\n- CodeItemDataAccessor to handle code item data excluding debug info.\n\nMoved inline_method_analyzer to use the new classes to test the new\nAPIs.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I9926acb77b81fa64ed4a3b49b7bed1aab30a0f33\n"
    },
    {
      "commit": "6b040570b5f71bdb6a0aacf51a7613edf35785b7",
      "tree": "4c7a90ac29426931e6f19550be76e2afa1751801",
      "parents": [
        "b95c74b9788886b24b04db782ce64867cb4960d5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 20 20:07:21 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 09:41:07 2017 -0700"
      },
      "message": "ART: Clean up InlineMethodAnalyzer\n\nRemove dead code.\n\nTest: m test-art-host\nChange-Id: If86503fde2a77279a3169144bcae700101d81784\n"
    },
    {
      "commit": "b95c74b9788886b24b04db782ce64867cb4960d5",
      "tree": "f9b01a5b509d70bf66cfb69433f23d7019b892ce",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 20 19:43:21 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 09:41:03 2017 -0700"
      },
      "message": "ART: Move InlineMethodAnalyzer into compiler\n\nMove the infrastructure, which is now only used by the compiler.\n\nTest: mmma art\nChange-Id: I4a61e35f23736b226523d7349f49208ad852ad2f\n"
    },
    {
      "commit": "9323e6e44060545d6c4f925139572868f65b7fe3",
      "tree": "65f3f380605d75f34d49aec49fca494bec26ef5b",
      "parents": [
        "58735fbfbb2da0c0a19b3239da07c2353c40767d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Sep 13 08:58:35 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 14 08:01:39 2016 -0700"
      },
      "message": "Separate annotations from dexfile reading.\n\nBug: 22322814\nChange-Id: I867d66da407dd80394a10d19903ebbc1ec3986ff\nTest: test-art\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "0e54c0160c84894696c05af6cad9eae3690f9496",
      "tree": "fc0915613a2f3ce67d13013997049da71afe8e2a",
      "parents": [
        "35e0cbce516db91aaa77bfc39f797d9848a091c0"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Mar 04 12:08:31 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Mar 07 14:27:58 2016 -0800"
      },
      "message": "Unsafe: Recognize intrinsics for 1.8 java.util.concurrent\nWith unit test.\n\nRationale:\nRecognizing the 1.8 methods as intrinsics is the first step\ntowards providing efficient implementation on all architectures.\nWhere not implemented (everywhere for now), the methods fall back\nto the JNI native or reference implementation.\n\nNOTE: needs iam\u0027s CL first!\n\nbug\u003d26264765\n\nChange-Id: Ife65e81689821a16cbcdd2bb2d35641c6de6aeb6\n"
    },
    {
      "commit": "2a6aad9d388bd29bff04aeec3eb9429d436d1873",
      "tree": "a5fa70df33d410af1be1064c460b6e34f07caf93",
      "parents": [
        "9ec486cc08ad658eee33f9bde405b97502562840"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu Feb 25 11:32:32 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Feb 26 09:16:07 2016 -0800"
      },
      "message": "Implement fp to bits methods as intrinsics.\n\nRationale:\nBetter optimization, better performance.\n\nResults on libcore benchmark:\n\nMost gain is from moving the invariant call out of the loop\nafter we detect everything is a side-effect free intrinsic.\nBut generated code in general case is much cleaner too.\n\nBefore:\ntimeFloatToIntBits() in 181 ms.\ntimeFloatToRawIntBits() in 35 ms.\ntimeDoubleToLongBits() in 208 ms.\ntimeDoubleToRawLongBits() in 35 ms.\n\nAfter:\ntimeFloatToIntBits() in 36 ms.\ntimeFloatToRawIntBits() in 35 ms.\ntimeDoubleToLongBits() in 35 ms.\ntimeDoubleToRawLongBits() in 34 ms.\n\nbug\u003d11548336\n\nChange-Id: I6e001bd3708e800bd75a82b8950fb3a0fc01766e\n"
    },
    {
      "commit": "354efa6cdf558b2331e8fec539893fa51763806e",
      "tree": "b2d91993fc46011d1eeb416d411bf16fb4d25c20",
      "parents": [
        "519281001dabe9060e2bfefc2382570bab26c96a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 04 19:46:56 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 09 19:57:41 2016 +0000"
      },
      "message": "Try to substitute constructor chains for IPUTs.\n\nMatch a constructor chain where each constructor either\nforwards some or all of its arguments to the next (i.e.\nsuperclass constructor or a constructor in the same class)\nand may pass extra zeros (of any type, including null),\nfollowed by any number of IPUTs on \"this\", storing either\narguments or zeros, until we reach the contructor of\njava.lang.Object.\n\nWhen collecting IPUTs from the constructor chain, remove\nany IPUTs that store the same field as an IPUT that comes\nlater. This is safe in this case even if those IPUTs store\nvolatile fields because the uninitialized object reference\nwasn\u0027t allowed to escape yet. Also remove any IPUTs that\nstore zero values as the allocated object is already zero\ninitialized.\n\nChange-Id: If93022310bf04fe38ee741665ac4a65d4c2bb25f\n"
    },
    {
      "commit": "be10e8e99a78caae01fb65769218800d465144ae",
      "tree": "cfa5cd3264137febdba6e49cae0393c779c6439c",
      "parents": [
        "fa72bf1823a39b43552fa1b9ae572023830a4ac1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 22 12:09:44 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 28 18:13:53 2016 +0000"
      },
      "message": "Optimizing: Try pattern substitution when we cannot inline.\n\nChange-Id: I7c01f4494bac8498accc0f087044ec509fee4c98\n"
    },
    {
      "commit": "59c9454b92c2096a30a2bbdffb64edf33dbdd916",
      "tree": "e9063a473e7e96a647917c1365c172d927c7d87b",
      "parents": [
        "8881c422743ac4ffd3d594420fec078d896dd05f"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jan 25 14:20:58 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jan 26 10:18:42 2016 -0800"
      },
      "message": "Recognize common utilities as intrinsics.\n\nRationale:\nRecognizing these method calls as intrinsics already has\nmajor advantages (compiler knows about no-side-effects/no-throw\nproperties). Next step is, of course, to implement these\nwith native instructions on each architecture.\n\nChange-Id: I06fd12973238caec00d67b31b195d7f8807a538e\n"
    },
    {
      "commit": "3f67e692860d281858485d48a4f1f81b907f1444",
      "tree": "a14d3bdc1416dc3db74983d34a408a8b48cbce9c",
      "parents": [
        "6aadaef35ea52506db61e463910c2520b702ca5e"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Fri Jan 15 14:35:12 2016 -0800"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jan 20 20:14:00 2016 -0800"
      },
      "message": "Implemented BitCount as an intrinsic. With unit test.\n\nRationale:\nRecognizing this important operation as an intrinsic has\nvarious advantages:\n(1) having the no-side-effects/no-throw allows for\n    much more GVN/LICM/BCE.\n(2) Some architectures, like x86_64, provide direct\n    support for this operation.\n\nPerformance improvements on X86_64:\nCheckersEvalBench (32-bit bitboard): 27,210KNS -\u003e 36,798KNS  \u003d  + 35%\nReversiEvalBench  (64-bit bitboard): 52,562KNS -\u003e 89,086KNS  \u003d  + 69%\n\nChange-Id: I65d549b0469b7909b12c6611cdc34a8640a5751f\n"
    },
    {
      "commit": "a4f1220c1518074db18ca1044e9201492975750b",
      "tree": "796f0dcd733ad5ffd7d8310af871f3e2c22ee0be",
      "parents": [
        "763fd2d3d131898cad6295a19ae9a30e22ce5f2a"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Aug 06 15:23:34 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Dec 10 13:23:49 2015 -0500"
      },
      "message": "Optimizing: Add direct calls to math intrinsics\n\nSupport the double forms of:\n  cos, sin, acos, asin, atan, atan2, cbrt, cosh, exp, expm1,\n  hypot, log, log10, nextAfter, sinh, tan, tanh\n\nAdd these entries to the vector addressed off the thread pointer. Call\nthe libc routines directly, which means that we have to implement the\nnative ABI, not the ART one. For x86_64, that includes saving XMM12-15\nas the native ABI considers them caller-save, while the ART ABI\nconsiders them callee-save.  We save them by marking them as used by the\ncall to the math function.  For x86, this is not an issue, as all the XMM\nregisters are caller-save.\n\nOther architectures will call Java as before until they are ready to\nimplement the new intrinsics.\n\nBump the OAT version since we are incompatible with old boot.oat files.\n\nChange-Id: Ic6332c3555c09393a17d1ad4daf62932488722fb\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "ee3cf0731d0ef0787bc2947c8e3ca432b513956b",
      "tree": "4146f2c830bdbacdad941e06a0f5979350fe05ad",
      "parents": [
        "5928931541e07b4c98e677cfca3088106b2b9e64"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 06 11:45:02 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 12 12:16:40 2015 +0100"
      },
      "message": "Intrinsify System.arraycopy.\n\nCurrently on x64, will do the other architectures in\ndifferent changes.\n\nChange-Id: I15fbbadb450dd21787809759a8b14b21b1e42624\n"
    },
    {
      "commit": "9ee23f4273efed8d6378f6ad8e63c65e30a17139",
      "tree": "3b1bfb8a6260a57ccb2f025fcdc457464714701e",
      "parents": [
        "62ba40149be3d1c65e4db1f455822a585149d32f"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Thu Jul 23 10:44:35 2015 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri Sep 11 09:51:58 2015 +0100"
      },
      "message": "ARM/ARM64: Intrinsics - numberOfTrailingZeros, rotateLeft, rotateRight\n\nChange-Id: I2a07c279756ee804fb7c129416bdc4a3962e93ed\n"
    },
    {
      "commit": "7da072feb160079734331e994ea52760cb2a3243",
      "tree": "9616f6983d1d9e0ba4447bdbdc2cb7805c737240",
      "parents": [
        "a83cf577d770f389f941b7798c8ea19d55a2e037"
      ],
      "author": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Wed Aug 12 20:30:17 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 12 22:02:02 2015 -0700"
      },
      "message": "Structure for String.Equals intrinsic\n\nAdded structure for implementing String.Equals intrinsics. There is no\nfunctional change at this point- the intrinsic is marked as unimplemented\nfor all instruction sets and compilers.\n\nBug: 21481923\nChange-Id: Ic2a1e22a113ff6091581126f12e926478c011340\n"
    },
    {
      "commit": "611d3395e9efc0ab8dbfa4a197fa022fbd8c7204",
      "tree": "9a0a3b6750caae13b963b244719e03b8cfb49c44",
      "parents": [
        "0c9c5bbdd6976c21602b92d9b455e6fe5d769fb0"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri Jul 10 11:42:06 2015 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Tue Aug 04 09:02:56 2015 +0100"
      },
      "message": "ARM/ARM64: Implement numberOfLeadingZeros intrinsic.\n\nChange-Id: I4042fb7a0b75140475dcfca23e8f79d310f5333b\n"
    },
    {
      "commit": "aabdf8ad2e8d3de953dff5c7591e7b3df4d4f60b",
      "tree": "f6edd510ed29e28343d40930953ac60962f18175",
      "parents": [
        "8ab7bd6c8b10ad58758c33a1dc9326212bd200e9"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 03 14:54:45 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 03 14:54:45 2015 +0000"
      },
      "message": "Revert \"Optimizing String.Equals as an intrinsic (x86)\"\n\nReverted as it breaks the compilation of boot.{oat,art} on x86 (although this CL may not be the culprit, as the issue seems to come from Optimizing\u0027s register allocator).\n\nThis reverts commit 8ab7bd6c8b10ad58758c33a1dc9326212bd200e9.\n\nChange-Id: If7c8b6258d1e690f4d2a06bcc82c92563ac6cdef\n"
    },
    {
      "commit": "8ab7bd6c8b10ad58758c33a1dc9326212bd200e9",
      "tree": "14b01d701a3bce6fd86d8e968f29cb51ad56caf2",
      "parents": [
        "8433bb8a3120d064de97a692d98341d9bc29a985"
      ],
      "author": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Mon Jul 27 10:25:10 2015 -0700"
      },
      "committer": {
        "name": "agicsaki",
        "email": "agicsaki@google.com",
        "time": "Fri Jul 31 15:51:35 2015 -0700"
      },
      "message": "Optimizing String.Equals as an intrinsic (x86)\n\nThe third implementation of String.Equals.  I added an intrinsic\nin x86 which is similar to the original java implementation of\nString.equals: an instanceof check, null check, length check, and\nreference equality check followed by a loop comparing strings\ncharacter by character.\n\nInteresting Benchmarking Values:\n\nOptimizing Compiler on Nexus Player\n\tIntrinsic 15-30 Character Strings: 177 ns\n\tOriginal 15-30 Character Strings: 275 ns\n\tIntrinsic Null Argument: 59 ns\n\tOriginal Null Argument: 137 ns\n\tIntrinsic 100-1000 Character Strings: 1812 ns\n\tOriginal 100-1000 Character Strings: 6334 ns\n\nBug: 21481923\nChange-Id: Ia386e19b9dbfe0dac688b20ec93d8f90f67af47e\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    },
    {
      "commit": "71fb52fee246b7d511f520febbd73dc7a9bbca79",
      "tree": "444d91e910433aaf887bbdada28dfaa3160bebc2",
      "parents": [
        "420457e6040184a6e1639a4c84fcc8e237bd8a3d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 29 17:43:08 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 15 10:21:11 2015 -0800"
      },
      "message": "ART: Optimizing compiler intrinsics\n\nAdd intrinsics infrastructure to the optimizing compiler.\n\nAdd almost all intrinsics supported by Quick to the x86-64 backend.\nFurther intrinsics require more assembler support.\n\nChange-Id: I48de9b44c82886bb298d16e74e12a9506b8e8807\n"
    },
    {
      "commit": "af6925b7fe5dc5a3c8d52ee3370e86e75400f873",
      "tree": "1fe667865bb7dbae3a00bb002492bd4ff4ab194a",
      "parents": [
        "f585e549682a98eec12f92033e9634dc162b7df8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 31 16:37:32 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 21 18:47:37 2014 +0000"
      },
      "message": "Rewrite GVN\u0027s field id and field type handling.\n\nCreate a helper unit for dex insn classification and cache\ndex field type (as encoded in the insn) in the MirFieldInfo.\nUse this for cleanup and a few additional DCHECKs.\n\nChange the GVN\u0027s field id to match the field lowering info\nindex (MIR::meta::{i,s}field_lowering_info), except where\nmultiple indexes refer to the same field and we use the\nlowest of the applicable indexes. Use the MirMethodInfo from\nMIRGraph to retrieve field type for GVN using this index.\nThis slightly reduces GVN compilation time and prepares for\nfurther compilation time improvements.\n\nChange-Id: I1b1247cdb8e8b6897254e2180f3230f10159bed5\n"
    },
    {
      "commit": "575e78c41ece0dec969d31f46be563d4eb7ae43b",
      "tree": "16906df0ba0912a6cb01b3139ba7c60d5f9d09b7",
      "parents": [
        "2998e9cdc9f19c30c4944a4726ed9f147de79ebd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "message": "ART: Replace COMPILE_ASSERT with static_assert (runtime)\n\nReplace all occurrences of COMPILE_ASSERT in the runtime tree.\n\nChange-Id: I01e420899c760094fb342cc6cb9e692dd670a0b2\n"
    },
    {
      "commit": "cd48f2d86197d4fe87cc88077bc4af5ba66e5295",
      "tree": "a678a9eafd72d80cb6d7581b99cc11bc9cf64911",
      "parents": [
        "5bc47ebe278af65e8e2a2d6b603ac94a020285f7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 09 13:51:09 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 09 13:51:09 2014 -0700"
      },
      "message": "Change Reference.get() intrinsic to Reference.getReferent().\n\nThe reference intrinsic was incorrectly inlining\nPhantomReference.get(). We now get around this by adding a\nlayer of indirection. Reference.get() now calls getReferent()\nwhich is intrinsified and inlined.\n\nRequires:\nhttps://android-review.googlesource.com/#/c/107100/\n\nBug: 17429865\nChange-Id: Ie91e70abf43cedf3c707c7bb8a5059e19d2a2577\n"
    },
    {
      "commit": "e7f82e2515f47f3c3292281312d7031a34a58ffc",
      "tree": "13ee86f3d650a901c7251fb1d08e1c3b0241d67c",
      "parents": [
        "b9dbab627bdc3570d5f41cfd6de80ff3b70e1783"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Aug 06 10:46:37 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Aug 06 14:53:43 2014 -0700"
      },
      "message": "Added support for patching classes from different dex files.\n\nAdded support for class patching from different dex files and moved\nScopedObjectAccess from the quick compiler to driver. Slight refactoring\nfor clarity.\n\nBug: 16656190\nChange-Id: I107fcbce75db42ca61321ea1c5d5f236680a1b3d\n"
    },
    {
      "commit": "2eba1fa7e9e5f91e18ae3778d529520bd2c78d55",
      "tree": "a75aae98e3329508a82e45c6bffea0777ec266b1",
      "parents": [
        "7aaa8dbfbcde7f58564b42044892891559669838"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Thu Jul 31 19:07:17 2014 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 04 15:10:25 2014 -0700"
      },
      "message": "AArch64: Add inlining support for ceil(), floor(), rint(), round()\n\nThis patch adds inlining support for the following Math, StrictMath\nmethods in the ARM64 backend:\n  * double ceil(double)\n  * double floor(double)\n  * double rint(double)\n  * long round(double)\n  * int round(float)\n\nAlso some cleanup.\n\nChange-Id: I9f5a2f4065b1313649f4b0c4380b8176703c3fe1\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "4ee7a665e7f9cd2c5ace2d6304e33f64067b209f",
      "tree": "e8e6867c71fde6e37ec5597e8677ab807084f734",
      "parents": [
        "76e6773dfed9e9bf382bbb8d6c8654525fa44b0c"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Fri Jul 11 09:59:27 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Tue Jul 15 15:45:21 2014 -0700"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Add intrinsic for Reference.get()\"\"\"\"\n\nFixed TargetReg issue causing build failure for x86.\nThis reverts commit 9e82bd3f0ce9e5f5777bea2f752ff3e251d32f9f.\n\nChange-Id: I7e6a526954467aaf68deeed999880dfe9aa5f06e\n"
    },
    {
      "commit": "9e82bd3f0ce9e5f5777bea2f752ff3e251d32f9f",
      "tree": "b2d65f4668793fab5652dfe41dcf13c913fee3a8",
      "parents": [
        "d4415e8bd04c4a9367744ff0149597b4f37a0e0a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jul 11 10:09:13 2014 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jul 11 10:09:13 2014 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add intrinsic for Reference.get()\"\"\"\n\nThis reverts commit d4415e8bd04c4a9367744ff0149597b4f37a0e0a.\n\nChange-Id: I34553ccbdcfea35c7742d21be2a74dc7085ab2a0\n"
    },
    {
      "commit": "d4415e8bd04c4a9367744ff0149597b4f37a0e0a",
      "tree": "97c42c08fd04034cf6cecadb39644bf9531be0f1",
      "parents": [
        "a9b870b73a155ce70c867d5b3f9758fab0b45f07"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 06:44:39 2014 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 06:44:39 2014 +0000"
      },
      "message": "Revert \"Revert \"Add intrinsic for Reference.get()\"\"\n\nThis reverts commit a9b870b73a155ce70c867d5b3f9758fab0b45f07.\n\nChange-Id: Ic2a9b47f2b911bef4b764d10bc33cf000e4b4211\n"
    },
    {
      "commit": "a9b870b73a155ce70c867d5b3f9758fab0b45f07",
      "tree": "b2d65f4668793fab5652dfe41dcf13c913fee3a8",
      "parents": [
        "460503b13bc894828a2d2d47d09e5534b3e91aa1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 04:18:58 2014 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 11 04:18:58 2014 +0000"
      },
      "message": "Revert \"Add intrinsic for Reference.get()\"\n\nThis reverts commit 460503b13bc894828a2d2d47d09e5534b3e91aa1.\n\nChange-Id: Ie63f43049307e02e3b90f4e034abc9ea54ca4e24\n"
    },
    {
      "commit": "460503b13bc894828a2d2d47d09e5534b3e91aa1",
      "tree": "97c42c08fd04034cf6cecadb39644bf9531be0f1",
      "parents": [
        "adce33da293b0eeaaf52673338770f22be71ca5d"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Jun 18 11:26:11 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Thu Jul 10 10:41:34 2014 -0700"
      },
      "message": "Add intrinsic for Reference.get()\n\nAdded an intrinsic function for Reference.get(). Return immediately\nwithout going through JNI if the slow path is not currently in use.\nOtherwise, branch off to the the existing JNI function.\n\nApproximately 47x speedup for cases where slow path is not enabled.\n\nChange-Id: I13ad65a356fe4e104d8d83980694dc2740d7d039\n"
    },
    {
      "commit": "70c4f06f9965cdb9319a2c85f65acda20086d765",
      "tree": "8e6ecc6ab21d76deaa35b5929f664bbf90f3d6cd",
      "parents": [
        "cecec712e1e05aab1fe3469077016320b7bf9583"
      ],
      "author": {
        "name": "DaniilSokolov",
        "email": "daniil.y.sokolov@intel.com",
        "time": "Tue Jun 24 17:34:00 2014 -0700"
      },
      "committer": {
        "name": "Dmitry Petrochenko",
        "email": "dmitry.petrochenko@intel.com",
        "time": "Tue Jul 08 09:30:17 2014 +0700"
      },
      "message": "ART: Intrinsic implementation for java.lang.System.arraycopy.\n\nImplements intrinsic for  java.lang.System.arraycopy(char[], int, char[], int, int) -\nthis method is internal to android class libraries and used in such classes as StringBuffer and\nStringBuilder. It is not possible to call it from application code. The intrinsic for\nthis method is implemented as inline method (assembly code is generated manually).\n\nThe intrinsic is x86 32 bit only.\n\nChange-Id: Id1b1e0a20d5f6d5f5ebfe1fdc2447b6d8a515432\nSigned-off-by: Daniil Sokolov \u003cdaniil.y.sokolov@intel.com\u003e\n"
    },
    {
      "commit": "23abec955e2e733999a1e2c30e4e384e46e5dde4",
      "tree": "c0a11826d94243cdbeda83a86e7a420c997b477b",
      "parents": [
        "c72966a25c205a3914164f586e44e586e5715468"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Wed Jul 02 16:13:38 2014 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 03 17:39:00 2014 -0700"
      },
      "message": "AArch64: Add few more inline functions\n\nThis patch adds inlining support for the following functions:\n* Math.max/min(long, long)\n* Math.max/min(float, float)\n* Math.max/min(double, double)\n* Integer.reverse(int)\n* Long.reverse(long)\n\nChange-Id: Ia2b1619fd052358b3a0d23e5fcbfdb823d2029b9\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "c8f60a69a9f2420fc1ecafec612a667be8dcd547",
      "tree": "dff78a37faedcbe9964ba30ed69f8175365e9d7b",
      "parents": [
        "e1fced1d1805caec04b6e97d2b01a4977c6785c6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 02 15:24:05 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 07 17:14:39 2014 +0100"
      },
      "message": "Inlining synthetic accessors.\n\nBug: 11549140\nChange-Id: I0d6a38c51887f55563414c240ac42ee64bdb5426\n"
    },
    {
      "commit": "e1fced1d1805caec04b6e97d2b01a4977c6785c6",
      "tree": "ea5cf241f7237b6d1616301c46d3d184333ca10e",
      "parents": [
        "427ca38b0a6c6fd7dc0dbb380619e2b91b56cf1c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 04 14:52:53 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 07 16:59:13 2014 +0100"
      },
      "message": "Inlining setters that return one of their arguments.\n\nUseful for builder classes and synthetic setters. The latter\nare not inlined yet since they are static methods, i.e. they\ndon\u0027t use \"this\" as the object for IPUT.\n\nChange-Id: I3d34156c3629b837a0a95ccc34a8aae3f4a636d5\n"
    },
    {
      "commit": "73ed718e7b08d17fd2e4af9bceb5e74ac46db676",
      "tree": "54ffaf38ad27e3307ec2b43bb1993f40569e27d8",
      "parents": [
        "389e11db6ef350b806f7a3f0d7b7df23b0ab6e0c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 04 18:02:08 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 04 18:02:15 2014 -0700"
      },
      "message": "Revert \"Inlining setters that return one of their arguments.\"\n\nBug: 13817614\n\nThis reverts commit 8e40c3e662d852da87b6bcfe79355f96ab9e91c7.\n\nChange-Id: Ia7ed2d933514781150b2e0b9855244e383c60187\n"
    },
    {
      "commit": "389e11db6ef350b806f7a3f0d7b7df23b0ab6e0c",
      "tree": "fdeb0bd312f57bc57c244658660e00cc23453c45",
      "parents": [
        "818b4cf753d6e8a294f0fbe2e3bd9168eea9f762"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 04 18:02:04 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 04 18:02:04 2014 -0700"
      },
      "message": "Revert \"Inlining synthetic accessors.\"\n\nThis reverts commit 505ebb0e7b42e7facc8354515b06333ee8b84b10.\n"
    },
    {
      "commit": "505ebb0e7b42e7facc8354515b06333ee8b84b10",
      "tree": "6f7adb2333b5a3b8b903097cf80f8b7896ed7d2e",
      "parents": [
        "8e40c3e662d852da87b6bcfe79355f96ab9e91c7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 02 15:24:05 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 04 17:25:17 2014 +0100"
      },
      "message": "Inlining synthetic accessors.\n\nBug: 11549140\nChange-Id: Ie0034a6840b1beaa3df92f26bf9d315119c81e34\n"
    },
    {
      "commit": "8e40c3e662d852da87b6bcfe79355f96ab9e91c7",
      "tree": "866b2a827ed70a36ba060bb6d79fa8f1fc4b9fcd",
      "parents": [
        "764c798b57b7baa04885fcdf5eba5708a01b9edc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 04 14:52:53 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 04 16:15:51 2014 +0100"
      },
      "message": "Inlining setters that return one of their arguments.\n\nUseful for builder classes and synthetic setters. The latter\nare not inlined yet since they are static methods, i.e. they\ndon\u0027t use \"this\" as the object for IPUT.\n\nChange-Id: I946cf570195be83ecec5fb32851bcaefad45f8a5\n"
    },
    {
      "commit": "e3e0260c23d8999b9433715ac7ee5296ee2fd633",
      "tree": "8f13f12f929e36d9366583934ebb4a20b4ce09b7",
      "parents": [
        "ca46e2003360b44f4c043f6da87092592bc3d6d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 12 15:42:41 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 12 17:59:23 2014 +0000"
      },
      "message": "Move inline method detection to runtime.\n\nThe debugger needs this for selective deoptimization.\n\nChange-Id: I8100000449b56e619288fb05d41ea6f02b53b334\n"
    }
  ]
}
