)]}'
{
  "log": [
    {
      "commit": "796d63050a18f263b93ea34951a61deaecab3422",
      "tree": "813865c31b25ac06006e4ee3932b4e918c708c9b",
      "parents": [
        "eecf60d51b481647c8508f22b3d6ce437773ea0c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Mar 13 22:22:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 22 15:17:58 2016 +0000"
      },
      "message": "Add an ImtConflictTable to better resolve IMT conflicts.\n\n- Attach a ImtConflictTable to conflict runtime ArtMethod.\n- Initially 0, a new one will be created at the first hit of\n  the conflict method.\n- If the assembly code does not find a target method in the table,\n  we will create a new one again, copying the data from the previous\n  table and adding the new mapping.\n\nImplemented for arm/arm64/x86/x64.\n\nbug:27556801\nbug:24769046\n\nChange-Id: Ie74d1c77cf73d451a1142bdc5e3683f9f84bb4e7\n"
    },
    {
      "commit": "e9dd04f633fcffc485f8d74861f39f66fc8bc522",
      "tree": "894c9061f726899e0988c5c0c987eb18bab2d527",
      "parents": [
        "e848c29bb35d91f23bb6f52712aa7f2dff342ea0"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 16 16:09:45 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 17 16:29:55 2016 +0000"
      },
      "message": "Revert \"Revert \"Fix issue with proxy invocation on default methods\"\"\n\nThis reverts commit daf58c80d42f024aae0cb94ebd2c0bd61ebbf240.\n\nBug: 27621360\nChange-Id: I56fccf19ae80451be4c316ba14911c667cbe9e47\n"
    },
    {
      "commit": "fedd91d50930e160c021d65b3740264f6ffec260",
      "tree": "5f356423e51f3bd71020ba0a5f024c54adc959e7",
      "parents": [
        "97f4bc04b61d5cf78b0820dbf18e999b20d7a108"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 07 14:49:16 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 28 15:46:55 2016 -0800"
      },
      "message": "Optimizing compiler support for directly calling interface methods\n\nThis teaches the optimizing compiler how to perform invoke-super on\ninterfaces. This should make the invokes generally faster.\n\nBug: 24618811\n\nChange-Id: I7f9b0fb1209775c1c8837ab5d21f8acba3cc72a5\n"
    },
    {
      "commit": "f39745e663f8f2634fc8858e427b77da98f8f2b4",
      "tree": "b8cd5abd22e0252511166930ac6326a2f38e6980",
      "parents": [
        "36867b43efadc637ab74b1bacb1caecea2c5413d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 26 12:16:55 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 26 12:16:55 2016 +0000"
      },
      "message": "ART: Remove some unnecessary mutator lock annotations.\n\nThe StackReference\u003c\u003e pointer held by a Handle\u003c\u003e can be used\nwithout holding the mutator lock. We already do that when\nwe copy Handle\u003c\u003es around. Only accessing the actual content\nof the pointed-to StackReference\u003c\u003e needs to be done while\nholding the mutator lock.\n\nChange-Id: I5f93bd7e277383192f1f16dff6883ecb26387414\n"
    },
    {
      "commit": "42ef8ab151a3d0cbb42cb43f6841c3708d65fca3",
      "tree": "ba8eb3fdecd226a8c516a86ac418f73f6c0ff254",
      "parents": [
        "170e01a6b59b3242a5afc76c3a03c00ce288150f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 03 17:27:32 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 10 13:52:33 2015 -0800"
      },
      "message": "ART: Stash a resolved method late in the verifier\n\nInvoke-interface should only be called on an interface method.\nWe cannot move the check earlier, as there are other checks\nthat must be done that can fail a class hard. So postpone\na push to the dex cache.\n\nClean up the test a bit.\n\nAlso templatize ResolveMethod with a version always checking\nthe invoke type, and on a cache miss check whether type target\ntype is an interface when an interface invoke type was given.\n\nBug: 21869691\nChange-Id: I94cbb23339cbbb3cb6be9995775e4dcefacce7fd\n"
    },
    {
      "commit": "c96205e03bd4f991ad1540df38f9f692ef211b22",
      "tree": "4ae775d15f51efb704ca5b00a2ee4b6fb6615812",
      "parents": [
        "34760f9a97e6a1733edfca1b13199f749106a30f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 10 13:25:27 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 10 13:27:10 2015 -0800"
      },
      "message": "Revert \"ART: Check invoke-interface earlier in verifier\"\n\nThis reverts commit dae24142127c64551142a50423085aabdb0a6060.\n\nIt is important to check the name of the method being called.\n\nBug: 21869691\n"
    },
    {
      "commit": "eb5ddd7b02ce2d25d4f28f85a13aac628526e1c1",
      "tree": "8f655b382e73222e70e30daaeedc3999014aa7ae",
      "parents": [
        "2433d4e17c3006b8262a0d9421e201fc84777208",
        "dae24142127c64551142a50423085aabdb0a6060"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 08 22:33:23 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 08 22:33:23 2015 +0000"
      },
      "message": "Merge \"ART: Check invoke-interface earlier in verifier\""
    },
    {
      "commit": "dae24142127c64551142a50423085aabdb0a6060",
      "tree": "35c06bc37e2dd2caad4fef1fba4de16a12aad6f9",
      "parents": [
        "ef45113d01c16102538a8848d6979e772dad6225"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 03 17:27:32 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 08 08:50:12 2015 -0800"
      },
      "message": "ART: Check invoke-interface earlier in verifier\n\nInvoke-interface should only be called on an interface method.\nMove the check earlier, as otherwise we\u0027ll try to resolve and\npotentially inject a method into the dex cache.\n\nAlso templatize ResolveMethod with a version always checking\nthe invoke type, and on a cache miss check whether type target\ntype is an interface when an interface invoke type was given.\n\nBug: 21869691\nChange-Id: Ica27158f675b5aa223d9229248189612f4706832\n"
    },
    {
      "commit": "73be1e8f8609708f6624bb297c9628de44fd8b6f",
      "tree": "47a22745797a345dea8dd846aad00334da0d5bf1",
      "parents": [
        "47229aa5848df7d45578dbdd9285f57dfa9399a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 15:22:56 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 12:08:02 2015 +0000"
      },
      "message": "Inline monomorphic calls.\n\nChange-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f\n"
    },
    {
      "commit": "e523423a053af5cb55837f07ceae9ff2fd581712",
      "tree": "6c2d9c570bf0d9a0e2cd056e052c0be618b03fc5",
      "parents": [
        "08a84acc7adb1bb076595eb961bd4667896e5075"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 09:06:11 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 02 13:01:25 2015 +0000"
      },
      "message": "Revert \"Revert \"Don\u0027t use the compiler driver for method resolution.\"\"\n\nThis reverts commit c88ef3a10c474045a3476a02ae75d07ddd3230b7.\n\nChange-Id: I0ed88a48b313a8d28bc39fae40631123aadb13ef\n"
    },
    {
      "commit": "3a0909248e04b22c3981cbf617bc2502ed5b6380",
      "tree": "b0b7013ea78b10f23fae75ef145e53a696ff797c",
      "parents": [
        "457e874459ae638145cab6d572e34d48480e39d2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "message": "Revert \"lambda: Add support for invoke-interface for boxed innate lambdas\"\n\n955-lambda is flaky\n\nBug: 24618608\nBug: 25107649\n\nThis reverts commit 457e874459ae638145cab6d572e34d48480e39d2.\n\nChange-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7\n"
    },
    {
      "commit": "457e874459ae638145cab6d572e34d48480e39d2",
      "tree": "b192c4698c4889ae90db6abe2652199802213fe6",
      "parents": [
        "3944f7175dcf60316ba58a42698ccf23c65ac57c"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 22 17:37:50 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Nov 20 16:33:06 2015 -0800"
      },
      "message": "lambda: Add support for invoke-interface for boxed innate lambdas\n\nLambda closures created with the \u0027create-lambda\u0027 instruction\n(termed \"innate lambdas\") can be turned into an object with \u0027box-lambda\u0027.\n\nThis CL enables support for those kinds of lambdas to work with\n\u0027invoke-interface\u0027 by generating a proxy class for the lambda.\n\nNote: MIPS32/64 support not included.\n\nBug: 24618608\nBug: 25107649\nChange-Id: Ic8f1bb66ebeaed4097e758a50becf1cff6ccaefb\n"
    },
    {
      "commit": "9139e008abe30b7beaf4afd6533228a1dd9b202c",
      "tree": "506be89287507bd777bd132627ad963729434969",
      "parents": [
        "d7c76bd7e867b151ac81ef41810614c7b4cc898e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 09 15:59:48 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 10 17:20:41 2015 -0800"
      },
      "message": "Correct exception behavior for default methods\n\nDefault methods are defined to throw an IncompatibleClassChangeError\n(ICCE) when they are called and there is no \"best\" implementation.\nPreviously we would simply throw an ICCE during class loading as soon\nas we noticed that this would happen if called. This makes us wait\nuntil we actually attempt to execute the method. Furthermore, this\nallows us to use other, non-conflicting, methods on the object as\nnormal.\n\nFurthermore, this makes us correctly throw AbstractMethodErrors in\ncases where all default implementations of a method are overridden by\nabstract declarations.\n\nAdds 3 tests for this new behavior.\n\nBug: 24618811\n\nChange-Id: Id891958a81f9b3862b2ce5919636aabef7d3422e\n"
    },
    {
      "commit": "524e7ea8cd17bad17bd9f3e0ccbb19ad0d4d9c02",
      "tree": "ad07cc96f633bdae839ff2f1553d84b9c864a930",
      "parents": [
        "b697c447eb61c2e14315166ec3b0d16375ae403c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 16 17:13:34 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 20 11:52:11 2015 +0100"
      },
      "message": "Remove ArtCode.\n\n- Instead use OatQuickMethodHeader.\n- Various cleanups now that we don\u0027t have all those\n  ArtMethod -\u003e ArtCode -\u003e OatQuickMethodHeader indirections.\n\nAs a consequence of this cleanup, exception handling got a bit\nfaster.\n\nParserCombinators benchmark (exception intensive) on x64: (lower is better)\nBefore:\nParserCombinators(RunTime): 1062500.0 us.\nAfter:\nParserCombinators(RunTime): 833000.0 us.\n\nChange-Id: Idac917b6f1b0dc254ad68fb3781cd61bccadb0f3\n"
    },
    {
      "commit": "4b8f1ecd3aa5a29ec1463ff88fee9db365f257dc",
      "tree": "d113f8a5c6b61c078256cf15c7cbb9f7c8de0390",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 26 18:34:03 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 15 12:22:39 2015 -0700"
      },
      "message": "Use ATTRIBUTE_UNUSED more.\n\nUse it in lieu of UNUSED(), which had some incorrect uses.\n\nChange-Id: If247dce58b72056f6eea84968e7196f0b5bef4da\n"
    },
    {
      "commit": "6bc4374e3fa00e3ee5e832e1761c43e0b8a71558",
      "tree": "38118523aa6b9a92fbdcd7bf1d32ca6185a3d3f0",
      "parents": [
        "16065ce56394c73c87dcb78ead4164ddc80fddb3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 12 18:11:10 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 13 12:05:27 2015 +0100"
      },
      "message": "Add an abstraction over a compiled code.\n\nThat\u0027s just step 1, moving code-related functions of ArtMethod to\nanother class. That class is only a wrapper on an ArtMethod, but will\nbe changed to be a wrapper around compiled code.\n\nChange-Id: I6f35fc06d37220558dff61691e51ae20066b0dd6\n"
    },
    {
      "commit": "03ec930faded5bbfa096533ce60b6893847922db",
      "tree": "085ec76235f72647cd2e083801f15d82394e038b",
      "parents": [
        "14412079e6eba4d16f40c0bdc5e94812e1c7f5bc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 27 17:41:47 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 09 16:32:13 2015 -0700"
      },
      "message": "ART: Lock counting in the interpreter\n\nTo support structured locking when balanced-locking verification\nfailed, count lock and unlock operations in the verifier.\n\nBug: 23502994\nChange-Id: I2bb915da6e3d43c49723a943b42d4d5a7c939aa1\n"
    },
    {
      "commit": "e024162070e3ce7e92a65e3b0f62dce7b8a8505a",
      "tree": "707a432372a66f099c23e96a4601cb3f03458d0e",
      "parents": [
        "0766e3ff5638b14d6b3ea6157c800eed11be5b98",
        "a23b4680a8565f28e8aa958febf8949db74a3064"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Sep 29 19:07:50 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 29 19:07:50 2015 +0000"
      },
      "message": "Merge \"Fix a mutator lock violation in the generic JNI end sequence.\""
    },
    {
      "commit": "a23b4680a8565f28e8aa958febf8949db74a3064",
      "tree": "bc86ebbdf93e4318ab89835626996f91bbf94c18",
      "parents": [
        "8a0014dd3ad1562d93695fa0d3033856ec7da133"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Sep 28 17:47:32 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Sep 29 11:33:13 2015 -0700"
      },
      "message": "Fix a mutator lock violation in the generic JNI end sequence.\n\nartQuickGenericJniEndTrampoline() was accessing objects without a shared\nmutator lock right after returning from a JNI call but before switching\nto the runnable state.\n\nThis fixes crashes with table lookup read barriers enabled.\n\nBug: 12687968\nChange-Id: I94ad9ca276750f58cb68b2fa9eb8cdeb371f021b\n"
    },
    {
      "commit": "931e26843bbb688eacfa67b40414c6b8f221a56a",
      "tree": "63511ae48d4d485823e82f9f0c0af2bda4b78102",
      "parents": [
        "ac87001cbbd44b436cc7866f7a41037ca83b17f1",
        "639bdd13993644a267f177f8f5936496bda65e2b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 28 22:40:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 28 22:40:18 2015 +0000"
      },
      "message": "Merge \"ART: Single-frame deopt\""
    },
    {
      "commit": "639bdd13993644a267f177f8f5936496bda65e2b",
      "tree": "fc68e344355ab1c0cfef4d47dd8f2cbc9fc7e022",
      "parents": [
        "b175a45be78152606a1db1eac0b79ef8777644f5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 03 11:22:45 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 28 15:37:28 2015 -0700"
      },
      "message": "ART: Single-frame deopt\n\nAdd deoptimization of a single frame. Works by removing the managed\ncode frame and jumping into the quick-to-interpreter bridge, and\nthe bridge understanding a stored ShadowFrame.\n\nWe need a separate fixup pass. For x86, we leave the return address\non the stack so we don\u0027t need to push it there.\n\nBug: 21611912\nChange-Id: I06625685ced8b054244f8685ab50b238a705b9d2\n"
    },
    {
      "commit": "b30259251b22430fad12f1adeab671e4bf8f88f5",
      "tree": "80bff979beae84702b739962656a16d245a40ef4",
      "parents": [
        "eae0927cb81437389dc96437e9f04903783282b4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 01 14:45:00 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 24 15:42:14 2015 -0700"
      },
      "message": "ART: Use unique_ptr for alloca-ed ShadowFrames\n\nTo enable automated calls of the destructor (for extensions of\nShadowFrame), return a unique_ptr with a custom deleter. Use a\nmacro so that the alloca happens in the caller.\n\nChange-Id: Id28a6ea131f108e4a94ff1699fc22e7b44aec018\n"
    },
    {
      "commit": "05792b98980741111b4d0a24d68cff2a8e070a3a",
      "tree": "bad79a387bcbdaefc87c07b388099960ca9caff3",
      "parents": [
        "c26b4512a01d46756683a4f5e186a0b7f397f251"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 11:56:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 17:30:57 2015 +0100"
      },
      "message": "ART: Move DexCache arrays to native.\n\nThis CL has a companion CL in libcore/\n    https://android-review.googlesource.com/162985\n\nChange-Id: Icbc9e20ad1b565e603195b12714762bb446515fa\n"
    },
    {
      "commit": "0747466fca310eedea5fc49e37d54f240a0b3c0f",
      "tree": "6d27922fa35330dd8d863ea56c82c5f04b711822",
      "parents": [
        "9ee5d6cdc14ac94b64ea1961bf221bad48746929"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:12:33 2015 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 26 16:54:32 2015 +0200"
      },
      "message": "Revert \"Revert \"Fix deoptimization with pending exception\"\"\n\nThis reverts commit 6e2d5747d00697a25251d25dd33b953e54709507.\n\nFixes the deoptimization path from compiled code (generated by the\nOptimizing compiler) by adding wrapper artDeoptimizeFromCompiledCode.\nThis wrapper, called through the matching assembler stub\nart_quick_deoptimize_from_compiled_code, pushes the deoptimization\ncontext just before deoptimizing the stack.\n\nBug: 23371176\nBug: 19944235\nChange-Id: Ia7082656998aebdd0157438f7e6504c120e10d3e\n"
    },
    {
      "commit": "ff73498a5539d87424a964265e43765e788aec44",
      "tree": "3f8a525ef91d2f12e4b2a71c04fc8147a12c12bd",
      "parents": [
        "9dc601eb65da0cd5f53172699dacd6e5dd38ab44"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Mon Aug 24 12:58:55 2015 +0000"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Aug 25 17:17:22 2015 +0200"
      },
      "message": "Revert \"Revert \"[MIPS] Use hard float calling convention for managed code\"\"\n\nThis reverts commit 7fee84c087e0f903e7d43bef180df047db1c8051.\n\nFixed issue with temporary registers on Mips32r6.\n\nChange-Id: I93018927e6a6036cff2d55e6cda66d3212a4316b\n"
    },
    {
      "commit": "6e2d5747d00697a25251d25dd33b953e54709507",
      "tree": "b68a418e93780ed55abd79dc8e76f3459e884254",
      "parents": [
        "54b62480636ae846d705fc180c7bd6cd08ec1e42"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:05:17 2015 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:05:17 2015 +0000"
      },
      "message": "Revert \"Fix deoptimization with pending exception\"\n\nThis reverts commit 54b62480636ae846d705fc180c7bd6cd08ec1e42.\n\nThis is causing test failures with Optimizing compiler.\n\nBug: 23371176\nBug: 19944235\nChange-Id: Ie3ffbcf2b6d2ca8bc93cb008a4e29a7567d04a7c\n"
    },
    {
      "commit": "54b62480636ae846d705fc180c7bd6cd08ec1e42",
      "tree": "d46a6c7bebb45ddbbd5b0a6818b3bb2ce49f48ed",
      "parents": [
        "f0170ded84fbcd3d9152cdbcf9ffbf74c71b03ba"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Aug 20 12:07:57 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:13:49 2015 +0200"
      },
      "message": "Fix deoptimization with pending exception\n\nWhen deoptimizing the stack, we set a fake exception in the current\nThread* (see method Thread::GetDeoptimizationException). On the next\nexception check, the QuickExceptionHandler will deoptimize the stack.\n\nThe issue is when we deoptimize while an exception is already pending\nin the current Thread*: setting the fake exception will clobber the\npending exception which is not correct. This happens in the\nartQuickToInterpreterBridge when returning from the interpreter and\nwe want to deoptimize the stack for debugging (like single-stepping).\n\nThis CL saves the pending exception before asking for deoptimization.\nThen the exception is restored just before executing the deoptimized\nframes with the interpreter.\n\nAlso cleans up the way we save deoptimization context (return value\nand pending exception).\n\nBug: 23371176\nBug: 19944235\nChange-Id: I7f4c8347b328817c452beda3399e210eba3a88a4\n"
    },
    {
      "commit": "7fee84c087e0f903e7d43bef180df047db1c8051",
      "tree": "c35065aeef23f857563eacd82e55ae47d8ceb67c",
      "parents": [
        "a29449dcf57c57fe0876f51367985477317cc557"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 21 18:39:26 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 21 18:39:26 2015 +0000"
      },
      "message": "Revert \"[MIPS] Use hard float calling convention for managed code\"\n\nMipsMir2Lir::LockCallTemps() is broken for secondary architecture on aosp_mips64-eng.\n\nThis reverts commit a29449dcf57c57fe0876f51367985477317cc557.\n\nChange-Id: I480ea7569d73aea7894fc0a6dd804b1135286a37\n"
    },
    {
      "commit": "a29449dcf57c57fe0876f51367985477317cc557",
      "tree": "3b077e6f286bfdb48f211e0d0672ff301c5b7006",
      "parents": [
        "28de0f652e32e112edab0e5e7dc779943ae488d5"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Wed Jul 22 11:08:57 2015 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Fri Aug 21 14:40:30 2015 +0200"
      },
      "message": "[MIPS] Use hard float calling convention for managed code\n\nNote that this isn\u0027t o32 ABI. Same set of registers is used for\narguments ($a0-$a3 and $f12-$f15), but we don\u0027t skip registers\nand fp arguments are never passed via core registers.\n\nChange-Id: Ifb883ff6e15758b539137898b49ac2f8ee075f49\n"
    },
    {
      "commit": "3a35714ebca10c989aa383c0861e2e84fe8dadf8",
      "tree": "3218ed8f5962af0351e1d285ccaff5207050672d",
      "parents": [
        "275bc5e5f318ba6ea1bad6c89c2924d1248b7523"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 07 17:20:11 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 07 17:22:26 2015 -0700"
      },
      "message": "ART: Clean up unnecessary ArtMethod**\n\nArtMethods are no longer Java objects, so the additional indirection\nis no longer necessary here.\n\nChange-Id: If76756d875b418b3f6e83f51b3225a158e9ce29b\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": "1f2d3ba6af52cf6f566deb38b7e07735c9a08fb6",
      "tree": "af6ae612d43c50703292d39a8a0b37dda3f919a6",
      "parents": [
        "ccd6337f31d13706c602f3d9436e9b4025075b63"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 18 12:12:50 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Jun 08 00:53:55 2015 -0700"
      },
      "message": "Fix nested deoptimization.\n\nHandle nested deoptimization cases. Create a stacked shadow frame\nrecords to keep track of deoptimization shadow frames. Shadow frames\nunder construction can be tracked in the same stack.\n\nBug: 20845490\nChange-Id: I768285792c29e7c3cfcd21e7a2600802506024d8\n"
    },
    {
      "commit": "f677ebfd832c9c614fea5e6735725fec2f7a3f2a",
      "tree": "051b3ba6343bdbca4929d728dd5c0341e4383a08",
      "parents": [
        "c47908e8c32fd58bc4dc75998a80f706954db1dc"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri May 29 16:29:43 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jun 04 17:25:02 2015 +0100"
      },
      "message": "Cache stack map encoding\n\nOperations on CodeInfo and StackMap objects repeatedly read encoding\ninformation from the MemoryRegion. Since these are 3-bit-loads of\nvalues that never change, caching them can measurably reduce compile\ntimes.\n\nAccording to benchmarks, this patch saves 1-3% on armv7, 2-4% on x86,\nand 0-1% on x64.\n\nChange-Id: I46b197513601325d8bab562cc80100c00ec28a3b\n"
    },
    {
      "commit": "4edd8476339fd93ba8ff384ad107f1fc662e64a3",
      "tree": "6937496e8d32791ca450ef923d7e4b27eb07bf08",
      "parents": [
        "7b9f214463b9a5a49b497421713efead3fb32ec4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 01 10:47:36 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 01 10:51:42 2015 -0700"
      },
      "message": "Fix accidental IMT and root marking regression\n\nWas always using the conflict trampoline. Also included fix for\nregression in GC time caused by extra roots. Most of the regression\nwas IMT.\n\nFixed bug in DumpGcPerformanceInfo where we would get SIGABRT due to\ndetached thread.\n\nEvaluateAndApplyChanges:\nFrom ~2500 -\u003e ~1980\nGC time: 8.2s -\u003e 7.2s due to 1s less of MarkConcurrentRoots\n\nBug: 19264997\nChange-Id: I4333e80a8268c2ed1284f87f25b9f113d4f2c7e0\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "d23eeef3492b53102eb8093524cf37e2b4c296db",
      "tree": "57d3e9ab2853d5b8092568bb3d29bc850c113315",
      "parents": [
        "a15c78d3cc28f514a482ffd792a767e97fe53c95"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 18 22:31:29 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 14:15:04 2015 +0100"
      },
      "message": "Support for inlining methods that call/throw.\n\nMostly fixes here and there to make it working.\n\nChange-Id: I1b535e895105d78b65634636d675b818551f783e\n"
    },
    {
      "commit": "33d75bc75c72db7e5b1ea4ad0be287b1dfd72e69",
      "tree": "f2bdf02aba34e7d59c760df1b54bb3c789ee6648",
      "parents": [
        "65efe9192390187674108b9c895ba225628bb07b",
        "3b45ef277e4a5f7e0314d5df7ef82e480156ba75"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 27 22:41:30 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 27 22:41:31 2015 +0000"
      },
      "message": "Merge \"ART: Fix VerifyObject runtime verification\""
    },
    {
      "commit": "3b45ef277e4a5f7e0314d5df7ef82e480156ba75",
      "tree": "1df28568b9e7e4e50102b7f834fab6e943c444a5",
      "parents": [
        "c06841dac1443e99e92596f15caa82c99bfee010"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 26 21:34:09 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 27 08:24:03 2015 -0700"
      },
      "message": "ART: Fix VerifyObject runtime verification\n\nUpdate some bit-rotted code to work again. Most tests now work, for\nsome the verification overhead results in a timeout.\n\nChange-Id: Ieab4f2de474a05e915e24abc93da3c2eeed996eb\n"
    },
    {
      "commit": "8ea18d0f066f63fa4e5d154f14327468bf288e2b",
      "tree": "a575e8d0f826ab8b3aaae949c22cc6c73ca040fb",
      "parents": [
        "092a5656937a319449346e8c356f3f4c2870d81c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 26 16:29:08 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 27 12:07:34 2015 +0100"
      },
      "message": "Pass the dex method index directly to interface trampoline.\n\nThis avoids computing the dex pc and re-finding the method\nindex again. I have kept the code for kDebugBuild.\n\nChange-Id: Icd60e0deade755e32b54021c0875b1af592b8c3e\n"
    },
    {
      "commit": "9bd88b0933a372e6a7b64b850868e6a7998567e2",
      "tree": "bcd275674c1234842b757ea8e100c4030f9ac6fe",
      "parents": [
        "01cb410f4ad23135671d821ba36c269f8c82affa"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@linaro.org",
        "time": "Wed Apr 22 16:24:46 2015 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Fri May 22 12:01:07 2015 +0100"
      },
      "message": "ARM64: Move xSELF from x18 to x19.\n\nThis patch moves xSELF to callee saved x19 and removes support for\nETR (external thread register), previously used across native calls.\n\nChange-Id: Icee07fbb9292425947f7de33d10a0ddf98c7899b\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@linaro.org\u003e\n"
    },
    {
      "commit": "7ea6a170486d81b127e69673cd1020c4db628c93",
      "tree": "02a302e1f952490dc3238eb96c103dab0590e8ff",
      "parents": [
        "dc23a3882b82a7a3dd5078cda3f4b4706e172617"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 19 18:58:54 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 11:10:36 2015 +0100"
      },
      "message": "Don\u0027t hardcode the location of the caller.\n\nThis is to avoid shooting ourselves in the foot when\ndealing with inlined frames. Instead, use common methods\nfor fetching the caller and its dex pc.\n\nChange-Id: I3467a7b50cf163022d332e80356f0aab747de252\n"
    },
    {
      "commit": "fc58af45e342ba9e18bbdf597f205a58ec731658",
      "tree": "3f93906235cb4d2462d237223b72ccf4eedef645",
      "parents": [
        "bbf02afc641a393d33342976e269218668c07386"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 16 18:00:39 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 15:51:29 2015 -0700"
      },
      "message": "Add AbstractMethod, Constructor, Method\n\nMoves functionality to ART from libcore. Precursor to moving\nArtMethods to native. Mostly performance improvements.\n\nN5 perf before (irrelevant results removed):\n            Class_getConstructor  962.87 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n         Class_getDeclaredMethod 2394.37 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                 Class_getMethod 2509.20 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n               Class_newInstance 1999.81 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeI 1439.02 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n          Method_invokePreBoxedI 1415.82 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticI 1456.24 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n    Method_invokeStaticPreBoxedI 1427.32 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticV  814.47 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeV  816.56 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nAfter:\n                       benchmark      ns linear runtime\n            Class_getConstructor 1302.04 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n         Class_getDeclaredMethod 1459.01 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                 Class_getMethod 1560.40 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n               Class_newInstance 2029.94 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeI 1312.89 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n          Method_invokePreBoxedI 1255.01 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticI 1289.13 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n    Method_invokeStaticPreBoxedI 1196.52 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticV  790.82 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeV  791.73 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nPerformance improvements are more than just fixing regressions introduced\nin: http://android-review.googlesource.com/#/c/146069/\n\nBug: 19264997\n\nChange-Id: Ife79c469fdb09f30e3aefcfc3e0ce5ed32303fce\n"
    },
    {
      "commit": "69a503050fb8a7b3a79b2cd2cdc2d8fbc594575d",
      "tree": "b7f99172f921d7100959ab48210097906794d043",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Tue Apr 14 20:04:41 2015 +0800"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 14 17:29:08 2015 +0100"
      },
      "message": "ARM64: Remove suspend register.\n\nIt also clean up build/remove frame used by JNI compiler and generates\nstp/ldp instead of str/ldr. Also x19 has been unblocked in both quick and\noptimizing compiler.\n\nChange-Id: Idbeac0942265f493266b2ef9b7a65bb4054f0e2d\n"
    },
    {
      "commit": "da4d79bc9a4aeb9da7c6259ce4c9c1c3bf545eb8",
      "tree": "151dd61c4b6a8fd512ea4c2c862af28b02f4ed9c",
      "parents": [
        "af87659f462ac650009fce295097cae3dabce171"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 24 14:36:11 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 24 16:02:21 2015 +0000"
      },
      "message": "Unify ART\u0027s various implementations of bit_cast.\n\nART had several implementations of art::bit_cast:\n\n1. one in runtime/base/casts.h, declared as:\n\n   template \u003cclass Dest, class Source\u003e\n   inline Dest bit_cast(const Source\u0026 source);\n\n2. another one in runtime/utils.h, declared as:\n\n   template\u003ctypename U, typename V\u003e\n   static inline V bit_cast(U in);\n\n3. and a third local version, in runtime/memory_region.h,\n   similar to the previous one:\n\n   template\u003ctypename Source, typename Destination\u003e\n   static Destination MemoryRegion::local_bit_cast(Source in);\n\nThis CL removes versions 2. and 3. and changes their callers\nto use 1. instead.  That version was chosen over the others\nas:\n- it was the oldest one in the code base; and\n- its syntax was closer to the standard C++ cast operators,\n  as it supports the following use:\n\n    bit_cast\u003cDestination\u003e(source)\n\n  since `Source\u0027 can be deduced from `source\u0027.\n\nChange-Id: I7334fd5d55bf0b8a0c52cb33cfbae6894ff83633\n"
    },
    {
      "commit": "eb07669e9784ccb41d75df180727e57fc4520e28",
      "tree": "bc15da11ee0ce906252a33371f8f59138bc5a38f",
      "parents": [
        "bce0855ca1dbb1fa226c5b6a81760272ce0b64ef"
      ],
      "author": {
        "name": "Daniel Mihalyi",
        "email": "daniel.mihalyi@mattakis.com",
        "time": "Fri Aug 22 17:33:31 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Mar 24 14:43:57 2015 +0100"
      },
      "message": "JDWP: Optimized single step during debugging\n\nFor single stepping full deoptimization and undeoptimizations were\nperformed with significant overhead, because every code will be\nexecuted in interpreted mode during a single step, even if it is not\nstrictly required.\n\nFor example, if we have a computation heavy method call and we would\nlike to step over it, that method (and all the methods called from it)\nwill run in interpreter mode. This can take so long in some cases\n(e.g. multiple minutes) that it makes debugging process unusable.\n\nThe solution for this limitation is not using full deoptimizations for\nsingle steps and force interpreter only for those methods that we are\nabout to step into, and require stack deoptimization before step outs.\n\nBug: 17750566\nBug: 18094282\nBug: https://code.google.com/p/android/issues/detail?id\u003d77984\n\nChange-Id: I683c52465883146c4c84ec47bf96f8efd920527f\nSigned-off-by: Daniel Mihalyi \u003cdaniel.mihalyi@mattakis.com\u003e\n"
    },
    {
      "commit": "6ea651f0f4c7de4580beb2e887d86802c1ae0738",
      "tree": "fd97dcbd7301892cb785ca34aee21ad86437c3b3",
      "parents": [
        "0e242b5cad3c0b68b72f28c1e5fd3fdd4c05bfd8"
      ],
      "author": {
        "name": "Maja Gagic",
        "email": "maja.gagic@imgtec.com",
        "time": "Tue Feb 24 16:55:04 2015 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 06 13:05:47 2015 -0800"
      },
      "message": "Initial support for quick compiler on MIPS64r6.\n\nChange-Id: I6f43027b84e4a98ea320cddb972d9cf39bf7c4f8\n"
    },
    {
      "commit": "d18e083522e8148427c08a35034c10f63f61f31d",
      "tree": "884b0cc94ba18d3ac14ec69c771bfe13f4b657ac",
      "parents": [
        "2a3611feeb12bd73ccdbb4692f9ca3705f925d56"
      ],
      "author": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Mon Feb 09 15:22:26 2015 -0800"
      },
      "committer": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Mon Feb 09 15:25:58 2015 -0800"
      },
      "message": "Fix a compilation error for Mips64.\n\nChange-Id: I4f35750c4b840fce18c467995787e92bc38a7812\n"
    },
    {
      "commit": "3e6a3bf797e49b7f449256455c7e522e888687d8",
      "tree": "1e574169ff7743729cdfb1b9cf3b217f198a330d",
      "parents": [
        "9544368685b4aa65e746332e602491a3e8e5b247"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Jan 19 14:09:22 2015 -0500"
      },
      "committer": {
        "name": "Mark P Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Jan 30 13:17:23 2015 +0000"
      },
      "message": "ART: Change x86 long param ABI (Quick/JNI/Opt)\n\nEnsure that we don\u0027t pass a long parameter across the last register\nand the stack: skip the register and allocate it only on the stack.\nThis was requested to simplify the optimizing compiler code\ngeneration for x86.\n\nOptimizing (Baseline) compiler support for x86 longs:\n- Remove QuickParameter from Location, as there are no longer any uses\n  of it.\n\nBump oat.h version because we changed an ABI again.\n\nI changed IsParamALong() to return false for argument 0 (this argument).\nI am not sure why it differed from all other tests.\n\nI have not tested on ARM.  I followed Nicolas\u0027s suggestions for setting\nthe value of kSplitPairAcrossRegisterAndStack for different\narchitectures.\n\nChange-Id: I2f16b33c1dac58dd4f4f503e9c2309d845f5fb7a\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "e4a91bbeaa118bc01a5c338c6a6d9ee094a6a2c6",
      "tree": "8ee63aced115823626d614e70716d745f72bb3a6",
      "parents": [
        "ab7f56d9b9838811cb01773e45999e2cda4aa03a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 28 13:11:44 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 28 14:26:47 2015 -0800"
      },
      "message": "Force set resolved method for static invokes\n\nFor static invokes, we may dispatch to the static method in the\nsuperclass but resolve using the subclass. To prevent getting slow\npaths on each invoke, we force set the resolved method for the\nsuper class dex method index if we are in the same dex file.\n\nAdded test.\n\nBug: 19175856\nChange-Id: I26f8644a7f725f5c2dc2a94a8e9578f573792507\n"
    },
    {
      "commit": "966c3ae95d3c699ee9fbdbccc1acdaaf02325faf",
      "tree": "7a9bd5dbfb8b02f8bb7e3387876be0c1f7844063",
      "parents": [
        "85ed6bdd890c08f50c205d7f0604b5a35603b13e"
      ],
      "author": {
        "name": "Mark P Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Jan 27 15:45:27 2015 +0000"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Jan 27 17:00:21 2015 -0500"
      },
      "message": "Revert \"Revert \"ART: Implement X86 hard float (Quick/JNI/Baseline)\"\"\n\nThis reverts commit 949c91fb91f40a4a80b2b492913cf8541008975e.\n\nThis time, don\u0027t clobber EBX before saving it.\n\nRedo some of the macros to make register usage explicit.\n\nChange-Id: I8db8662877cd006816e16a28f42444ab7c36bfef\n"
    },
    {
      "commit": "949c91fb91f40a4a80b2b492913cf8541008975e",
      "tree": "45c840d1d6fd0ab71d96cb6c61931f468b3a0adf",
      "parents": [
        "aeb47bb12420e65b4b5f61164e6396ea93734a0a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 27 10:48:44 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 27 13:41:29 2015 +0000"
      },
      "message": "Revert \"ART: Implement X86 hard float (Quick/JNI/Baseline)\"\n\nAnd the 3 Mac build fixes. Fix conflicts in context_x86.* .\n\nThis reverts commits\n  3d2c8e74c27efee58e24ec31441124f3f21384b9 ,\n  34eda1dd66b92a361797c63d57fa19e83c08a1b4 ,\n  f601d1954348b71186fa160a0ae6a1f4f1c5aee6 ,\n  bc503348a1da573488503cc2819c9e30807bea31 .\n\nBug: 19150481\nChange-Id: I6650ee30a7d261159380fe2119e14379e4dc9970\n"
    },
    {
      "commit": "3d2c8e74c27efee58e24ec31441124f3f21384b9",
      "tree": "416a60f70414b026395e3660edeee5e1cb10b6f7",
      "parents": [
        "d834380c94af85b498560f3b5feae21ef7fab1ed"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Jan 13 17:32:55 2015 -0500"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Jan 23 12:53:45 2015 -0500"
      },
      "message": "ART: Implement X86 hard float (Quick/JNI/Baseline)\n\nUse XMM0-XMM3 as parameter registers for float/double on X86.  X86_64\nalready uses XMM0-XMM7 for parameters.\n\nChange the \u0027hidden\u0027 argument register from XMM0 to XMM7 to avoid a\nconflict.\n\nAdd support for FPR save/restore in runtime/arch/x86.\n\nMinimal support for Optimizing baseline compiler.\n\nBump the version in runtime/oat.h because this is an ABI change.\n\nChange-Id: Ia6fe150e8488b9e582b0178c0dda65fc81d5a8ba\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "fa04842818fe2d0086872dea311db14a732d52f0",
      "tree": "b78db37592b811712017bf73cff5a491e2fc1760",
      "parents": [
        "d16d76ac64b1b9ed17e9cc17a6afb85f16ce4b51",
        "c6d86725521841637bdd9564e71be3d9691db20f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 16 20:09:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 16 20:09:14 2015 +0000"
      },
      "message": "Merge \"Fix refs_and_args callee save order for Mips32.\""
    },
    {
      "commit": "1a5c40672783fac98aca5a04ac798a0a0014de65",
      "tree": "18545fd8c3588dd4f4dde91d367da82c53cf17a9",
      "parents": [
        "0223a19fa4fc39ba89de2b87b03b98a5fd97778b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 15 12:10:47 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 15 20:13:48 2015 -0800"
      },
      "message": "ART: Mips64 runtime support\n\nInterpret-only Mips64 runtime support.\n\nChange-Id: Iee22d0c8c77105d9b2f03a67dc4e09957fe0ab0a\n"
    },
    {
      "commit": "69c15d340e7e76821bbc5d4494d4cef383774dee",
      "tree": "afea69c321ffa55e0af63a83be62eedd2b378d2f",
      "parents": [
        "603104b5b5c3759b0bc2733bda2f972686a775a3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 13 11:42:13 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 13 18:11:24 2015 +0000"
      },
      "message": "Skip r1 on arm if first parameter is a long.\n\nChange-Id: I16d927ee0a0b55031ade4c92c0095fd74e18ed5b\n"
    },
    {
      "commit": "c6d86725521841637bdd9564e71be3d9691db20f",
      "tree": "052359801333c2973fac4b2f63eccb3977110bd4",
      "parents": [
        "8fccea249b1a6f1469eeea42c2b2cca06ce1c70d"
      ],
      "author": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Wed Dec 10 16:15:17 2014 -0800"
      },
      "committer": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Mon Jan 12 16:32:25 2015 -0800"
      },
      "message": "Fix refs_and_args callee save order for Mips32.\n\nThis patch fixes an ART crash while using the soft keyboard.\n\nChange-Id: Ib2d651c460ce2707356986cd733bed23b0cabb21\n"
    },
    {
      "commit": "6650de241f63f725830560ec09c5e1f13c0d8488",
      "tree": "6c4ec2cef8fd0caf45712191bcbc5d72ed0d318b",
      "parents": [
        "13428670585d9a7f6b24273fb26c721c2ff6c551",
        "0f9b03c65e0ee8bdc5ddf58af100f5fc356cc98b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 12 18:21:37 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 12 18:21:37 2015 +0000"
      },
      "message": "Merge \"Revert \"ART: Implement hard float for X86\"\""
    },
    {
      "commit": "0f9b03c65e0ee8bdc5ddf58af100f5fc356cc98b",
      "tree": "7cb2063f05a857a18e9ff0b7ffed7f741270cfff",
      "parents": [
        "59b9cf7ec0ccc13df91be0bd5c723b8c52410739"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 12 18:21:07 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 12 18:21:07 2015 +0000"
      },
      "message": "Revert \"ART: Implement hard float for X86\"\n\nThis reverts commit 59b9cf7ec0ccc13df91be0bd5c723b8c52410739.\n\nChange-Id: I08333b528032480def474286dc368d916a07e17f\n"
    },
    {
      "commit": "13428670585d9a7f6b24273fb26c721c2ff6c551",
      "tree": "25b602a442679540e6ec029bd81857b098bea3a5",
      "parents": [
        "603104b5b5c3759b0bc2733bda2f972686a775a3",
        "59b9cf7ec0ccc13df91be0bd5c723b8c52410739"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 12 18:19:45 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 12 18:19:46 2015 +0000"
      },
      "message": "Merge \"ART: Implement hard float for X86\""
    },
    {
      "commit": "59b9cf7ec0ccc13df91be0bd5c723b8c52410739",
      "tree": "ee929a74e0bb5b308134393e5f0011bdbf6e8f51",
      "parents": [
        "893e8881e31180721512c1b9e5ffacb03aad2e45"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Jan 09 14:44:36 2015 -0500"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Jan 12 10:36:55 2015 -0500"
      },
      "message": "ART: Implement hard float for X86\n\nUse XMM0-XMM3 as parameter registers for float/double on X86.  X86_64\nalready uses XMM0-XMM7 for parameters.\n\nChange the \u0027hidden\u0027 argument register from XMM0 to XMM7 to avoid a\nconflict.\n\nThis change was requested to simplify the Optimizing compiler\nimplementation.\n\nChange-Id: I89ba8ade99b9a8a5b1ad1ee5f5cbfd33d656bfaa\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "425f239c291d435f519a1cf4bdd9ccc9a2c0c070",
      "tree": "6c4ec2cef8fd0caf45712191bcbc5d72ed0d318b",
      "parents": [
        "11adb76fbc2dc3d8cbb6665945ff5d6733e2a8e6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 08 14:52:29 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 12 14:08:55 2015 +0000"
      },
      "message": "Fix handling of long argument spanning register/memory.\n\nComment in arm_lir.h says:\n * If a 64-bit argument would span the register/memory argument\n * boundary, it will instead be fully passed in the frame.\n\nThis change implements such logic for all platforms. We still need\nto pass the low part in register as well because I haven\u0027t ported\nthe jni compilers (x86 and mips) to it.\n\nOnce the jni compilers are updated, we can remove the register\nassignment.\n\nNote that this greatly simplifies optimizing\u0027s register allocator\nby not having to understand a long spanning register and memory.\n\nChange-Id: I59706ca5d47269fc46e5489ac99bd6576e87e7f3\n"
    },
    {
      "commit": "a836bc9760419af4a515f96c66100a39e865f3b9",
      "tree": "3719f9a8ee66ca734fdb62fa77dae0b60e45ae3c",
      "parents": [
        "c4925d4c02dc8f8d51cb2653b5e7a99f6c9fd7d7"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Nov 25 16:30:53 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Dec 09 12:58:25 2014 +0100"
      },
      "message": "Support proxy method in StackVisitor::GetThisObject\n\nAdds function artQuickGetProxyThisObject which returns the \u0027this\u0027\nobject of the proxy method using the QuickArgumentVisitor. Since\nproxy methods have the same layout than the kRefsAndArgs runtime\nmethod and \u0027this\u0027 is the 1st method argument, it is located in the\nfirst GPR.\n\nBug: 17965861\nChange-Id: Ic6ef6c83b9a549c25f9929d5e00ffe1d3a9a36f0\n"
    },
    {
      "commit": "00f1527007381a0cbf1a2b36b956cb3ddac906cb",
      "tree": "23ada8c25751de12e3f4229f18885667897d05c2",
      "parents": [
        "384f729a465d0ab3a76faa7ec8fa05ced82b4a85"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 16:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 16:55:46 2014 -0800"
      },
      "message": "Fix artQuickResolutionTrampoline.\n\nMistakenly updating dex method index of the non-receiver method.\n\nChange-Id: I42296e344a53e001bf37414852cd9f23f629ca40\n"
    },
    {
      "commit": "e0a02dabedd7db2c511a513fb48d7e39ed3dd9c0",
      "tree": "70ee0e4caa2cc26c661b6cb0231b8423506e50fa",
      "parents": [
        "e94652f1e321b2c8b71acbe5b07d2ebf69fbdb99"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 14:10:53 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 14:21:56 2014 -0800"
      },
      "message": "Move FindDexMethodIndexInOtherDexFile into ArtMethod.\n\nMove FindDexMethodIndexInOtherDexFile out of MethodHelper into ArtMethod in\npreparation for the removal of MethodHelper.\nTidy ClassLinker::ResolveMethod so that all exception paths flow through the\nexception pending assertion.\nTidy artQuickResolutionTrampoline to be more explicit about variable names and\nonly update the dex cache if necessary.\n\nChange-Id: I3e48eb4f6c1291533067c1b53efe90c53bfcaea8\n"
    },
    {
      "commit": "e94652f1e321b2c8b71acbe5b07d2ebf69fbdb99",
      "tree": "b4c2a4435800222fa740a5ae57fa217b6aed0875",
      "parents": [
        "f25c2ec6b63e116f24f359a10b59c78768fde67a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:19 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:49 2014 -0800"
      },
      "message": "Remove MethodHelper from the interpreter.\n\nUse ShadowFrame to get the executing method to avoid a handle for the current\nmethod.\nVarious associated bits of header file clean-up and removal of an unnecessary\nuse of MethodHelper in CompilerDriver.\n\nChange-Id: I3b6f4413701e8fc6b0c58b0041a0dd15472bedaa\n"
    },
    {
      "commit": "124cd8f768436e082ca0dfed8f1e4f4713220e44",
      "tree": "c81d24102cfc8a0346dc7ed67ace964ebcd6fa8c",
      "parents": [
        "da4b7e8979e9b7de634aecee62da6ce867ccaa8d",
        "735b8559d6dd26c610d4b97d72f25a092d9c8947"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Nov 22 01:32:30 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Nov 22 01:32:30 2014 +0000"
      },
      "message": "Merge \"Add JNI trampoline for mips32.\""
    },
    {
      "commit": "2d7210188805292e463be4bcf7a133b654d7e0ea",
      "tree": "7705a3bf841ae44b2396728fa22ed0b5dcb44dbf",
      "parents": [
        "e0491682d101c69bf88c3c24a965312129cbfa38"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 10 11:08:06 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 18 12:27:37 2014 -0800"
      },
      "message": "Change 64 bit ArtMethod fields to be pointer sized\n\nChanged the 64 bit entrypoint and gc map fields in ArtMethod to be\npointer sized. This saves a large amount of memory on 32 bit systems.\nReduces ArtMethod size by 16 bytes on 32 bit.\n\nTotal number of ArtMethod on low memory mako: 169957\nImage size: 49203 methods -\u003e 787248 image size reduction.\nZygote space size: 1070 methods -\u003e 17120 size reduction.\nApp methods: ~120k -\u003e 2 MB savings.\n\nSavings per app on low memory mako: 125K+ per app\n(less active apps -\u003e more image methods per app).\n\nSavings depend on how often the shared methods are on dirty pages vs\nshared.\n\nTODO in another CL, delete gc map field from ArtMethod since we\nshould be able to get it from the Oat method header.\n\nBug: 17643507\n\nChange-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8\n\n(cherry picked from commit e832e64a7e82d7f72aedbd7d798fb929d458ee8f)\n"
    },
    {
      "commit": "d582fa4ea62083a7598dded5b82dc2198b3daac7",
      "tree": "c76704c266ef4687eab425612ddf3fd24f93fe8d",
      "parents": [
        "f20076ff813b8012096ff31af236d59db3c0f4e1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 05 23:46:43 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 13 16:17:46 2014 -0800"
      },
      "message": "Instruction set features for ARM64, MIPS and X86.\n\nAlso, refactor how feature strings are handled so they are additive or\nsubtractive.\nMake MIPS have features for FPU 32-bit and MIPS v2. Use in the quick compiler\nrather than #ifdefs that wouldn\u0027t have worked in cross-compilation.\nAdd SIMD features for x86/x86-64 proposed in:\n  https://android-review.googlesource.com/#/c/112370/\n\nBug: 18056890\n\nChange-Id: Ic88ff84a714926bd277beb74a430c5c7d5ed7666\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\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": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "735b8559d6dd26c610d4b97d72f25a092d9c8947",
      "tree": "49f4bf27ba2c332b74a70a6c4f3d9938cb07720b",
      "parents": [
        "57b4d1c44e246dfd4aaef2d23b20a696a0c5e57e"
      ],
      "author": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Fri Oct 31 12:21:40 2014 -0700"
      },
      "committer": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Fri Oct 31 12:29:40 2014 -0700"
      },
      "message": "Add JNI trampoline for mips32.\n\nThis patch allows the browser to come up.\n\nChange-Id: Icad9da868be76d6a08e615807fad8678ac0a110f\n"
    },
    {
      "commit": "3e3364e267117462894e0c3b7d9b413b25d28057",
      "tree": "b5f96ac99323be3e210156de8d97a61af7e1a19c",
      "parents": [
        "c57a66d5aadfd682c63e34ec1b1f304260f8c333",
        "2c4257be8191c5eefde744e8965fcefc80a0a97d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Oct 25 00:14:26 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Oct 25 00:14:26 2014 +0000"
      },
      "message": "Merge \"Tidy logging code not using UNIMPLEMENTED.\""
    },
    {
      "commit": "5667fdbb6e441dee7534ade18b628ed396daf593",
      "tree": "a06fe0a79b3465571556d13f509daf1f664fc614",
      "parents": [
        "b62ff579cd870b0bf213765b07d7b404d15ece7b"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Thu Oct 23 18:29:55 2014 +0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 16:27:22 2014 -0700"
      },
      "message": "ARM: Use hardfp calling convention between java to java call.\n\nThis patch default to use hardfp calling convention. Softfp can be enabled\nby setting kArm32QuickCodeUseSoftFloat to true.\n\nWe get about -1 ~ +5% performance improvement with different benchmark\ntests. Hopefully, we should be able to get more performance by address the left\nTODOs, as some part of the code takes the original assumption which is not\noptimal.\n\nDONE:\n1. Interpreter to quick code\n2. Quick code to interpreter\n3. Transition assembly and callee-saves\n4. Trampoline(generic jni, resolution, invoke with access check and etc.)\n5. Pass fp arg reg following aapcs(gpr and stack do not follow aapcs)\n6. Quick helper assembly routines to handle ABI differences\n7. Quick code method entry\n8. Quick code method invocation\n9. JNI compiler\n\nTODO:\n10. Rework ArgMap, FlushIn, GenDalvikArgs and affected common code.\n11. Rework CallRuntimeHelperXXX().\n\nChange-Id: I9965d8a007f4829f2560b63bcbbde271bdcf6ec2\n"
    },
    {
      "commit": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "1428dce77b8b0e8ec3e3665d816678df1253fc10",
      "tree": "f62d5189cce057ad579f9ca7ee44f10ffa57cb53",
      "parents": [
        "6207b2b0c299798fd5213bb3d6c05e5b978747e8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 21 15:02:15 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 21 15:02:15 2014 -0700"
      },
      "message": "Const-ify functions/variables in trampoline entrypoints.\n\nChange-Id: I777600c7362ab3c1dd65a695e36a4633b43033fe\n"
    },
    {
      "commit": "1d8cdbc5202378a5f1a4b3a1fba610675ed4dcd5",
      "tree": "6a1b0f49aee5a97b513bd0becc734d284aa7fb65",
      "parents": [
        "1c1786f193323d3bd706463894001117f3471595"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 22 22:51:09 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 20 16:01:28 2014 -0700"
      },
      "message": "Refactor quick entrypoints\n\nRemove FinishCalleeSaveFrameSetup.\nAssembly routines write down anchor into TLS as well as placing runtime\nmethod in callee save frame.\nSimplify artSet64InstanceFromCode by not computing the referrer from the\nstack in the C++ code.\nMove assembly offset tests next to constant declaration and tidy arch_test.\n\nChange-Id: Iededeebc05e54a1e2bb7bb3572b8ba012cffa1c8\n"
    },
    {
      "commit": "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3",
      "tree": "f7a20779e4d665f948c5fbcd26dac0071dafb8d4",
      "parents": [
        "2df6840f68dd18d7dd8dbf53f8b6181bbfdc4fc4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 14 17:41:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 19:27:28 2014 -0700"
      },
      "message": "Make ART compile with GCC -O0 again.\n\nTidy up InstructionSetFeatures so that it has a type hierarchy dependent on\narchitecture.\nAdd to instruction_set_test to warn when InstructionSetFeatures don\u0027t agree\nwith ones from system properties, AT_HWCAP and /proc/cpuinfo.\nClean-up class linker entry point logic to not return entry points but to\ntest whether the passed code is the particular entrypoint. This works around\nimage trampolines that replicate entrypoints.\nBug: 17993736\n\nChange-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23\n"
    },
    {
      "commit": "59c07060a6fbb93e455b44f00098cafb8e7e26cc",
      "tree": "e6db8fc4af24aa1704be0cd516d27340ae3ecae5",
      "parents": [
        "b2a7ec2ad3f24c4094185cbf87bd0a39f727ffe7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 13:03:39 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 15:01:21 2014 -0700"
      },
      "message": "Work around ICE bugs with MIPS GCC and O1.\n\nAlso, work around GCC warning bugs where array accesses with explicit\nbounds checks are flagged as being out-of-bounds. Significantly, clean-up\nthe HandleScope so the array accesses don\u0027t appear out-of-bounds at compile\ntime.\n\nChange-Id: I5d66567559cc1f97cd0aa02c0df8575ebadbfe3d\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "5ad97daa3112ca626e3fbf2bf08971977344c3c3",
      "tree": "a470901bdeea004fd2ef526241853a167b1c0a02",
      "parents": [
        "72f961813dcb915542b9ae957aed040082d3e40a"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Oct 06 10:46:14 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Oct 06 10:47:18 2014 -0700"
      },
      "message": "Handlerize methods across some GC points.\n\nBug: 12687968\nChange-Id: I0d5b0a78488ba76db4d25991d8db95b24bb624e9\n"
    },
    {
      "commit": "5a4b8a236030460651a3136397d23ca6744e7eb7",
      "tree": "0e43891398e416d3fa77c7de391bf4db4408e8ee",
      "parents": [
        "19f7c95491a053b818f914137fa73df0517b8792"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 08:30:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 19:50:12 2014 -0700"
      },
      "message": "ART: Rename Handle hierarchy\n\nBring the names in line with normal OO principles: ConstHandle\nbecomes Handle, and Handle becomes MutableHandle.\n\nChange-Id: I0f018eb7ba28bc422e3a23dd73a6cbe6fc2d2044\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "54accbca0b549b1b1ad3ef09655dad438bc1e104",
      "tree": "6354bddae9e09476380b9351b6c1a84636ac8154",
      "parents": [
        "e39a5e1ced3d2b87974c646678dd719c02a9a010"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 13 03:40:45 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 14 17:18:53 2014 +0100"
      },
      "message": "Fix bugs in the x86 and arm versions of generic JNI.\n\nAlso fix the run script of 116-nodex2oat to use the non-prebuild\nscript for target.\n\nBug: 17000769\n\nChange-Id: I439fcd710fb8bb408f3288ff8fb34fef23890adb\n"
    },
    {
      "commit": "58a5af8568d224ca7eccf2483396ff9862f8d1ee",
      "tree": "4dfac17316970040e079244523b9b1e2ea163f05",
      "parents": [
        "1b192268f167f603fc372f02f9067f3ce5d82daf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 31 16:23:49 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 06 15:57:05 2014 -0700"
      },
      "message": "ART: Add guards to the dex cache and its shortcuts\n\nDo not return fields, methods or classes if the (declaring) class is\nerroneous.\n\nBug: 16692788\nChange-Id: If43c2414ad0eb22db5eba7cf66396c7f16c26597\n"
    },
    {
      "commit": "f0a3f09c3d54646166a55c05a6b39c7dd504129c",
      "tree": "35a76479f1b774ae100727547a48da5bc0878e66",
      "parents": [
        "484e2c2d3531e5bb36f0e1e12f26c708939c6579"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Jul 24 16:26:09 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 06 12:49:57 2014 -0700"
      },
      "message": "Fix proxy tracing and enable tests that now work with tracing.\n\nAlso updates proxy_test to generate an image for GetQuickOatCodeFor.\n\nBug: 16386215\nChange-Id: Ie7daad3d73ea7b60187bc1e7037ade0df8277107\n"
    },
    {
      "commit": "8df73882c60451e7f789bf9b1f3db2d7dc228640",
      "tree": "1be3d2c3d4bfa3a0a189d15c98c36926c812e7f1",
      "parents": [
        "01be6e3c4e4f083842ac9a6f8f9e6c2c937b8a15",
        "167cc7c33f7100e3f7acc1594c066daa0122e27a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 29 08:36:21 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 23 19:30:00 2014 +0000"
      },
      "message": "Merge \"Revert \"Fix proxy tracing and enable tests that now work with tracing.\"\""
    },
    {
      "commit": "167cc7c33f7100e3f7acc1594c066daa0122e27a",
      "tree": "d265344c32c5bf37d356fcb4871f57a1250d16b6",
      "parents": [
        "0398e171f206cd3b140a358ac31b0a3760380df1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 29 08:33:44 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 29 08:33:44 2014 +0000"
      },
      "message": "Revert \"Fix proxy tracing and enable tests that now work with tracing.\"\n\nThis reverts commit 0398e171f206cd3b140a358ac31b0a3760380df1.\n\nChange-Id: I1346ab01485cc7207be0ecb4d8788c500c0df903\n"
    },
    {
      "commit": "0398e171f206cd3b140a358ac31b0a3760380df1",
      "tree": "db5b34142d812f95581a864b681940efc94c6945",
      "parents": [
        "e5647289ccc7dafd8b91771a7bd1cd19416aed66"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Jul 24 16:26:09 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jul 28 18:33:04 2014 -0700"
      },
      "message": "Fix proxy tracing and enable tests that now work with tracing.\n\nBug: 16386215\nChange-Id: Iec2a372c921caceb050c6baf72d48b3d822899a4\n"
    },
    {
      "commit": "b551fdcda9eb128c80de37c4fb978968bec6d4b3",
      "tree": "62942f412f2275e2e9188f71c370cd95ec91e17f",
      "parents": [
        "2815f1242c6c3ea1fc2df7bb5e4bd1924f4e75f7"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Fri Jul 25 11:49:42 2014 +0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 29 00:38:14 2014 -0700"
      },
      "message": "AArch64: Clean up CalleeSaveMethod frame and the use of temp registers.\n\nCalleeSaveMethod frame size changes :\nSaveAll : 368 -\u003e 176\nRefOnly : 176 -\u003e 96\nRefsAndArgs : 304 -\u003e 224\n\nJNI register spill size changes :\n160 -\u003e 88\n\nIn the transition assembly, use registers following the rules:\n1. x0-x7 as temp/argument registers.\n2. IP0, IP1 as scratch registers.\n3. After correct type of callee-save-frame has been setup, all registers\nare scratch-able(probably except xSELF and xSUSPEND).\n4. When restore callee-save-frame, IP0 and IP1 should be untouched.\n5. From C to managed code, we assume all callee save register in AAPCS\nwill be restored by managed code except x19(SUSPEND).\n\nIn quick compiler:\n1. Use IP0, IP1 as scratch register.\n2. Use IP1 as hidden argument register(IP0 will be scratched by\n trampoline.)\n\nChange-Id: I05ed9d418b01b9e87218a7608536f57e7a286e4c\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "98d1cc8033251c93786e2fa8c59a2e555a9493be",
      "tree": "f0a76b8fff060ee484af09028da65a8339d57057",
      "parents": [
        "aebf3cda094f34cf846d19a7724bdc8005267c95"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 15 17:02:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 11 17:17:10 2014 -0700"
      },
      "message": "Improve performance of invokevirtual/invokeinterface with embedded imt/vtable\n\nAdd an embedded version of imt/vtable into class object. Both tables start at\nfixed offset within class object so method/entry point can be loaded directly\nfrom class object for invokeinterface/invokevirtual.\n\nBug: 8142917\nChange-Id: I4240d58cfbe9250107c95c0708c036854c455968\n"
    },
    {
      "commit": "c380191f3048db2a3796d65db8e5d5a5e7b08c65",
      "tree": "56f7f5fc60f8445ead63cd43faf06b9e1dfda6b2",
      "parents": [
        "cba6b1fc88fd54c35211fd49a7a7501cfcdaa170"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue Jul 08 17:21:53 2014 +0700"
      },
      "committer": {
        "name": "Chao-ying Fu",
        "email": "chao-ying.fu@intel.com",
        "time": "Thu Jul 10 13:31:47 2014 -0700"
      },
      "message": "x86_64: Enable fp-reg promotion\n\nPatch introduces 4 register XMM12-15 available for promotion of\nfp virtual registers.\n\nChange-Id: I3f89ad07fc8ae98b70f550eada09be7b693ffb67\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\nSigned-off-by: Chao-ying Fu \u003cchao-ying.fu@intel.com\u003e\n"
    },
    {
      "commit": "04c31d2c984d382b4186974fa0a416aecbed2625",
      "tree": "7790a9443b7e5639f2674104514d2e690f6d812f",
      "parents": [
        "0da09a026fb6c612e659dc782312987b4515f472"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 07 21:44:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 07 21:44:06 2014 -0700"
      },
      "message": "JNI dlsym lookup fixes.\n\nThread* self is passed on all architectures apart from ARM and ARM64.\nOn x86 restore ebx correctly. Pass self in correct register on x86-64.\nEnsure methods are compiled in jni_compiler_test even if the generic JNI\ntrampoline is present.\n\nChange-Id: If5fdb1de97b78ac5a5cf8d0915c5b82311f23eb9\n"
    },
    {
      "commit": "c200a4abeca91e19969f5b35543f17f812ba32b9",
      "tree": "5912a08310e7ddb4b3907c0dc687006669c0cedd",
      "parents": [
        "73904fed884bf216b51acdc64402c427cc34725b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 16 18:39:09 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 01 11:06:24 2014 -0700"
      },
      "message": "ART: Rework Generic JNI, add ARM version\n\nRefactors and optimizes Generic JNI. This version uses TwoWordReturn\nto avoid writing to / loading from the bottom of the alloca.\n\nChange-Id: I3287007c976f79c9fd32d3b3a43f2d1371bf4cd3\n"
    },
    {
      "commit": "6c5cb212fa7010ae7caf9dc765533aa967c95342",
      "tree": "c31c46eb7b284b317455fdab48317de92b81dd28",
      "parents": [
        "241fd1192dfc0f7322660343179f9fc0591ed9ff"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 18 16:07:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 18 16:39:29 2014 -0700"
      },
      "message": "Ensure classes are initialized rather than initializing.\n\nA class can be being initialized on a different thread, in that case other\nthreads should block trying to access the class. The initializing state shows\nthe class is being initialized but not that its safe for other threads to\naccess. Change occurances of IsInitializing to IsInitialized primarily in\nslow-path code.\nBug: 15347354\n\nChange-Id: Ib586d0a385be6086a890dfbf8868d76f16767fac\n"
    },
    {
      "commit": "5bf6a77944acdeb0a9464803c70d0c65cf15b68b",
      "tree": "ee66c89cf844201630b47eb0c0c438b88e3ab866",
      "parents": [
        "335b91fb98d8004580e9a58335a873a1874fa5a5",
        "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 10 18:21:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 10 18:21:32 2014 +0000"
      },
      "message": "Merge \"Change MethodHelper to use a Handle.\""
    },
    {
      "commit": "335b91fb98d8004580e9a58335a873a1874fa5a5",
      "tree": "85fb040c7dc04e7aa2084c715720516a16f923d1",
      "parents": [
        "b399e97154ba5a372134b6fb0b953f3fc85a245e",
        "d58342caa97108ba413bad467c285c0377f138f5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 10 18:03:26 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 10 18:03:26 2014 +0000"
      },
      "message": "Merge \"ART: Add instrumentation stubs for ARM64 and X86-64\""
    },
    {
      "commit": "41c507a9dae44b8329a857da3d9810fab2e9ddc6",
      "tree": "78d2a1f81227ca41c4541be5fd87cacabaf06ed2",
      "parents": [
        "f71f8da2e83fefcec42ad77385c1df62f521ddad"
      ],
      "author": {
        "name": "Alexei Zavjalov",
        "email": "alexei.zavjalov@intel.com",
        "time": "Thu May 15 16:02:46 2014 +0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 10 10:01:01 2014 -0700"
      },
      "message": "ART: Generalize code to find PC for artInvokeInterfaceTrampoline\n\nThis allows to determine target method when the interface method has\nno dex index, now also for X86-64 and ARM64.\n\nAdd constexpr functions to callee_save_frame.h to have compile-time\nsizes of callee-save frames. Add a test that ensures they agree\nwith computations by the corresponding ArtMethod methods.\n\nMove some instruction-set functions into the header file to allow\ninlining them. Move arch-specific pointer sizes and alignment sizes\nout of globals.h to instruction_set.h to reduce dependencies.\n\nChange-Id: I2997592c7dd1f4dd2bd497522c64bd235ae615a6\nSigned-off-by: Alexei Zavjalov \u003calexei.zavjalov@intel.com\u003e\n"
    },
    {
      "commit": "ea248f8b048d904a8fe806b6a52372985945274d",
      "tree": "b5bfacb1e2005a6a9ca7dd5b84f3c6ca129f7286",
      "parents": [
        "608f63bae4ed0dc0cd6462d0df3d15c28f37f0b2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 10 00:09:42 2014 -0700"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Jun 10 10:19:08 2014 -0400"
      },
      "message": "Remove TARGET_REX_SUPPORT define.\n\nChange-Id: I1c3644176c101064261d13b50484d2e3ae456316\n"
    }
  ],
  "next": "779f8c951c0fbe36d4b213113a99541132947bb7"
}
