)]}'
{
  "log": [
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "dee58d6bb6d567fcd0c4f39d8d690c3acaf0e432",
      "tree": "5a2f20546ca3c1544c44bee560062580e22dc79c",
      "parents": [
        "391e155a6936a05bd39b171031ec21d2dee62133"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 07 09:54:26 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Apr 07 16:03:16 2016 +0000"
      },
      "message": "Revert \"Revert \"Refactor HGraphBuilder and SsaBuilder to remove HLocals\"\"\n\nThis patch merges the instruction-building phases from HGraphBuilder\nand SsaBuilder into a single HInstructionBuilder class. As a result,\nit is not necessary to generate HLocal, HLoadLocal and HStoreLocal\ninstructions any more, as the builder produces SSA form directly.\n\nSaves 5-15% of arena-allocated memory (see bug for more data):\n  GMS      20.46MB  \u003d\u003e  19.26MB  (-5.86%)\n  Maps     24.12MB  \u003d\u003e  21.47MB  (-10.98%)\n  YouTube  28.60MB  \u003d\u003e  26.01MB  (-9.05%)\n\nThis CL fixed an issue with parsing quickened instructions.\n\nBug: 27894376\nBug: 27998571\nBug: 27995065\n\nChange-Id: I20dbe1bf2d0fe296377478db98cb86cba695e694\n"
    },
    {
      "commit": "60328910cad396589474f8513391ba733d19390b",
      "tree": "01702f6df5c39925b354a3152dd04289e7d97062",
      "parents": [
        "e3ff7b293be2a6791fe9d135d660c0cffe4bd73f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 17:47:42 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 17:47:42 2016 +0000"
      },
      "message": "Revert \"Refactor HGraphBuilder and SsaBuilder to remove HLocals\"\n\nBug: 27995065\nThis reverts commit e3ff7b293be2a6791fe9d135d660c0cffe4bd73f.\n\nChange-Id: I5363c7ce18f47fd422c15eed5423a345a57249d8\n"
    },
    {
      "commit": "e3ff7b293be2a6791fe9d135d660c0cffe4bd73f",
      "tree": "d578d27cb78e6d2caef683cd8ac94c9a9752b192",
      "parents": [
        "86ea7eeabe30c98bbe1651a51d03cb89776724e7"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Mar 02 16:48:20 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 11:21:30 2016 +0100"
      },
      "message": "Refactor HGraphBuilder and SsaBuilder to remove HLocals\n\nThis patch merges the instruction-building phases from HGraphBuilder\nand SsaBuilder into a single HInstructionBuilder class. As a result,\nit is not necessary to generate HLocal, HLoadLocal and HStoreLocal\ninstructions any more, as the builder produces SSA form directly.\n\nSaves 5-15% of arena-allocated memory (see bug for more data):\n  GMS      20.46MB  \u003d\u003e  19.26MB  (-5.86%)\n  Maps     24.12MB  \u003d\u003e  21.47MB  (-10.98%)\n  YouTube  28.60MB  \u003d\u003e  26.01MB  (-9.05%)\n\nBug: 27894376\nChange-Id: Iefe28d40600c169c5d306fd2c77034ae19476d90\n"
    },
    {
      "commit": "86ea7eeabe30c98bbe1651a51d03cb89776724e7",
      "tree": "01702f6df5c39925b354a3152dd04289e7d97062",
      "parents": [
        "0cb5c86b7021e70cbf584c1455aad1ef383af786"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 16 09:26:07 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Apr 04 11:21:20 2016 +0100"
      },
      "message": "Build dominator tree before generating HInstructions\n\nSecond CL in the series of merging HGraphBuilder and SsaBuilder. This\npatch refactors the builders so that dominator tree can be built\nbefore any HInstructions are generated. This puts the SsaBuilder\nremoval of HLoadLocals/HStoreLocals straight after HGraphBuilder\u0027s\nHInstruction generation phase. Next CL will therefore be able to\nmerge them.\n\nThis patch also adds util classes for iterating bytecode and switch\ntables which allowed to simplify the code.\n\nBug: 27894376\nChange-Id: Ic425d298b2e6e7980481ed697230b1a0b7904526\n"
    },
    {
      "commit": "cac5a7e871f1f346b317894359ad06fa7bd67fba",
      "tree": "2df7d4892216a7c976dfe848c9893cb5eb8fa6a5",
      "parents": [
        "6f51d7756a9c66007fe7666b19399e1f60ff6092"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 22 10:39:50 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 29 19:27:40 2016 +0100"
      },
      "message": "Optimizing: Improve const-string code generation.\n\nFor strings in the boot image, use either direct pointers\nor pc-relative addresses. For other strings, use PC-relative\naccess to the dex cache arrays for AOT and direct address of\nthe string\u0027s dex cache slot for JIT.\n\nFor aosp_flounder-userdebug:\n  - 32-bit boot.oat: -692KiB (-0.9%)\n  - 64-bit boot.oat: -948KiB (-1.1%)\n  - 32-bit dalvik cache total: -900KiB (-0.9%)\n  - 64-bit dalvik cache total: -3672KiB (-1.5%)\n    (contains more files than the 32-bit dalvik cache)\nFor aosp_flounder-userdebug forced to compile PIC:\n  - 32-bit boot.oat: -380KiB (-0.5%)\n  - 64-bit boot.oat: -928KiB (-1.0%)\n  - 32-bit dalvik cache total: -468KiB (-0.4%)\n  - 64-bit dalvik cache total: -1928KiB (-0.8%)\n    (contains more files than the 32-bit dalvik cache)\n\nBug: 26884697\nChange-Id: Iec7266ce67e6fedc107be78fab2e742a8dab2696\n"
    },
    {
      "commit": "63ec32274066da114d733d8d3c5ff389883e403c",
      "tree": "8ae9f26bc2a1f90d770e9c3c143667a7cfd8e30e",
      "parents": [
        "d6026cde1ef7f2b0abb7a3561510fe83a7dd9de2",
        "d96a246e5b103bfc167acaa6315bd8abca9de493"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 24 09:38:51 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 24 09:38:52 2016 +0000"
      },
      "message": "Merge \"Optimizing: Do not insert suspend checks on back-edges.\""
    },
    {
      "commit": "d96a246e5b103bfc167acaa6315bd8abca9de493",
      "tree": "3e99f24bc30d53bc9cfc9fb1e0f3dc92c0ce1daf",
      "parents": [
        "3920099f578fd8015777bc3c1c7392a08b1e08e7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 23 16:01:47 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 23 19:17:51 2016 +0000"
      },
      "message": "Optimizing: Do not insert suspend checks on back-edges.\n\nRely on HGraph::SimplifyLoop() to insert suspend checks.\n\nCodeGenerator\u0027s CheckLoopEntriesCanBeUsedForOsr() checks the\ndex pcs of suspend checks against branch targets to verify\nthat we always have an appropriate point for OSR transition.\nHowever, the HSuspendChecks that were added by HGraphBuilder\nto support the recently removed \"baseline\" interfered with\nthis in a specific case, namely an infinite loop where the\nback-branch jumps to a nop. In that case, the HSuspendCheck\nadded by HGraphBuilder had a dex pc different from the block\nand the branch target but its presence would stop the\nHGraph::SimplifyLoop() from adding a new HSuspendCheck with\nthe correct dex pc.\n\nBug: 27623547\nChange-Id: I83566a260210bc05aea0c44509a39bb490aa7003\n"
    },
    {
      "commit": "29d38e77c553c6cf71fc4dafe2d22b4e3f814872",
      "tree": "92f34f589af205af56189d221ded293234935c26",
      "parents": [
        "2e89e901b9f303549f3ba64e45d87292e9c986c8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 23 15:31:51 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Mar 23 11:30:29 2016 -0700"
      },
      "message": "Revert \"Revert \"Use compiler filter to determine oat file status.\"\"\n\nThis reverts commit 845e5064580bd37ad5014f7aa0d078be7265464d.\n\nAdd an option to change what OatFileManager considers up-to-date.\nIn our tests we\u0027re allowed to write to the dalvik-cache, so it\ncannot be kSpeed.\n\nBug: 27689078\nChange-Id: I0c578705a9921114ed1fb00d360cc7448addc93a\n"
    },
    {
      "commit": "845e5064580bd37ad5014f7aa0d078be7265464d",
      "tree": "1e621756ba6a1fd345f2fb468eed88cdc81886e7",
      "parents": [
        "a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 23 06:42:05 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 23 06:42:05 2016 +0000"
      },
      "message": "Revert \"Use compiler filter to determine oat file status.\"\n\nBots are red. Tentative reverting as this is likely the offender.\n\nBug: 27689078\n\nThis reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931.\n\nChange-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a\n"
    },
    {
      "commit": "a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931",
      "tree": "d8624bb85016a3301b473b6503324db4d4cf24a3",
      "parents": [
        "48e722432bb6e19df7bba02427e4a707e671af06"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Mar 18 15:05:30 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Mar 22 15:38:36 2016 -0700"
      },
      "message": "Use compiler filter to determine oat file status.\n\nRecord the compiler filter in the oat header. Use that to determine\nwhen the oat file is up-to-date with respect to a target compiler\nfilter level.\n\nNew xxx-profile filter levels are added to specify if a profile should\nbe used instead of testing for the presence of a profile file.\n\nThis change should allow for different compiler-filters to be set for\ndifferent package manager use cases.\n\nBug: 27689078\nChange-Id: Id6706d0ed91b45f307142692ea4316aa9713b023\n"
    },
    {
      "commit": "f6a35de9eeefb20f6446f1b4815b4dcb0161d09c",
      "tree": "cf484acbd6889b92a7fe3e8615611129088c3894",
      "parents": [
        "459898dc4470559ba1e1d578bc52a914d1f573f5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 21 12:01:50 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 21 16:50:08 2016 +0000"
      },
      "message": "Optimizing: Fix register allocator validation memory usage.\n\nAlso attribute ArenaBitVector allocations to appropriate\npasses. This was used to track down the source of the\nexcessive memory alloactions.\n\nBug: 27690481\n\nChange-Id: Ib895984cb7c04e24cbc7abbd8322079bab8ab100\n"
    },
    {
      "commit": "a1de9188a05afdecca8cd04ecc4fefbac8b9880f",
      "tree": "a671c8aef814ccf194e5c3950a551f2711516c53",
      "parents": [
        "950d063395c7cecbbe372fd607468018d661a35c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 25 11:37:38 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 26 16:01:59 2016 +0000"
      },
      "message": "Optimizing: Reduce memory usage of HInstructions.\n\nPack narrow fields and flags into a single 32-bit field.\n\nChange-Id: Ib2f7abf987caee0339018d21f0d498f8db63542d\n"
    },
    {
      "commit": "c7098ff991bb4e00a800d315d1c36f52a9cb0149",
      "tree": "3a150e927bc7f4894f5b148ec6f5a2b796cdd80d",
      "parents": [
        "5322e55ab9a15996a197456ca39d9c77488cd5c1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 09 14:30:11 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 24 10:21:57 2016 +0000"
      },
      "message": "Remove HNativeDebugInfo from start of basic blocks.\n\nWe do not require full environment at the start of basic block.\nThe dex pc contained in basic block is sufficient for line mapping.\n\nChange-Id: I5ba9e5f5acbc4a783ad544769f9a73bb33e2bafa\n"
    },
    {
      "commit": "badd826664896d4a9628a5a89b78016894aa414b",
      "tree": "a30e8b3e62126ae1e1df1152ac643cfc5f2b074a",
      "parents": [
        "47a2a45a6673ddf3322115ff5058763f82a9368f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 02 16:28:56 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 15 10:21:07 2016 +0000"
      },
      "message": "ART: Run SsaBuilder from HGraphBuilder\n\nFirst step towards merging the two passes, which will later result in\nHGraphBuilder directly producing SSA form. This CL mostly just updates\ntests broken by not being able to inspect the pre-SSA form.\n\nUsing HLocals outside the HGraphBuilder is now deprecated.\n\nBug: 27150508\nChange-Id: I00fb6050580f409dcc5aa5b5aa3a536d6e8d759e\n"
    },
    {
      "commit": "6e332529c33be4d7dae5dad3609a839f4c0d3bfc",
      "tree": "cedd2e1beb170fd5821136fe974e3f34adfcddc2",
      "parents": [
        "d3caabd4f85f86dd744da432993e12935d843a83"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 02 16:15:27 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 12 15:17:50 2016 +0000"
      },
      "message": "ART: Remove HTemporary\n\nChange-Id: I21b984224370a9ce7a4a13a9652503cfb03c5f03\n"
    },
    {
      "commit": "b331febbab8e916680faba722cc84b66b84218a3",
      "tree": "35f985b021e476914bfe91492da23fee218014a7",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 16:51:53 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:11:54 2016 +0000"
      },
      "message": "Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\n\nThis reverts commit bd89a5c556324062b7d841843b039392e84cfaf4.\n\nChange-Id: I08d190431520baa7fcec8fbdb444519f25ac8d44\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": "6de1938e562b0d06e462512dd806166e754035ea",
      "tree": "f9df086a73860c20768d17ff7bc5be4139567941",
      "parents": [
        "f5b84ee14a3bc578f799a39dca1ae512b49356ea"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Jan 08 17:37:10 2016 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 14 16:22:13 2016 +0000"
      },
      "message": "ART: Remove incorrect HFakeString optimization\n\nSimplification of HFakeString assumes that it cannot be used until\nString.\u003cinit\u003e is called which is not true and causes different\nbehaviour between the compiler and the interpreter. This patch\nremoves the optimization together with the HFakeString instruction.\n\nInstead, HNewInstance is generated and an empty String allocated\nuntil it is replaced with the result of the StringFactory call. This\nis consistent with the behaviour of the interpreter but is too\nconservative. A follow-up CL will attempt to optimize out the initial\nallocation when possible.\n\nBug: 26457745\nBug: 26486014\n\nChange-Id: I7139e37ed00a880715bfc234896a930fde670c44\n"
    },
    {
      "commit": "f555258861aea7df8af9c2241ab761227fd2f66a",
      "tree": "1317545f50f78eb7c9e4dd44ebfb256bdff0af11",
      "parents": [
        "c917d195d8d8d05f90796b1e0842883fc608346d"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sun Dec 27 13:36:12 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 06 10:33:30 2016 +0000"
      },
      "message": "ART: Create BoundType for CheckCast early\n\nReferenceTypePropagation creates a BoundType for each CheckCast and\nreplaces all dominated uses of the casted object with it. This does\nnot include Phi uses on the boundary of the dominated scope, reducing\ntyping precision. This patch creates the BoundType in Builder, causing\nSsaBuilder to replace uses of the object automatically.\n\nBug: 26081304\n\nChange-Id: I083979155cccb348071ff58cb9060a896ed7d2ac\n"
    },
    {
      "commit": "0cf4493166ff28518c8eafa2d0463f6e817cce75",
      "tree": "6d207db3fb655bbd692f2b01fa963c603619bd0e",
      "parents": [
        "d674bf7ba2a209790cea8ef8d935480ef515c9e1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 09 14:09:59 2015 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Dec 23 13:19:16 2015 +0000"
      },
      "message": "Generate more stack maps during native debugging.\n\nGenerate extra stack map at the start of each java statement.\nThe stack maps are later translated to DWARF which allows\nLLDB to set breakpoints and view local variables.\n\nChange-Id: If00ab875513308e4a1399d1e12e0fe8934a6f0c3\n"
    },
    {
      "commit": "917d01680714b2295f109f8fea0aa06764a30b70",
      "tree": "1da1b936fcc2318dced0d0aa9d2f987af1a05169",
      "parents": [
        "d48015603a54b820d287d92709825765159615f0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 18:25:35 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 16:48:06 2015 +0000"
      },
      "message": "Don\u0027t generate a slow path for strings in the dex cache.\n\nChange-Id: I1d258f1a89bf0ec7c7ddd134be9215d480f0b09a\n"
    },
    {
      "commit": "41844e5071b2540d7b974ba09859170af2720776",
      "tree": "2bb63772ce8b223ead4d8b496ce0a192e41aab42",
      "parents": [
        "70a33905e90c655cb17303b238bace2a2f4d5bf9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 15:06:15 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 10 15:38:48 2015 +0000"
      },
      "message": "Fix braino when resolving an invoke-super.\n\nWe should check the actual_method, and not the resolved_method,\non whether it is in the same dex file.\n\nbug:26022686\n\nChange-Id: I8a9b0c68e162015e0aec397545d0607482949967\n"
    },
    {
      "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": "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": "c88ef3a10c474045a3476a02ae75d07ddd3230b7",
      "tree": "cd23e1e0a3cea10cc9a9ae8269a01f75ada8ef0e",
      "parents": [
        "4db0bf9c4db6a09716c3388b7d2f88d534470339"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:10 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 16:28:10 2015 +0000"
      },
      "message": "Revert \"Don\u0027t use the compiler driver for method resolution.\"\n\nFails 425 in debuggable mode.\n\nThis reverts commit 4db0bf9c4db6a09716c3388b7d2f88d534470339.\n\nChange-Id: I346df8f75674564fc4fb241c60f23e250fc7f0a7\n"
    },
    {
      "commit": "4db0bf9c4db6a09716c3388b7d2f88d534470339",
      "tree": "71feab1b20d4d773f881e0afc26dfcd236c177d1",
      "parents": [
        "d1744d449cf2b56af7e0896b3729fac2a414e3af"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 09:35:04 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 01 14:23:01 2015 +0000"
      },
      "message": "Don\u0027t use the compiler driver for method resolution.\n\nThe compiler driver makes assumptions that don\u0027t hold for\nthe optimizing compiler, and will for example always go to\nslow path for an invoke-super when there\u0027s no verified method.\n\nAlso fix GenerateInvokeVirtual in the presence of intrinsics.\n\nNext change will address some of the TODOs in sharpening.cc.\n\nChange-Id: I2b0e543ee9b9bebcadb2d26de29e850c59ad58b9\n"
    },
    {
      "commit": "42e372e5a34d0fef88007bc5f40dd0fc7c03b58b",
      "tree": "434618ad8deec85313335b6ca63c6519639b4959",
      "parents": [
        "95f7bbcd991fbfaead438a2866354714eb32af38"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 15:48:56 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 17:57:26 2015 +0000"
      },
      "message": "Optimize HLoadClass when we know the class is in the cache.\n\nChange-Id: Iaa74591eed0f2eabc9ba9f9988681d9582faa320\n"
    },
    {
      "commit": "d9dc6f45c3f5fb0e5d279e6c038692258b27192b",
      "tree": "2df718dcf9302147d90aa7e615ecc89f20af3844",
      "parents": [
        "51a354c747c8a76a4716a49a1f70bfd975d63787"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 14:06:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 15:16:32 2015 +0000"
      },
      "message": "A few more optimizations on avoiding HClinit.\n\nChange-Id: I622a98b620e9d261cb654e2f5ab578bd8b3484b1\n"
    },
    {
      "commit": "317f9cebedc0117ce89931a1f28a82e989057c31",
      "tree": "45180e4df2aae42d8b33a6c1c50c7dcfc72ebe6f",
      "parents": [
        "2171e2ab84baa41770489d01df9197a3ce871262"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 09:50:18 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 23 09:50:18 2015 +0000"
      },
      "message": "Fix lint error.\n\nChange-Id: I29632dc7e49f7ec63040455fa40fcf87e9282e5e\n"
    },
    {
      "commit": "729645a937eb9f04a311b3c22471dcf3ebe9bcec",
      "tree": "100c5d843a4d436b166d52e7a463ef6b283abc8c",
      "parents": [
        "d846a2cc45aae5b1c84b5ac51cdd37a22b8447ff"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 19 13:29:02 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 20 22:19:02 2015 +0000"
      },
      "message": "Explicitly add HLoadClass/HClinitCheck for HNewInstance.\n\nbug:25735083\nbug:25173758\n\nChange-Id: Ie81cfa4fa9c47cc025edb291cdedd7af209a03db\n"
    },
    {
      "commit": "fb8464ae5f5194dc16278e528cfcbff71498c767",
      "tree": "9361521497f31fd024f36980464d17bee7c83d52",
      "parents": [
        "9231730cd0e285373afd73331168b289309ebee4"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Nov 02 10:56:59 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Nov 18 13:27:16 2015 -0800"
      },
      "message": "Revert \"Revert \"Enable store elimination for singleton objects.\"\"\n\nThis reverts commit 55d02cf056f993aeafebd54e7b7c68c7a48507c9, and\nmakes the following change:\nCurrently we leverage loop side effects to decide whether heap values are\nkilled by the loop. Stores need to be kept if heap values may be killed\nby loops and the corresponding loads cannot be eliminated. Similar thing\nneed to be done for each predecessor when we merge predecessor heap values.\nTo do that, the HInstanceFieldSet instruction itself is put in the heap\nvalue array instead of the value of the store instruction. The store\ninstruction may be added to possibly_removed_stores_ first, but can later\nbe removed from possibly_removed_stores_ when it\u0027s found out that the store\nneeds to be kept due to merging/loop side effects.\n\nChange-Id: I4f7bb1960f7b47240873e00ff1adac46fc102a02\n"
    },
    {
      "commit": "3e5b3c982a5837384829ffd6726c5a30714cbfcb",
      "tree": "0ad109f906aaf8d427bd6ed6ba2e9f50a348016b",
      "parents": [
        "2649cba0fb7cdbd8fa60cb4f2fb320fb2b18ee37",
        "b554b5a5ae3cdc66969d61be20783a8af816206e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 09 10:14:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 09 10:14:35 2015 +0000"
      },
      "message": "Merge \"Optimizing: Remove unused ArtMethod* input from HInvokeStaticOrDirect.\""
    },
    {
      "commit": "b554b5a5ae3cdc66969d61be20783a8af816206e",
      "tree": "c52c69c7e4a3950e4c24065c70b19eebdfc10f29",
      "parents": [
        "2fa684206b0a8bd203d07e1edf74a839b498f74f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 06 12:57:55 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 06 19:54:53 2015 +0000"
      },
      "message": "Optimizing: Remove unused ArtMethod* input from HInvokeStaticOrDirect.\n\nChange-Id: Iea99fa683440673ff517e246f35fade96600f229\n"
    },
    {
      "commit": "9bc436160b4af99067973affb0b1008de9a2b04c",
      "tree": "160fba56aa8ba53a5db624c42c1936dd15a3cdf7",
      "parents": [
        "ef7ef4ce04a46405e15cd91115c6e657235adf83"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 05 21:25:24 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 06 19:20:46 2015 +0000"
      },
      "message": "ART: Fix simplification of catch blocks in the presence of dead code\n\nSimplification of catch blocks transforms the code so that catch\nblocks have only exceptional predecessors. However, it is invoked\nbefore trivially dead code is eliminated which breaks simple\nassumptions such as the fact that a catch block cannot start with\nmove-exception if it has non-exceptional predecessors. This patch\nfixes the algorithm to work under these relaxed conditions.\n\nBug: 25494450\nBug: 25492628\nChange-Id: Idc8d010102a4b8b9a6cd918b98d6e11d1838db0c\n"
    },
    {
      "commit": "55d02cf056f993aeafebd54e7b7c68c7a48507c9",
      "tree": "bcdd800831f98a896b2b712932e769f46fbeefab",
      "parents": [
        "7f43a3d48fc29045875d50e10bbc5d6ffc25d61e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 29 02:59:50 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 29 02:59:50 2015 +0000"
      },
      "message": "Revert \"Enable store elimination for singleton objects.\"\n\nThis reverts commit 7f43a3d48fc29045875d50e10bbc5d6ffc25d61e.\n\nFails booting.\n\nBug: 25357772\nChange-Id: Ied19536f3ce8d81e76885cb6baed4853e2ed6714\n"
    },
    {
      "commit": "7f43a3d48fc29045875d50e10bbc5d6ffc25d61e",
      "tree": "3be4590986faae499384f564acafa5fe04eb68b4",
      "parents": [
        "3dca4c04170bb4c7b26609e55f3f4966d46b681a"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Oct 27 16:38:33 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Oct 27 16:43:45 2015 -0700"
      },
      "message": "Enable store elimination for singleton objects.\n\nEnable store elimination for singleton objects. However for finalizable object,\ndon\u0027t eliminate stores. Also added a testcase.\n\nChange-Id: Icf991e7ded5b490f55f580ef928ece5c45e89902\n"
    },
    {
      "commit": "cbf3c0f4e8335b460ce2faba3877d4b24fe492a1",
      "tree": "2118db00ced221b5fe55e5bb37738a8535cfa574",
      "parents": [
        "1af35996afc82bfecb501fc5ecdc0d3350d8a532",
        "dc151b2346bb8a4fdeed0c06e54c2fca21d59b5d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 15:02:06 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 27 15:02:06 2015 +0000"
      },
      "message": "Merge \"Optimizing: Determine invoke-static/-direct dispatch early.\""
    },
    {
      "commit": "dc151b2346bb8a4fdeed0c06e54c2fca21d59b5d",
      "tree": "391d8ccb44ff9e6fc1c8fa8975e534e20cc002ff",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 15 18:02:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 23 14:45:32 2015 +0100"
      },
      "message": "Optimizing: Determine invoke-static/-direct dispatch early.\n\nDetermine the dispatch type of invoke-static/-direct in a\nspecial pass right after the type inference. This allows the\ninliner to pass the \"needs dex cache\" check and inline more.\nIt also allows the code generator to avoid requesting a\nregister location for the ArtMethod* for kDexCachePcRelative\nand direct methods.\n\nThe supported dispatch check handles also situations that\nthe CompilerDriver currently doesn\u0027t allow. The cleanup of\nthe CompilerDriver and required changes to Quick will come\nin a separate change.\n\nChange-Id: I3f8e903a119949e95871d8ab0a995f4731a13a07\n"
    },
    {
      "commit": "8df69d42a9e3ccd9456ff72fac8dbd1999f98755",
      "tree": "b2d7617d4d2e1ae80ab7024b47802dafbaee3b3a",
      "parents": [
        "823e693aa946ba75cd047429e1290011a2ed8729"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 22 15:40:58 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 22 16:37:46 2015 -0700"
      },
      "message": "Revert \"Revert \"load store elimination.\"\"\n\nThis reverts commit 8030c4100d2586fac39ed4007c61ee91d4ea4f25.\n\nChange-Id: I79558d85484be5f5d04e4a44bea7201fece440f0\n"
    },
    {
      "commit": "7cf979b02fa0f2546f3f1b648487ac8df359acf7",
      "tree": "bc6ede4d4e8278e21ea451fe26af47446bdbe3f0",
      "parents": [
        "e033ea69bcd1f343c3cf944d78beec726faf348f",
        "e6e3beaf2d35d18a79f5e7b60a21e75fac9fd15d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 20 09:38:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 20 09:38:07 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"optimizing: propagate type information of arguments\"\"\""
    },
    {
      "commit": "8030c4100d2586fac39ed4007c61ee91d4ea4f25",
      "tree": "9d16c721b449e84aa04681440a79b85d86fa2aa2",
      "parents": [
        "589dac7f0ce078d19aad7e35bb0195c47ddf01d2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 10:30:18 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 10:30:18 2015 +0000"
      },
      "message": "Revert \"load store elimination.\"\n\nBreaks libcore tests:\n\n  libcore.java.lang.ref.FinalizeTest#testWatchdogDoesNotFailForObjectsThatAreNearTheDeadline\n  libcore.java.util.ResourceLeakageDetectorTest#testDetectsUnclosedCloseGuard\n  org.apache.harmony.tests.java.lang.ref.ReferenceTest#test_finalizeReferenceInteraction\n\nThis reverts commit 589dac7f0ce078d19aad7e35bb0195c47ddf01d2.\n\nChange-Id: I55115765c10762d5bc152d3425e4622560d8b9f4\n"
    },
    {
      "commit": "589dac7f0ce078d19aad7e35bb0195c47ddf01d2",
      "tree": "5c77fb845997b21ce1aa97b1fa176c64a76e14f1",
      "parents": [
        "d2e0dd179fd2e8c6c820194e187fc5e9164154ff"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 24 11:21:42 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Oct 15 01:36:34 2015 -0700"
      },
      "message": "load store elimination.\n\nThis adds a pass to eliminate some unnecessary heap loads/stores. It\nfirst collects heap locations and then tracks values stored to those heap\nlocations. Alias analysis is done based on offset, type, singleton,\npre-existence, etc.\n\nChange-Id: I11a9d8ef20d1b2f245607eb25118e9aff9be472a\n"
    },
    {
      "commit": "e6e3beaf2d35d18a79f5e7b60a21e75fac9fd15d",
      "tree": "b4164b3862e372a8fb83a1910bb669dedc8664ca",
      "parents": [
        "c05aca78fad20901ae17902a3671ccfca9071758"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 14 13:53:10 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 14 13:53:10 2015 +0000"
      },
      "message": "Revert \"Revert \"optimizing: propagate type information of arguments\"\"\n\nThis reverts commit 89c0d32437011bbe492fe14c766cd707046ce043.\n\nChange-Id: I603a49794e155cc97410b8836c8ea425bfdc98eb\n"
    },
    {
      "commit": "df3456007702b0dea01ffd1adfa74244857712af",
      "tree": "697f94b058e6905736f9a3a37044d94ad7941f74",
      "parents": [
        "46bf13350316475ce4b787e9cbd8774e87d3dde6",
        "c05aca78fad20901ae17902a3671ccfca9071758"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 13 13:12:35 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 13 13:12:35 2015 +0000"
      },
      "message": "Merge \"Revert \"optimizing: propagate type information of arguments\"\""
    },
    {
      "commit": "c05aca78fad20901ae17902a3671ccfca9071758",
      "tree": "b17f003a121f0b1a27bd237dfbc83c2514538f99",
      "parents": [
        "2c1ffc3a06e9ed0411e29e7dc2558b5d657ede7a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 13 13:10:33 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 13 13:10:33 2015 +0000"
      },
      "message": "Revert \"optimizing: propagate type information of arguments\"\n\nThis reverts commit 2c1ffc3a06e9ed0411e29e7dc2558b5d657ede7a.\n\nChange-Id: I3291070c373e661fa578f5a38becbb5a502baf94\n"
    },
    {
      "commit": "02280e6d97e4ed51f149b9863a5e382111559442",
      "tree": "9735c986e32d53d6436071dfdff277239a84a6f5",
      "parents": [
        "b5c810e91d8e3da02c12a490850c68d5d9d563c3",
        "2c1ffc3a06e9ed0411e29e7dc2558b5d657ede7a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 12 17:03:32 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 12 17:03:32 2015 +0000"
      },
      "message": "Merge \"optimizing: propagate type information of arguments\""
    },
    {
      "commit": "2c1ffc3a06e9ed0411e29e7dc2558b5d657ede7a",
      "tree": "b4164b3862e372a8fb83a1910bb669dedc8664ca",
      "parents": [
        "89792b9c5ed09dda2937944b69b1b2016807b6aa"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 12 15:01:58 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 12 18:01:14 2015 +0100"
      },
      "message": "optimizing: propagate type information of arguments\n\nThis helps inlining and type check elimination.\n\ne.g:\n\nvoid foo(ArrayList a) {\nint size \u003d a.size(); // this can be inlined now.\n}\n\nChange-Id: I3ffeaa79d9df444aa19511c83c544cb5f9d9ab20\n"
    },
    {
      "commit": "b5c810e91d8e3da02c12a490850c68d5d9d563c3",
      "tree": "8b67f82fa1b8ffd6f272b267294cc71911a147f4",
      "parents": [
        "98615e5b7e6f24e40ea5be41a83bdd5a1a0d44a4",
        "dbc2337eb9f010395cb78824a44481ddf2eb748a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 12 13:34:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 12 13:34:51 2015 +0000"
      },
      "message": "Merge \"Optimizing: Avoid string init register set copy for debuggable.\""
    },
    {
      "commit": "dbc2337eb9f010395cb78824a44481ddf2eb748a",
      "tree": "37e1b84ca0d9d34a4da411b120f5f54ced755baf",
      "parents": [
        "89792b9c5ed09dda2937944b69b1b2016807b6aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 12 12:45:52 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 12 12:45:52 2015 +0100"
      },
      "message": "Optimizing: Avoid string init register set copy for debuggable.\n\nChange-Id: I9c0d2e1353c68129db06d53a190a015710e4fd0d\n"
    },
    {
      "commit": "4e2a55760b231554b72ba6703a22fcc7ab1f714e",
      "tree": "1515a37d2cfeef698e8242664f4d55efdc97bd5a",
      "parents": [
        "89792b9c5ed09dda2937944b69b1b2016807b6aa"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Oct 07 18:55:43 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 12 12:24:48 2015 +0100"
      },
      "message": "Assert that referrers class should not need access check.\n\nChange-Id: Ia682befdb0dc665f74c0f96454cc007304ff2397\n"
    },
    {
      "commit": "ec7802a102d49ab5c17495118d4fe0bcc7287beb",
      "tree": "08649609604b9c96bc48ca071c48b0af5abb1a3f",
      "parents": [
        "b2e436ffcda1d7a87e7bf9133d8ed878388c73c2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 01 20:57:57 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 08 11:10:18 2015 +0100"
      },
      "message": "Add DCHECKs to ArenaVector and ScopedArenaVector.\n\nImplement dchecked_vector\u003c\u003e template that DCHECK()s element\naccess and insert()/emplace()/erase() positions. Change the\nArenaVector\u003c\u003e and ScopedArenaVector\u003c\u003e aliases to use the new\ntemplate instead of std::vector\u003c\u003e. Remove DCHECK()s that\nhave now become unnecessary from the Optimizing compiler.\n\nChange-Id: Ib8506bd30d223f68f52bd4476c76d9991acacadc\n"
    },
    {
      "commit": "98893e146b0ff0e1fd1d7c29252f1d1e75a163f2",
      "tree": "a14bb10d039fcee10a7e0cacb494bb60d08b2039",
      "parents": [
        "7b5c395e9a50f988ca2275a429df17b6abbcc475"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 02 21:05:03 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Oct 06 13:42:55 2015 +0100"
      },
      "message": "Add support for unresolved classes in optimizing.\n\nChange-Id: I0e299a81e560eb9cb0737ec46125dffc99333b54\n"
    },
    {
      "commit": "07380a2d6cb9feee02facc81f699eed5cb670cd5",
      "tree": "95667e028ef49ad15e6a0d4ce38074573d414dd4",
      "parents": [
        "e460d1df1f789c7c8bb97024a8efbd713ac175e9"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 14:15:12 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 02 02:25:25 2015 +0100"
      },
      "message": "Enable compilation of members with access check failures.\n\nChange-Id: I0de73099b53612072c3e6f1235c22f96339fe440\n"
    },
    {
      "commit": "e460d1df1f789c7c8bb97024a8efbd713ac175e9",
      "tree": "3511036fb18828dd0ee140d33a8bcd0535ebeab6",
      "parents": [
        "25217af2a7cae96b32ba566aaf697288f3374c99"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 29 04:52:17 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 02 02:25:18 2015 +0100"
      },
      "message": "Revert \"Revert \"Support unresolved fields in optimizing\"\n\nThe CL also changes the calling convetion for 64bit static field set\nto use kArg2 instead of kArg1. This allows optimizing to keep\nthe asumptions:\n- arm pairs are always of form (even_reg, odd_reg)\n- ecx_edx is not used as a register on x86.\n\nThis reverts commit e6f49b47b6a4dc9c7684e4483757872cfc7ff1a1.\n\nChange-Id: I93159917565824084abc96775f31be1a4249f2f3\n"
    },
    {
      "commit": "5233f93ee336b3581ccdb993ff6342c52fec34b0",
      "tree": "225dc0ab491263ef56362a8d0fe2926266bd5047",
      "parents": [
        "de8a3f4dce1e9ff0e3be16956b06bafc8cd4f397"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 29 19:01:15 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 29 19:46:03 2015 +0100"
      },
      "message": "Optimizing: Tag even more arena allocations.\n\nTag previously \"Misc\" arena allocations with more specific\nallocation types. Move some native heap allocations to the\narena in BCE.\n\nBug: 23736311\nChange-Id: If8ef15a8b614dc3314bdfb35caa23862c9d4d25c\n"
    },
    {
      "commit": "3b9f30487e160eb97f3fa8694351dc1073e2fd45",
      "tree": "a98540ff1b8af2bfe996ecf51d7bacd9247863b8",
      "parents": [
        "6a9984e62c08bcd78c8e49dd40b1f0f9d53513b7"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Thu Sep 24 08:43:40 2015 -0400"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 28 13:21:34 2015 +0100"
      },
      "message": "Address HPackedSwitch issues raised after merge\n\nThere were some stylistic comments about the merged files.  Fix those.\n\nAdd a test that PackedSwitch can be removed by DCE.\n\nChange-Id: Idf45833956e9b58051f942a52b06a1e416606e2e\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "ec7e44f7afe0ff48d4d1ae54a12d375e0392d24c",
      "tree": "30ce5725c7258d6584a56f2c6382cee529df2cc2",
      "parents": [
        "e92ed9d31bae7ccd48b60aa921e9dd2ca96ac9db",
        "2aaa4b5532d30c4e65d8892b556400bb61f9dc8c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 25 13:59:08 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 25 13:59:08 2015 +0000"
      },
      "message": "Merge \"Optimizing: Tag more arena allocations.\""
    },
    {
      "commit": "2aaa4b5532d30c4e65d8892b556400bb61f9dc8c",
      "tree": "f4259c33171ec8efd945aeedab1e57feb7970f42",
      "parents": [
        "3f4b39dec9ec6b8948ed18b9d65ba49db2465004"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 17 17:03:26 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 25 12:18:02 2015 +0100"
      },
      "message": "Optimizing: Tag more arena allocations.\n\nReplace GrowableArray with ArenaVector and tag arena\nallocations with new allocation types.\n\nAs part of this, make the register allocator a bit more\nefficient, doing bulk insert/erase. Some loops are now\nO(n) instead of O(n^2).\n\nChange-Id: Ifac0871ffb34b121cc0447801a2d07eefd308c14\n"
    },
    {
      "commit": "d7558daaa86decf5a38f4f9bcd82267ab6e3e17f",
      "tree": "abfbc97a44e301f850b775eaa1d63aaa5efd1a0e",
      "parents": [
        "c7e0da5292e841f6a864dd010bd6e0b06e0ece73"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 22 13:04:14 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 25 10:40:08 2015 +0100"
      },
      "message": "ART: Preserve loop headers with try/catch\n\nAlgorithm for inserting HTryBoundary instructions would generate a\nnon-natural loop when a loop header block was covered by a TryItem.\nThis patch changes the approach to fix the issue.\n\nBug: 23895756\nChange-Id: I0e1ee6cf135cea326a96c97954907d202c9793cc\n"
    },
    {
      "commit": "fe57faa2e0349418dda38e77ef1c0ac29db75f4d",
      "tree": "38ba7a406f8a86a1152bd6c9f2d0a6c677423211",
      "parents": [
        "9e30c0e177adabaaf94a66c91130a19a7632fc7c"
      ],
      "author": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Fri Sep 18 09:26:15 2015 -0400"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Mon Sep 21 07:23:45 2015 -0400"
      },
      "message": "[optimizing] Add basic PackedSwitch support\n\nAdd HPackedSwitch, and generate it from the builder.  Code generators\nconvert this to a series of compare/branch tests.  Better implementation\nin the code generators as a real jump table will follow as separate CLs.\n\nChange-Id: If14736fa4d62809b6ae95280148c55682e856911\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "85c7bab43d11180d552179c506c2ffdf34dd749c",
      "tree": "337976b69d3b2a35cc9f12284cda03c8eb2a58c7",
      "parents": [
        "819a9c5638b6d6b579c89fe36df96acc1f378182"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 18 13:40:46 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 18 15:19:04 2015 +0100"
      },
      "message": "Revert \"Revert \"Optimize code generation of check-cast and instance-of.\"\"\n\nThis reverts commit 7537437c6a2f89249a48e30effcc27d4e7c5a04f.\n\nChange-Id: If759cb08646e47b62829bebc3c5b1e2f2969cf84\n"
    },
    {
      "commit": "6766eae2d91e894b4ceab9f29cc983900e7bc0c7",
      "tree": "4a3aac762e01c7933bcbffebb5277bde208e975b",
      "parents": [
        "930761fb7a4db70fbd5e75faa1fca07e5b494ae9",
        "7537437c6a2f89249a48e30effcc27d4e7c5a04f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 17:12:37 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 17 17:12:37 2015 +0000"
      },
      "message": "Merge \"Revert \"Optimize code generation of check-cast and instance-of.\"\""
    },
    {
      "commit": "7537437c6a2f89249a48e30effcc27d4e7c5a04f",
      "tree": "3f5f1d89f27d549cf40901f906ffab86bb05b520",
      "parents": [
        "64acf303eaa2f32c0b1d8cfcbf044a822c5eec08"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 17:12:19 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 17:12:19 2015 +0000"
      },
      "message": "Revert \"Optimize code generation of check-cast and instance-of.\"\n\nFailures with libcore tests.\n\nThis reverts commit 64acf303eaa2f32c0b1d8cfcbf044a822c5eec08.\n\nChange-Id: Ie6f323fcf5d86bae5c334c1352bb21f1bad60a88\n"
    },
    {
      "commit": "b7d8e8cf7063fdec1cce6ebd33e33804976bd978",
      "tree": "8d60856999139cf5b0b0f145f69c35a84a60716c",
      "parents": [
        "a201d5eeb0903408df925a1ed1686a55238a274c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 17 15:47:05 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 17 16:06:59 2015 +0100"
      },
      "message": "Optimizing: Do not use range-based loop when inserting elements.\n\nWhen we iterate over the elements of a container and we may\ninsert new elements into that container, it\u0027s wrong to use\nthe range-based loop.\n\nBug: 24133462\nChange-Id: Iee35fbcf88ed3bcd6155cbeba09bd256032a16be\n"
    },
    {
      "commit": "a201d5eeb0903408df925a1ed1686a55238a274c",
      "tree": "d59b87e3c0bddb1d244199e9fbcc9301cb7dc52f",
      "parents": [
        "271d30dd847fb72d78d3178b8b3b225192c2d1c0",
        "64acf303eaa2f32c0b1d8cfcbf044a822c5eec08"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 14:18:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 17 14:18:03 2015 +0000"
      },
      "message": "Merge \"Optimize code generation of check-cast and instance-of.\""
    },
    {
      "commit": "e6f49b47b6a4dc9c7684e4483757872cfc7ff1a1",
      "tree": "6a5f45136832f73138ced75fcd3c6110b74116ea",
      "parents": [
        "23a8e35481face09183a24b9d11e505597c75ebb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 14:04:33 2015 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 14:04:33 2015 +0000"
      },
      "message": "Revert \"Support unresolved fields in optimizing\"\nbreaks debuggable tests.\n\nThis reverts commit 23a8e35481face09183a24b9d11e505597c75ebb.\n\nChange-Id: I8e60b5c8f48525975f25d19e5e8066c1c94bd2e5\n"
    },
    {
      "commit": "64acf303eaa2f32c0b1d8cfcbf044a822c5eec08",
      "tree": "1e9829deb0621b3cb9b275846c8d08381956fecf",
      "parents": [
        "017719a03c7c111a2069b5f85e3b9c81566c0902"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 14 22:20:29 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 14:45:39 2015 +0100"
      },
      "message": "Optimize code generation of check-cast and instance-of.\n\nOn x86/x64/arm/arm64. Improve code size of selected apks from 0.3% to 1%,\nand performance of DeltaBlue by 20%.\n\nChange-Id: Ib5799f7a53443cd880a121dd7f21932ae9f5c7aa\n"
    },
    {
      "commit": "23a8e35481face09183a24b9d11e505597c75ebb",
      "tree": "bcaafb6ea001349acbf160c2cc89334fab4a38dc",
      "parents": [
        "175dc732c80e6f2afd83209348124df349290ba8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 08 19:56:31 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 12:29:59 2015 +0100"
      },
      "message": "Support unresolved fields in optimizing\n\nChange-Id: I9941fa5fcb6ef0a7a253c7a0b479a44a0210aad4\n"
    },
    {
      "commit": "175dc732c80e6f2afd83209348124df349290ba8",
      "tree": "6a5f45136832f73138ced75fcd3c6110b74116ea",
      "parents": [
        "5d01db1aa7634a012109d43e6403451b76de1daa"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 25 15:42:32 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 12:29:51 2015 +0100"
      },
      "message": "Support unresolved methods in Optimizing\n\nChange-Id: If2da02b50d2fa668cd58f134a005f1752e7746b1\n"
    },
    {
      "commit": "5d01db1aa7634a012109d43e6403451b76de1daa",
      "tree": "9032845624b975d13d28cdddd920e6b66ddae2db",
      "parents": [
        "9b2c10ebac8e024412b4cc43e6511d724a0fd345"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 25 15:02:42 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 17 12:26:28 2015 +0100"
      },
      "message": "BuildInvoke refactor: extract String.init in its own code path\n\nThis makes it clear that we special handle String init. Getting rid of\nall `if (is_string_init)` improves readability into what we actually do\nand expect for strings.\n\nChange-Id: I9b4fba4c3ea89e0003c0704335cbe80e874d0e15\n"
    },
    {
      "commit": "fa6b93c4b69e6d7ddfa2a4ed0aff01b0608c5a3a",
      "tree": "3528c88e104dac8e58ae5370ab066b8b1dd0218f",
      "parents": [
        "e295be4a95d7861f6ec179edf6565f58cad747cc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 15 10:15:55 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 16 13:21:33 2015 +0100"
      },
      "message": "Optimizing: Tag arena allocations in HGraph.\n\nReplace GrowableArray with ArenaVector in HGraph and related\nclasses HEnvironment, HLoopInformation, HInvoke and HPhi,\nand tag allocations with new arena allocation types.\n\nChange-Id: I3d79897af405b9a1a5b98bfc372e70fe0b3bc40d\n"
    },
    {
      "commit": "77a48ae01bbc5b05ca009cf09e2fcb53e4c8ff23",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "659562aaf133c41b8d90ec9216c07646f0f14362"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 15 12:34:04 2015 +0000"
      },
      "message": "Revert \"Revert \"ART: Register allocation and runtime support for try/catch\"\"\n\nThe original CL triggered b/24084144 which has been fixed\nby Ib72e12a018437c404e82f7ad414554c66a4c6f8c.\n\nThis reverts commit 659562aaf133c41b8d90ec9216c07646f0f14362.\n\nChange-Id: Id8980436172457d0fcb276349c4405f7c4110a55\n"
    },
    {
      "commit": "659562aaf133c41b8d90ec9216c07646f0f14362",
      "tree": "be1beae390262bf2f5a17bfa44de93081a849d07",
      "parents": [
        "b022fa1300e6d78639b3b910af0cf85c43df44bb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 21:26:33 2015 +0000"
      },
      "message": "Revert \"ART: Register allocation and runtime support for try/catch\"\n\nBreaks libcore test org.apache.harmony.security.tests.java.security.KeyStorePrivateKeyEntryTest#testGetCertificateChain. Need to investigate.\n\nThis reverts commit b022fa1300e6d78639b3b910af0cf85c43df44bb.\n\nChange-Id: Ib24d3a80064d963d273e557a93469c95f37b1f6f\n"
    },
    {
      "commit": "b022fa1300e6d78639b3b910af0cf85c43df44bb",
      "tree": "780c7d6bdee784c2f8248979de348491cfb63b34",
      "parents": [
        "e481c006e8b055a31d9c7cff27f4145e57e3c113"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Aug 20 17:47:48 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Sep 14 20:42:58 2015 +0100"
      },
      "message": "ART: Register allocation and runtime support for try/catch\n\nThis patch completes a series of CLs that add support for try/catch\nin the Optimizing compiler. With it, Optimizing can compile all\nmethods containing try/catch, provided they don\u0027t contain catch loops.\nFuture work will focus on improving performance of the generated code.\n\nSsaLivenessAnalysis was updated to propagate liveness information of\ninstructions live at catch blocks, and to keep location information on\ninstructions which may be caught by catch phis.\n\nRegisterAllocator was extended to spill values used after catch, and\nto allocate spill slots for catch phis. Catch phis generated for the\nsame vreg share a spill slot as the raw value must be the same.\n\nLocation builders and slow paths were updated to reflect the fact that\nthrowing an exception may not lead to escaping the method.\n\nInstruction code generators are forbidden from using of implicit null\nchecks in try blocks as live registers need to be saved before handing\nover to the runtime.\n\nCodeGenerator emits a stack map for each catch block, storing locations\nof catch phis. CodeInfo and StackMapStream recognize this new type of\nstack map and store them separate from other stack maps to avoid dex_pc\nconflicts.\n\nAfter having found the target catch block to deliver an exception to,\nQuickExceptionHandler looks up the dex register maps at the throwing\ninstruction and the catch block and copies the values over to their\nrespective locations.\n\nThe runtime-support approach was selected because it allows for the\nbest performance in the normal control-flow path, since no propagation\nof catch phi values is necessary until the exception is thrown. In\naddition, it also greatly simplifies the register allocation phase.\n\nConstantHoisting was removed from LICMTest because it instantiated\n(now abstract) HConstant and was bogus anyway (constants are always in\nthe entry block).\n\nChange-Id: Ie31038ad8e3ee0c13a5bbbbaf5f0b3e532310e4e\n"
    },
    {
      "commit": "9af47e27674e70e7f82315d39de5bc659c4e1b83",
      "tree": "e1cf3d95c94721cf9e411e544f37105b684d7666",
      "parents": [
        "35717f8cfb6c1de5c89b2f9b990a050b2cbab66f",
        "6058455d486219994921b63a2d774dc9908415a2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 14 11:43:25 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 14 11:43:25 2015 +0000"
      },
      "message": "Merge \"Optimizing: Tag basic block allocations with their source.\""
    },
    {
      "commit": "3ecfd65143d95bd7c6cbe4f58c33af517d3761e0",
      "tree": "62b3194f0ac2814541170f970996b0a35511e78e",
      "parents": [
        "426514cada274714244290d6447d9f62dc3394bf"
      ],
      "author": {
        "name": "Yevgeny Rouban",
        "email": "yevgeny.y.rouban@intel.com",
        "time": "Mon Sep 07 17:57:00 2015 +0600"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 09 14:12:13 2015 +0100"
      },
      "message": "Add dex_pc to all HInstructions in builder.\n\nOptimizing compiler generates minimum debug line info that\nis built using the dex_pc information about suspend points.\nThis is not enough for performance and debugging needs.\n\nThis patch makes all HInstructions contain\ndex_pc and all allocations in the builder define this value.\n\nChange-Id: I1d14aefe075189b7b1b41b4384c3499474c19afc\nSigned-off-by: Yevgeny Rouban \u003cyevgeny.y.rouban@intel.com\u003e\nSigned-off-by: Serdjuk, Nikolay Y \u003cnikolay.y.serdjuk@intel.com\u003e\n"
    },
    {
      "commit": "6058455d486219994921b63a2d774dc9908415a2",
      "tree": "3d205227f3ff54cd3a50bc5c0e7cb3ad6c175b86",
      "parents": [
        "637ee0b9c10ab7732a7ee7b8335f3fff4ac1549c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 13:35:12 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 08 18:09:49 2015 +0100"
      },
      "message": "Optimizing: Tag basic block allocations with their source.\n\nReplace GrowableArray with ArenaVector in HBasicBlock and,\nto track the source of allocations, assign one new and two\nQuick\u0027s arena allocation types to these vectors. Rename\nkArenaAllocSuccessor to kArenaAllocSuccessors.\n\nBug: 23736311\nChange-Id: Ib52e51698890675bde61f007fe6039338cf1a025\n"
    },
    {
      "commit": "736b560f2d2c89b63dc895888c671b5519afa4c8",
      "tree": "d5aee7ac36f458a5f6e6d75fceb19f8963a71db5",
      "parents": [
        "fe3879e6011f629d0dd6b04fab00b9496bd4ea08"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 02 14:54:11 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 03 13:27:19 2015 -0700"
      },
      "message": "Reduce how often we call FindDexCache\n\nBefore host boot.oat -j4 optimizing compile:\nreal  1m17.792s\nuser  3m26.140s\nsys 0m8.340s\n\nAfter:\nreal  1m12.324s\nuser  3m22.718s\nsys 0m8.320s\n\nChange-Id: If18e9e79e06cdf1676692e5efacb682bf93889c3\n"
    },
    {
      "commit": "673ed3d8aedc5462a47ded827c99f35d46525457",
      "tree": "83de4690228c9f7772c48c770c5e2e5ba2dac6fe",
      "parents": [
        "ce209462cc1a7ce235e5ac0d0e6db6b402f73441"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 28 14:56:43 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 31 10:58:31 2015 -0700"
      },
      "message": "Revert \"Revert \"Change dex caches to be weak roots\"\"\n\nThis reverts commit 81a9087f0df0518c39405b7d18ba5858a6d8b77b.\n\nBoot.oat creation time goes from 4.7s to 4.9s on host due to extra\nlocking. Will try to improve this in another CL.\n\nBug: 23602225\nBug: 22720414\n\nChange-Id: I7e25b75cfb63faa196c7b0f60e46cce50bf12021\n"
    },
    {
      "commit": "599262ca1f45ff41ec1bbf31556ab5bf7e94d87a",
      "tree": "cd1fc6e00092b80ebad94b3e896b167107294d41",
      "parents": [
        "0eedd7e0c923f3ef0b7103f58ca0b975613af144"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 15:01:27 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 15:01:27 2015 +0100"
      },
      "message": "Fix extra parantheses\n\n:(\n\nChange-Id: Ie48a54de1276fb9e478cb5927d714b2ff14ae6c6\n"
    },
    {
      "commit": "0eedd7e0c923f3ef0b7103f58ca0b975613af144",
      "tree": "c77db90ea2e42f0cd3b0e3b185a2c3ecde0ca515",
      "parents": [
        "68ad649d3918f2eed3a37209c01a7f0a0faf09f0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 14:48:00 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 14:51:27 2015 +0100"
      },
      "message": "Fix BuildInvoke\n\nThe invoke should be added to the graph before\nPotentiallySimplifyFakeString.\n\nChange-Id: I2afc1d16e6dae60957e7d1386fd028e4f3a5b27a\n"
    },
    {
      "commit": "68ad649d3918f2eed3a37209c01a7f0a0faf09f0",
      "tree": "5d6a004a79bffc5c02af02f325faa8df5f8cad52",
      "parents": [
        "bffabfce093e26bffb9e820a8f6b45474d28787a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 18 17:08:12 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 20 12:57:10 2015 +0100"
      },
      "message": "Refactor BuildInvoke.\n\nBuildInvoke got to be too complex an unreadble. This breaks it down in\nsmaller pieces.\n\nChange-Id: Ibda63f69f5a1be537ae13e18a5f67c361173f4a6\n"
    },
    {
      "commit": "99429ae0610e8d67d417542942c4befb35950bd3",
      "tree": "707a048ce213083edcf370a0a021e66a709d157c",
      "parents": [
        "a35d4c9d66b372e7ae1014357c48ddfa6104085b",
        "581550137ee3a068a14224870e71aeee924a0646"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 18:05:46 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 19 18:05:46 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\"\""
    },
    {
      "commit": "581550137ee3a068a14224870e71aeee924a0646",
      "tree": "f62dd0d07c66a8ce4d7d994ee0e9c27bd8014bb1",
      "parents": [
        "32f264e67afa8654a5570d38b627515fb73fc333"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:49:41 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 18:54:36 2015 +0100"
      },
      "message": "Revert \"Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\"\n\nFixed kCallArtMethod to use correct callee location for\nkRecursive. This combination is used when compiling with\ndebuggable flag set.\n\nThis reverts commit b2c431e80e92eb6437788cc544cee6c88c3156df.\n\nChange-Id: Idee0f2a794199ebdf24892c60f8a5dcf057db01c\n"
    },
    {
      "commit": "ec16f79a4d0aeff319bf52139a0c82de3080d73c",
      "tree": "1306b2cbaa97bbacc2cbc100d6e157e14f9510cb",
      "parents": [
        "32f264e67afa8654a5570d38b627515fb73fc333"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 15:04:01 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Aug 19 17:43:13 2015 +0100"
      },
      "message": "ART: Refactor try/catch block info, store exception type\n\nThis patch replaces HBasicBlock fields storing try/catch info with a\nsingle TryCatchInformation data structure, saving memory for the\nmajority of non-try/catch blocks. It also changes builder to store\nthe exception type for catch blocks.\n\nChange-Id: Ib3e43f7db247e6915d67c267fc62410420e230c9\n"
    },
    {
      "commit": "b2c431e80e92eb6437788cc544cee6c88c3156df",
      "tree": "6c0ac5f843845e4b09829eb0fd9f1b3013cf4494",
      "parents": [
        "9b688a095afbae21112df5d495487ac5231b12d0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:45:42 2015 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:45:42 2015 +0000"
      },
      "message": "Revert \"Optimizing: Better invoke-static/-direct dispatch.\"\n\nReverting due to failing ndebug tests.\n\nThis reverts commit 9b688a095afbae21112df5d495487ac5231b12d0.\n\nChange-Id: Ie4f69da6609df3b7c8443412b6cf7f5c43c2c5d9\n"
    },
    {
      "commit": "9b688a095afbae21112df5d495487ac5231b12d0",
      "tree": "e5e881d4d124803e66f1e90c1e0a0e4c90d22e13",
      "parents": [
        "009c34cba875885d9540696f33255a9b355d6e15"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 06 14:12:42 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 19 12:23:37 2015 +0100"
      },
      "message": "Optimizing: Better invoke-static/-direct dispatch.\n\nAdd framework for different types of loading ArtMethod*\nand code pointer retrieval. Implement invoke-static and\ninvoke-direct calls the same way as Quick. Document the\ndispatch kinds in HInvokeStaticOrDirect\u0027s new enumerations\nMethodLoadKind and CodePtrLocation.\n\nPC-relative loads from dex cache arrays are used only for\nx86-64 and arm64. The implementation for other architectures\nwill be done in separate CLs.\n\nChange-Id: I468ca4d422dbd14748e1ba6b45289f0d31734d94\n"
    },
    {
      "commit": "cb1c0557033065f2436ee79e7fa6c19d87064801",
      "tree": "741b623b2e370a133b5cef9feed2542151186db6",
      "parents": [
        "e238414eee3ec933a4ceb1894666c9ef331ace0c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 04 16:22:25 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 04 16:39:38 2015 +0100"
      },
      "message": "ART: Move exception clearing into own instruction\n\nRuntime delivers exceptions only to catch blocks which begin with a\nMOVE_EXCEPTION instruction (in DEX). In that case, the catch block is\nexpected to clear the thread-local exception storage after having\nread the exception reference.\n\nThis patch changes Optimizing to represent MOVE_EXCEPTION with two\ninstructions - HLoadException and HClearException - instead of one.\nIf the exception reference is not used, HLoadException can be safely\nremoved, saving a memory load without breaking the runtime behaviour.\n\nChange-Id: Idad8a714467bf9d9d5fccefbc43c0bd8ae13ddba\n"
    },
    {
      "commit": "9523a3ed0ae6fa31cd978a3999fd88233218f98b",
      "tree": "f74eae1f98064e15ea6b239eb2548133423976fe",
      "parents": [
        "33e50d85a3e43072fad4f58369b71da73b8f966c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 11:51:28 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 12:58:00 2015 +0100"
      },
      "message": "Revert \"Revert \"Use the quickened metadata to compile -QUICK opcodes.\"\"\n\nThis reverts commit 8ab9a9010f3929acbb6c671008b8885b762b01e1.\n\nChange-Id: I1e654d5010ea2112982c3055fcb8c8f9c10e9ac8\n"
    },
    {
      "commit": "8ab9a9010f3929acbb6c671008b8885b762b01e1",
      "tree": "ed38799e9dcddb859158e013d1c5d840903789f6",
      "parents": [
        "4515a67434c9e3e1627586629a1f2aba1a99aa6a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 10:02:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 17 10:02:30 2015 +0000"
      },
      "message": "Revert \"Use the quickened metadata to compile -QUICK opcodes.\"\n\nBroke sdk build. Investigating.\n\nThis reverts commit 4515a67434c9e3e1627586629a1f2aba1a99aa6a.\n\nChange-Id: I6c1107ab626758570a59dc6bf3e4228c70a57196\n"
    },
    {
      "commit": "4515a67434c9e3e1627586629a1f2aba1a99aa6a",
      "tree": "94a31425ceac8234cce150588e5667fbedff6449",
      "parents": [
        "cced6ad152cf8ec13f38f2210c1b8445919232d3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 16 14:58:58 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 16 18:36:05 2015 +0100"
      },
      "message": "Use the quickened metadata to compile -QUICK opcodes.\n\nChange-Id: I28a8d68921698bea81f54c95cc6e4c6d2c03f2b4\n"
    },
    {
      "commit": "f185fb365e9faf58428762bace96d7729ea5bdbc",
      "tree": "79a2bbbab8cb36523056539d374d5d79e7e5ee4a",
      "parents": [
        "5e094de24827292d8a13be2adbdcca54ae7d5ff0",
        "2e7cd752452d02499a2f5fbd604c5427aa372f00"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jul 13 11:55:19 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jul 13 11:55:20 2015 +0000"
      },
      "message": "Merge \"[optimizing] Don\u0027t rely on the verifier for String.\u003cinit\u003e.\""
    },
    {
      "commit": "2e7cd752452d02499a2f5fbd604c5427aa372f00",
      "tree": "505527250317827f56378f4b786534793ccfbb61",
      "parents": [
        "f16b820fc18ff86e765a14176f05417305d689a0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 10 11:38:52 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 10 18:21:13 2015 +0100"
      },
      "message": "[optimizing] Don\u0027t rely on the verifier for String.\u003cinit\u003e.\n\nContinue work on cutting the dependency on the verifier.\n\nChange-Id: I0f95b1eb2e10fd8f6bf54817f1202bdf6dfdb0fe\n"
    },
    {
      "commit": "f40002163fed58215df569e89f0a0b9661e16273",
      "tree": "bf5d9e96f624bf1f7d06731b94c7e4d308c026e9",
      "parents": [
        "f16b820fc18ff86e765a14176f05417305d689a0",
        "4fa13f65ece3b68fe3d8722d679ebab8656bbf99"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 10 10:51:14 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 10 10:51:15 2015 +0000"
      },
      "message": "Merge \"Fuse long and FP compare \u0026 condition on ARM in Optimizing.\""
    },
    {
      "commit": "72783ff32da5d3f025bbe1636cee84328f1135c6",
      "tree": "577db39a020c61360fa69080160c15115bdc91e8",
      "parents": [
        "7b3d3bc1a4ea7546e4743e90e695f4fc7ecadf3a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jul 09 14:36:05 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jul 09 15:31:40 2015 +0100"
      },
      "message": "ART: Fix bug in GraphBuilder\n\nThis fixes a bug where the GraphBuilder would split a throwing catch\nblock but would not update info about which blocks throw.\n\nChange-Id: If5415f0c320aa488e06eb042e8fea6f03e30246a\n"
    },
    {
      "commit": "6cd788f2b00e6a8149f46a17aab9162314960c00",
      "tree": "f40acd7129e406a5774b2cbd39233bb48277bf5b",
      "parents": [
        "4880fd5695ea1726dde27bb448dae1338d0a0973"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 16:44:00 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 19:02:18 2015 +0100"
      },
      "message": "Address small comments in HGraphBuilder\n\nChange-Id: Ife0a19f6e07146c8e03922f1330527d092f5e236\n"
    },
    {
      "commit": "bff7503625400b610a43678c6930354146ce5f92",
      "tree": "9b1c98a1a1d041fa464cddb074fca677708b5151",
      "parents": [
        "98bea9fdab2c5f964a95f9e76620b0b35c050a8a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 17:26:51 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 18:33:31 2015 +0100"
      },
      "message": "Revert \"Revert \"ART: Ignore try blocks with no throwing instructions\"\"\n\nThe original CL broke libcore tests because monitor-exit instructions\ndid not have any side-effects and got removed by DCE once not labelled\nthrowing any more.\n\nThis reverts commit efe374d7c25c1d48945a9198d96469de99e0c1bd.\n\nChange-Id: I624c0f91676d9baaada6f33be9d7091f68d57535\n"
    },
    {
      "commit": "efe374d7c25c1d48945a9198d96469de99e0c1bd",
      "tree": "5bcba0fdbdb056c1d33c5a33c581192bdf26d315",
      "parents": [
        "8f8ee680bec71a28d9d7b7538e8c7ca100a18184"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 16:58:07 2015 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 16:58:07 2015 +0000"
      },
      "message": "Revert \"ART: Ignore try blocks with no throwing instructions\"\n\nTurns out monitor-exit *can* throw... Need to investigate\n\nThis reverts commit 8f8ee680bec71a28d9d7b7538e8c7ca100a18184.\n\nChange-Id: I8b42690918833c917b6a7fc3ceea932b7c1a6f15\n"
    },
    {
      "commit": "8f8ee680bec71a28d9d7b7538e8c7ca100a18184",
      "tree": "ac955c2a57563dfbeb09ec2fee5cc33ae2a926a4",
      "parents": [
        "3e18a8958d2caa4980c4cee4e537313a61adf3d8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 12:11:42 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jul 08 16:22:05 2015 +0100"
      },
      "message": "ART: Ignore try blocks with no throwing instructions\n\nIn order to avoid complex removal of redundant exceptional edges in\nthe SSA builder, this patch modified the graph builder to consider\nblocks without throwing instructions as not in a try block, even if\ncovered by a TryItem.\n\nIn some corner cases, this may generate more TryBoundaries than\nnecessary, but those can be removed once the SSA form is built.\n\nChange-Id: I158c4542b2c1964a8dd532f82e921b9cb1997e1e\n"
    }
  ],
  "next": "4fa13f65ece3b68fe3d8722d679ebab8656bbf99"
}
