)]}'
{
  "log": [
    {
      "commit": "d2d5262c8370309e1f2a009f00aafc24f1cf00a0",
      "tree": "15b542ac079f30043cd3654cf5d3c40ae3ea34d0",
      "parents": [
        "5b12f7973636bfea29da3956a9baa7a6bbe2b666"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 16:28:54 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 16:28:54 2016 +0000"
      },
      "message": "Revert \"Add kJitTableAddress for HLoadClass.\"\n\nOne test failure after merge.\n\nThis reverts commit 5b12f7973636bfea29da3956a9baa7a6bbe2b666.\n\nChange-Id: I120c49e53274471fc1c82a10d52e99c83f5f85cc\n"
    },
    {
      "commit": "5b12f7973636bfea29da3956a9baa7a6bbe2b666",
      "tree": "a2cd41c1d3c09abc594a76af11b7bebc302a2870",
      "parents": [
        "0dd27eb2b51d030866c25dbf8e7bb737eb35a888"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 09 11:26:35 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 11:50:24 2016 +0000"
      },
      "message": "Add kJitTableAddress for HLoadClass.\n\nThis new kind loads classes from the root table associated with\nJIT compiled code.\n\nAlso remove kDexCacheAddress, which is replaced by kJitTableAddress.\n\ntest: ART_TEST_JIT\u003dtrue test-art-host-jit test-art-target-jit\nChange-Id: Ia23029688d1a60c178bf2ffa7463927c5d5de4d0\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": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\n"
    },
    {
      "commit": "b77051ea5718fe017f2fa884b9ca4c8186c95190",
      "tree": "bb51782f8350be00195becabc3cd8758f15010a0",
      "parents": [
        "d0111420a9f924fe560a97132d09ae531852fd69"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Mon Nov 21 19:46:00 2016 +0000"
      },
      "committer": {
        "name": "Anton Kirilov",
        "email": "anton.kirilov@linaro.org",
        "time": "Fri Nov 25 14:16:31 2016 +0000"
      },
      "message": "ARM: VIXL32: Fix breaking changes from recent VIXL update.\n\nTest: m test-art-host\nTest: m test-art-target\nChange-Id: I02a608bf51b889a2bfff43272a3619582bf9cf20\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "dac7ad17c78387d15d7aefae0f852dddf5f37e34",
      "tree": "603b3ca74ba9144d217497417314fe863e2201ef",
      "parents": [
        "af524438b8a76264a23ec2d748e11eeded02abc7",
        "132d8363bf8cb043d910836672192ec8c36649b6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 21 10:14:06 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 21 10:14:07 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Revert \"JIT root tables.\"\"\"\"\""
    },
    {
      "commit": "132d8363bf8cb043d910836672192ec8c36649b6",
      "tree": "42ee8b08f0323e9762675333b50a4c218ecdefc7",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 16 09:19:42 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 18 14:31:30 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"JIT root tables.\"\"\"\"\n\nTest: 626-set-resolved-string, test-art-host, test-art-target\nTest: run-libcore-tests.sh\nTest: phone boots and runs\n\nThis reverts commit 3395fbc20bcd20948bec8958db91b304c17cacd8.\n\nChange-Id: I104b73d093e3eb6a271d564cfdb9ab09c1c8cf24\n"
    },
    {
      "commit": "6beced4c017826f7c449f12fac7fa42403657f2b",
      "tree": "f53614eeeaa92be9a7398e262d9440f59e3384a5",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 15 15:51:31 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 16 10:41:40 2016 -0800"
      },
      "message": "Change iftable to never be null\n\nSimplifies code generation by removing a null check. The null case\nis rare.\n\nRitzperf code size: 13107624 -\u003e 13095336\n\nAlso addressed comments from previous CL.\n\nBug: 32577579\n\nTest: test-art-host, run ritzperf both with CC\n\nChange-Id: I2b31e800867112869d7f0643e16c08826296979e\n"
    },
    {
      "commit": "9fd8c60cdff7b28a89bb97fd90ae9d0f37cf8f8b",
      "tree": "630b6f23441a26e4b5d9434900993a710635c9e9",
      "parents": [
        "26c8f54be31ccf99540906746b17fc8bba1bab9a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 14 14:38:53 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 15 13:02:24 2016 -0800"
      },
      "message": "Pass object instead of class to instanceof entrypoint\n\nReduces code size. Also avoid read barrier for kArrayCheck case.\n\nBug: 32577579\n\nTest: test-art-host, test-art-target CC\n\nChange-Id: Ia890f656fe166b2d39c522b63a8a6469404134ae\n"
    },
    {
      "commit": "afbcdafde4d2c1de293c3ba1da22f579df200b3b",
      "tree": "6d75c7f26b7b358e0e8ca869ae6d206f7bf0294a",
      "parents": [
        "81cae78d1853893ff9c3ecea4b5100002a538eb7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 14 10:50:29 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 14 11:35:27 2016 -0800"
      },
      "message": "Clean up interface check cast\n\nChanged arm, arm64 to use less labels and removed forward branch\nin the success case.\n\nCleaned up X86, X86_64 to remove the is_null label.\n\nBug: 12687968\nBug: 32577579\n\nTest: test-art-host, test-art-target CC\nChange-Id: Iba426dff548b2ef42198fad13efeb075f7c724a7\n"
    },
    {
      "commit": "3395fbc20bcd20948bec8958db91b304c17cacd8",
      "tree": "e0d00b412961e2aaa0dff91317a9f4168189e5fb",
      "parents": [
        "75afcdd3503a8a8518e5b23d21b6e73306ce39ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 12:40:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 12:40:52 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT root tables.\"\"\"\n\nlibcore failures:\ndalvikvm32 F 11-14 03:04:06 14870 14870 jit_code_cache.cc:310] Check failed: new_string !\u003d nullptr\n\nThis reverts commit 75afcdd3503a8a8518e5b23d21b6e73306ce39ce.\n\nChange-Id: I5a6b6b48aa79a763d1ff1ba4d85d63811254787d\n"
    },
    {
      "commit": "75afcdd3503a8a8518e5b23d21b6e73306ce39ce",
      "tree": "b49afc4772fa72319475f96ed66d744bb03e803c",
      "parents": [
        "ee48b0f11df812d98de5c989e1f6d95a21515564"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 10 10:38:11 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 11 13:18:24 2016 +0000"
      },
      "message": "Revert \"Revert \"JIT root tables.\"\"\n\nAlso  contains Revert \"Support kJitTableAddress in x86/arm/arm64.\"\n\nThis reverts commit 4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035.\nThis reverts commit 997d1217830c0a18b70faeabd53c04700a87d7d9.\n\nTest: ART_USE_READ_BARRIER\u003dtrue/false test-art-host test-art-target\n\nChange-Id: I77cb1e9bf8f1b4c58b72d3cf5ca31ced2aaa1ea3\n"
    },
    {
      "commit": "1f01a46fdfc5fdda9268cf5d1ce48d6baf8d619d",
      "tree": "69c08594e2f3f8ef3f3496fd839c407b598d564a",
      "parents": [
        "48dfb4a7f113b3ada0c7e55f0503e692180decc5",
        "fe814e89965ddf9a8b603863bd28259f8dd7be35"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 11 00:58:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 11 00:58:23 2016 +0000"
      },
      "message": "Merge \"Use entrypoint switching to reduce code size of GcRoot read barrier\""
    },
    {
      "commit": "fe814e89965ddf9a8b603863bd28259f8dd7be35",
      "tree": "32ecc282f176d0e2a98f41f6e4b116d26cf58bee",
      "parents": [
        "977919fbcbfbf0c1c3fa97e51490bc678da646d2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 09 14:32:49 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 10 14:41:28 2016 -0800"
      },
      "message": "Use entrypoint switching to reduce code size of GcRoot read barrier\n\nSet the read barrier mark register entrypoints to null when the GC\nis not marking. The compiler uses this to avoid needing to load the\nis_gc_marking boolean.\n\nCode size results on ritzperf CC:\narm32: 13439400 -\u003e 13242792 (-1.5%)\narm64: 16380544 -\u003e 16208512 (-1.05%)\n\nImplemented for arm32 and arm64. TODO: Consider implementing on x86.\n\nBug: 32638713\nBug: 29516974\n\nTest: test-art-host + run ritzperf\nChange-Id: I527ca5dc4cd43950ba43b872d0ac81e1eb5791eb\n"
    },
    {
      "commit": "3af00dc3918dfaacd51fb0ef604de51dd6dc9af4",
      "tree": "ec07882ae02d98bd9841646ce9e8bb1349e9c751",
      "parents": [
        "977919fbcbfbf0c1c3fa97e51490bc678da646d2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 10 11:25:57 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 10 12:45:56 2016 -0800"
      },
      "message": "Use enum for read barrier options in compiler\n\nEnums are just phenomenal. Also fixed a double load error in x86\ninterface check cast fast path.\n\nTest: test-art-host\n\nChange-Id: Iea403ce579145b6a294073f3900ad6921c1a0d53\n"
    },
    {
      "commit": "977919fbcbfbf0c1c3fa97e51490bc678da646d2",
      "tree": "3e462b1ea5887345ed025b030b0c0a4b71003524",
      "parents": [
        "ee59d46595bb860fea26122f47f8797d2d0fe5f4",
        "aa474eb597056d21c0b21d353b9b6aa460351d0f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 10 18:05:50 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 10 18:05:50 2016 +0000"
      },
      "message": "Merge \"Avoid read barriers for inlined check cast\""
    },
    {
      "commit": "16593ed1d3914308052f98542bb9bf38ed588d53",
      "tree": "783e1081ec6828731ef88df679193d0c4c2f5919",
      "parents": [
        "af0cac6ed7221303c8bd8a77f6c41f4af8045d60",
        "fdaf0f45510374d3a122fdc85d68793e2431175e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 10 13:58:34 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 10 13:58:34 2016 +0000"
      },
      "message": "Merge \"Change string compression encoding.\""
    },
    {
      "commit": "aa474eb597056d21c0b21d353b9b6aa460351d0f",
      "tree": "738ba965a552ac0e4814cb1131ef0dd96ae14142",
      "parents": [
        "334b5c3d0d5d84242b4528241c759789e532ce08"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 09 15:18:27 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 09 15:59:33 2016 -0800"
      },
      "message": "Avoid read barriers for inlined check cast\n\nAvoiding read barriers improves speed and reduces code size.\n\nDoing this can never result in false positives, only false negatives.\nThese false negatives are handled correcly by rechecking in the\nentrypoint.\n\nRitzperf code size for CC:\narm32: 13439400-\u003e13300136 (-1.04%)\narm64: 16405120-\u003e16253568 (-0.92%)\n\nPerf: TODO\n\nBug: 29516974\nBug: 12687968\n\nTest: test-art-host, run ritzperf both with CC\n\nChange-Id: Ie024e0b1e8ee415781fb73e8029e87e8a5318f86\n"
    },
    {
      "commit": "334b5c3d0d5d84242b4528241c759789e532ce08",
      "tree": "4925b11b74297e34c35eb17bb2f08b161b8893c7",
      "parents": [
        "3b3daf35d3f3053ac5f645cc0b0e5527012c44d7",
        "5c44c1bb131e609d9aba6f97f933567bf77cb8ed"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 09 23:16:16 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 23:16:16 2016 +0000"
      },
      "message": "Merge \"Add interface check cast fast path to arm, arm64, x86\""
    },
    {
      "commit": "5c44c1bb131e609d9aba6f97f933567bf77cb8ed",
      "tree": "46792f774d0c4e0e096510cb1927768cc4b92a46",
      "parents": [
        "b4e4c279a0d96c5c9bd6d038d97c3c9992ff8d09"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 04 18:13:04 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 09 10:31:16 2016 -0800"
      },
      "message": "Add interface check cast fast path to arm, arm64, x86\n\nBug: 12687968\nBug: 32577579\n\nTest: test-art-host, test-art-target CC\n\nChange-Id: Ia57099d499fa704803cc5f0135f0f53fefe39826\n"
    },
    {
      "commit": "20c56a8cded87092d40097323fcf9eaf50f64e4b",
      "tree": "1dd41fe4afd736aa0cfb8d6ef8ed4835a4dbe4af",
      "parents": [
        "2e7f085990423a706137c1d42673226ee7a7194f",
        "4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:49 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 17:30:49 2016 +0000"
      },
      "message": "Merge \"Revert \"JIT root tables.\"\""
    },
    {
      "commit": "4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035",
      "tree": "1220262d0ed22d91777c68a8a568348cddf820cb",
      "parents": [
        "ac3ebc3150760425ed00abd56da48f9a6e0666bc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:31 2016 +0000"
      },
      "message": "Revert \"JIT root tables.\"\n\nMay be the offender for jit-gcstress failure of 902.\n\nThis reverts commit ac3ebc3150760425ed00abd56da48f9a6e0666bc.\n\nChange-Id: I9ea6c9236fd1729fed7d1868dd8a111172932308\n"
    },
    {
      "commit": "2e7f085990423a706137c1d42673226ee7a7194f",
      "tree": "111034c140ccc9c458a353a4a7cc5d85c4a3b98b",
      "parents": [
        "b4e4c279a0d96c5c9bd6d038d97c3c9992ff8d09",
        "07c919feccdf47f997842a131a802aa6b891e34a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:00 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 17:30:00 2016 +0000"
      },
      "message": "Merge \"Revert \"Support kJitTableAddress in x86/arm/arm64.\"\""
    },
    {
      "commit": "07c919feccdf47f997842a131a802aa6b891e34a",
      "tree": "56d9bb3097c51d5efbf67cd7516b0bc3c8e16616",
      "parents": [
        "997d1217830c0a18b70faeabd53c04700a87d7d9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:29:03 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:29:03 2016 +0000"
      },
      "message": "Revert \"Support kJitTableAddress in x86/arm/arm64.\"\n\nRevert this in order to revert https://android-review.googlesource.com/#/c/285781/\n\nThis reverts commit 997d1217830c0a18b70faeabd53c04700a87d7d9.\n\nChange-Id: I1888fba1c6f712cae4aec4ea4719b74a46da156c\n"
    },
    {
      "commit": "11bbc7fd5b4ed64d13c5d21ae9c8b686cf24bcbb",
      "tree": "987b3b2cbac0d69bb96356fb2a9994727aebf47a",
      "parents": [
        "2badb9a4c2ef794344f9434e1e6aed865646fcaf",
        "997d1217830c0a18b70faeabd53c04700a87d7d9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 16:25:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 16:25:24 2016 +0000"
      },
      "message": "Merge \"Support kJitTableAddress in x86/arm/arm64.\""
    },
    {
      "commit": "997d1217830c0a18b70faeabd53c04700a87d7d9",
      "tree": "1f892df0eb21ebd0139cd62aa9f46a7485f375da",
      "parents": [
        "0864c98b10cb8ca306671cabaa9be2a4068a2711"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 10:36:29 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 14:43:27 2016 +0000"
      },
      "message": "Support kJitTableAddress in x86/arm/arm64.\n\ntest: test-art-host test-art-target, angler boots and runs.\nChange-Id: I3654ae2809d4d759db76ee1ada1c17f3a9c3b392\n"
    },
    {
      "commit": "54d6a207341ad45cb5eceed71a344073ed6d4e31",
      "tree": "d24fc641ca9ad2b1732a40f0989e3683cc0a5028",
      "parents": [
        "2a2f713717ace8a026cfe76c91165a5ed0d80182"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 09 12:46:38 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 09 12:46:38 2016 +0000"
      },
      "message": "Fix 552-checker-sharpening for PIC test.\n\nAnd remove obsolete HLoadString::LoadKind::kDexCacheAddress.\n\nTest: m ART_TEST_PIC_TEST\u003dtrue test-art-host\nChange-Id: I3e7a1a98c2c7eba5ea10954d7efcf743a807c300\n"
    },
    {
      "commit": "fdaf0f45510374d3a122fdc85d68793e2431175e",
      "tree": "3315c82410fd42612bb501bed150df454dde0dde",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 13 19:29:53 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 09 11:08:31 2016 +0000"
      },
      "message": "Change string compression encoding.\n\nEncode the string compression flag as the least significant\nbit of the \"count\" field, with 0 meaning compressed and 1\nmeaning uncompressed.\n\nThe main vdex file is a tiny bit larger (+28B for prebuilt\nboot images, +32 for on-device built images) and the oat\nfile sizes change. Measured on Nexus 9, AOSP ToT, these\nchanges are insignificant when string compression is\ndisabled (-200B for the 32-bit boot*.oat for prebuilt boot\nimage, -4KiB when built on the device attributable to\nrounding, -16B for 64-bit boot*.oat for prebuilt boot image,\nno change when built on device) but with string compression\nenabled we get significant differences:\n  prebuilt multi-part boot image:\n    - 32-bit boot*.oat: -28KiB\n    - 64-bit boot*.oat: -24KiB\n  on-device built single boot image:\n    - 32-bit boot.oat: -32KiB\n    - 64-bit boot.oat: -28KiB\nThe boot image oat file overhead for string compression:\n  prebuilt multi-part boot image:\n    - 32-bit boot*.oat: before: ~80KiB after: ~52KiB\n    - 64-bit boot*.oat: before: ~116KiB after: ~92KiB\n  on-device built single boot image:\n    - 32-bit boot.oat: before: 92KiB after: 60KiB\n    - 64-bit boot.oat: before: 116KiB after: 92KiB\n\nThe differences in the SplitStringBenchmark seem to be lost\nin the noise.\n\nTest: Run ART test suite on host and Nexus 9 with Optimizing.\nTest: Run ART test suite on host and Nexus 9 with interpreter.\nTest: All of the above with string compression enabled.\nBug: 31040547\n\nChange-Id: I7570c2b700f1a31004a2d3c18b1cc30046d35a74\n"
    },
    {
      "commit": "0864c98b10cb8ca306671cabaa9be2a4068a2711",
      "tree": "56d9bb3097c51d5efbf67cd7516b0bc3c8e16616",
      "parents": [
        "4c45ffaf6329d40e3249894cfb078d3d274ddfd5",
        "ac3ebc3150760425ed00abd56da48f9a6e0666bc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 09:55:45 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 09:55:45 2016 +0000"
      },
      "message": "Merge \"JIT root tables.\""
    },
    {
      "commit": "b99f4d6463e7cb5654af3893ed7b3113665df658",
      "tree": "1bacc6a2bd01426c921e2f83f39bb63f9d9d8048",
      "parents": [
        "67381d6298edf18760b0c9b3d16572dc3894e551"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 07 16:17:26 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 08 12:46:59 2016 -0800"
      },
      "message": "Change check cast entrypoint to check instance of\n\nReduces code size since we do not need to reload class before\ncalling slow path.\n\nTODO: Delete read barriers in the check cast code since the slow\npath will retry with the proper read barriers if the check fails.\n\nBug: 12687968\nBug: 29516974\n\nTest: test-art-host + test-art-target with CC\n\nChange-Id: Ia4eb9bbe3fe2d2016e44523cf0451210828d7b88\n"
    },
    {
      "commit": "ac3ebc3150760425ed00abd56da48f9a6e0666bc",
      "tree": "3c5c923bb00a898e035c0e7c4b8a6a684a578419",
      "parents": [
        "76ad2405b40547e0ab4fc401fb8303189ff783eb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 05 13:13:50 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 08 17:21:30 2016 +0000"
      },
      "message": "JIT root tables.\n\nImplement root tables for the JIT. Each JIT compiled method\ngets a table allocated before the stack maps.\n\nThe table gets visited through Runtime::SweepSystemWeaks.\n\nImplement String roots for x86_64 as an example.\n\nTest: test-art-host test-art-target\n\nChange-Id: Id3d5bc67479e08b52dd4b253e970201203a0f0d2\n"
    },
    {
      "commit": "19c5419d21376dd69404736b998fbbb9da54af56",
      "tree": "1e15b39f7c6662b2939bbaa7f34560fcea72e7b4",
      "parents": [
        "c46e708aa0bd7a007f0de8db1cad8ef49166ca10"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Nov 04 13:44:09 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Nov 04 16:43:41 2016 +0000"
      },
      "message": "Revert \"Revert \"Enable IntermediateAddress for primitive arrays with read barriers.\"\"\n\nThis reverts commit 4a3aa578eff94eb10450fae1772deb7cb8ddc6a6.\n\nThe failing assertion (see b/30762467):\n\n08-09 11:32:46.767  1654  1656 F dex2oatd: art/compiler/optimizing/register_allocation_resolver.cc:325] Check failed: interval-\u003eGetDefinedBy()-\u003eIsActualObject() IntermediateAddress@InstanceFieldGet\n\nthat motivated the initial revert has been removed by a\nprevious CL (commit\n70e97462116a47ef2e582ea29a037847debcc029,\nhttps://android-review.googlesource.com/#/c/254920/).\n\nTest: ART host and target (ARM, ARM64) tests with `ART_USE_READ_BARRIER\u003dtrue`.\nBug: 26601270\nBug: 12687968\nChange-Id: I09cae0c6c38ca403924153e9f0eb0cc3ff4540e7\n"
    },
    {
      "commit": "12b58b23de974232e991c650405f929f8b0dcc9f",
      "tree": "bc08011e3b9f4c132fc605dc54d1d5f50c932a29",
      "parents": [
        "b0b2080b4cea8365052d1be973e927f8ee85f609"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Nov 01 11:55:29 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Nov 02 16:31:04 2016 -0700"
      },
      "message": "Clean up the runtime read barrier and fix fake address dependency.\n\n- Rename GetReadBarrierPointer to GetReadBarrierState.\n- Change its return type to uint32_t.\n- Fix the runtime fake address dependency for arm/arm64 using inline\n  asm.\n- Drop ReadBarrier::black_ptr_ and some brooks code.\n\nBug: 12687968\nTest: test-art with CC, Ritz EAAC, libartd boot on N9.\nChange-Id: I595970db825db5be2e98ee1fcbd7696d5501af55\n"
    },
    {
      "commit": "5edd9510b5f39e2f6d758954ae2ac78e17f21735",
      "tree": "41233bf579429e3cc057eefdbd8ad35e091d8055",
      "parents": [
        "270b6aeb11d973dc1b339ccf892468e0ad3989e3",
        "00468f3b4b4741be407169a4f21054ebdcccb2b1"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 28 14:15:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 28 14:15:10 2016 +0000"
      },
      "message": "Merge \"Remove default argument values in GenerateGcRootFieldLoad.\""
    },
    {
      "commit": "00468f3b4b4741be407169a4f21054ebdcccb2b1",
      "tree": "ad095c39f477b4a55d7d306128dd1b68ca80ce93",
      "parents": [
        "384cb6674b967a9c58da9ad70fd6f98caa1d8691"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 27 18:02:48 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 27 18:03:11 2016 +0100"
      },
      "message": "Remove default argument values in GenerateGcRootFieldLoad.\n\nThese values were never or rarely used.\n\nTest: mmma art (with and without `ART_USE_READ_BARRIER\u003dtrue`)\nBug: 12687968\nBug: 29516974\nChange-Id: I5d15140ce501bf50d7a87871b1e492cee54913db\n"
    },
    {
      "commit": "24a4d11cdc5975215af079dc3d658b79e9b0717e",
      "tree": "c6ee859e8fcbf5b420ec396ffca763d53f632997",
      "parents": [
        "a1aa3b1f40e496d6f8b3b305a4f956ddf2e425fc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 26 13:10:46 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Oct 27 11:06:12 2016 +0100"
      },
      "message": "Use CLREX in ARM/ARM64 CAS intrinsic Baker read barrier slow paths.\n\nFollow clang\u0027s implementation, which uses CLREX in\ncompare-and-exchange operations on the failure path, i.e.\nwhen the value read by the LDREX (ARM) or LDXR (ARM64)\ninstruction is not the expected value, in order to release\nthe monitor.  The previous implementation was perfectly\ncorrect, but this one may improve performance on some\nmicro-architectures.\n\nThis change only affects the\nart::arm::ReadBarrierMarkAndUpdateFieldSlowPathARM and\nart::arm64::ReadBarrierMarkAndUpdateFieldSlowPathARM64 slow\npaths.\n\nTest: make test-art-target-run-test-004-UnsafeTest\nBug: 29516905\nBug: 12687968\nChange-Id: I99edd1ae6489dcec4a0089bfef52736114c6cd48\n"
    },
    {
      "commit": "a1aa3b1f40e496d6f8b3b305a4f956ddf2e425fc",
      "tree": "efe3dd581dbe9fb33e615d1608f0571ec3984208",
      "parents": [
        "188edb3a3ec36ad5fc42373b1e1bed3a85b4f112"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 26 13:03:38 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 26 13:03:38 2016 +0100"
      },
      "message": "Add support for Baker read barriers in UnsafeCASObject intrinsics.\n\nPrior to doing the compare-and-swap operation, ensure the\nexpected reference stored in the holding object\u0027s field is\nin the to-space by loading it, emitting a read barrier and\nupdating that field with a strong compare-and-set operation\nwith relaxed memory synchronization ordering (if needed).\n\nTest: ART host and target tests and Nexus 5X boot test with Baker read barriers.\nBug: 29516905\nBug: 12687968\nChange-Id: I480f6a9b59547f11d0a04777406b9bfeb905bfd2\n"
    },
    {
      "commit": "d985a5a81a45595f5cb4d12da81eec760801c92c",
      "tree": "3d49d34870ddb439596321e6e6577845e97c61ac",
      "parents": [
        "b5706dd4e86c3687153a02fdda715e40f69c55d1",
        "94ce9c2f41ea198f5fdcfc09c48b9984c95a9c61"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 20 09:24:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 20 09:24:03 2016 +0000"
      },
      "message": "Merge \"Change pResolveString entrypoint to kSaveEverything.\""
    },
    {
      "commit": "94ce9c2f41ea198f5fdcfc09c48b9984c95a9c61",
      "tree": "8dcaf27e8b34f51f5849b1e8d4366968f9bae849",
      "parents": [
        "2f61867045ffbd0c38a4ecec5f59632004f7efff"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 30 14:50:51 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 19 18:02:48 2016 +0100"
      },
      "message": "Change pResolveString entrypoint to kSaveEverything.\n\nTest: Run ART test suite including gcstress on host and Nexus 9.\nTest: Run ART test suite including gcstress with baker CC on host and Nexus 9.\nBug: 20323084\nChange-Id: I63c21a7d3be8ff7a5765b5003c85b5317635efe6\n"
    },
    {
      "commit": "9989b167ce5726950ab4c52f87a428eea7493bd6",
      "tree": "6e43803fcd7b6faf7c0466ac9d8b6277bee9a25a",
      "parents": [
        "68f1128b3f98886ebe28c36e8a75f7a254db5431"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 13 13:42:30 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 13 14:40:10 2016 +0100"
      },
      "message": "Fix optimizing_cfi_test and arm64 code generation.\n\nChange https://android-review.googlesource.com/#/c/287582/ broke it.\n\ntest: m test-art-host-gtest-optimizing_cfi_test\ntest: m test-art-target on angler\nChange-Id: I7fc74a87ffa0b26b8e103b87a2ac1179bea2145a\n"
    },
    {
      "commit": "96eeb4e2bb21afe8783d62e06b91fd1aef682dbb",
      "tree": "097907f294206c45a03c4b63bf986b9e144116af",
      "parents": [
        "e2ced0db78b89b778cd1c9ef4ace5dec7dbc66b0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 12 22:03:31 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 12 22:27:38 2016 +0100"
      },
      "message": "Update HInstruction::NeedsCurrentMethod.\n\nHLoadString and HLoadClass when sharpened may not need it\nanymore. Instead just rely on the HCurrentMethod being the\nSSA dependency of those instructions.\n\nAlso save storing the current method in the stack if the\ngraph actually doesn\u0027t need it.\n\ntest: m test-art-host test-art-target\nChange-Id: I235d8275230637cbbd38fc0d2f9b822f6d2a9c1e\n"
    },
    {
      "commit": "aad75c6d5bfab2dc8e30fc99fafe8cd2dc8b74d8",
      "tree": "c1b9e1eabcf35c5cbb5b4f46313a4e062f2d5d51",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 03 08:46:48 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 04 17:51:46 2016 +0100"
      },
      "message": "Revert \"Revert \"Store resolved Strings for AOT code in .bss.\"\"\n\nFixed oat_test to keep dex files alive. Fixed mips build.\nRewritten the .bss GC root visiting and added write barrier\nto the artResolveStringFromCode().\n\nTest: build aosp_mips-eng\nTest: m ART_DEFAULT_GC_TYPE\u003dSS test-art-target-host-gtest-oat_test\nTest: Run ART test suite on host and Nexus 9.\nBug: 20323084\nBug: 30627598\n\nThis reverts commit 5f926055cb88089d8ca27243f35a9dfd89d981f0.\n\nChange-Id: I07fa2278d82b8eb64964c9a4b66cb93726ccda6b\n"
    },
    {
      "commit": "e89e1b5fa28c38e4bcb508ef2fff5e1ab6572df9",
      "tree": "a09441ed36a407ab0d5d552fdff531f94462df17",
      "parents": [
        "f2ebe98e32603a52d5e0b927d8a8171e47bac3cf",
        "0576575d075e97a227010b4adf74ad5c8a920bde"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Sep 30 22:52:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 30 22:52:13 2016 +0000"
      },
      "message": "Merge \"String Compression for ARM and ARM64\""
    },
    {
      "commit": "0576575d075e97a227010b4adf74ad5c8a920bde",
      "tree": "c31eb030933e74d6d103979bcf0d1226e769eb5b",
      "parents": [
        "9e5739aaa690a8529c104f4c05035a657616c310"
      ],
      "author": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Fri Sep 09 19:01:32 2016 -0700"
      },
      "committer": {
        "name": "jessicahandojo",
        "email": "jessicahandojo@google.com",
        "time": "Fri Sep 30 10:51:50 2016 -0700"
      },
      "message": "String Compression for ARM and ARM64\n\nChanges on intrinsics and Code Generation on ARM and ARM64\nfor string compression feature. Currently the feature is off.\n\nThe size of boot.oat and boot.art for ARM before and after the\nchanges (feature OFF) are still. When the feature ON,\nboot.oat increased by 0.60% and boot.art decreased by 9.38%.\n\nMeanwhile for ARM64, size of boot.oat and boot.art before and\nafter changes (feature OFF) are still. When the feature ON,\nboot.oat increased by 0.48% and boot.art decreased by 6.58%.\n\nTurn feature on: runtime/mirror/string.h (kUseStringCompression \u003d true)\nruntime/asm_support.h (STRING_COMPRESSION_FEATURE 1)\n\nTest: m -j31 test-art-target\nAll tests passed both when the mirror::kUseStringCompression\nis ON and OFF.\n\nBug: 31040547\nChange-Id: I24e86b99391df33ba27df747779b648c5a820649\n"
    },
    {
      "commit": "5f926055cb88089d8ca27243f35a9dfd89d981f0",
      "tree": "8d87d400e36301eb648e19bcd225f13c469648ad",
      "parents": [
        "9e5739aaa690a8529c104f4c05035a657616c310"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 30 17:04:49 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 30 18:08:09 2016 +0100"
      },
      "message": "Revert \"Store resolved Strings for AOT code in .bss.\"\n\nThere are some issues with oat_test64 on host and aosp_mips-eng.\n\nAlso reverts \"compiler_driver: Fix build.\"\n\nBug: 20323084\nBug: 30627598\n\nThis reverts commit 63dccbbefef3014c99c22748d18befcc7bcb3b41.\nThis reverts commit 04a44135ace10123f059373691594ae0f270a8a4.\n\nChange-Id: I568ba3e58cf103987fdd63c8a21521010a9f27c4\n"
    },
    {
      "commit": "63dccbbefef3014c99c22748d18befcc7bcb3b41",
      "tree": "60a498041bebff43bc1f43d438e3bc34a30887f7",
      "parents": [
        "6bee25976782a063d6b44f7718a6302761bf6403"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 21 13:51:10 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 29 15:58:43 2016 +0100"
      },
      "message": "Store resolved Strings for AOT code in .bss.\n\nAnd do some related refactorings.\n\nBug: 20323084\nBug: 30627598\nTest: Run ART test suite including gcstress on host and Nexus 9.\nTest: Run ART test suite including gcstress with baker CC on host and Nexus 9.\nTest: Build aosp_mips64-eng.\nChange-Id: I1b12c1570fee8e5da490b47f231050142afcbd1e\n"
    },
    {
      "commit": "da079bba8403733cac9bb7415b038ffd77e62403",
      "tree": "3bfed6ea39483bda20c0059763c30aee2e6e5791",
      "parents": [
        "a1d66b9050aeecd7e698c51155f0dbc0198a6822"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 26 17:56:07 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 27 10:30:34 2016 +0100"
      },
      "message": "Cleanup String.\u003cinit\u003e handling.\n\nMove everything to one place (currently well_known_classes.cc, but\nno strong preference) and define a macro to easily handle the list\nof affected methods.\n\ntest: m test-art-host\ntest: m test-art-target\nChange-Id: Ib8372d130d5458516a1f1ae31014afc76037fc34\n"
    },
    {
      "commit": "5e4e11e171f90d9a3ea178fc8e72aac909de55d5",
      "tree": "53314d1139ac797d55258f39097ecfb5cef45920",
      "parents": [
        "ca8bad9136d1389deeebc8652fb17063388de6b2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 22 13:17:41 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 23 09:08:00 2016 +0100"
      },
      "message": "Clean-up sharpening and compiler driver.\n\nRemove dependency on compiler driver for sharpening\nand dex2dex (the methods called on the compiler driver were\ndoing unnecessary work), and remove the now unused methods\nin compiler driver.\n\nAlso remove test that is now invalid, as sharpening always\nsucceeds.\n\ntest: m test-art-host m test-art-target\nChange-Id: I54e91c6839bd5b0b86182f2f43ba5d2c112ef908\n"
    },
    {
      "commit": "804b03ffb9b9dc6cc3153e004c2cd38667508b13",
      "tree": "91c7fd54b5000e041bf9d3d5b233dabce1fad614",
      "parents": [
        "80eb0bc2757274816a014a2997848d288c9ee553"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 16:26:36 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 20 14:55:44 2016 +0100"
      },
      "message": "Change remaining slow path throw entrypoints to save everything.\n\nChange DivZeroCheck, BoundsCheck and explicit NullCheck\nslow path entrypoints to conform to kSaveEverything.\n\nOn Nexus 9, AOSP ToT, the boot.oat size reduction is\n  prebuilt multi-part boot image:\n    - 32-bit boot.oat: -12KiB (-0.04%)\n    - 64-bit boot.oat: -24KiB (-0.06%)\n  on-device built single boot image:\n    - 32-bit boot.oat: -8KiB (-0.03%)\n    - 64-bit boot.oat: -16KiB (-0.04%)\n\nTest: Run ART test suite including gcstress on host and Nexus 9.\nTest: Manually disable implicit null checks and test as above.\nChange-Id: If82a8082ea9ae571c5d03b5e545e67fcefafb163\n"
    },
    {
      "commit": "91a6516103b8bf8bb75c3a2840cbdec7521e74a7",
      "tree": "d93043f578bfa5b8d76e8c175e6441b378c4a7b2",
      "parents": [
        "6a4abc633fa8580b06056ec6f80ced8ce7511277"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Mon Sep 19 13:54:30 2016 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Mon Sep 19 13:54:30 2016 +0100"
      },
      "message": "Remove the `CanTriggerGC` side-effects on a few instructions.\n\nThe side-effect was specified for these instructions as they call\nruntime. We now have a list of entrypoints that we know cannot trigger\nGC. We can avoid requiring the side-effect for those.\n\nTest: Run ART test suite on Nexus 5X and host.\n\nChange-Id: I0e0e6a4d701ce6c75aff486cb0d1bc7fe2e8dda4\n"
    },
    {
      "commit": "f41f956558ceb5402d3b4499a44a15c42f1c0064",
      "tree": "50afd6f7509adca0c8ed8cbdc04398058b687b81",
      "parents": [
        "8850c73572215669efc893763791f7ec7f0b0667"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Sep 14 19:26:48 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Sep 14 19:26:48 2016 +0100"
      },
      "message": "Add missing OVERRIDE qualifiers in code generators.\n\nTest: mmma art\nChange-Id: I91d0a2dc23dc8d63a9bb3607eb1c1517eabaeb1f\n"
    },
    {
      "commit": "3b7537bfc5a6b7ccb18b3970d8edf14b72464af7",
      "tree": "49996e22e36a64ea862e7b173e9626d862a4d595",
      "parents": [
        "c11d1b42828475ea1e7319fc3eb9402edc5b1c13"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 13 11:56:01 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 10:42:08 2016 +0100"
      },
      "message": "Revert \"Revert \"Use implicit null checks inside try blocks.\"\"\n\nFix implicit checks in try blocks to emit stack maps.\nFix arm64 null expection from signal entrypoint to call\nthe runtime handler instead or simply jumping there.\n\nOn Nexus 9, AOSP ToT, the boot.oat size reduction is\n  prebuilt multi-part boot image:\n    - 32-bit boot.oat: -448KiB (-1.3%)\n    - 64-bit boot.oat: -528KiB (-1.2%)\n  on-device built single boot image:\n    - 32-bit boot.oat: -448KiB (-1.4%)\n    - 64-bit boot.oat: -528KiB (-1.3%)\nNote that the oat files no longer contain dex files which\nhave been moved to vdex, so the percentages are not directly\ncomparable with the those reported in the original commit.\n\nTest: Run ART test suite including gc-stress on host and Nexus 9.\nBug: 30212852\nBug: 31468464\n\nThis reverts commit 0719b5b9b458cb3eb9f0823f0dacdfe1a71214dd.\n\nChange-Id: If8a9da8c11adf2aad203e93b6684ce16ed776285\n"
    },
    {
      "commit": "e204051d3cc3b1be2e91f26621966c79c82fa74c",
      "tree": "63270cd53f278140c7aef246925b39c858ccc55e",
      "parents": [
        "f0c41505e1d241cf2191d3db377a26ce0bb43b51",
        "0719b5b9b458cb3eb9f0823f0dacdfe1a71214dd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 12 22:07:09 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 12 22:07:10 2016 +0000"
      },
      "message": "Merge \"Revert \"Use implicit null checks inside try blocks.\"\""
    },
    {
      "commit": "0719b5b9b458cb3eb9f0823f0dacdfe1a71214dd",
      "tree": "cf0844758239b6ec41fa070e4fb4b4fbcbb9e506",
      "parents": [
        "7aa7560683626c7893011271c241b3265ded1dc3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 12 22:05:33 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 12 22:05:33 2016 +0000"
      },
      "message": "Revert \"Use implicit null checks inside try blocks.\"\n\nFails gcstress tests.\n\nThis reverts commit 7aa7560683626c7893011271c241b3265ded1dc3.\n\nChange-Id: I4f5c89048b9ffddbafa02f3001e329ff87058ca2\n"
    },
    {
      "commit": "a60a7053cd9a25c89dedc810b8a539cad3d56b36",
      "tree": "bd01f1c185885e719776d67f510820f437d55dd7",
      "parents": [
        "6ee9a333553b7e7268b5bdab14974475ff385106"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 12 18:11:28 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 12 18:42:19 2016 +0100"
      },
      "message": "Remove custom CheckCast slow path caller saves for Baker CC.\n\nFor Baker CC, CheckCast has both a read-barrier marking slow\npath and a pCheckCast slow path. When the latter is known to\nleave the method, i.e. known to throw outside a try-block,\nwe do not need to save live registers for retrieval for the\nexception delivery and since the read-barrier marking does\nnot need to save any registers either we were setting the\ncustom slow path caller saves to empty to avoid reserving\nunnecessary spill space. Hovewer, this also leads to marking\nlive references in caller-save registers in the register\nmask and while the read-barrier marking entrypoint doesn\u0027t\ncare, it causes a stack walk for the pCheckCast to try and\nretrieve an unsaved register.\n\nFor the time being, revert to the default caller saves.\n\nThis is a partial revert of\n    https://android-review.googlesource.com/254920\n\nTest: Run ART test suite on host and Nexus 9.\nBug: 29231980\nBug: 30212852\nChange-Id: I4e22125f3d8903c97506aa2e6e66bea8e8e6baef\n"
    },
    {
      "commit": "6ee9a333553b7e7268b5bdab14974475ff385106",
      "tree": "ed38b36182bfb48bf8f5aed5c7f3fd78aaea2c48",
      "parents": [
        "a5d718a9f8ef51e41a1485a0f6ab201aec4c0c82",
        "7aa7560683626c7893011271c241b3265ded1dc3"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 12 15:48:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 12 15:48:23 2016 +0000"
      },
      "message": "Merge \"Use implicit null checks inside try blocks.\""
    },
    {
      "commit": "7aa7560683626c7893011271c241b3265ded1dc3",
      "tree": "8c9839456149d2320995764ebab5d227a6dea8e7",
      "parents": [
        "ae6ba1fd36ef6cd6520354fa874cf9cc2fc5877b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 07 15:09:21 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 12 14:52:17 2016 +0100"
      },
      "message": "Use implicit null checks inside try blocks.\n\nMake implicit null check entrypoint save all registers, use\nplatform-specific approach to still pass the fault address.\nAllow implicit null checks in try blocks.\n\nOn Nexus 9, AOSP ToT, the boot.oat size reduction is\n  prebuilt multi-part boot image:\n    - 32-bit boot.oat: -452KiB (-0.7%)\n    - 64-bit boot.oat: -482KiB (-0.7%)\n  on-device built single boot image:\n    - 32-bit boot.oat: -444KiB (-0.7%)\n    - 64-bit boot.oat: -488KiB (-0.7%)\n\nTest: Run ART test suite on host and Nexus 9.\nTest: Build aosp_mips64-eng.\nChange-Id: I279f3ab57e2e2f338131c5cac45c51b673bdca19\n"
    },
    {
      "commit": "e0576d15f3ad0e9316f96838af01f7cc7acf6c3c",
      "tree": "abc6ce4677243c84a4c70ecd0240056f95e874fb",
      "parents": [
        "280764498fdba371f972301daa870e33bef31d6a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 09 12:49:55 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 09 13:28:02 2016 -0700"
      },
      "message": "Re-enable boot image direct string loads for read barriers\n\nBoot.oat code size with CC baker:\nARM32: 70775656 -\u003e 69817028 (-1.35%)\nARM64: 80819424 -\u003e 79417072 (-1.74%)\nX86 unmeasured.\nX86_64 unmeasured.\n\nPerformance unmeasured, should be faster.\n\nBug: 29516974\n\nTest: test-art-host CC baker, N6P booting CC baker\n\nChange-Id: I219faaca9ed17af81d2815fb5e124120f307af83\n"
    },
    {
      "commit": "a12943a215a0eb194972d5a76b2aed3bcb9bcdff",
      "tree": "9c279b7303bf4fc8b58697374ce8447d9fd01b74",
      "parents": [
        "1dd61766fb245c2d2d7c759411b2b7b203fe0681",
        "1fe89ea326f51c7a9fdac05ab647ac478a838ed2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 08 17:04:04 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 08 17:04:05 2016 +0000"
      },
      "message": "Merge \"ART: Generate path to entrypoints in VisitLoadString for arm64\""
    },
    {
      "commit": "1dd61766fb245c2d2d7c759411b2b7b203fe0681",
      "tree": "02a932d971bb0d789be1accfd87fcf82f1a074d2",
      "parents": [
        "d14d515df39cd963179088b8721768f9645243aa",
        "9d6e1f892768b0a0cf273ca455070f462a766a06"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Sep 08 16:08:34 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 08 16:08:34 2016 +0000"
      },
      "message": "Merge \"Do type checks in ArraySet without read barriers.\""
    },
    {
      "commit": "1fe89ea326f51c7a9fdac05ab647ac478a838ed2",
      "tree": "e9b0f23748c74b9ebd4a6f55b5e62f1c8e762cd7",
      "parents": [
        "e96bda10b33c34e068a8847f6a31f7a3dbc486aa"
      ],
      "author": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Wed Aug 31 16:14:38 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 07 14:31:51 2016 -0700"
      },
      "message": "ART: Generate path to entrypoints in VisitLoadString for arm64\n\nARM64 CC boot.oat: 81817968 -\u003e 80806672 (-1.23%)\n\nGenerate the code for the medium path in VisitLoadString, not by\ncreating a slow path and generating with the slow paths.\n\nChange-Id: I45df45ea401157ae3d76a2d15dba35f3aed5593f\nTests: test-art-target on bullhead on master branch, N6P CC booting\n"
    },
    {
      "commit": "31b12e32073f458950e96d0d1b44e48508cf67e4",
      "tree": "b6f818dfa6b45342d6b69283c10e1db9817b8b0e",
      "parents": [
        "038cb84f792501ae01561fe5ea4e8144f1918b7e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 02 17:11:57 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 07 10:13:48 2016 -0700"
      },
      "message": "Avoid read barrier for image HLoadClass\n\nConcurrent copying baker:\n\nX86_64 core-optimizing-pic.oat: 28583112 -\u003e 27906824 (2.4% smaller)\n\nAround 0.4% of 2.4% is from re-enabling kBootImageLinkTimeAddress,\nkBootImageLinkTimePcRelative, and kBootImageAddress.\n\nN6P boot.oat 32: 73042140 -\u003e 71891956 (1.57% smaller)\nN6P boot.oat 64: 83831608 -\u003e 82531456 (1.55% smaller)\n\nEAAC: 1252 -\u003e 1245 (32 samples)\n\nBug: 29516974\n\nTest: test-art-host CC baker, N6P booting\n\nChange-Id: I9a196cf0157058836981c43c93872e9f0c4919aa\n"
    },
    {
      "commit": "9d6e1f892768b0a0cf273ca455070f462a766a06",
      "tree": "fea5326fd36e3869a1d6d5fc0d0c8d80e2bca445",
      "parents": [
        "66d4779c8381db2dd5c0fbe92b3c3a45a7a57ef3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Sep 05 15:57:33 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Sep 07 11:55:13 2016 +0100"
      },
      "message": "Do type checks in ArraySet without read barriers.\n\nThis approach is valid in the case of Baker and non-Baker\nread barriers.\n\nBenchmarks (ARM64) score variations on Nexus 5X with CPU\ncores clamped at 960000 Hz (aosp_bullhead-userdebug build,\nmedians of 10 runs for each suite):\n- Ritzperf - average (lower is better):       -0.44% (virtually unchanged)\n- CaffeineMark - average (higher is better):  -0.20% (virtually unchanged)\n- DeltaBlue (lower is better):                -4.08% (slightly better)\n- Richards - average (lower is better):       -0.57% (virtually unchanged)\n- SciMark2 - average (higher is better):      -0.52% (virtually unchanged)\n\nDetails about Ritzperf benchmarks with meaningful variations\n(lower is better):\n- GenericCalcActions.MemAllocTest:            +3.02% (slightly worse)\n\nDetails about Richards benchmarks with meaningful variations\n(lower is better):\n- gibbons                                     -5.01% (better)\n\nBoot image code size variation on Nexus 5X\n(aosp_bullhead-userdebug build):\n- total ARM64 framework Oat files size change:\n  83127840 bytes -\u003e 83082656 bytes (-45184 bytes, -0.05%)\n- total ARM framework Oat files size change:\n  72571872 bytes -\u003e 72522796 bytes (-49076 bytes, -0.07%)\n\nTest: ART_USE_READ_BARRIER\u003dtrue ART_HEAP_POISONING\u003dtrue m test-art-host\nTest: ART_USE_READ_BARRIER\u003dtrue ART_HEAP_POISONING\u003dtrue m test-art-target\nBug: 29516974\nBug: 12687968\nChange-Id: I8fe130156ace87dd2e4a15d9f8b4111287e735b3\n"
    },
    {
      "commit": "239d6eaff0cbb5c4c0139f7053a012758799f186",
      "tree": "8de26b30a2dfd94f849a38c8901437facbbc53b3",
      "parents": [
        "9d185da3bef8caf015d3dbf4ad79c520af7ce3b1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 05 10:44:04 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 06 17:37:41 2016 +0100"
      },
      "message": "Change deoptimize entrypoint to save everything.\n\nAnd implement FPU register retrieval from stack on x86.\n\nOn Nexus 9, AOSP ToT, the boot.oat size reduction is\n  prebuilt multi-part boot image:\n    - 32-bit boot.oat: -20KiB (-0.03%)\n    - 64-bit boot.oat: -45KiB (-0.06%)\n  on-device built single boot image:\n    - 32-bit boot.oat: -24KiB (-0.04%)\n    - 64-bit boot.oat: -36KiB (-0.05%)\n\nTest: Run ART test suite on host and Nexus 9.\nBug: 30212852\nChange-Id: I5d98e2a24363136d73dfec6100ab02f8eb101911\n"
    },
    {
      "commit": "86dc59ebe25cfe36d4edb39c2b7b2653f079448b",
      "tree": "446d80551ab72701914ed08ac18fcaeffd6555b1",
      "parents": [
        "b0f443217306b8a307f73d35cb27c1cac2e1c360",
        "70e97462116a47ef2e582ea29a037847debcc029"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 05 18:12:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 05 18:12:13 2016 +0000"
      },
      "message": "Merge \"Avoid excessive spill slots for slow paths.\""
    },
    {
      "commit": "70e97462116a47ef2e582ea29a037847debcc029",
      "tree": "ee587e35b9b9483c35875ccc8ddea139978ca823",
      "parents": [
        "521691ae4dfad47cf6b46858347fa5fa32fd7bcc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 09 11:04:26 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 05 17:27:41 2016 +0100"
      },
      "message": "Avoid excessive spill slots for slow paths.\n\nReducing the frame size makes stack maps smaller as we need\nfewer bits for stack masks and some dex register locations\nmay use short location kind rather than long. On Nexus 9,\nAOSP ToT, the boot.oat size reduction is\n  prebuilt multi-part boot image:\n    - 32-bit boot.oat: -416KiB (-0.6%)\n    - 64-bit boot.oat: -635KiB (-0.9%)\n  prebuilt multi-part boot image with read barrier:\n    - 32-bit boot.oat: -483KiB (-0.7%)\n    - 64-bit boot.oat: -703KiB (-0.9%)\n  on-device built single boot image:\n    - 32-bit boot.oat: -380KiB (-0.6%)\n    - 64-bit boot.oat: -632KiB (-0.9%)\n  on-device built single boot image with read barrier:\n    - 32-bit boot.oat: -448KiB (-0.6%)\n    - 64-bit boot.oat: -692KiB (-0.9%)\n\nThe other benefit is that at runtime, threads may need fewer\npages for their stacks, reducing overall memory usage.\n\nWe defer the calculation of the maximum spill size from\nthe main register allocator (linear scan or graph coloring)\nto the RegisterAllocationResolver and do it based on the\nlive registers at slow path safepoints. The old notion of\nan artificial slow path safepoint interval is removed as\nit is no longer needed.\n\nTest: Run ART test suite on host and Nexus 9.\nBug: 30212852\nChange-Id: I40b3d114e278e2c5807982904fa49bf6642c6275\n"
    },
    {
      "commit": "da8ffec70e9019fe1208ac38444a7048958fc206",
      "tree": "a6dc41bc2dfe6c5afc6fcc3bdd77c35063ad4e6a",
      "parents": [
        "c0ee1f5af12298e11aaadab4c9838b2f1395972e"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@linaro.org",
        "time": "Wed Mar 09 12:02:11 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 26 16:07:58 2016 +0100"
      },
      "message": "Add entrypoint type information.\n\nFor some of the runtime calls we do not need to generate stack maps. For\nexample, the Optimizing compiler implements HRem Floating Point by\ncalling libm\u0027s fmod().\n\nSince this is a leaf method that does not suspend the execution, we do\nnot need to treat the fmod() invoke as a possible suspend point and thus\nwe do not need to create a stack map for the particular PC.\n\nFor now conservatively only tag the maths runtime entrypoints with this\ninformation.\n\nTest: m test-art-target\nChange-Id: Iab73dcf8047d2edaa7a570113ee792e46ccbc464\n"
    },
    {
      "commit": "a8c6d70dc56e41708425714ab480e4075f74a6fe",
      "tree": "89b6c6a07e0a7a9d76a0bdb64d0935726da3fc64",
      "parents": [
        "cf073b3528f86fd4bf28617e9b770a4229054e42"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 26 11:17:44 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 26 11:17:44 2016 +0100"
      },
      "message": "Address missing variable definition to fix the build.\n\nIt was removed by another CL merged just before the\noffending CL.\n\nTest: m build-art-host\nBug: 29516974\nBug: 29506760\nBug: 12687968\nChange-Id: I4457b6dafd48731eef5c8cc370d9107764d6f55c\n"
    },
    {
      "commit": "cf073b3528f86fd4bf28617e9b770a4229054e42",
      "tree": "8ca2fa054fd0c0988fac870f4181920a257c99bb",
      "parents": [
        "6fe468835c528f65d0e4793e9da57f01eb6ba62b",
        "16d9f949698faed28435af7aa9c9ebacbfd5d1a8"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 26 09:51:01 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 26 09:51:02 2016 +0000"
      },
      "message": "Merge \"Re-enable the ArraySet fast path with Baker read barriers.\""
    },
    {
      "commit": "521691ae4dfad47cf6b46858347fa5fa32fd7bcc",
      "tree": "bb9fdefaad92ac05e20c50e1a56a35454dad6576",
      "parents": [
        "cb83389879f0c391996aad0f7435caffa4d6b30f",
        "8d49fd7b1087fba274a844cbf180349c528cf912"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 25 19:52:01 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 25 19:52:02 2016 +0000"
      },
      "message": "Merge \"ArraySet without type check does not need read barrier.\""
    },
    {
      "commit": "ca11dc008457e1596554eb9b1b77c823ae9dcf54",
      "tree": "d88faea88303d905484d46ffeea9c36bc2fe7bf6",
      "parents": [
        "8812e8fa4bd558b2797a9ad138c3910234097fad",
        "22f81d3b620581c98548dec3b0d6d575e012fed8"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 25 16:54:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 25 16:54:43 2016 +0000"
      },
      "message": "Merge \"ARM64: Make runtime invokes use InvokeRuntime().\""
    },
    {
      "commit": "16d9f949698faed28435af7aa9c9ebacbfd5d1a8",
      "tree": "870fbd499c10f70cecc5f62246b26e1332b600da",
      "parents": [
        "7c95b4e22897a6f14ef79ec6e547e2eed686814a"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 25 17:27:56 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 25 17:27:56 2016 +0100"
      },
      "message": "Re-enable the ArraySet fast path with Baker read barriers.\n\nBenchmarks (ARM64) score variations on Nexus 5X with CPU\ncores clamped at 960000 Hz (aosp_bullhead-userdebug build):\n- Ritzperf - average (lower is better):       -0.95% (virtually unchanged)\n- CaffeineMark - average (higher is better):  +2.50% (slightly better)\n- DeltaBlue (lower is better):                -0.55% (virtually unchanged)\n- Richards - average (lower is better):       +0.67% (virtually unchanged)\n- SciMark2 - average (higher is better):      -0.10% (virtually unchanged)\n\nDetails about Ritzperf benchmarks with meaningful variations\n(lower is better):\n- GenericCalcActions.MemAllocTest:            -5.05% (better)\n\nDetails about CaffeineMark benchmarks with meaningful variations\n(higher is better):\n- Method:                                    +16.88% (better)\n\nDetails about Richards benchmarks with meaningful variations\n(lower is better):\n- deutsch_acc_interface:                      +9.86% (worse)\n\nBoot image code size variation on Nexus 5X\n(aosp_bullhead-userdebug build):\n- total ARM64 framework Oat files size change:\n  105933472 bytes -\u003e 106027680 bytes (+0.09%)\n- total ARM framework Oat files size change:\n  89157936 bytes -\u003e 89239856 bytes (+0.09%)\n\nTest: ART host and target (ARM, ARM64) tests.\nBug: 29516974\nBug: 29506760\nBug: 12687968\nChange-Id: Ib9e9709712295e17804b8888ac10e3d518ff2e70\n"
    },
    {
      "commit": "22f81d3b620581c98548dec3b0d6d575e012fed8",
      "tree": "7986c0bd60c9ee6a95fcfff489b20ffa62cf3ed8",
      "parents": [
        "ce999e7c8af5f76a05ab0b2267ef7b74d25c75b5"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@linaro.org",
        "time": "Thu Feb 18 16:06:31 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 25 15:38:23 2016 +0000"
      },
      "message": "ARM64: Make runtime invokes use InvokeRuntime().\n\nThis patch refactors all of the ARM64 Optimizing compiler runtime\ninvokes to use InvokeRuntime(). It also fixes some misuses of\nRecordPcInfo().\n\nTest: m test-art-target + Nexus 6 boot test\nChange-Id: Ia3e477c42fb14c62b81e50daa5811185071bafa6\n"
    },
    {
      "commit": "8d49fd7b1087fba274a844cbf180349c528cf912",
      "tree": "128be6aa83734b09ecf189a70525570555a4d8cb",
      "parents": [
        "082bfec57684bd93dcca0800d030c12fd448127f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 25 15:20:47 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 25 15:24:05 2016 +0100"
      },
      "message": "ArraySet without type check does not need read barrier.\n\nTest: Run ART test suite with ART_USE_READ_BARRIER\u003dtrue on host and Nexus 9.\nBug: 12687968\nChange-Id: Ie04a34b2149f4fc6fe995f3e43e76986a3f6330f\n"
    },
    {
      "commit": "be919d90adf8a5c68e6d4d5eea004a9d5be473d2",
      "tree": "f6fb545811b724bfc78f34089b866f606c5b9d8a",
      "parents": [
        "7c95b4e22897a6f14ef79ec6e547e2eed686814a"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Tue Aug 23 18:33:36 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 25 13:53:51 2016 +0000"
      },
      "message": "ARM64: Use the zero register for field and array set operations.\n\nTest: Run ART test suite on host and Nexus 9.\nChange-Id: I4e2a81570ecc57530249672df704eb0bb780acce\n"
    },
    {
      "commit": "953437bd51059801d92079295f728d0260efca31",
      "tree": "b52816b5092a143361ea3878ef0e06d311c4a56f",
      "parents": [
        "c67d22ac6db73aaa9540294c86344bf8021495b3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 24 08:30:46 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 24 13:20:32 2016 +0100"
      },
      "message": "Revert \"Revert \"x86/x86-64: Avoid temporary for read barrier field load.\"\"\n\nFixed the fault handler recognizing the TEST instruction and\nfault address within the lock word. Added tests to 439-npe.\n\nBug: 29966877\nBug: 12687968\nTest: Tested with ART_USE_READ_BARRIER\u003dtrue on host.\nTest: Tested with ART_USE_READ_BARRIER\u003dtrue ART_HEAP_POISONING\u003dtrue on host.\n\nThis reverts commit ccf15bca330f9a23337b1a4b5850f7fcc6c1bf15.\n\nChange-Id: I8990def5f719c9205bf6e5fdba32027fa82bec50\n"
    },
    {
      "commit": "ccf15bca330f9a23337b1a4b5850f7fcc6c1bf15",
      "tree": "8e271269eb0f3e40388311478fe441bfeb47ab47",
      "parents": [
        "ccf06d8f19a37432de4a3b768747090adfbd18ec"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 23 17:48:38 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 23 17:48:38 2016 +0000"
      },
      "message": "Revert \"x86/x86-64: Avoid temporary for read barrier field load.\"\n\nFault handler does not recognize the instruction\n    F6 /0 ib    TEST r/m8, imm8\nso we get crashes instead of NPEs.\n\nBug: 29966877\nBug: 12687968\n\nThis reverts commit ccf06d8f19a37432de4a3b768747090adfbd18ec.\n\nChange-Id: Ib7db3b59f44c0d3ed5e24a20b6c6ee596a89d709\n"
    },
    {
      "commit": "ccf06d8f19a37432de4a3b768747090adfbd18ec",
      "tree": "fcb3ba46184db6882e695cecf1cfe495417593ae",
      "parents": [
        "cf834d00de838272cf28f2382ffc26fe716aae5c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 12 13:37:55 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 23 11:41:44 2016 +0100"
      },
      "message": "x86/x86-64: Avoid temporary for read barrier field load.\n\nAdd TEST instructions for memory and immediate. Use the byte\nversion to avoid a temporary in read barrier field load.\n\nTest: Tested with ART_USE_READ_BARRIER\u003dtrue on host.\nTest: Tested with ART_USE_READ_BARRIER\u003dtrue ART_HEAP_POISONING\u003dtrue on host.\nBug: 29966877\nBug: 12687968\nChange-Id: Ia415d3c2e1ae1ff6dff11d72bbb7d96d5deed6ee\n"
    },
    {
      "commit": "9c07ab332b8ebbcb1586c311bfcb75e19b8a35b4",
      "tree": "26a300b803f77e64c17e3d239a1880a4c5960666",
      "parents": [
        "6670bd2098264d4c4e19750ab4741121da7ee54b",
        "bf44e0e5281de91f2e38a9378b94ef8c50ad9b23"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 19 17:33:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 19 17:33:03 2016 +0000"
      },
      "message": "Merge \"ART: Implement a fixed size string dex cache\""
    },
    {
      "commit": "0b671c0408e98824e1f92b1ee951b210c090fe7a",
      "tree": "0bc58c031cd899aa856677fe8c9ffa376228806f",
      "parents": [
        "36bf3a2d281892e7906d3eaf9d7455b0656c9a25"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 19 12:02:34 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 19 16:00:09 2016 +0100"
      },
      "message": "Add support for Baker read barriers in SystemArrayCopy intrinsics.\n\nBenchmarks (ARM64) score variations on Nexus 5X with CPU\ncores clamped at 960000 Hz (aosp_bullhead-userdebug build):\n- Ritzperf - average (lower is better):       -3.03% (slightly better)\n- CaffeineMark - average (higher is better):  +1.26% (slightly better)\n- DeltaBlue (lower is better):               -10.50% (better)\n- Richards - average (lower is better):       -3.36% (slightly better)\n- SciMark2 - average (higher is better):      +0.26% (virtually unchanged)\n\nDetails about Ritzperf benchmarks with meaningful variations\n(lower is better):\n- FormulaEvaluationActions.EvaluateAndApplyChanges: -13.26% (better)\n- FormulaEvaluationActions.EvaluateCascadingSums:   -10.94% (better)\n- FormulaEvaluationActions.EvaluateComplexFormulas: -15.50% (better)\n- FormulaEvaluationActions.EvaluateFibonacci:       -10.41% (better)\n- FormulaEvaluationActions.EvaluateLargeSums:        +6.02% (worse)\n\nBoot image code size variation on Nexus 5X\n(aosp_bullhead-userdebug build):\n- total ARM64 framework Oat files size change:\n  107047632 bytes -\u003e 107154128 bytes (+0.10%)\n- total ARM framework Oat files size change:\n  90932028 bytes -\u003e 91009852 bytes (+0.09%)\n\nTest: ART host and target (ARM, ARM64) tests + Nexus 5X boot.\nBug: 29516905\nBug: 29506760\nBug: 12687968\nChange-Id: I85431368d09965687a0301ae2eb3c991f276ce5d\n"
    },
    {
      "commit": "bf44e0e5281de91f2e38a9378b94ef8c50ad9b23",
      "tree": "bb6e65a3434806dc58f286ee75ad3b78ba9d6c36",
      "parents": [
        "d99565069c64fefc069005286de04599dc2619b8"
      ],
      "author": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Thu Aug 18 10:37:42 2016 -0700"
      },
      "committer": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Thu Aug 18 16:18:36 2016 -0700"
      },
      "message": "ART: Implement a fixed size string dex cache\n\nPreviously, the string dex cache was dex_file-\u003eNumStringIds() size, and\n@ruhler found that only ~1% of that cache was ever getting filled. Since\nmany of these string dex caches were previously 100,000+ indices in\nlength, we\u0027re wasting a few hundred KB per app by storing null pointers.\nThe intent of this project was to reduce the space the string dex cache\nis using, while not regressing on time that much. This is the first of a\nfew CLs, which implements the new fixed size array and disables the\ncompiled code so it always goes slow path. In four other CLs, I\nimplemented a \"medium path\" that regresses from the previous \"fast path\"\nonly a bit in assembly in the entrypoints. @vmarko will introduce new\ncompiled code in the future so that we ultimately won\u0027t be regressing on\ntime at all. Overall, space savings have been confirmed as on the order\nof 100 KB per application.\n\nA 4-5% slow down in art-opt on Golem, and no noticeable slow down in the\ninterpreter. The opt slow down should be diminished once the new\ncompiled code is introduced.\n\nTest: m test-art-host\n\nBug: 20323084\n\nChange-Id: Ic654a1fb9c1ae127dde59290bf36a23edb55ca8e\n"
    },
    {
      "commit": "554b6fb8759d186eba1046c220c9cff9a8610525",
      "tree": "0b28f10d2235c82ba13f75829a018457d2ce9a66",
      "parents": [
        "fe74ba9ea6c2c47a02d2ba7436b3a603b459468c",
        "4a3aa578eff94eb10450fae1772deb7cb8ddc6a6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Aug 15 14:35:48 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 15 14:35:48 2016 +0000"
      },
      "message": "Merge \"Revert \"Enable IntermediateAddress for primitive arrays with read barriers.\"\""
    },
    {
      "commit": "4a3aa578eff94eb10450fae1772deb7cb8ddc6a6",
      "tree": "abb3aa17279c6a9edc9dd1c0691738a7f7c69a10",
      "parents": [
        "12ecf0800d465acdaa3deccd383ff8ed3428a183"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 15 13:17:06 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 15 13:17:06 2016 +0000"
      },
      "message": "Revert \"Enable IntermediateAddress for primitive arrays with read barriers.\"\n\nThis CL breaks the angler-userdebug build with\n`ART_USE_READ_BARRIER\u003dtrue`.\n\nTest: Build angler-userdebug with `ART_USE_READ_BARRIER\u003dtrue`.\nBug: 30762467\nBug: 26601270\nBug: 12687968\n\nThis reverts commit 12ecf0800d465acdaa3deccd383ff8ed3428a183.\n\nChange-Id: Ia2069ac9436d2336311dd8d0f183c02e587586ae\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": "51616fb233df2760fd6002a02dce692f24b93fb6",
      "tree": "61766bfa4bb53bf8f57a6c2645e81d375aa902bf",
      "parents": [
        "c10ad423024432df36f6360eafca8332d07b946a",
        "12ecf0800d465acdaa3deccd383ff8ed3428a183"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 08 10:16:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 08 10:16:43 2016 +0000"
      },
      "message": "Merge \"Enable IntermediateAddress for primitive arrays with read barriers.\""
    },
    {
      "commit": "12ecf0800d465acdaa3deccd383ff8ed3428a183",
      "tree": "229f7438b82c945f4b3221f6c1033eaf96a9a1c6",
      "parents": [
        "d16ae7fe70d74091778e5952b7920df14866287f"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 08 10:18:37 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Aug 08 10:18:37 2016 +0100"
      },
      "message": "Enable IntermediateAddress for primitive arrays with read barriers.\n\nTest: ART host and target (ARM, ARM64) tests.\nBug: 26601270\nBug: 12687968\nChange-Id: I6736ba7b1809bece1bf3cd82c69e4f42a0d3c4a7\n"
    },
    {
      "commit": "965c0b9f98a4acbec7be148291196e30784bba2d",
      "tree": "c9b53c36226535f2941d47a1ea222da114266680",
      "parents": [
        "2e98023165349ab91855555f63fed8dad3c471fe",
        "952dbb19cd094b8bfb01dbb33e0878db429e499a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 04 14:44:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 04 14:44:10 2016 +0000"
      },
      "message": "Merge \"Change suspend entrypoint to save all registers.\""
    },
    {
      "commit": "952dbb19cd094b8bfb01dbb33e0878db429e499a",
      "tree": "82932c2b00245042e2c129f3d4133f6431657da3",
      "parents": [
        "df638c66d1f385d4e217b2ab22c5e48a7eefdef4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 28 12:01:51 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 04 14:51:52 2016 +0100"
      },
      "message": "Change suspend entrypoint to save all registers.\n\nWe avoid the need to save/restore registers in slow paths\nand get significant code size savings. On Nexus 9, AOSP:\n  - 32-bit boot.oat: -1.4MiB (-1.9%)\n  - 64-bit boot.oat: -2.0MiB (-2.3%)\n  - other 32-bit oat files in dalvik-cache: -200KiB (-1.7%)\n  - other 64-bit oat files in dalvik-cache: -2.3MiB (-2.1%)\n\nTest: Run ART test suite on host and Nexus 9 with gc stress.\nBug: 30212852\nChange-Id: I7015afc1e7d30341618c9200a3dc9ae277afd134\n"
    },
    {
      "commit": "36a270ae4f288e49493432b7128f899ad579849e",
      "tree": "99f134bbfe111b1c42b1b0c19d8b65175a3e6fc8",
      "parents": [
        "89bd8358c0a69e8cd6456d81d88ef366e261f732"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 28 18:08:51 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 03 15:46:18 2016 -0700"
      },
      "message": "Change one read barrier bit to mark bit\n\nOptimization to help slow path performance. When the GC marks an\nobject through the read barrier slow path. The GC sets the mark bit\nin the lock word of that reference. This bit is checked from the\nassembly entrypoint the common case is that it is set. If the bit is\nset, the read barrier knows the object is already marked and there is\nno work to do.\n\nTo prevent dirty pages in zygote and image, the bit is set by the\nimage writer and zygote space creation.\n\nEAAC score (lower is better):\nN9: 777 -\u003e 700 (average 31 of runs)\nN6P (960000 mhz): 1737.48 -\u003e 1442.31 (average of 25 runs)\n\nBug: 30162165\nBug: 12687968\n\nTest: N9, N6P booting, test-art-host, test-art-target all with CC\n\nChange-Id: Iae0cacfae221e33151d3c0ab65338d1c822ab63d\n"
    },
    {
      "commit": "89bd8358c0a69e8cd6456d81d88ef366e261f732",
      "tree": "e024d9507acadbc0ea1c142a83e9a3221baf7718",
      "parents": [
        "01b7982a45fe53218d432ed1e8172d9d032d93ab",
        "b2b753c85433d81bcf44ad35b7b053d8fc753148"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 03 17:56:02 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 03 17:56:03 2016 +0000"
      },
      "message": "Merge \"ARM64: Use the zero register in the parallel-move resolver.\""
    },
    {
      "commit": "a7426c6a9ceeec193f6d886df7d0dcb3018f919d",
      "tree": "51e3513626ec0faf4ed648032e498bbd5e9c40d9",
      "parents": [
        "d16ae7fe70d74091778e5952b7920df14866287f"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 03 15:02:10 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Aug 03 15:05:43 2016 +0100"
      },
      "message": "Fix an assertion in the non-Baker read barrier ARM64 slow path.\n\nTest: m ART_USE_READ_BARRIER\u003dtrue ART_READ_BARRIER_TYPE\u003dTABLELOOKUP test-art-target (ARM64).\nBug: 30563701\nChange-Id: Ib7969bd78e9c14cc2be9d5527d80385486b4f409\n"
    },
    {
      "commit": "b2b753c85433d81bcf44ad35b7b053d8fc753148",
      "tree": "a10d2fd40109c5ca4a31e78a1de9cc3b83d2ca18",
      "parents": [
        "d16ae7fe70d74091778e5952b7920df14866287f"
      ],
      "author": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Tue Aug 02 13:45:28 2016 +0100"
      },
      "committer": {
        "name": "Alexandre Rames",
        "email": "alexandre.rames@linaro.org",
        "time": "Wed Aug 03 09:24:31 2016 +0100"
      },
      "message": "ARM64: Use the zero register in the parallel-move resolver.\n\nWhen moving zero to a stack slot, this will change\n\n    mov temp, #0\n    str temp, [...]\n\ninto\n\n    str zr, [...]\n\nChange-Id: I2211b00d70f3fa0a02e781c90198757290b2bf89\n"
    },
    {
      "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": "dec8f63fdf50815f24efe1c03af64208da15f339",
      "tree": "36c8dec8c2c93312d17c6d9d1452d4b133212dbd",
      "parents": [
        "41c7e2e6ac0a59da2f3e066e20630b295fbe4661"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 22 17:10:06 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 22 18:54:35 2016 +0100"
      },
      "message": "Do not emit stack maps for runtime calls to ReadBarrierMarkRegX.\n\n* Boot image code size variation on Nexus 5X\n  (aosp_bullhead-userdebug build):\n  - total ARM64 framework Oat files size change:\n    115584120 bytes -\u003e 109124728 bytes (-5.59%)\n  - total ARM framework Oat files size change:\n    97387728 bytes -\u003e 92517584 (-5.00%)\n\nTest: ART host and target (ARM, ARM64) tests.\nBug: 29506760\nBug: 12687968\nChange-Id: I979d9fb2b4e09f4c0c7bf33af2cd91750a67f989\n"
    },
    {
      "commit": "057361ca33625ed14b33ffd8e641e27916fb2fea",
      "tree": "cf13a0b5c0e5504fdcf320ab9a9936d0d489bdf5",
      "parents": [
        "65ad9b3516c4f4bc4e7abf5c6e065a675cf024d8",
        "4359e61927866c254bc2d701e3ea4c48de10b79c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 21 12:11:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 21 12:11:15 2016 +0000"
      },
      "message": "Merge \"Move caller-saves saving/restoring to ReadBarrierMarkRegX.\""
    },
    {
      "commit": "4359e61927866c254bc2d701e3ea4c48de10b79c",
      "tree": "05d274ecd6b5ff6eb890f64cd3bb670c7170bf15",
      "parents": [
        "2be946bbf995496fe56364d9b7c4957fcb6aeec5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 20 11:32:19 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 21 11:21:20 2016 +0100"
      },
      "message": "Move caller-saves saving/restoring to ReadBarrierMarkRegX.\n\nInstead of saving/restoring live caller-save registers\nbefore/after the call to read barrier mark entry points\nReadBarrierMarkRegX, have these entry points save/restore\nall the caller-save registers themselves (except register\nrX, which contains the return value).\n\nAlso refactor the assembly code of these entry points\nusing macros.\n\n* Boot image code size variation on Nexus 5X\n  (aosp_bullhead-userdebug build):\n  - total ARM64 framework Oat files size change:\n    119196792 bytes -\u003e 115575920 bytes (-3.04%)\n  - total ARM framework Oat files size change:\n    100435212 bytes -\u003e 97621188 bytes (-2.80%)\n\n* Benchmarks (ARM64) score variations on Nexus 5X\n  (aosp_bullhead-userdebug build):\n  - RitzPerf (lower is better)\n    - average score difference: -2.71%\n  - CaffeineMark (higher is better)\n    - no real difference for most tests\n      (absolute variation lower than 1%)\n    - better score on the \"Method\" benchmark:\n      score variation 41253 -\u003e 44891 (+8.82%)\n\nTest: ART host and target (ARM, ARM64) tests.\nBug: 29506760\nBug: 12687968\nChange-Id: I881bf73139a3f1c2bee9ffc6fc8c00f9a392afa6\n"
    },
    {
      "commit": "a92938a17b75eed3213030faaff9cfb321d47f37",
      "tree": "c6db649f7c1f6b6a86eb568212a721aac4ee6d96",
      "parents": [
        "89b03e0cfb03e3194e39f07fa8c1bd46e3b28a34",
        "328429ff48d06e2cad4ebdd3568ab06de916a10a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 21 09:17:15 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 21 09:17:16 2016 +0000"
      },
      "message": "Merge \"ARM: Port instr simplification of array accesses.\""
    },
    {
      "commit": "328429ff48d06e2cad4ebdd3568ab06de916a10a",
      "tree": "6290ac8afc3e93488382727f6765f548a2cfff04",
      "parents": [
        "79e73245140f4115039a7284b3797d701f368fe6"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Wed Jul 06 16:23:04 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 21 09:16:43 2016 +0000"
      },
      "message": "ARM: Port instr simplification of array accesses.\n\nAfter changing the addressing mode for array accesses (in\nhttps://android-review.googlesource.com/248406) the \u0027add\u0027\ninstruction that calculates the base address for the array can be\nshared across accesses to the same array.\n\nBefore https://android-review.googlesource.com/248406:\n    add IP, r[Array], r[Index0], LSL #2\n    ldr r0, [IP, #12]\n    add IP, r[Array], r[Index1], LSL #2\n    ldr r0, [IP, #12]\n\nBefore this CL:\n    add IP. r[Array], #12\n    ldr r0, [IP, r[Index0], LSL #2]\n    add IP. r[Array], #12\n    ldr r0, [IP, r[Index1], LSL #2]\n\nAfter this CL:\n    add IP. r[Array], #12\n    ldr r0, [IP, r[Index0], LSL #2]\n    ldr r0, [IP, r[Index1], LSL #2]\n\nLink to the original optimization:\n    https://android-review.googlesource.com/#/c/127310/\n\nTest: Run ART test suite on Nexus 6.\nChange-Id: Iee26f9a0a7ca46abb90e3f60d19d22dc8dee4d8f\n"
    },
    {
      "commit": "e4b1c86d13c3f60362708f4a128b62db156f5fde",
      "tree": "4920c33f3510a21dba212650659174a7bb44c855",
      "parents": [
        "ce1ba111bfa122247ac186e7d2c6cf5943ba28cd",
        "465ecc86ff65ca546629630c9469deb6d2d8137e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 21 00:04:52 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 21 00:04:52 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Refactor GetIMTIndex\"\"\""
    }
  ],
  "next": "6740997e6934bbca27d5830a32352d82aabbd38b"
}
