)]}'
{
  "log": [
    {
      "commit": "cc1b5357f83f0b787d51fbfde3fe870c8a2fa050",
      "tree": "253d23dba63e1003dc8e953002b994d01c97f181",
      "parents": [
        "5d0c3009fc56afdb4aeae5ee6dd98c3d1d2e7711"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 01 16:58:38 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 02 14:00:22 2016 -0800"
      },
      "message": "ART: Clean up ClassLinker\n\nTry to clean up and simplify ClassLinker.\n\nMove dex_lock to Locks. Remove dead code. Move single-use\ncode to user. Hide implementation details from header.\n\nTest: m test-art-host\nChange-Id: I58150fa9c2a9524f8304370270c2197d655cb3a8\n"
    },
    {
      "commit": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "1af0c4ff8b79ad44a4e12d7271a66d4e775ba224",
      "tree": "3e5e2527241d423290df454d551bf6787a052f0d",
      "parents": [
        "71601907b95a3527fc554a3a1724b3c12b872a7a"
      ],
      "author": {
        "name": "Julien Duraj",
        "email": "julien.duraj@linaro.org",
        "time": "Wed Nov 16 14:05:48 2016 +0000"
      },
      "committer": {
        "name": "Julien Duraj",
        "email": "julien.duraj@linaro.org",
        "time": "Wed Nov 23 10:37:31 2016 +0000"
      },
      "message": "Fix the target Linux builds of ART\n\nWhen ART_TARGET_LINUX was set it would hit some pieces of dead code that\nwere using old defines i.e. `__ANDROID__`\n\nTest: export ART_TARGET_LINUX\u003dtrue\nTest: source build/envsetup.sh\nTest: lunch\nTest: cd art \u0026\u0026 mma\n\nChange-Id: I80102750192928606e0884d2b723a87ccb7d7e19\n"
    },
    {
      "commit": "f05ccaf2cc9882e8b2d0add30072fd2648bea88d",
      "tree": "c92854218ee522a99c298d6f32a45327c14626dc",
      "parents": [
        "c394d0558de9afff6ab8b87ae9706497e01f37ff",
        "6f4d102e0c3029b3c74af13d3846a14e1c878a12"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 22 19:26:09 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Nov 22 19:26:10 2016 +0000"
      },
      "message": "Merge \"Correctly handle EINTR return from futex\""
    },
    {
      "commit": "340dafabc8e88378e395cda9027cf17726910e91",
      "tree": "f742cfc9b9eb3fdf0245a66491d39fb841da7c01",
      "parents": [
        "71d15102b52af67e8fe1193192aa2b4cd1956ae0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 18 16:03:10 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 13:08:29 2016 +0000"
      },
      "message": "Use a per-thread VerifierDeps.\n\nAvoid lock contention on a singleton VerifierDeps by allocating\ntemporary per-thread VerifierDeps that get merged after verification.\n\nThis saves around ~35% compile-times on interpret-only.\n\nOnly the creation of extra strings is guarded by a lock, for simplicity.\n\nTest: test-art-host, test-art-target\nbug: 32641252\nbug: 30937355\n\nChange-Id: I11a2367da882b58e39afa7b42cba2e74a209b75d\n"
    },
    {
      "commit": "6f4d102e0c3029b3c74af13d3846a14e1c878a12",
      "tree": "18ad351a86cabf94c2bb7f4f8b9dff9d0ec7c59a",
      "parents": [
        "da2d78ba97d177b80e0e9528362bcebc1fd31f0f"
      ],
      "author": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Mon Nov 21 14:35:42 2016 -0800"
      },
      "committer": {
        "name": "Daniel Colascione",
        "email": "dancol@google.com",
        "time": "Mon Nov 21 15:44:06 2016 -0800"
      },
      "message": "Correctly handle EINTR return from futex\n\nWe should handle EINTR the same way we do EAGAIN: they\u0027re both\ntransient failures. Either way, higher-level code (see\nReaderWriterMutex::SharedLock) will do the right thing, loop around,\nand try again.\n\nTest: code inspection\nChange-Id: I1eb7fb6851cc1a65acc9a0cf7cbeef787b6b28b6\n"
    },
    {
      "commit": "1ffcf7b06fa301f6f1bd7d4d776387d4ecdcef1b",
      "tree": "5a0ffcc6becddeb3b1f6e34c135ad0c760a74b65",
      "parents": [
        "137b07593aedfad193a77f3787ecf5197008c5da"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Nov 17 17:57:25 2016 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Nov 17 17:58:00 2016 -0800"
      },
      "message": "Fix false positive stack ASan errors on x86.\n\nCall a special ASan function in x86 DoLongJump to let the tool know\nthat strange things are going to happen with the stack pointer. Other\narchitectures do not need this because they do the stack pointer\nmanipulation in a separate ((noreturn)) function, and noreturn\nattribute triggers the same conservative behaviour in ASan.\n\nBug: 24199050\nBug: 32849425\nTest: SANITIZE_HOST\u003daddress stub_test32\nChange-Id: Ic639d2d84474d875487e66369c034db9907a7e8f\n"
    },
    {
      "commit": "ca620d7bc03b23a0bcf0ef58df58603ee000dca0",
      "tree": "07cb026075b70a958d14ae84b4e213178a6ba0b4",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 08:09:33 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 15:04:48 2016 -0800"
      },
      "message": "ART: Fix tidy warnings\n\nSwitch to char versions of find variants.\n\nAdd \"explicit\" constructor variants or refactor and\nremove defaults.\n\nUse const references.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I970cc2f47d6cf8f0c74104b994b075b2fafb3d45\n"
    },
    {
      "commit": "550c589938ef7cd7c4287ba4e52ddc4853598af7",
      "tree": "5df86a44749f20d73e1b0ff8443f375ef01fa2f7",
      "parents": [
        "8ef4642ef27a0acf8dce07b174adea3e7f997846"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 24 10:49:32 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 07 10:58:01 2016 -0800"
      },
      "message": "ART: Add Unlink to FdFile\n\nAdd Unlink function that tries to unlink the file if it\nwas created with a file path. The function tries to\nensure that it does not unlink a newer file.\n\nAdd a parameter to Erase to add unlinking.\n\nTest: m test-art-host-gtest-fd_file_test\nChange-Id: I49993bb94aec10d5c8d9b2cbea30ebaa255b99e1\n"
    },
    {
      "commit": "686b8458f5531ef8e9c0ad79402879f510cdb8d3",
      "tree": "03539c541eaf59facd71c31980d94c462ae507b1",
      "parents": [
        "ca47a17f90bb0be9b98685fbf46e4e4f53ea18c6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 04 18:07:20 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 04 18:07:20 2016 -0700"
      },
      "message": "ART: Remove unused lock levels\n\nRemoves three obsolete lock levels.\n\nTest: m test-art-host\nChange-Id: I04517ee29a40ec383010d0e6f561d625360f067a\n"
    },
    {
      "commit": "ca47a17f90bb0be9b98685fbf46e4e4f53ea18c6",
      "tree": "2f0c28349de25f3e1feb5d31c70ae61f857cfc82",
      "parents": [
        "6adc5a8cac4eab3b847f81c422def4b4ae510332"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 04 16:39:27 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Nov 04 16:39:27 2016 -0700"
      },
      "message": "ART: Clean up old mutex\n\nRemove obsolete mutex.\n\nTest: m test-art-host\nChange-Id: I476792cac4d5d680192e35055abed66772cf8081\n"
    },
    {
      "commit": "384cb6674b967a9c58da9ad70fd6f98caa1d8691",
      "tree": "b75a3309609ebbcd0d9d8d8b4297db82e80e988a",
      "parents": [
        "a908348b4388854dab0b655b55dbeac1ecec2949",
        "2c45bc9137c29f886e69923535aff31a74d90829"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 27 15:44:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 27 15:44:55 2016 +0000"
      },
      "message": "Merge \"Remove H[Reverse]PostOrderIterator and HInsertionOrderIterator.\""
    },
    {
      "commit": "2c45bc9137c29f886e69923535aff31a74d90829",
      "tree": "90c7762c2dcb1105bf5907d6a1d068f172ea6155",
      "parents": [
        "168c58ce18b139d313cbc6131e3bb43539952c55"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 25 16:54:12 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 27 14:30:29 2016 +0100"
      },
      "message": "Remove H[Reverse]PostOrderIterator and HInsertionOrderIterator.\n\nUse range-based loops instead, introducing helper functions\nReverseRange() for iteration in reverse order in containers.\nWhen the contents of the underlying container change inside\nthe loop, use an index-based loop that better exposes the\ncontainer data modifications, compared to the old iterator\ninterface that\u0027s hiding it which may lead to subtle bugs.\n\nTest: m test-art-host\nChange-Id: I2a4e6c508b854c37a697fc4b1e8423a8c92c5ea0\n"
    },
    {
      "commit": "0fc1c9a34d169cfe46b91ecef044908a2011a494",
      "tree": "7aadb40a2f5851ff64d492786e0ab094aad2982c",
      "parents": [
        "f877c165de3868a28fcfeb36e742efb02f39b854"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 26 10:13:15 2016 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Wed Oct 26 10:13:15 2016 -0700"
      },
      "message": "Fix build on XCode 8 w/OSX 10.12 SDK\n\nCLOCK_REALTIME (along with clock_gettime and friends) are now defined,\nso the build fails with a redefinition error.\n\nTest: m checkbuild (w/XCode 8 on 10.11 with 10.12 SDK)\nChange-Id: Ic8a5cc872ded1766597fda5f098d0e044cd063ee\n"
    },
    {
      "commit": "f42eb2c7801dbb45a6ba20a372d5ba4712ebefba",
      "tree": "62939df36e0d113aab0307f75ab728de72b80953",
      "parents": [
        "fc5fbfc13fd6873d42fe82c308ee68a685258b4c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Oct 19 13:20:45 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 20 13:40:56 2016 -0700"
      },
      "message": "Remove mutex dependency on art::Runtime\n\nBreaks the cyclic dependency between mutex and the runtime.  This allows\nthe use of mutexes without instantiating a runtime.\n\nBug: 22322814\nTest: test-art\nChange-Id: Ia642e515937068d385e5bb1e10bbd3e50a6e36d2\n"
    },
    {
      "commit": "f57589fd40e5b69dad5aff060ccef756507f381a",
      "tree": "62d38e73660d9818b18c4741c6b3cce3306d63d5",
      "parents": [
        "c25dfeab1a66c942ae658fc7cd367f7c1ac502a1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 10:09:33 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Oct 17 13:50:35 2016 -0700"
      },
      "message": "Remove logging dependency on runtime\n\nMoved the abort backtracing function to runtime, forcing callers to\nsupply the aborter at InitLogging.  This makes runtime properly layer\non top of logging by removing the cyclic dependency.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I8b2e72174e937bb88fe1bddd6d04b564cfb011a9\n"
    },
    {
      "commit": "8c0fee9ca38ea1b4ee6a8ab72c5f9c0ba924761f",
      "tree": "523144558243e6b810d4f7da192d44628b8e3681",
      "parents": [
        "a3344e8349b6abf2d31d8b973627248706382970",
        "1a1de67c4923436eb7de7da334c6d77703375dbd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 17 12:27:55 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 17 12:27:55 2016 +0000"
      },
      "message": "Merge \"Do not write empty class table and intern table to image.\""
    },
    {
      "commit": "05a364c8d8271ceeca307d04736f53e92d03de9d",
      "tree": "70e166900c99564c0ab3596ef3c8d5d85f14e767",
      "parents": [
        "4aed412037e6e7bad2cf589645449df960b88200"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 14 13:27:12 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 14 14:48:26 2016 -0700"
      },
      "message": "ART: Make JNI global and weak global locks global\n\nAdd them to Locks. Give the JNI global table lock\na lock level, close to the weak global JNI references.\n\nBug: 31684578\nTest: m test-art-host\nChange-Id: I3857a3b0be69b16811d9999096b2c42e7a25d227\n"
    },
    {
      "commit": "1a1de67c4923436eb7de7da334c6d77703375dbd",
      "tree": "bf82b30cddfeaa822e14a63c0ad9fedd3886958d",
      "parents": [
        "6e5fa09510c7280168e040382d27dd8b55760d9a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 13 12:53:15 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 14 11:25:28 2016 +0100"
      },
      "message": "Do not write empty class table and intern table to image.\n\nAnd remove dead ClassLinker and InternTable code that would\nbe erroneously triggered by not writing the tables.\n\nTest: m test-art-host\nChange-Id: I2520daa8d1231e16112d44e364a72d782fa32527\n"
    },
    {
      "commit": "463a67dd60ab0341e56713426a34c3c0a0749a35",
      "tree": "a6644661cffbd5ea89b7215eb37ef261ee9dcff8",
      "parents": [
        "78c6fefdb9008cb6dc9f0014d4616b457009c6c8",
        "8778c521de4f686118549ef7b20ae497e53b9e93"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 05 21:55:20 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 05 21:55:21 2016 +0000"
      },
      "message": "Merge \"Change indirect reference table to use ObjPtr\""
    },
    {
      "commit": "78c6fefdb9008cb6dc9f0014d4616b457009c6c8",
      "tree": "aecbe9fe31d94ffbad4166c92b8fe81cd4219b0d",
      "parents": [
        "7638651be29f117ef651841fbb9ffda76921ae1b",
        "9620230700d4b451097c2163faa70627c9d8088a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Oct 05 20:29:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 05 20:29:58 2016 +0000"
      },
      "message": "Merge \"Refactoring of graph linearization and linear order.\""
    },
    {
      "commit": "8778c521de4f686118549ef7b20ae497e53b9e93",
      "tree": "18e82a5860cf7c7d388f314615ba66e9a3ac4521",
      "parents": [
        "2f61867045ffbd0c38a4ecec5f59632004f7efff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 19:06:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 13:02:53 2016 -0700"
      },
      "message": "Change indirect reference table to use ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I340fdf430897ebd790ea4e35f94bcee776e98445\n"
    },
    {
      "commit": "9620230700d4b451097c2163faa70627c9d8088a",
      "tree": "695b96b9efeaa4c2cb3816e51904e19540fe3883",
      "parents": [
        "4aa6a93c46a959df1ab71ee7a68ad345338046ef"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Oct 04 17:33:56 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Oct 05 11:50:42 2016 -0700"
      },
      "message": "Refactoring of graph linearization and linear order.\n\nRationale:\nOwnership of graph\u0027s linear order and iterators was\na bit unclear now that other phases are using it.\nNew approach allows phases to compute their own\norder, while ssa_liveness is sole owner for graph\n(since it is not mutated afterwards).\n\nAlso shortens lifetime of loop\u0027s arena.\n\nTest: test-art-host\nChange-Id: Ib7137d1203a1e0a12db49868f4117d48a4277f30\n"
    },
    {
      "commit": "6c60d8420e51fda65ad247ae04b5a823c88c26b6",
      "tree": "8c4222eadad97235b5f6d860fb63ab8a749d111a",
      "parents": [
        "c13fbeb2201dc0bf783670d4548a49f03b1cb33e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 15 10:24:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 09:39:07 2016 -0700"
      },
      "message": "Initialize dex cache while holding dex_lock\n\nFixes multiple threads calling RegisterDexFile occasionally getting\nDCHECK failures due to the arrays not being null since the BSS ones\nis per dex file.\n\nBug: 31369621\n\nTest: test-art-host, no DCHECK failure during debug booting\n\nChange-Id: I7b6e4cd03460dd1213eb4e044bdcf5f6103fd5f9\n"
    },
    {
      "commit": "d74bd3a9a48d34d7321f7de7a6f8e1d3467be58a",
      "tree": "4f643819c8e960b015a8211d7e09558cb84f4412",
      "parents": [
        "129fc43ff9d820fa782111e3fdb11fa8d4d7d239",
        "90a32b16feb58d4edf932fdcb6a070be3418e365"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 04 19:08:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 04 19:08:14 2016 +0000"
      },
      "message": "Merge changes I65bc7769,Ib24c7060\n\n* changes:\n  ART: Reprint long messages on abort\n  ART: Clean up IRT-related abort messaging\n"
    },
    {
      "commit": "90a32b16feb58d4edf932fdcb6a070be3418e365",
      "tree": "dadbf8759551c67cdb54851027459a542d4d10f4",
      "parents": [
        "f1e8630fe8eab89e61e9f0a97135ae7c9d38ce23"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 03 19:47:08 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 03 19:47:08 2016 -0700"
      },
      "message": "ART: Reprint long messages on abort\n\nAdd an abort message parameter to Runtime::Abort. In case the message\nis multiline (and will thus not be completely preserved in the\nAndroid abort reason), reprint the message after all threads have\nbeen dumped.\n\nBug: 31893081\nTest: m test-art-host\nChange-Id: I65bc77691fec79f7c868a90d6132805fcc91e473\n"
    },
    {
      "commit": "0ad6c8fe441019980b1eeaf3047949e6601cdd7f",
      "tree": "89db2672821b60881bc9672cdec937284514b4de",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 28 15:29:14 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 03 11:29:34 2016 -0700"
      },
      "message": "art: Replace cutils/log.h with android/log.h\n\nTest: compile\nBug: 26552300\nBug: 31289077\nChange-Id: Ie5720d9e1388047856392e8635895895c22f3112\n"
    },
    {
      "commit": "762869dee6e0eadab5be1c606792d6693bbabf4e",
      "tree": "8c986c621e8a5f3cf4e4e3b2cc13b400401ad89b",
      "parents": [
        "b4cf427734c6839b46d0d6037e3189a5e8aa1bdb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jul 15 15:28:35 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 30 10:44:31 2016 +0100"
      },
      "message": "Simplify our intrinsic recognizer.\n\n- Use the modifiers for storing the intrinsic kind.\n- Delete dex_file_method_inliner and its associated map.\n\nThis work was also motivated by the fact that the inline\nmethod analyzer leaks intrinsic tables, and even worse, might re-use\na table from one dex file to another unrelated dex file in the presence\nof class unloading and the unlikely event of the dex files getting\nthe same address.\n\ntest: m test-art-host m test-art-target\n\nChange-Id: Ia653d2c72df13889dc85dd8c84997582c034ea4b\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "42c49d236c2dc02c4d3ce8ddd890a48d3812f70e",
      "tree": "0a9ff4247ae3ee3468f6c636dbdc9f38f64c7e34",
      "parents": [
        "cda79e87e0e12ad0b413dd3df3ba4662a3b4b1cb",
        "58246a13ded36d5256c6fcd3cc60bae5705a73bd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 26 23:00:02 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 26 23:00:02 2016 +0000"
      },
      "message": "Merge \"ART: Revert base/logging conditional hacks\""
    },
    {
      "commit": "d6e54bbc09595465309aa7909b7a3965defe4419",
      "tree": "9c12c8a0192119725e8659f593704bc416b222e0",
      "parents": [
        "a4850b0fa18c8b92dd5c20c166856cfe87aec72f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 14:07:57 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 14:07:57 2016 -0700"
      },
      "message": "ART: Fix nits\n\nFollow-up to commit 3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: Ia50f450bef144167b946224c26242c529302996e\n"
    },
    {
      "commit": "58246a13ded36d5256c6fcd3cc60bae5705a73bd",
      "tree": "c541e811079bd74d506db3a1b906c5f32ed7684e",
      "parents": [
        "a4850b0fa18c8b92dd5c20c166856cfe87aec72f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 12:51:53 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 12:55:11 2016 -0700"
      },
      "message": "ART: Revert base/logging conditional hacks\n\nThis partially reverts commit bda1d606f2d31086874b68edd9254e3817d8049c.\nART was switched to libbase logging.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I1a2f90d1ddb67d45ebe28d970b3ee7fd2d16a730\n"
    },
    {
      "commit": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "ca3c8c33501bf199d6fd0a5db30a27d8e010cb23",
      "tree": "12a6c3a4266bd17c6b9fe7066fd0b25cb8d9b2d6",
      "parents": [
        "0764877e21f1230e718923d5b84b048cd4346afa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 06 14:04:48 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 16 10:08:18 2016 +0100"
      },
      "message": "Collect verifier dependencies\n\nMethodVerifier tests whether a DEX method is valid w.r.t. the classes\nin class path. Since the APK does not change across OTA updates, it\nis not necessary to analyze the bytecode again with MethodVerifier,\nas long as its dependencies on the class path (which may have changed)\nare satisfied.\n\nThis patch introduces VerifierDeps, a class path dependency collector,\nand adds hooks into MethodVerifier where classes/methods/fields are\nresolved and where assignability of types is tested.\n\nTest: m test-art-host-gtest-verifier_deps_test\nBug: 30937355\nChange-Id: Iee0b321d772a5c7d1cb471aaa6e13918310b7e2f\n"
    },
    {
      "commit": "a5931185c97c7b17981a9fc5016834a0bdd9480b",
      "tree": "22f1a57647d7113c7c5aa5e0f0db5937380f2739",
      "parents": [
        "fce42f486d9a607fb4fb472ec142a82ceccb6b5f"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 01 15:08:13 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Sep 15 09:09:35 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings in art.\n\n* Add explicit keyword to conversion constructors,\n  or NOLINT for implicit converters.\nBug: 28341362\nTest: build with WITH_TIDY\u003d1\n\nChange-Id: I1e1ee2661812944904fedadeff97b620506db47d\n"
    },
    {
      "commit": "d9c90373d640a5e08072cf469c372e24a8c0fc35",
      "tree": "35615699aa6c12b21d9c0de7d11ccf0f088ba0d8",
      "parents": [
        "b180b893b5acb5c55251522465f9d20ed45c3b5a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Sep 14 16:53:55 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Sep 14 19:57:21 2016 +0100"
      },
      "message": "Move ArrayRef to runtime/base\n\nWill be used in upcoming CLs regarding VDEX and VerifierDeps.\n\nTest: m test-art-host\nChange-Id: I68e611a4a52246c2bdf45eab7c61f3212908afd4\n"
    },
    {
      "commit": "5fd66d0546805f0d86ec3365762c00b8dd3415f5",
      "tree": "82fb3cbb657f970a5c1d7c65e5567026816e284f",
      "parents": [
        "6a8c69f9d9d7840cac8cd17057d58c4cf91da4c6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 12 20:22:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 12 20:25:01 2016 -0700"
      },
      "message": "ART: Remove LogSeverity NONE\n\nRemove non-standard severity, and instead use a new enum to\nconfigure verifier logging.\n\nPartially reverts commit 7fe30233d32a872f5349e921dba65bd767ad994b.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: If52ee23c4902fbf2dabe7b232f6742448764ff8c\n"
    },
    {
      "commit": "bda1d606f2d31086874b68edd9254e3817d8049c",
      "tree": "db07417935fe72e99c3da60152e13f0620c7d8d7",
      "parents": [
        "d14d515df39cd963179088b8721768f9645243aa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 17:43:45 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 08 10:13:47 2016 -0700"
      },
      "message": "ART: Detach libart-disassembler from libart\n\nSome more intrusive changes than I would have liked, as long as\nART logging is different from libbase logging.\n\nFix up some includes.\n\nBug: 15436106\nBug: 31338270\nTest: m test-art-host\nChange-Id: I9fbe4b85b2d74e079a4981f3aec9af63b163a461\n"
    },
    {
      "commit": "5e953d626866318c31ef300305facb920c7496cf",
      "tree": "70f8ecbfbe9a3edcff9c3e3cd6c8848e2bc5d7c5",
      "parents": [
        "5f17d642b0a220c24e51882fd5e785cb2404f7a3"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Sep 05 21:39:51 2016 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Tue Sep 06 06:14:06 2016 -0700"
      },
      "message": "LogMessageData: Fix assignment in constructor\n\nThe previous code was assigning to the function argument, not\nthe member variable.  Since our member variable is \u0027const\u0027\nwe use a helper function to acheive this.\n\nTest: m test-art-host\nChange-Id: I11bf7b04297b7b6c0649a87416a7a6e622e2db43\n"
    },
    {
      "commit": "d38374eb1658777460ac936068e11a06e36a887c",
      "tree": "f6a476c412956f60f96907959b257043029c87f8",
      "parents": [
        "1c29876b303ab392e615b2294db009a971613bea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 31 13:53:13 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 31 15:06:24 2016 -0700"
      },
      "message": "ART: Use thread annotation macros from base\n\nUse thread annotations from libbase. Only leave the two local\ndefinitions.\n\nTest: m\nTest: m test-art-host\nChange-Id: I55a731e60b995fa6d0fd54a4da50654d6574019d\n"
    },
    {
      "commit": "e534a160337bb188fa946b671d34fdcfd87ef2da",
      "tree": "7d9571e3e4db98f77d5aee9696ded56265556a4a",
      "parents": [
        "a2ab404b622c1f3d6daffd70cf7744b3a882ea59",
        "aaadff8c182bc95f42eba7375737fb56da572863"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 31 19:37:50 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 31 19:37:50 2016 +0000"
      },
      "message": "Merge \"ART: Use libbase\""
    },
    {
      "commit": "a2ab404b622c1f3d6daffd70cf7744b3a882ea59",
      "tree": "b0e4c28fa32dad4cd2f4e9246badb84f9c26fb6e",
      "parents": [
        "3d08238729dedecba73ddc0b42bc6bbf4806ecae",
        "f04cf5470fd53d93f7ae5b07205284c19fa59f41"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 31 18:30:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 31 18:30:22 2016 +0000"
      },
      "message": "Merge \"Remove workarounds for [D]CHECK()s in constexpr functions.\""
    },
    {
      "commit": "f04cf5470fd53d93f7ae5b07205284c19fa59f41",
      "tree": "2eeb90611ef858fb542ec475c2d8cbb1ee719d8f",
      "parents": [
        "081e7a16c4fcbdb014441a236e12f58eb89ff99a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 31 15:25:25 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 31 16:53:30 2016 +0100"
      },
      "message": "Remove workarounds for [D]CHECK()s in constexpr functions.\n\nWe\u0027re now using C++14, so we can use [D]CHECK()s directly\nin constexpr functions. Remove the C++11 workaround macros\n([D]CHECK_CONSTEXPR) and C++ version checks. Also remove the\n\u0027static\u0027 qualifier from inline functions in affected files.\n\nTest: m test-art-host\nChange-Id: I0f962ad75e4efe9b65325d022cd272b229574222\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "aaadff8c182bc95f42eba7375737fb56da572863",
      "tree": "7fcbf58a92978817678f815e8fef2c429a875559",
      "parents": [
        "3079bc2b73666320a5d2d3454f5c418ef0d37519"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 09:53:48 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 29 12:54:23 2016 -0700"
      },
      "message": "ART: Use libbase\n\nMove to using standard macros from libbase. Required so that we\ncan use libbase in libart-disassembler to disconnect from libart.\n\nBug: 15436106\nTest: m\nTest: m ART_BUILD_HOST_STATIC\u003dtrue\nTest: m test-art-host\nChange-Id: I1f1723d875d20689d73835f6ab78c27a8efcf27a\n"
    },
    {
      "commit": "8aea8dbca646074cc02d839be28ba3fd9863b0b8",
      "tree": "3cffbb3f1913302afeee21d6c45577073fb774e9",
      "parents": [
        "7c95b4e22897a6f14ef79ec6e547e2eed686814a",
        "9231f4e55d6e79e37880071e222c28141bf65f49"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 24 17:09:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 17:09:43 2016 +0000"
      },
      "message": "Merge \"ART: Remove vestiges of GCC\""
    },
    {
      "commit": "9f98286cf29d226b05b10ef96f18d9938392fa67",
      "tree": "3a139c3a1a730a787435d5af3194bd3735d1e0f7",
      "parents": [
        "2ccdfbbf786df73b08939c3909e9c9f5301e7a5f",
        "a48a86ba37a1310f742ac267ac21655643627b57"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 24 03:01:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 24 03:01:49 2016 +0000"
      },
      "message": "Merge \"Revert \"Make dchecked_vector C++11 compatible.\"\""
    },
    {
      "commit": "a48a86ba37a1310f742ac267ac21655643627b57",
      "tree": "8efcc1c3e3850be151ce6d5046b1a9b3679d023f",
      "parents": [
        "05ff5a4ad666d9eb583ff343c1cbba886d7621b1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 24 01:24:51 2016 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 24 01:24:51 2016 +0000"
      },
      "message": "Revert \"Make dchecked_vector C++11 compatible.\"\n\nWe no longer support GCC in ART.\n\nThis reverts commit 05ff5a4ad666d9eb583ff343c1cbba886d7621b1.\n\nBug: 25022512\nChange-Id: Ie0aee5ce3f8b5bb5023fba90c39d96ae01e3e256\nTest: m test-art-host\n"
    },
    {
      "commit": "9231f4e55d6e79e37880071e222c28141bf65f49",
      "tree": "929c75752d7dd5d667b5f2cdaa044ad83d0522eb",
      "parents": [
        "e99331f7a430b0b72142dd0b8b0689421489dcf6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 23 17:35:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 23 18:20:12 2016 -0700"
      },
      "message": "ART: Remove vestiges of GCC\n\nWe no longer support GCC.\n\nChange-Id: I869ac6e5dcb166747e45236a0d313c7672bbf2de\nTest: m test-art-host\n"
    },
    {
      "commit": "6206da5d0f158838748006f8cd978d0b2beb2762",
      "tree": "b39ab485cd404570736b9dedd0778b5d5585cd06",
      "parents": [
        "48d2b14feb749c9160eb4af3e870ed935a1c6455"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 19:14:29 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 19:14:29 2016 -0700"
      },
      "message": "ART: Separate out Realloc reuse and alignment tests\n\nSeparate out the tests for Realloc buffer reuse and realloc\nalignment tests. This allows to turn off reuse tests under\nmemory tools (where we do not reuse).\n\nChange-Id: I93375c6fbc577f9b796325f8143317610948455a\nTest: m test-art-host-gtest-arena_allocator_test\nTest: m valgrind-test-art-host-gtest-arena_allocator_test\n"
    },
    {
      "commit": "c134ee7de1919b17ee0803752beb2e19c8855d68",
      "tree": "9693ccb6830f9ebd7b753a513d190f9455999b8e",
      "parents": [
        "792c98bb773c8c2390f9cbf774f85be9d9a75332"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 14:03:10 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 14:03:10 2016 -0700"
      },
      "message": "ART: Test arena allocator alignment\n\nAdd tests for Alloc and Realloc alignment.\n\nChange-Id: If17b1d898200752a6a1ae25f436c73e5b7eb23f7\nTest: m test-art-host-gtest-arena_allocator_test\n"
    },
    {
      "commit": "f6dd829292b451a0eaaf339964fcf9ebc804897b",
      "tree": "f266ae41051125f4fea558bbfa87c617f9d5ac9b",
      "parents": [
        "da0f5e72cc5f2747a330b21afa34e7d798fc5c54"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 19 20:22:19 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 19 20:45:04 2016 -0700"
      },
      "message": "ART: Enforce arena alignment in Realloc\n\nEnforce the expected alignment in Realloc when the given buffer\ncan be expanded.\n\nAdd debug checks to prove alignment guarantees.\n\nChange-Id: I7dbaf3ca0896f714cff07ff08f067a7c088a6c8d\nTest: m test-art-host\n"
    },
    {
      "commit": "9826c3e458c3a6d91277b55e956e02c326f9887c",
      "tree": "e6657105c1db1b342f1d6a5745bb5ae1c801d365",
      "parents": [
        "d1272553516e6595dea310d07d7b974dcd0a421f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 17 10:28:48 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 17 12:46:19 2016 -0700"
      },
      "message": "Add newline for INTERNAL_FATAL automatically\n\nBefore, the behavior was different compared to other log levels\nthat automatically added newlines.\n\nBug: 30913672\n\nTest: test-art-host\n\nChange-Id: I02147d8ac7ea38f3e93450ef5290cdfed7b5a2eb\n"
    },
    {
      "commit": "346285b55869af2054465fccef2065f7462ac9cd",
      "tree": "0bc092fedc880f5022fcdc6ab0c3a53f5a599dd4",
      "parents": [
        "635ba0cbceb367836dae0cc4da4eb672263e7ef5",
        "185d134a3b43ab7529053e965917e0fa74bceba4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 12 17:33:34 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 12 17:33:34 2016 +0000"
      },
      "message": "Merge changes I852b4daf,Id648eaed\n\n* changes:\n  Add basic runtime-plugins support.\n  Create a basic agent loading framework.\n"
    },
    {
      "commit": "7cbd27fe778f2c348136540d52b5473e28f5769d",
      "tree": "80c0fa4ff2a223c061245c6799d992cd4d863fa0",
      "parents": [
        "3d1d18d74dfac5039b6093ddf04f74eee4f157a3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 11 23:53:33 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 12 13:19:51 2016 +0100"
      },
      "message": "Adjust spacing before NOLINT comments in ART.\n\nNote that neither clang-tidy nor cpplint.py complain about\nthese style \"issues\", precisely because of the NOLINT\ncomments.\n\nTest: WITH_TIDY\u003d1 WITH_TIDY_CHECKS\u003d\u0027-*,misc-macro-parentheses\u0027 mmma art\nChange-Id: Id692fd394ffbd4fe208cbbe4407b4d5e208462bb\n"
    },
    {
      "commit": "7233c7e752c0d26387d143ee74420e9cd1f09390",
      "tree": "680b4c1fc3fddbe6004156e5e02770223f3f8587",
      "parents": [
        "f2b1529b0988a1722b718fee6911e0030e95c9b6"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 28 10:07:45 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Aug 11 13:48:13 2016 -0700"
      },
      "message": "Create a basic agent loading framework.\n\nCurrently we only allow agents to be loaded at runtime startup, though\nthis is expected to change soon.\n\nTest: ./test/run-test --host 900\nChange-Id: Id648eaed4bbbe6fdef41d64922d023a4db0bfa54\n"
    },
    {
      "commit": "c218427ab96e521e0c4e9a3ffeb87e6c57eea0a5",
      "tree": "af38070b0fad716033c005a673a4ae0f7ccd27cc",
      "parents": [
        "45b17187699a938af2cf67fe11848951f2501087",
        "14832efeb92334c562ebedef34e920d30e3cee69"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 10 10:20:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 10 10:20:50 2016 +0000"
      },
      "message": "Merge \"Revert experimental lambda feature.\""
    },
    {
      "commit": "65975776f807d55c83af6cca1e447f8daa794413",
      "tree": "3b30b9a6ba00e72df89f59387c383ef747772025",
      "parents": [
        "3f3201a89ec19257b3bc93c25b20abdcfe61f3e4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 05 10:46:36 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 09 10:45:18 2016 -0700"
      },
      "message": "Card mark holding class instead of declaring class\n\nFor profiling info, we need to mark the card of the holding class\ninstead of declaring class. This is required for GC correctness since\nthe GC relies on the card table to track cross space references.\n\nTest: test-art-host ART_TEST_JIT\u003dtrue\n\nBug: 30655270\n\nChange-Id: Ia4690219ded0df38032b644440273e06bc303956\n"
    },
    {
      "commit": "b64decdc7361c6c93bd91fdd016a50971c8e537a",
      "tree": "66ce484619cabb75ccbc39e09a1f6a9307b21734",
      "parents": [
        "51616fb233df2760fd6002a02dce692f24b93fb6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 09 12:10:56 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Aug 09 14:33:39 2016 +0100"
      },
      "message": "Fix setting FdFile::ReadOnlyMode() flag\n\nThe Unix flag O_RDONLY is defined as zero and hence its presence\ncannot be tested with \u0027(flags \u0026 O_RDONLY) !\u003d 0\u0027. This used to be\nbroken in FdFlag when setting its internal `read_only_mode_` flag.\n\nTest: m test-art-host-gtest-fd_file_test\nChange-Id: Ib48abfc908c7032f031450a1574130e06f6c3bab\n"
    },
    {
      "commit": "14832efeb92334c562ebedef34e920d30e3cee69",
      "tree": "57d10c24966a46ae1c01861ee579ac6000326c45",
      "parents": [
        "c984725d0035e1925371757c38fed339b409e525"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 05 11:44:32 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 09 13:47:49 2016 +0100"
      },
      "message": "Revert experimental lambda feature.\n\nThis is a revert of the following changes :\n\n30c475a2046951a81769c2db0b2dad66cd71e189.\nlambda: Minor capture-variable/liberate-variable clean-up after post-merge reviews.\n\n6918bf13eb855b3aa8ccdddda2d27ae8c60cec56.\nlambda: Experimental support for capture-variable and liberate-variable\n\nfc1ccd740b7c8e96dfac675cfc580122cd1b40a6.\nlambda: Infrastructure to support capture/liberate-variable dex opcodes\n\ne2facc5b18cd756a8b5500fb3d90da69c9ee0fb7.\nruntime: Add lambda box/unbox object equality\n\n2ee54e249ad21c74f29a161e248bebe7d22fddf1.\nruntime: Partially implement box-lambda and unbox-lambda experimental opcodes\n\n158f35c98e2ec0d40d2c032b8cdce5fb60944a7f.\ninterpreter: Add experimental lambda opcodes for invoke/create-lambda\n\na3bb72036f5454e410467f7151dc89f725ae1151.\nAdded format 25x to dexdump(2).\n\nPlus surrounding cleanups.\n\nTest: make test-art\nChange-Id: Ic6f999ad17385ef933f763641049cf721510b202\n"
    },
    {
      "commit": "ba65cc4a71273904294245cb37ce70e5bce797e3",
      "tree": "d53a7a816ec4c8e5bdbf80729ac945787b27bf2c",
      "parents": [
        "1a827a05afbffd5bee241f245f9aa3c40b4dbae4",
        "542451cc546779f5c67840e105c51205a1b0a8fd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "message": "Merge \"ART: Convert pointer size to enum\""
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "33ee1205a8c66c36f86378e2cbaec14e9b3097ea",
      "tree": "475b1427e95f0592881260b9d1ee465934e05545",
      "parents": [
        "4c4d6f42cff3d9a43db3e44716726c2cd39c23bb"
      ],
      "author": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Fri Jul 29 09:13:33 2016 -0700"
      },
      "committer": {
        "name": "Matthew Gharrity",
        "email": "gharrma@google.com",
        "time": "Fri Jul 29 10:38:46 2016 -0700"
      },
      "message": "Add arena stack and priority queue type aliases\n\nThese will be used in the graph coloring register allocator.\n\nTest: m test-art-host\n\nChange-Id: I4d3d063ae5a02e697f07fc8212f391b5347270e5\n"
    },
    {
      "commit": "43e10b031e3bb42df54adf8f0525a29d2b308a4e",
      "tree": "ea914f7c0061817f51449d15b900e6c1878e5cc8",
      "parents": [
        "edec0eb18d9a45d994acec9e8e509a1dc05bd5b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 15 17:17:34 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 15 20:54:09 2016 -0700"
      },
      "message": "ART: Replace ScopedFd with FdFile\n\nFdFile can now be used like ScopedFd. Remove ScopedFd.\n\nBug: 21192156\nTest: m test-art-host\nTest: m test-art-target (shamu)\nChange-Id: I32115fa8b2b8bb5aa5d1886eae63522f80ce836b\n"
    },
    {
      "commit": "df8789252252c77660daf5d602d425b60b344b08",
      "tree": "b393eb58d4a7749d819672d0199f35931a8e945b",
      "parents": [
        "f79c0e6f74dfaf7ca5ba3fbe1c903abd65086a1a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 13 16:44:54 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 13 19:48:30 2016 -0700"
      },
      "message": "ART: Add FdFile constructors\n\nMake Open protected, and expose constructors instead. Add a move\nconstructor and move assignment operator.\n\nAdd OS functions that return the FdFile non-pointer version.\n\nAdd tests.\n\nBug: 21192156\nTest: m test-art-host\nTest: m test-art-target (shamu)\nChange-Id: I83e390edde7cd37c900e9d5c3e4d21da22981b3f\n"
    },
    {
      "commit": "9f5f8ac136d88de546f70f0ac2438610150ff401",
      "tree": "2d681b45f4e9652877833f160c9a674c78ba636d",
      "parents": [
        "05f0167cdd207edecaebf2cac7eea879678147c5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 14:39:59 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 17:28:27 2016 +0100"
      },
      "message": "Special case the suspend to runnable transition when locking.\n\nThe runtime may be shutting down in parallel, and for daemons that\ncould lead to failed locking assertions.\n\nbug:27378067\nChange-Id: I53785cad537a3d4846661a7b0780543226ea3928\n"
    },
    {
      "commit": "492a7fa6df3b197a24099a50f5abf624164f3842",
      "tree": "1c02e48c0a16c8ff91f189946a39a3f14c1048dc",
      "parents": [
        "f7e1ab5224e16a47a410a788915422c73abfffac"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 01 18:38:43 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 03 10:52:22 2016 +0100"
      },
      "message": "Delay dex-to-dex compilation until Optimizing is done.\n\nThis fixes a race between inlining in the Optimizing\nbackend and dex-to-dex quickening where the Optimizing can\nread the non-quickened opcode and then the quickened field\nindex or vtable index and look up the wrong field or method.\nEven if we such tearing of the dex instruction does not\nhappen, the possible reordering of dex-to-dex and Optimizing\ncompilation makes the final oat file non-deterministic.\n\nAlso, remove VerificationResults::RemoveVerifiedMethod() as\nwe have only the Optimizing backend now and as such it was\ndead code and would have interfered with this change.\n\nBug: 29043547\nBug: 29089975\nChange-Id: I8389927d35dcacaf2f99c2153f055857036c8129\n"
    },
    {
      "commit": "347eff2699557340c493a026300a73b84a796cd3",
      "tree": "35c147bef1d09b2864fccb4efb788d76bf27cc6e",
      "parents": [
        "faf18de818bc39c25d0c87715c19c375b761a463",
        "a206c745dbb64b14f05c87891d425475c2f6d63a"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu May 26 20:52:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 26 20:52:54 2016 +0000"
      },
      "message": "Merge \"Don\u0027t use dlopen on host for already loaded oat files.\""
    },
    {
      "commit": "1704a18ce85cd89488234e8245a22c2aca117b18",
      "tree": "118e74b4a7201a6e99b2af435858b08efb0e5e73",
      "parents": [
        "81d53f5654eeb9be2c5bbd283f371b1378d3d53d",
        "3e80aeb449d0ae09f6a34b5a15727ccbfe38eb70"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed May 25 23:02:39 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 25 23:02:39 2016 +0000"
      },
      "message": "Merge \"ART: Print jit memory use only if we have samples\""
    },
    {
      "commit": "a206c745dbb64b14f05c87891d425475c2f6d63a",
      "tree": "b73c6dfa1f78d6605e71fab8a3e43fb484715647",
      "parents": [
        "d53208c8e7ca4b2e2d4070d8e67ec1ee078cee74"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 24 15:04:22 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed May 25 11:26:43 2016 -0700"
      },
      "message": "Don\u0027t use dlopen on host for already loaded oat files.\n\nBecause the behavior of dlopen on the host is different then the\ntarget in that case, and it causes tests to fail.\n\nBug: 28826195\n\nChange-Id: Id202bbac3318bade89a4133a9bcb1ee01e8b6182\n"
    },
    {
      "commit": "3c7787fb2e197934a0e87329644384445b1d062f",
      "tree": "5942b3faa6b23abdccb98a2f9b9a13fa75ca6d36",
      "parents": [
        "80fd43eead361bd3b61d646e5c8efcdd0720304d",
        "fba39972d99701c80bf3beb7451aca508d67593c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 24 18:19:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 24 18:19:35 2016 +0000"
      },
      "message": "Merge \"Fix misc-macro-parentheses warnings.\""
    },
    {
      "commit": "3e80aeb449d0ae09f6a34b5a15727ccbfe38eb70",
      "tree": "ebda793d2853d4d05a34c0215f3222f260d4e224",
      "parents": [
        "df92503d788cc0340dcf296525416535cc34d7c9"
      ],
      "author": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Tue May 17 16:37:53 2016 +0600"
      },
      "committer": {
        "name": "Pavel Vyssotski",
        "email": "pavel.n.vyssotski@intel.com",
        "time": "Tue May 24 11:55:47 2016 +0600"
      },
      "message": "ART: Print jit memory use only if we have samples\n\nOtherwise we got crashes on sigquit/shutdown trying to dump\nJIT statistics when the histograms are empty.\n\nChange-Id: Iac3ab5b51121f9bb5656f6ef71af785706541288\nSigned-off-by: Pavel Vyssotski \u003cpavel.n.vyssotski@intel.com\u003e\n"
    },
    {
      "commit": "3224838dfe9c95330ad963286f2c47e9546d3b5c",
      "tree": "50d1b8759c61d392ecc159ede7efab94ecbfcde8",
      "parents": [
        "db9fcb30402a2726564905c206fa23ee86e146c3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 19 10:37:24 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 19 18:12:22 2016 +0100"
      },
      "message": "Clean up JNI calling convention callee saves.\n\nPrecalculate callee saves at compile time and return them\nas ArrayRef\u003c\u003e instead of keeping then in a std::vector\u003c\u003e.\n\nChange-Id: I4fd7d2bbf6138dc31b0fe8554eac35b0777ec9ef\n"
    },
    {
      "commit": "fba39972d99701c80bf3beb7451aca508d67593c",
      "tree": "0d80ecb6997290140503926b08a72e7418915526",
      "parents": [
        "718d4e269810c17d03df909c84b2f7bbd4f61fb9"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed May 11 11:26:48 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri May 13 10:38:56 2016 -0700"
      },
      "message": "Fix misc-macro-parentheses warnings.\n\n* Add parentheses to fix warnings.\n* Use NOLINT to suppress wrong clang-tidy warnings.\n\nBug: 28705665\nChange-Id: Icc8bc9b59583dee0ea17ab83e0ff0383b8599c3e\n"
    },
    {
      "commit": "5d2a3f7bdd23003af78e3f09e96b9f77ff33c4b6",
      "tree": "b4acc13230922ddf87b8d99341d1f8e376cd0031",
      "parents": [
        "d6f374071804b3efe864f16d75fa22cb9971ed5a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 11 11:35:39 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 11 14:30:17 2016 -0700"
      },
      "message": "Add histogram for native allocations\n\nShows up in traces.txt, sample output:\nHistogram of native allocation 0:4315,131072:33,1179648:3 bucket size 131072\nHistogram of native free 0:995,131072:19,1179648:2 bucket size 131072\n\nBug: 28680116\n\n(cherry picked from commit 0dce75dc6945c221a054eb9c479fb60efd193719)\n\nChange-Id: Iaa07c6b8da0d6bab64a8fd4af8a02fc0b8c70e9e\n"
    },
    {
      "commit": "c7ed09bd5d6f2c7af3bcba1c39b3f9185af68796",
      "tree": "bfad0c9f5236cc4d158bc0c64d5ef645ce09d283",
      "parents": [
        "0f35e0b26d8c7738ca7b284357afa9dafb659d47"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 25 20:08:55 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 29 16:06:14 2016 -0700"
      },
      "message": "ART: Log all monitor operations to systrace\n\nAdd a VLOG option (\"-verbose:systrace-locks\") to log all monitor\noperations to systrace. This requires non-fastpath thread\nentrypoints, and ATRACE tags for locking and unlocking.\n\nDo a bit of cleanup to the entrypoint initialization to share\ncommon setup.\n\nBug: 28423466\n\n(cherry picked from commit fc6898769ae1ef91ec3e41c0a273401213cb82cd)\n\nChange-Id: Ie67e4aa946ec15f8fcf8cb7134c5d3cff0119ab3\n"
    },
    {
      "commit": "3f84f2cb3cadc25d75e1e3e2c1bc26c1a671f336",
      "tree": "d041955d18c6ee8962937f50e0b0d7ffd7df0708",
      "parents": [
        "2712a078c74050f787900765830f7f33d8bd75e6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 25 19:40:34 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 25 20:28:54 2016 +0100"
      },
      "message": "Fix valgrind tests: mark allocated space as defined.\n\nFollow-up to\n    https://android-review.googlesource.com/219700\n\nBug: 28173563\nBug: 28256882\nChange-Id: I4e8e8d3202fd01ab48d86b3a6b92302524df66bb\n"
    },
    {
      "commit": "27983255b19b633e91cf62883035b8af02b94eb0",
      "tree": "9ad9f1e0be35c475be8bc23730fee17975c68766",
      "parents": [
        "88b891534b7b9218faa7f021e5b0768a7b519ae3",
        "3e0e7173c0cdfc57dba39fe781e30d187d50fa9c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 25 13:50:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Apr 25 13:50:13 2016 +0000"
      },
      "message": "Merge \"Reduce memory lost by ArenaAllocator for large allocations.\""
    },
    {
      "commit": "3e0e7173c0cdfc57dba39fe781e30d187d50fa9c",
      "tree": "8552d3f59307098dca69bfbcf64228c2c70c2496",
      "parents": [
        "4f4a6c47ef269c68bc136f0805e5e99512d970b7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 22 18:07:13 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 25 13:57:56 2016 +0100"
      },
      "message": "Reduce memory lost by ArenaAllocator for large allocations.\n\nWhen allocating from a new arena, check if the old arena has\nmore remaining space than the new one after the current\nallocation. If so, keep using the old arena to reduce the\namount of \"lost\" arena memory. This can happen when we try\nto allocate more than half the default arena size. If the\nallocation exceeds the default arena size, it\u0027s very likely\nto happen even though the ArenaPool could still provide some\nmuch larger previously allocated arena.\n\nAlso avoid artithmetic overflow when checking if the\nrequest can be satisfied from the current arena.\nAnd abort immediately if calloc() fails.\n\nBug: 28173563\nBug: 28256882\nChange-Id: I1b4bda5d3f32ecd95fbd11addd1f0ca6dcc33e45\n"
    },
    {
      "commit": "bb661c0f0cb72d4bbfc2e251f6ded6949a713292",
      "tree": "4fe7e66f3385b1955934d3ec6f02e00bde6e13b8",
      "parents": [
        "f7cda8088ec57ab1422f85f08df78e217a9f7094"
      ],
      "author": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Mon Apr 04 16:27:32 2016 +0100"
      },
      "committer": {
        "name": "Bilyan Borisov",
        "email": "bilyan.borisov@linaro.org",
        "time": "Fri Apr 22 13:33:30 2016 +0100"
      },
      "message": "Refactor use of __ANDROID__ macro\n\nWe use the __ANDROID__ macro, which is provided by the toolchain, in\nnumerous places. This patch refactors the usage of this by defining a\nnew macro, ART_TARGET_ANDROID, that is being passed during build to\nART_TARGET_CFLAGS in Android.common_build.mk on the same line as\nART_TARGET. The codebase currently assumes that the existence of the\n__ANDROID__ macro implies that we are compiling art for an android\ntarget device. This is because, currently, target builds are compiled\nwith target toolchains that provide the macro, while host toolchains\ndo not.  With this change this assumption is still preserved. However,\nin a future patch we will add the ability to compile art for a linux\ntarget, and in that case the ART_TARGET_ANDROID macro won\u0027t be passed\nanymore.\n\nChange-Id:  I1f3a811aa735c87087d812da27fc6b08f01bad51\n"
    },
    {
      "commit": "6435910a65067fb38477232b2620cc53978b13c7",
      "tree": "d607c9103f46242bce5ed75297c20087c0e3f8cd",
      "parents": [
        "814ae9448d7a620a1855d53c7b69b1b377944a67",
        "46817b876ab00d6b78905b80ed12b4344c522b6c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 19 18:26:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 19 18:26:22 2016 +0000"
      },
      "message": "Merge \"Use iterators \"before\" the use node in HUserRecord\u003c\u003e.\""
    },
    {
      "commit": "46817b876ab00d6b78905b80ed12b4344c522b6c",
      "tree": "6715bee60b0682a10437866c9617cb442146aa2f",
      "parents": [
        "f59149a151ee694484e21da7b3b207920dead5a6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 29 12:21:58 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 19 18:33:06 2016 +0100"
      },
      "message": "Use iterators \"before\" the use node in HUserRecord\u003c\u003e.\n\nCreate a new template class IntrusiveForwardList\u003c\u003e that\nmimicks std::forward_list\u003c\u003e except that all allocations\nare handled externally. This is essentially the same as\nboost::intrusive::slist\u003c\u003e but since we\u0027re not using Boost\nwe have to reinvent the wheel.\n\nUse the new container to replace the HUseList and use the\niterators to \"before\" use nodes in HUserRecord\u003c\u003e to avoid\nthe extra pointer to the previous node which was used\nexclusively for removing nodes from the list. This reduces\nthe size of the HUseListNode by 25%, 32B to 24B in 64-bit\ncompiler, 16B to 12B in 32-bit compiler. This translates\ndirectly to overall memory savings for the 64-bit compiler\nbut due to rounding up of the arena allocations to 8B, we\ndo not get any improvement in the 32-bit compiler.\n\nCompiling the Nexus 5 boot image with the 64-bit dex2oat\non host this CL reduces the memory used for compiling the\nmost hungry method, BatteryStats.dumpLocked(), by ~3.3MiB:\n\nBefore:\n  MEM: used: 47829200, allocated: 48769120, lost: 939920\n  Number of arenas allocated: 345,\n  Number of allocations: 815492, avg size: 58\n  ...\n  UseListNode    13744640\n  ...\nAfter:\n  MEM: used: 44393040, allocated: 45361248, lost: 968208\n  Number of arenas allocated: 319,\n  Number of allocations: 815492, avg size: 54\n  ...\n  UseListNode    10308480\n  ...\n\nNote that while we do not ship the 64-bit dex2oat to the\ndevice, the JIT compilation for 64-bit processes is using\nthe 64-bit libart-compiler.\n\nBug: 28173563\nChange-Id: I985eabd4816f845372d8aaa825a1489cf9569208\n"
    },
    {
      "commit": "480d5108fa62f28cbc2e7072610f974953ff73a8",
      "tree": "412e63bec412512b28cfb9bebcba7d9e8591fbe8",
      "parents": [
        "f59149a151ee694484e21da7b3b207920dead5a6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 18 12:09:30 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 18 12:32:44 2016 +0100"
      },
      "message": "Fix interaction between instrumentation and jit lock.\n\nThe jit lock needs to have higher priority than the\ndeoptimized methods lock.\n\nbug:28236735\n\nChange-Id: I82862b8bfc82a5641156290926c04c80b1371534\n"
    },
    {
      "commit": "93205e395f777c1dd81d3f164cf9a4aec4bde45f",
      "tree": "1d08efd9b7bca9fe23df9ae9489c5dd575d3c6df",
      "parents": [
        "6990775e323cd9164d6cc10955a047b9d9f15f32"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 13 11:59:46 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 13 17:50:16 2016 +0100"
      },
      "message": "Move Assemblers to the Arena.\n\nAnd clean up some APIs to return std::unique_ptr\u003c\u003e instead\nof raw pointers that don\u0027t communicate ownership.\n\nChange-Id: I3017302307a0253d661240750298802fb0d9585e\n"
    },
    {
      "commit": "d58b837ae41c6d8ce010c362e8f85bd938715900",
      "tree": "a7c8e90ff825838bb27707d14487c0333f2cc5f6",
      "parents": [
        "ec9a828fa4a4638d2d17124c4fa835f15c7c5589"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 12 18:51:43 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 12 21:04:13 2016 +0100"
      },
      "message": "Allocate code generators on the arena.\n\nChange-Id: If8cf0ee43711f6e13171443e3c057ff370ccfbaa\n"
    },
    {
      "commit": "b8aa1e4c10dcdc7fef96634f87e259dfee83a1cf",
      "tree": "807e112893a06d0742f5d595493ec5efa5c72a4e",
      "parents": [
        "163388162bde0012dc13a59fb8974723af881e58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 05 14:36:57 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 06 12:22:42 2016 -0700"
      },
      "message": "Shard classloader classes lock\n\nUsed to guard adding and removing classes.\n\nPreviously we used the class linker classes lock, but this had\na deadlock issue since the reference processor may need to acquire\nthe lock to mark the classes of a class loader. Another thread could\nbe blocked trying to access weak globals while also holding the\nclass linker classes lock.\n\nBug: 27946564\n\n(cherry picked from commit 1609e3a42051769f4a8be3b6731e7bb2f828b3bb)\n\nChange-Id: Ic5cfe573c4e6822d49ad0862ffdd9d036e439a96\n"
    },
    {
      "commit": "619a45759a93919b10f6981dd9c528cf967c4252",
      "tree": "ef484cab06471b80d78d546ba567cdb6c2007324",
      "parents": [
        "0fb09f7a441a2858c4724198f1ef74d9235be044"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 05 19:13:37 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 06 11:23:17 2016 -0700"
      },
      "message": "Change hash set to use noexcept\n\nOtherwise it uses copy constructor instead of move constructor in\nsome cases (like std::vector).\n\nReduces shared dirty native by around 350k.\n\nBug: 27860101\n\n(cherry picked from commit 5ef868c8332db11bb90284887a7f676f5dbef373)\n\nChange-Id: I0311fa530fc2436630abebfdac2cad375eb4d691\n"
    },
    {
      "commit": "fe2b13717879abae993603534a145372e3110aae",
      "tree": "5b499eb28af5e91e00ff86683f51df029a2b86b4",
      "parents": [
        "5c26e430fbeaf56e3a5da4e3f167ff35fbb71ef9",
        "09ed09866da6d8c7448ef297c148bfa577a247c2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 01 12:28:51 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 01 12:28:51 2016 +0000"
      },
      "message": "Merge \"Pack stack map entries on bit level to save space.\""
    },
    {
      "commit": "09ed09866da6d8c7448ef297c148bfa577a247c2",
      "tree": "dad6a5dae6ca6131f1eba201eaa371edc6d9929d",
      "parents": [
        "e28ad4b91591c226ed404a2b01104bb99bfeb28f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Feb 12 21:58:43 2016 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 31 22:12:07 2016 +0100"
      },
      "message": "Pack stack map entries on bit level to save space.\n\nUse only the minimum number of bits required to store stack map data.\nFor example, if native_pc needs 5 bits and dex_pc needs 3 bits, they\nwill share the first byte of the stack map entry.\n\nThe header is changed to store bit offsets of the fields rather than\nbyte sizes. Offsets also make it easier to access later fields without\ncalculating sum of all previous sizes.\n\nAll of the header fields are byte sized or encoded as ULEB128 instead\nof the previous fixed size encoding. This shrinks it by about half.\n\nIt saves 3.6 MB from non-debuggable boot.oat (AOSP).\nIt saves 3.1 MB from debuggable boot.oat (AOSP).\n\nIt saves 2.8 MB (of 99.4 MB) from /system/framework/arm/ (GOOG).\nIt saves 1.0 MB (of 27.8 MB) from /system/framework/oat/arm/ (GOOG).\n\nField loads from stackmaps seem to get around 10% faster.\n(based on the time it takes to load all stackmap entries from boot.oat)\n\nBug: 27640410\nChange-Id: I8bf0996b4eb24300c1b0dfc6e9d99fe85d04a1b7\n"
    },
    {
      "commit": "9f168ccb8e77626fd99c4ee5c296a5ed82f8d541",
      "tree": "63b34bbe90e327840f9009b4a783ef360cd1c038",
      "parents": [
        "87ad82eb1e085ccc6ed3ec54945937582334dbbc",
        "fe76a629e7f9932c8e6a476d25358445273d893d"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Mar 31 16:41:46 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 31 16:41:46 2016 +0000"
      },
      "message": "Merge \"Only log excessive timeouts if those appear accidental\""
    },
    {
      "commit": "db8e62dca9232634daecb548bd51f3186004535c",
      "tree": "68c6b8efc5a23b5544acae7ef00b6e15b61d7f4a",
      "parents": [
        "085055f933d76579c32586488951a4497ffcf10e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 30 16:30:21 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 30 17:47:15 2016 +0100"
      },
      "message": "Optimizing: Clean up after const-string sharpening.\n\nDo not look up the String for JIT, just check if it\u0027s in the\ndex cache. Strings on hot paths should already be resolved\nand we don\u0027t want to unnecessarily increase JIT compile time\nto have a chance of improving a cold path.\n\nAlso, change the enum LinkerPatchType to be an inner enum\nclass of LinkerPatch and clean up casts between pointers and\nuint64_t.\n\nChange-Id: Ia6e0513af1a84ce94a3b30edac0c592157d374ec\n"
    },
    {
      "commit": "fe76a629e7f9932c8e6a476d25358445273d893d",
      "tree": "48be88b8ecc199a59a2cf1a56a44955f99a8f18c",
      "parents": [
        "e28ad4b91591c226ed404a2b01104bb99bfeb28f"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Mar 28 14:36:23 2016 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Mar 28 23:01:16 2016 -0700"
      },
      "message": "Only log excessive timeouts if those appear accidental\n\nDo not generate a log message even when timeout would cause us to wake\nup past the end of Linux time, if the timeout specification looks like\nit was meant to wait forever.  Avoids log spam.\n\nBug: 27723547\nChange-Id: I98d0fc1b1813a10ad906282957675b85bd933472\n"
    },
    {
      "commit": "7fe30233d32a872f5349e921dba65bd767ad994b",
      "tree": "6039f608c5753d549a30a07f4997cb8141eba970",
      "parents": [
        "bf9611f821697b14bf9e170f503c3f47613b046b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 25 16:58:00 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 28 16:57:30 2016 -0700"
      },
      "message": "ART: Make verifier fail log level adjustable\n\nTo help for build failures.\n\nChange-Id: I6c94dfb50177daa7d89902d78715ccec31bf0e45\n"
    },
    {
      "commit": "3a40bf2fc1b9823e3bc8fcf96d5242668b5c088b",
      "tree": "7dab31da65fc38c0b05cb236aa7722169a7d4210",
      "parents": [
        "0339bee5b1be39669606c4ba57edd42a0bacf0ff"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 22 16:26:33 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 22 16:26:33 2016 +0000"
      },
      "message": "ART: Clean up arena allocation memory tracking.\n\nRemove unused allocation types, mostly from removed Quick.\nMove logging one level up to capture memory used by stack\nmaps during AOT compilation. Raise the reporting threshold\nto 8MiB to limit the output to the worst offenders.\n\nChange-Id: I8c7a01bfa90bc8ec5eab66187eb6850a022f3543\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": "f808e8a0cc218c2b98023ef0e91f3c5b74ad2962",
      "tree": "231dfcf6641c0a4349a959b06ca02add86666a6e",
      "parents": [
        "576a13ab2f1bc82e72245db5fbb4dd8587b19bf1",
        "a4f81546373f4cb5fa6dfc135307ee0a1d930872"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 11:19:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 16 11:19:18 2016 +0000"
      },
      "message": "Merge \"Collect memory use for the JIT.\""
    },
    {
      "commit": "a4f81546373f4cb5fa6dfc135307ee0a1d930872",
      "tree": "bfc592fc0ec418ac8bbc270a31c6e741849c3276",
      "parents": [
        "e70cda6147e2e49384a219b167a6c734a8db28f5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 08 16:57:48 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 11:16:49 2016 +0000"
      },
      "message": "Collect memory use for the JIT.\n\nbug:27520994\n\nChange-Id: I67b0c5b822001bfde8738a988c1ade69f1a26e3f\n"
    },
    {
      "commit": "d9813cb37254a72b08424359c7ef80f6a2136a74",
      "tree": "006621a324a56508f2792e722a7b901cfe474175",
      "parents": [
        "5681b6638b0001c62d02795b0853e2e82787edf1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 15 12:41:27 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 15 13:24:11 2016 +0000"
      },
      "message": "ART: Fix valgrind failure in image_test64.\n\nExplicitly clear LengthPrefixedArray\u003cArtMethod\u003e padding\nin ImageWriter. This also removes a potential source of\nnon-deterministic data in compiled boot image.\n\nBug: 26687569\nBug: 27552451\nChange-Id: Icf4bf34c9ea5b3159462760fbf556d287841191d\n"
    },
    {
      "commit": "6f6b134e39e7f01cf6c029ce1f95fcadb642cbc3",
      "tree": "8890d92ae6824c56414dd4129c81a6fd6c85f69e",
      "parents": [
        "39731ac67b591d84711a34f671a48229933cddc7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 09 11:14:50 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 09 16:34:37 2016 -0800"
      },
      "message": "Use PwriteFully and write image header last\n\nPrevent corrupted images if dex2oat gets killed or if the image\nwriter is interrupted during writing.\n\nBug: 22858531\nBug: 27561308\n\n(cherry picked from commit dba5a70977da0a28cec2bfc8261d52a177738477)\n\nChange-Id: If4f2c43bcc3cf918b5d2780f1709225b5a4ce116\n"
    },
    {
      "commit": "32ce2adefb8a3d0eda59a29f5e87c1eb43eef796",
      "tree": "50aaa40b31ede355359765259edc7989485cc7d5",
      "parents": [
        "c71dc3852edfa8e0cd2083d12845ff8607e189ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 14:58:03 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 18:37:19 2016 -0800"
      },
      "message": "Add more systracing everywhere\n\nAdded to:\nJIT\nDexFile functions\nOat file manager\n\nAdded helper ScopedTrace to prevent errors and reduce excess code.\n\nBug: 27502458\n\n(cherry picked from commit dabdc0fe183d4684f3cf4d70cb09d318cff81b42)\n\nChange-Id: Ifaeff8913d79eefc797380987d13cc00456266f8\n"
    }
  ],
  "next": "25e0456b6ea13eba290b63ea88b6b7120ed89413"
}
