)]}'
{
  "log": [
    {
      "commit": "de91ca90389e4b41ed27b320a6c43ff56a6d75ff",
      "tree": "2e18ff33d30fce88d578ea68b8b1037755aececc",
      "parents": [
        "9ca92fb4646eccff9f972f6a2a21709676b65460"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 27 13:41:40 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 29 15:42:52 2020 +0000"
      },
      "message": "Refactor Integer.valueOf() intrinsic implementation.\n\nPrepare for Reference.getReferent() intrinsic implementation\nby a refactoring to separate the retrieval of an intrinsic\nmethod\u0027s declaring class to its own helper function, rather\nthan being a part of a larger one.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_blueline-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 170286013\nChange-Id: Ib6c0e55d0c6fcc932999428f21c51afe32ab7ef2\n"
    },
    {
      "commit": "8d34a182fea1b24f7b8361b55e930cb953cf3fb2",
      "tree": "4f5ed9d9ac417dfd69fd18f64412b2272c448e05",
      "parents": [
        "8ecbc4e844fc3b73e6a5c5151eda914d53297180"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 16 09:46:58 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 07 08:32:52 2020 +0000"
      },
      "message": "Change interface conflict stub to take the interface method.\n\nTo avoid doing dex cache lookup, pass the interface method instead. This\ncosts a few hundred KBs on speed compiled APKs (\u003c 0.5% code size), but\nimproves performance when hitting a conflict (as seen on dogfood data).\n\nFor nterp, we currently pass the conflict method instead of the\ninterface method. We need to handle default methods before optimizing\nit.\n\nThis removes our last use of dex cache in compiled code. A follow-up CL\nwill remove the NeedsDexCacheOfDeclaringClass from HInvokeInterface.\n\nTest: test.py\n\nChange-Id: I3cdd4543ad7d904b3e81950af46a48a48af6991a\n"
    },
    {
      "commit": "6d69b52f331f788cbd1f21ffd5b87cb3b39965e4",
      "tree": "2bca1001afb4c3fc45cbb198765c51aa65e45c42",
      "parents": [
        "e407d97b0f25562110511d025058dcefdacca623"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 14:47:28 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 14:47:28 2020 +0100"
      },
      "message": "Move MethodLoadKind out of HInvokeStaticOrDirect.\n\nTo prepare for using it in HInvokeInterface. For consistency, also move\nCodePtrLocation.\n\nTest: test.py\nChange-Id: I84f973764275002e2adb71080ebc833b2bafb975\n"
    },
    {
      "commit": "e6c0f2a75bd969253279580e2e4772e54787034b",
      "tree": "79598b2b6b457d9c718ddb18e29a0211a73ae85a",
      "parents": [
        "63c0c2d9da31d26781f5e77aba6125f0d0988795"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 07 08:30:52 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 08 13:51:53 2020 +0000"
      },
      "message": "Pass a full  MethodReference of the invoke in HInvoke nodes.\n\nCleanup to ensure we don\u0027t make mistakes when passing a dex method index\nto the HInvoke constructor, and we know which dex file it relates to.\n\nTest: test.py\nChange-Id: I625949add88a6b97e1dafeb7aed37961e105d6aa\n"
    },
    {
      "commit": "1ca6f32dd26f97e2617c45627b470d548d573975",
      "tree": "ebb64a8b0507ff1b245e77aa435d4ca183874baf",
      "parents": [
        "02fd071c03c8587ff2bbea639c165b24c11d9a2f"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Wed Aug 12 08:58:07 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 13 09:41:48 2020 +0000"
      },
      "message": "Revert^2 \"Revert^2 \"X86: VarHandle.Get() intrinsic for static primitive fields.\"\"\n\nThis reverts commit 0e5e1772fb6ed3dcbd1cdaf09e3c8cd2020091d5.\n\nReason for revert: Relanding the change. It was reverted because it\nseemed to be the source of a test failure, but it turned out to be a\nknown flaky test (Bug: 147572335).\n\nChange-Id: I572d2d1951b0909641a73df0b3ef2fd453f62d8b\n"
    },
    {
      "commit": "0e5e1772fb6ed3dcbd1cdaf09e3c8cd2020091d5",
      "tree": "53daaedc7d7a07bec449723521dcfaad3782de83",
      "parents": [
        "c3c7dff8784ab409fe0c3e47d9516ed0bc6f6cc9"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 11 23:03:59 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 12 00:56:06 2020 +0000"
      },
      "message": "Revert \"Revert^2 \"X86: VarHandle.Get() intrinsic for static primitive fields.\"\"\n\nThis reverts commit ed0acfdaffdbf3c76fa57b15150390dabb4c69aa.\n\nReason for revert: Failing buildbot test\n\nChange-Id: Ib43f526de492f9a09075c6c57658b7a14d05b168\n"
    },
    {
      "commit": "ed0acfdaffdbf3c76fa57b15150390dabb4c69aa",
      "tree": "c353c4191ba3d61ad5afda3ccef173f73121a79a",
      "parents": [
        "04bc725e1eafb567be44f64f27e441efcc0bc150"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Aug 11 10:10:40 2020 +0000"
      },
      "committer": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Tue Aug 11 12:05:00 2020 +0000"
      },
      "message": "Revert^2 \"X86: VarHandle.Get() intrinsic for static primitive fields.\"\n\nTest: art/test.py --host --32 -r -t 712-varhandle-invocations\nTest: ART_READ_BARRIER_TYPE\u003dTABLELOOKUP ART_HEAP_POISONING\u003dtrue\nSOONG_ALLOW_MISSING_DEPENDENCIES\u003dtrue TARGET_BUILD_UNBUNDLED\u003dtrue\nart/test/testrunner/testrunner.py --interpreter --optimizing --host\n--dex2oat-jobs 4 -b --dist --verbose -t 712-varhandle-invocations\n\nBug: 65872996\n\nThis reverts commit e74df4c3f269f2f624fa6f093c48f901fe971002.\n\nReason for revert: Relanding the change. Support only Baker-style\nread barriers for VarHandleGet.\n\nChange-Id: Id02ff69350fb2a2f701a96a591b7efd52f1060e7\n"
    },
    {
      "commit": "e74df4c3f269f2f624fa6f093c48f901fe971002",
      "tree": "31366eed138d6971725433da4349d0b048f9963e",
      "parents": [
        "fc12a6cb415b2eacee0459fd170490a407c2548a"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Mon Aug 10 09:35:51 2020 +0000"
      },
      "committer": {
        "name": "Ulyana Trafimovich",
        "email": "skvadrik@google.com",
        "time": "Mon Aug 10 12:52:14 2020 +0000"
      },
      "message": "Revert \"X86: VarHandle.Get() intrinsic for static primitive fields.\"\n\nThis reverts commit d9af38a3b76fc54909148456da2701666bade6e0.\n\nReason for revert: Broken build git_master-art-host/art-read-barrier-table-lookup @ 6749888\n\nChange-Id: I17f5717e3a9a204568526fc72bce5d56a383e38d\n"
    },
    {
      "commit": "d9af38a3b76fc54909148456da2701666bade6e0",
      "tree": "91e4d6c4307fd79738f7f89ab25a7d922854175d",
      "parents": [
        "bf78fb558fc6c8a2cb71890f9981ad64d10d486e"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Wed Aug 05 13:17:54 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 07 14:20:51 2020 +0000"
      },
      "message": "X86: VarHandle.Get() intrinsic for static primitive fields.\n\nTest: art/test.py --host --32 -r -t 712-varhandle-invocations\nBug: 65872996\nChange-Id: I8f1eeb1c9041ae55b3a159a6eb1e356687e574e9\n"
    },
    {
      "commit": "e3e187f29fa4025e30c5a43decb2b6f6c584d59c",
      "tree": "b38e434558cc2c6d7a8153c709a9884313cd4df1",
      "parents": [
        "1a277a6e5d5152b4fe4dd5717432ecf8941ec820"
      ],
      "author": {
        "name": "Andra Danciu",
        "email": "andradanciu@google.com",
        "time": "Thu Jul 30 12:19:31 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 10:03:16 2020 +0000"
      },
      "message": "Check if VarHandle access mode is supported.\n\nThis commit checks if a VarHandle access mode is supported. If not, an\nUnsupportedOperationException is raised by calling the runtime to handle it.\n\nI added the polymorphic intrinsics case in the IntrinsicSlowPath\ncode generation to handle all the eventual exceptions. For now,\nnone of the operations are actually compiled. If the slow path is\nnot called, the runtime handles the operation.\n\nBug: b/65872996\nTest: art/test.py --host -r -t 712-varhandle-invocations --32\nTest: art/test.py --host --all-compiler -r\nChange-Id: I5a637561549b3fdd64fa53e2d7dbf835d3ae0d64\n"
    },
    {
      "commit": "dec7817522eeaf8f88dcae9ce065969aeebda3b3",
      "tree": "a15fd16ccb4a1929ec60584ead8f095b565c9e3e",
      "parents": [
        "ea4d7d2d52dd9795cf39eccd46cb07551c62392f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 19 15:31:23 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 22 08:05:28 2020 +0000"
      },
      "message": "Optimizing: Introduce {Increase,Decrease}Frame().\n\nAnd use it to clean up code generators.\n\nAlso fix CFI in MaybeIncrementHotness() for arm/arm64/x86.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --host --debuggable --ndebuggable \\\n          --optimizing --jit --jit-on-first-use -t 178\nTest: aosp_cf_x86_phone-userdebug boots.\nTest: aosp_cf_x86_phone-userdebug/jitzygote boots.\nTest: # On blueline:\n      testrunner.py --target --debuggable --ndebuggable \\\n          --optimizing --jit --jit-on-first-use -t 178\nBug: 112189621\nChange-Id: I524e6c3054ffe1b05e2860fd7988cd9995df2963\n"
    },
    {
      "commit": "86c8752f64629325026945cd4eabd1dcea224acb",
      "tree": "9dc2be978f9e784a3ce16fa29d46941a94ac1c94",
      "parents": [
        "f97a859e85f703644d897f0e3e1bc54315557aaa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 11 16:55:55 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 19 08:26:46 2020 +0000"
      },
      "message": "Direct calls to @CriticalNative methods.\n\nEmit direct calls from compiled managed code to the native\ncode registered with the method, avoiding the JNI stub.\n\nGolem results:\nart-opt-cc                       x86 x86-64    arm  arm64\nNativeDowncallStaticCritical  +12.5% +62.5% +75.9% +41.7%\nNativeDowncallStaticCritical6 +55.6% +87.5% +72.1% +35.3%\nart-opt                          x86 x86-64    arm  arm64\nNativeDowncallStaticCritical  +28.6% +85.6% +76.4% +38.4%\nNativeDowncallStaticCritical6 +44.6% +44.6% +74.6% +32.2%\n\nTest: Covered by 178-app-image-native-method.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --debuggable --ndebuggable \\\n          --optimizing --jit --jit-on-first-use\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: testrunner.py --target --debuggable --ndebuggable \\\n          --optimizing --jit --jit-on-first-use -t 178\nTest: aosp_cf_x86_phone-userdebug boots.\nTest: aosp_cf_x86_phone-userdebug/jitzygote boots.\nBug: 112189621\nChange-Id: I8b37da51e8fe0b7bc513bb81b127fe0416068866\n"
    },
    {
      "commit": "54f4fbd1a6834f06dc9b644b865423fdc03afb15",
      "tree": "4f55b2a196453a8a197a1787a688cc299682e55d",
      "parents": [
        "2d3de3a40015af07f7645a298f77b398af0c6c2c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 10:52:22 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 13 09:14:02 2020 +0000"
      },
      "message": "Remove MIPS support from Optimizing.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 147346243\nChange-Id: I97fdc15e568ae3fe390efb1da690343025f84944\n"
    },
    {
      "commit": "57cacb720e6f995aa1a42df6e2e6470a9ec57261",
      "tree": "bb73a113c94bc397cd7c99a4c64e033bf29b9803",
      "parents": [
        "013d1ee96b928f3bda9031e94d4a69f827133ce6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Dec 08 22:07:08 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 17 09:48:00 2019 +0000"
      },
      "message": "Refactor OSR related code to prepare for \"true\" OSR.\n\n- Make the compiler restore all callee-save registers.\n- Make the compiler return any value in a core register: this simplifies\n  the current stub, and will also avoid having to look at the return\n  type (and reading the shorty) when returning to an nterp frame.\n- Add OsrData and offsets of its members to be used by nterp.\n\nTest: test.py\nBug: 27094810\nChange-Id: Ifa4f4877ab8b1f0c6a96feccea30c909942eb2fa\n"
    },
    {
      "commit": "a59af8aeaad8fe7d68d8f8de63eab9cf85b6ab31",
      "tree": "83195c74b135731cc4555254763a8f449691c1b0",
      "parents": [
        "5c8cc64b5f1580faf510f27527e7e22987174963"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 27 17:42:32 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 14:32:09 2019 +0000"
      },
      "message": "JIT baseline: trigger optimized compilation on hotness threshold.\n\n- Add a new hotness count in the ProfilingInfo to not conflict with\ninterpreter hotness which may use it for OSR.\n- Add a baseline flag in the OatQuickMethodHeader to identify baseline\ncompiled methods.\n- Add a -Xusetieredjit flag to experiment and test.\n\nBug: 119800099\nTest: test.py with Xusetieredjit to true\n\nChange-Id: I8512853f869f1312e3edc60bf64413dee9143c52\n"
    },
    {
      "commit": "0a51605ddd81635135463dab08b6f7c21b58ffb0",
      "tree": "820f338333010f4d6e4b543ffea47e9ff7d2dd3f",
      "parents": [
        "e2727154f25e0db9a5bb92af494d8e47b181dfcf"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 14 13:00:44 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 14 13:00:44 2019 +0000"
      },
      "message": "Revert \"Make compiler/optimizing/ symbols hidden.\"\n\nThis reverts commit e2727154f25e0db9a5bb92af494d8e47b181dfcf.\n\nReason for revert: Breaks ASAN tests (ODR violation).\nBug: 142365358\n\nChange-Id: I38103d74a1297256c81d90872b6902ff1e9ef7a4\n"
    },
    {
      "commit": "e2727154f25e0db9a5bb92af494d8e47b181dfcf",
      "tree": "0ddc6eec3ad9508d7eb1f2b941786dd0ed7d2cd8",
      "parents": [
        "c78860b91ae07eed92f86876e7a03132adea6fcd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 10 10:46:42 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 14 08:22:00 2019 +0000"
      },
      "message": "Make compiler/optimizing/ symbols hidden.\n\nMake symbols in compiler/optimizing hidden by a namespace\nattribute. The unit intrinsic_objects.{h,cc} is excluded as\nit is needed by dex2oat.\n\nAs the symbols are no longer exported, gtests are now linked\nwith the static version of the libartd-compiler library.\n\nlibart-compiler.so size:\n  - before:\n    arm: 2396152\n    arm64: 3345280\n  - after:\n    arm: 2016176 (-371KiB, -15.9%)\n    arm64: 2874480 (-460KiB, -14.1%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nBug: 142365358\nChange-Id: I1fb04a33351f53f00b389a1642e81a68e40912a8\n"
    },
    {
      "commit": "98416bf06592493ee6fde039af5eaa5efab73acc",
      "tree": "a0052ec5364ce1068639a9b7d7355683eb691371",
      "parents": [
        "63b0c26aae3e7237166dd781eb7a15fbc7c091c2"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Mon Sep 09 14:52:12 2019 +0100"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Thu Oct 10 13:06:08 2019 +0100"
      },
      "message": "Fix uses of MaybeRecordImplicitNullCheck without special scopes\n\nMaybeRecordImplicitNullCheck is a function which uses\nCodeGenerator::RecordPcInfo() and requires an exact PC. However for ARM32/ARM64,\nwhen CodeGenerator::RecordPcInfo() is used without VIXL special scopes (EmissionCheckScope,\nExactAssemblyScope) there is no guarantee of an exact PC. Without the special scopes VIXL might\nemit veneer/literal pools affecting a PC.\nThe ARM32 code generator has uses of MaybeRecordImplicitNullCheck without the\nspecial scopes.\n\nThis CL fixes missing special scopes in the ARM32/ARM64 code generators.\nIt also changes API to prevent such cases:\n1. A variant of CodeGenerator::RecordPcInfo with native_pc as a\nparameter is added. The old variant (where Assembler::CodePosition is used) is\nkept and documented that Assembler::CodePosition is target-dependent and\nmight be imprecise.\n2. CodeGenerator::MaybeRecordImplicitNullCheck is made virtual. Checks\nare added to ARM32/ARM64 code generators that\nMaybeRecordImplicitNullCheck is invoked within VIXL special scopes.\n\nTest: test.py --host --optimizing --jit --gtest\nTest: test.py --target --optimizing --jit\nTest: run-gtests.sh\n\nChange-Id: Ic66c16e7bdf4751cbc19a9de05846fba005b7f55\n"
    },
    {
      "commit": "2808be84a8f86542450670acdb5e6b55498ff5f0",
      "tree": "f41b63e3109a6a6a9bd534f32b8d92f20eb9ef35",
      "parents": [
        "460f05480379d5c75555d06c4938bc990ce6ff83"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Thu Dec 20 19:15:11 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 15 09:30:36 2019 +0000"
      },
      "message": "ART: Introduce stackmap with no DexRegInfo.\n\nSome of safepoints don\u0027t need to have DexRegisterMap info;\nthis will decrease the stackmap size.\n\n.oat file size reduction:\n - boot.oat:           -233 kb (-5.4%)\n - boot-framework.oat: -704 kb (-4.9%)\n\nTest: 461-get-reference-vreg, 466-get-live-vreg.\nTest: 543-env-long-ref, 616-cha*.\nTest: test-art-target, +gc-stress.\n\nChange-Id: Idbad355770e30a30dcf14127642e03ee666878b8\n"
    },
    {
      "commit": "552a13415573da19eafa46e1ac00fb0eb68f2b23",
      "tree": "8cae5f3602d8f8e65cd3cbc349af17d785128605",
      "parents": [
        "0dda8c84938d6bb4ce5a1707e5e109ea187fc33d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 10:56:47 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 14:44:09 2019 +0000"
      },
      "message": "ART: Optimize StringBuilder append pattern.\n\nRecognize appending with StringBuilder and replace the\nentire expression with a runtime call that perfoms the\nappend in a more efficient manner.\n\nFor now, require the entire pattern to be in a single block\nand be very strict about the StringBuilder environment uses.\nAlso, do not accept StringBuilder/char[]/Object/float/double\narguments as they throw non-OOME exceptions and/or require a\ncall from the entrypoint back to a helper function in Java;\nthese shall be implemented later.\n\nBoot image size for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19653872\n   arm64/boot*.oat: 23292784\n   oat/arm64/services.odex: 22408664\n - after:\n   arm/boot*.oat: 19432184 (-216KiB)\n   arm64/boot*.oat: 22992488 (-293KiB)\n   oat/arm64/services.odex: 22376776 (-31KiB)\nNote that const-string in compiled boot image methods cannot\nthrow, but for apps it can and therefore its environment can\nprevent the optimization for apps. We could implement either\na simple carve-out for const-string or generic environment\npruning to allow this pattern to be applied more often.\n\nResults for the new StringBuilderAppendBenchmark on taimen:\n  timeAppendLongStrings: ~700ns -\u003e ~200ns\n  timeAppendStringAndInt: ~220ns -\u003e ~140ns\n  timeAppendStrings: ~200ns -\u003e 130ns\n\nBug: 19575890\nTest: 697-checker-string-append\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: vogar --benchmark art/benchmark/stringbuilder-append/src/StringBuilderAppendBenchmark.java\nChange-Id: I51789bf299f5219f68ada4c077b6a1d3fe083964\n"
    },
    {
      "commit": "bf5f0f3f1eea2e712e7269ff1e1f9b1bcc4cbaee",
      "tree": "030ef55b56ede3dbf42b6b5f19c59bfc0583636f",
      "parents": [
        "7e057ec0e023910f6bc42bc552a8463343cf346f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 05 15:41:50 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 06 14:21:51 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Add code size to CodeInfo\"\"\n\nThis reverts commit e1412dacbf1d2a809bd1fca658cc8cb8f61f8ee6.\n\nBug: 123510633\nBug: 127305289\n\nReason for revert: b/127305289\n\nChange-Id: I54557b05a44777f1fa2c15bde4fa648980f42eed\n"
    },
    {
      "commit": "038924b75f06b91c2a7e944196ca11f118ce182f",
      "tree": "fb3073918686ec6f54dce65d2697c0e46f05a272",
      "parents": [
        "03c6b174a4e412e9bb62935c4ee15b5445e517f2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 19 15:09:35 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 20 10:40:05 2019 +0000"
      },
      "message": "ART: Reduce dependencies on CompilerDriver.\n\nPreparation for moving CompilerDriver and other stuff\nfrom libart-compiler.so to dex2oat.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ic221ebca4b8c79dd1549316921ace655f2e3f0fe\n"
    },
    {
      "commit": "e1412dacbf1d2a809bd1fca658cc8cb8f61f8ee6",
      "tree": "bb3f56ecefe08b66f7a330a02caef0b089a0c2af",
      "parents": [
        "8f20a23a35fa6fbe4dcb4ff70268a24dc7fb2a24"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Feb 13 17:27:17 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Feb 14 09:43:00 2019 +0000"
      },
      "message": "Revert^2 \"Add code size to CodeInfo\"\n\nThis temporarily adds 0.25% to oat file size.\nThe space will be reclaimed back in follow-up CL.\n\nThis reverts commit 8f20a23a35fa6fbe4dcb4ff70268a24dc7fb2a24.\n\nReason for revert: Reland as-is after CL/903819\n\nBug: 123510633\nTest: DCHECK compare the two stored code sizes.\nChange-Id: Ia3ab31c208948f4996188764fcdcba13d9977d19\n"
    },
    {
      "commit": "8f20a23a35fa6fbe4dcb4ff70268a24dc7fb2a24",
      "tree": "84dc682b40f38d0377639befe6f3d43e5655a43c",
      "parents": [
        "68efa7b1128486e08ae60cd27181645b27bbd2e4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 19:42:54 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 19:42:54 2019 +0000"
      },
      "message": "Revert \"Add code size to CodeInfo\"\n\nThis reverts commit 68efa7b1128486e08ae60cd27181645b27bbd2e4.\n\nReason for revert: Breaks tests\n\nChange-Id: I28fb143990f58e0d5f0b106bea9d9a159f19297e\n"
    },
    {
      "commit": "68efa7b1128486e08ae60cd27181645b27bbd2e4",
      "tree": "bb3f56ecefe08b66f7a330a02caef0b089a0c2af",
      "parents": [
        "794350fd0e21aa9e259b6c45394494871e7fdb13"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jan 28 18:59:23 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Feb 11 13:23:53 2019 +0000"
      },
      "message": "Add code size to CodeInfo\n\nThis temporarily adds 0.25% to oat file size.\nThe space will be reclaimed back in follow-up CL.\n\nBug: 123510633\nTest: DCHECK compare the two stored code sizes.\nChange-Id: I15340824ca637fd075a4cef87771b06cb96bb9f4\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "3db70689e3e1c92344d436a8ea4265046bdef449",
      "tree": "3db08743e968062ed5bdc143233cdb3c4564696b",
      "parents": [
        "1650dafad62578a1766bd617d78458a4cf1e2a9a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 26 15:12:03 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 27 12:56:39 2018 -0800"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles compiler.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I5cdfe73c31ac39144838a2736146b71de037425e\n"
    },
    {
      "commit": "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06",
      "tree": "b68a5f5163f8da0da87d671a225addaa2a13095f",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 11:33:18 2018 -0800"
      },
      "message": "C++17 compatibility: make WITH_TIDY\u003d1 happy again.\n\nBug: http://b/111067277\nTest: builds\nChange-Id: I8b69ea3815e14bb6eb27f40c0dd01a85b340a355\n"
    },
    {
      "commit": "875b4f26517ce215342746f07e41cda4c1991237",
      "tree": "16d061e67632c2980af958383db77883eabbdf1f",
      "parents": [
        "3573c3669b281e0fa6c59019d4e9de5d37e651ea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 12:59:15 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 20 13:04:36 2018 -0800"
      },
      "message": "ART: Avoid some tidy nullptr warnings\n\nSprinkle some (D)CHECKs to tell tidy our expectations.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I315b1602b20475402dd8383e1accc49e5a63eb5c\n"
    },
    {
      "commit": "b546163926889130354ccdbcccb80c0331c13f3c",
      "tree": "b4a3fb30e11e2abc671fb0b4b8098acd8fc49ce2",
      "parents": [
        "8db807252e1d4d0bab7785be231e20a1e5fd8e74"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 15 14:24:21 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 16 10:47:24 2018 +0100"
      },
      "message": "Fix HNewArray with unresolved primitive array type.\n\nAnd enable test 920-objects that was crashing because\nof this bug.\n\nTest: testrunner.py --host --jit-on-first-use -t 920\nTest: testrunner.py --host --optimizing\nTest: m test-art-host-gtest\nBug: 117638896\nChange-Id: I47dc893b121c82de537b3147c86d37a6eecf2d62\n"
    },
    {
      "commit": "ac3ac681a1d1d5d5d4662b7e4d3cf8e0b4d53d27",
      "tree": "803b02eabfb6af718561d0dfd83d61e4bccbfa28",
      "parents": [
        "8402166d0e3b5d91ab867a7dcd7218f824afe3ff"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 20 11:01:43 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 20 15:48:38 2018 +0100"
      },
      "message": "Pass JIT roots as a vector\u003cHandle\u003c\u003e\u003e to JIT cache.\n\nThis avoids creating an object on the heap and thus\nprevents issues for the 904-object-allocation in the\nJIT-at-first-use configuration.\n\nTest: run_build_test_target.py -j48 art-jit-on-first-use\n      (test 904 passes; test 1935 still failing).\nBug: 116189667\nChange-Id: I58c0c8cb2d78edc63dab7d72e69b882abbfb79fd\n"
    },
    {
      "commit": "04695984d8687f13174ca03a943603831d7d0227",
      "tree": "897d895e7ca561347215ec2d1babdabb922509c0",
      "parents": [
        "ddfbb5f63c1ceb445bc62f48e9333706f9eebe2f",
        "d1aa7d0eec33e5f297d1eadedda714d4d0a3ef91"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Sep 03 12:11:51 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 03 12:11:51 2018 +0000"
      },
      "message": "Merge \"ART: Remove unneeded SideEffects for fatal instructions.\""
    },
    {
      "commit": "d1aa7d0eec33e5f297d1eadedda714d4d0a3ef91",
      "tree": "e8a3876705be966611a06659e9f4b848205f3957",
      "parents": [
        "11529ab4cdf06e579182fa4252170aa4541f4ce9"
      ],
      "author": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Jun 22 11:35:46 2018 +0100"
      },
      "committer": {
        "name": "Artem Serov",
        "email": "artem.serov@linaro.org",
        "time": "Fri Aug 31 12:34:32 2018 +0100"
      },
      "message": "ART: Remove unneeded SideEffects for fatal instructions.\n\nRemove \"CanTriggerGC\" side effect for NullCheck, BoundsCheck and\nDivZeroCheck - instructions which have fatal slow paths. Even though\nGC might happen after going through those instructions\u0027 slow path\nexecution doesn\u0027t return to the next instruction after the\nexceptional one so side effects can be relaxed.\n\nPerformance improvement (angler, arm64, little core):\n - Geomean:                      2.8%\n - Particular benchmarks\n   - algorithm/Sort.SystemSort: 13.0%\n   - stanford/IntMM:            12.7%\n   - stanford/Puzzle:            9.5%\n   - benchmarksgame/revcomp:     8.9%\n   - reversigame/Reversi:        3.5%\n\nTest: 510-checker-try-catch.\nTest: 706-checker-scheduler.\nTest: 527-checker-array-access-split.\nTest: test-art-host, test-art-target.\n\nChange-Id: I55ac011822e5dbac82c828a700213dbea87329c8\n"
    },
    {
      "commit": "61ba8d2421a98e9b16510be4f9af7ca7bc4c9055",
      "tree": "9a79331dd5ebd46ed46f853b24ab072f43debf28",
      "parents": [
        "eb369ce3669be74dd89b21f8b3ab31ace4a47086"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 07 09:55:57 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 20 17:18:31 2018 +0100"
      },
      "message": "Fix longstanding bug around implicit NPEs and GC, version 2.\n\nThe TODO has been there since M (so forever :)):\nhttps://android-review.googlesource.com/c/platform/art/+/122794/13//COMMIT_MSG#13\n\nWe hardly see the issue in our tests as we need to have:\n1) A GC happening while creating the NPE object.\n2) ParallelMoves between the NullCheck and implicit null check operation\n   that moves references.\n\nThe CL piggy backs on the \"IsEmittedAtUseSite\" flag, to set implicit\nnull checks with it. The liveness analysis then special cases implicit\nnull checks to record environment uses at the location of the actual\ninstruction that will do the implicit null check.\n\nTest: test.py --gcstress\nTest: run-libcore-tests --gcstress\nbug: 111545159\nChange-Id: I3ecea4fe0d7e483e93db83281ca10db47da228c5\n"
    },
    {
      "commit": "8e7ddc234ecbde21b0e6755cf66bcad858a817d2",
      "tree": "89808276b8bb306e55e9879307c52b9234616233",
      "parents": [
        "f0e805deaa0e13ee4d8ccee7df5fd25a0652d993",
        "e7a9194558379ee24fde82fcaeaee29542df1520"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Aug 03 14:06:06 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 03 14:06:06 2018 +0000"
      },
      "message": "Merge \"Simplify StackMapStream encoding.\""
    },
    {
      "commit": "e7a9194558379ee24fde82fcaeaee29542df1520",
      "tree": "30f3c43f2d64f159503bb8c3442aa39cc6cb612e",
      "parents": [
        "f50419eee7290542db07bff23c4f65e693ba037f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 17:23:53 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 03 12:48:49 2018 +0100"
      },
      "message": "Simplify StackMapStream encoding.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ife021d03e4e486043ec609f9af8673ace7bde497\n"
    },
    {
      "commit": "9d479254d0dc4043a15ab26205f40439eca15493",
      "tree": "af8a9c9c6f2c28e723a971c9d39c9d1cebd1f814",
      "parents": [
        "ca20fb6cc4dda392e63bdc8ec9de54d89793373e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 24 11:35:20 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 11:43:30 2018 +0000"
      },
      "message": "Rename type resolution entrypoints.\n\nRename the InitializeType and InitializeTypeAndVerifyAccess\nentrypoints to Resolve* to better match their semantics.\nKeep the InitializeStaticStorage name for now as the most\nappropriate name InitializeType would clash with the old\nname of the ResolveType entrypoint.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ide55b58c490d085ab37d8536f90699f7ed571d59\n"
    },
    {
      "commit": "a9f303c089aa2b2fc82d97201352945678ef54ae",
      "tree": "0df0eb5294a3ee72aea8ca670762c02ca9ffa8dd",
      "parents": [
        "1bfd891d06e276d602b4a6ccf1a9f70967195218"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 20 16:43:56 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 02 17:41:21 2018 +0100"
      },
      "message": "Rewrite Class init entrypoint to take a Class arg.\n\nFixes invalid type index being passed to the entrypoint for\nclass init check across dex files when the target type does\nnot have a TypeId in the compilation unit\u0027s DexFile.\n\nThe size of the aosp_taimen-userdebug prebuilts:\n  - before:\n    arm/boot*.oat: 16782748\n    arm64/boot*.oat: 19764400\n    oat/arm64/services.odex: 20162432\n  - after:\n    arm/boot*.oat: 16811692 (+28.3KiB, +0.17%)\n    arm64/boot*.oat: 19801032 (+35.8KiB, +0.19%)\n    oat/arm64/services.odex: 20232208 (+68.1KiB, +0.35%)\nThis increase comes from doing two runtime calls instead of\none for HLoadClass/kBssEntry that MustGenerateClinitCheck().\n\nTest: Additional test in 476-clinit-inline-static-invoke\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nTest: testrunner.py --jvm\nBug: 111433619\nChange-Id: I2fccd6944480ab4dac514f60d38e72c1014ae7b2\n"
    },
    {
      "commit": "8cd54547cec8a4537db5682c2da8be22843b1310",
      "tree": "fb1158993bab2e027984cedab59b402c051a45a7",
      "parents": [
        "91f0fdb4372d3f2bcfcd9db67afcbe7ee1901048"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jul 15 23:58:44 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 14:49:40 2018 +0100"
      },
      "message": "Move MethodInfo to CodeInfo.\n\nThere is no need to treat it specially any more,\nbecause of the de-duplication at BitTable level.\n\nThis saves 0.6% of oat file size.\n\nTest: test-art-host-gtest\nChange-Id: Ife7927d736243879a41d6f325d49ebf6930a63f6\n"
    },
    {
      "commit": "2c76257e4bfcd6f522b0cd3487ba7d9900043243",
      "tree": "ab1098cffcb3e13087e770d26fef9f4d6f06a550",
      "parents": [
        "0b4a439f808f4602c7b97364e49c5546f5100d51"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 27 10:09:11 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 13 16:32:11 2018 +0100"
      },
      "message": "Remove unused InvokeInfo from stack maps and the runtime.\n\nTest: test-art-host-gtest\nChange-Id: I5ce28973042f9241e72ceb52fc5db472ca571563\n"
    },
    {
      "commit": "f07d5617770c37d87447c8bddf105eb0469ab093",
      "tree": "e6b15b904e591a3b805b292ce9afd9b0cecbf40d",
      "parents": [
        "2dc252e37d4df0c4160cd20b6fc852f5f28b7b87",
        "a043111e3a2c09b549708a6227a1f54d91da76aa"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 27 12:23:54 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 27 12:23:54 2018 +0000"
      },
      "message": "Merge \"Move instruction_set_ to CompilerOptions.\""
    },
    {
      "commit": "f6ba5b316b51d0fb9f91cb51a42e51dfeee62ee4",
      "tree": "ac3b776ae3c20fc957949d06dd878ef3ffa6ffb5",
      "parents": [
        "cca7cb9ffa56d8ab8fd0c5997c8bfd965d7426c1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sat Jun 23 22:05:49 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 26 16:51:15 2018 +0100"
      },
      "message": "Add method frame info to CodeInfo.\n\nThe stored information will be used in follow-up CLs.\n\nThis temporarily increases .oat file size by 0.7%.\n\nTest: test-art-host-gtest\nChange-Id: Ie7d898b06398ae44287bb1e8153861ab112a216c\n"
    },
    {
      "commit": "a043111e3a2c09b549708a6227a1f54d91da76aa",
      "tree": "393fe11cfceccebf474e4bdf36ff79b70b97f589",
      "parents": [
        "213ee2da6a1c58d0fc12c937bbd9c9974ca00aca"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 09:32:54 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 25 18:43:19 2018 +0100"
      },
      "message": "Move instruction_set_ to CompilerOptions.\n\nRemoves CompilerDriver dependency from ImageWriter and\nseveral other classes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nChange-Id: I3c5b8ff73732128b9c4fad9405231a216ea72465\n"
    },
    {
      "commit": "45b12e704e158f29877c78bd9a8406db7e361537",
      "tree": "1bfc21d88a173b4a751a37a223a39d7c12976f95",
      "parents": [
        "c9633c80c2125814a8a7459079c1931a5c201011",
        "e1402125e8363b49e176c6072893d1c110a05d2f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 13:37:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 14 13:37:36 2018 +0000"
      },
      "message": "Merge \"Move some helper methods to DexRegisterLocation.\""
    },
    {
      "commit": "e1402125e8363b49e176c6072893d1c110a05d2f",
      "tree": "44ec055be78cdcb8086a598cbf791f8c4627e157",
      "parents": [
        "86decb6a3e3ebba8c3c67bfd25c12d9a85794f65"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 18:20:45 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jun 14 12:31:44 2018 +0100"
      },
      "message": "Move some helper methods to DexRegisterLocation.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I0abab008159db023d531df69214cd3bb8c0639bd\n"
    },
    {
      "commit": "50fac06c51864f293c61ff9d0983b82698cf6dac",
      "tree": "7f7d09fa8aeacf4b5a255085af02970347a54cd0",
      "parents": [
        "86decb6a3e3ebba8c3c67bfd25c12d9a85794f65"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 18:55:35 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 13 19:03:09 2018 +0100"
      },
      "message": "Add Kind column to stack maps.\n\nAdd \u0027Kind\u0027 column to stack maps which marks special stack map types,\nand use it at run-time to add extra sanity checks.\n\nIt will also allow us to binary search the stack maps.\n\nThe column increases .oat file by 0.2%.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I2a9143afa0e32bb06174604ca81a64c41fed232f\n"
    },
    {
      "commit": "4c8e12e66968929b36fac6a2237ca4b04160161e",
      "tree": "d8bbfd72a978c69ef2eef98c37e7869673c52295",
      "parents": [
        "20c64f8d802cc575cc9a1a1f6c493a611b23e2ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 18 08:33:20 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jun 11 10:57:17 2018 +0100"
      },
      "message": "ART: Adds an entrypoint for invoke-custom\n\nAdd support for the compiler to call into the runtime for\ninvoke-custom bytecodes.\n\nBug: 35337872\nTest: art/test.py --host -r -t 952\nTest: art/test.py --target --64 -r -t 952\nTest: art/test.py --target --32 -r -t 952\nChange-Id: I821432e7e5248c91b8e1d36c3112974c34171803\n"
    },
    {
      "commit": "cd260ebf53e0e05bd75c37c4139f32782eb4ad97",
      "tree": "dab8e9054c59c16303ab9c8aeed01edeb0bb12da",
      "parents": [
        "408bdc604e4fe230bf90ffa6816bfbbb3786806e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 06 09:04:17 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jun 08 14:56:10 2018 +0100"
      },
      "message": "ART: Simplify invoke-polymorphic entrypoints\n\nMoves to pattern used by the interpreter bridge and writes the result\nin both the regular return register and the floating point result\nregister.\n\nAdd return value tests to 956-method-handles.\n\nTest: art/test.py --host -r -t 956\nTest: art/test.py --target --32 -r -t 956\nTest: art/test.py --target --64 -r -t 956\nChange-Id: I7389d04b70b88e149682f6d656ab185e48bcbf66\n"
    },
    {
      "commit": "71ec1cc0665cdb9d39f4fd284d68962020417a53",
      "tree": "8d19b11ab3e04213c46b1b12ae94dbf54b305bfb",
      "parents": [
        "03f16e4de1e3289414888fe0a5104205a781bd2f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri May 18 15:57:25 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jun 01 13:26:46 2018 +0100"
      },
      "message": "Rewrite dex register map encoding in stackmaps.\n\nSimplify code by encoding dex register maps using BitTables.\nThe overall design is unchanged (bitmask+indices+catalogue).\n\nThis CL saves ~0.4% of .oat file size.\n\nThe dex register map decoding is factor of 3 faster now\n(based on the time to verify the register maps on Arm).\nThis is not too surprising as the old version was O(n^2).\n\nIt also reduces compiler arena memory usage by 11% since the\nBitTableBuilder is more memory efficient, we store less\nintermediate data, and we deduplicate most data on the fly.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: Ib703a5ddf7f581280522d589e4a2bfebe53c26a9\n"
    },
    {
      "commit": "d02b23f7ee9664213216a82bfdcb0ee83824de04",
      "tree": "254b794533a6821c2ed2df31fab807abf7d508a4",
      "parents": [
        "08231f6cb3095a7dbde29299a7da5413a5f992e4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue May 29 23:27:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed May 30 17:59:24 2018 +0100"
      },
      "message": "Remove the CodeOffset helper class.\n\nI need to reduce the StackMapEntry to a POD type so that it\ncan be used in BitTableBuilder.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I5f9ad7fdc9c9405f22669a11aea14f925ef06ef7\n"
    },
    {
      "commit": "052f8ca1776ed7deb4f036498edd69eb6a1b942f",
      "tree": "ae993f1a634b258e124df12663a1d24859917b05",
      "parents": [
        "1c515f0b9d621869a2e67ce5e0f5532d0f2f323a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 26 15:42:54 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon May 21 20:28:41 2018 +0100"
      },
      "message": "Rewrite stackmap encoding code.\n\nRemove most of the code related to handling of bit encodings.\nThe design is still same; the encodings are just more implicit.\nMost of the complexity is replaced with a single BitTable class,\nwhich is a generic purpose table of tightly bit-packed integers.\nIt has its own header which stores the bit-encoding of columns,\nand that removes the need to handle the encodings explicitly.\n\nOther classes, like StackMap, are accessors into the BitTable,\nwith named getter methods for the individual columns.\n\nThis CL saves ~1% of .oat file size (~4% of stackmap size).\n\nTest: test-art-host-gtest\nChange-Id: I7e92683753b0cc376300e3b23d892feac3670890\n"
    },
    {
      "commit": "06d10a78506fae7e033795cda7b1d9d0e1f1fff5",
      "tree": "91f94a605395776710f3d14298613a803158f3aa",
      "parents": [
        "93d301397c83b08f6fc165847a3d518e1031f392"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 08:53:38 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon May 14 16:49:55 2018 +0100"
      },
      "message": "ART: Add dex::ProtoIndex\n\nTest: m -j32 test-art-host\nChange-Id: Ic2d2a7a43be1b8590b97cdf3729200b043ffc6a3\n"
    },
    {
      "commit": "dbaa5c7ba8935cf87ceb40a4054f9842929e9a51",
      "tree": "5037625c80cb97a0e13026dc450db28e59ff72ca",
      "parents": [
        "51dda39549033b3c50a7fce5522ffc81325db54b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 08:22:46 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 11 11:55:30 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-handle\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I67f461c819a7d528d7455afda8b4a59e9aed381c\n"
    },
    {
      "commit": "18259d7fb7164a5e029df4f883b3a79ccc2403e8",
      "tree": "ba378bfdef4127bb0607215186e3b150fd38bcdf",
      "parents": [
        "922501b4bbf724e4259477a27764291684eedffb"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 12 11:18:23 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 15:04:09 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-type\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I4b3d3969d455d0198cfe122eea8abd54e0ea20ee\n"
    },
    {
      "commit": "ca1e038eb94694f0f1f94ed3781572411c85d365",
      "tree": "90ad2c2494821c2f3d904eb42e61fbecd7acaf9d",
      "parents": [
        "3f967b25650e44cd61f5a1112727a8218f2b0804"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 11 09:58:41 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 11 11:10:10 2018 +0100"
      },
      "message": "Revert^2 \"Compile link-time thunks in codegen.\"\n\nThe linker crash (the reason for revert) is flaky and maybe\nwe shall not see it with this CL now that unrelated source\ncode has changed.\n\nTest: Rely on TreeHugger\nBug: 36141117\nBug: 77581732\n\nThis reverts commit 5806a9ec99b5494b511e84c74f494f0b3a8ebec5.\n\nChange-Id: I3a4a058847dff601681ba391abf45833424fa06d\n"
    },
    {
      "commit": "5806a9ec99b5494b511e84c74f494f0b3a8ebec5",
      "tree": "bb50d00ff0890c2e10f351f462b47b56b01e78ea",
      "parents": [
        "c9dd2207dfdab42586b1d6a5e7f11cf2fcea3a7a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 04 17:23:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 04 17:23:28 2018 +0000"
      },
      "message": "Revert \"Compile link-time thunks in codegen.\"\n\nReason for revert: This caused clang linker crash\nin several branches.\n\nBug: 77581732\n\nThis reverts commit c9dd2207dfdab42586b1d6a5e7f11cf2fcea3a7a.\n\nChange-Id: I1923809083cf41c4f19e3e60df03ae80517aaedb\n"
    },
    {
      "commit": "c9dd2207dfdab42586b1d6a5e7f11cf2fcea3a7a",
      "tree": "879df31fd10658093b8931117ee617064ce82519",
      "parents": [
        "30a2d9c61da75359dee4ce90236d19fc6341b07a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 23 16:05:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 04 10:34:36 2018 +0100"
      },
      "message": "Compile link-time thunks in codegen.\n\nPrepare for experimenting with Baker read barrier marking\nintrospection entrypoints for JIT.\n\nTest: m test-art-host-gtest\nTest: Compare compiled boot*.oat before and after (no diff).\nTest: Pixel 2 XL boots.\nBug: 36141117\nChange-Id: Idb413a31b158db4bf89a8707ea46dd167a06f110\n"
    },
    {
      "commit": "312f3b2fd0094c028a7d243b116947a35a745806",
      "tree": "3d7ec049ded98c489098c87250c75e3f711f8290",
      "parents": [
        "0a3d5eb2ff9e70fa5785638da938439835d0337e"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 08:39:26 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 19 11:02:48 2018 -0700"
      },
      "message": "Move some remaining dex utilities\n\nThere were several utilities related to building/walking/testing dex\nfiles that were not in libdexfile.  This change consolidates these.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Id76e9179d03b8ec7d67f7e0f267121f54f0ec2e0\n"
    },
    {
      "commit": "e47f60c482648172334aaca59e6c1ab7a3d42610",
      "tree": "ae0672b12a6ad200e1c38962c77bccfc3e5cb531",
      "parents": [
        "b066d43b1d9184899aff32b1f243d092611ad9c6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 21 13:43:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 08 10:40:12 2018 +0000"
      },
      "message": "Retrieve String/Class references from .data.bimg.rel.ro.\n\nFor PIC AOT-compiled app, use the .data.bimg.rel.ro to load\nthe boot image String/Class references instead of using the\nmmapped boot image ClassTable and InternTable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --pictest --npictest\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --pictest --npictest\nBug: 71526895\nChange-Id: Id5703229777aecb589a933a41f92e44d3ec02a3d\n"
    },
    {
      "commit": "67bf42e89592c3a1c648f927f2ce3ccb189a1161",
      "tree": "054d5b7adf7cc62d4d2a2118a70c0fbdd1751610",
      "parents": [
        "d961043ff1dd6fddb68aa90c1f939cfafec24219"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Feb 26 16:43:04 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Feb 28 15:08:21 2018 -0800"
      },
      "message": "Header library to remove dependence on runtime/\n\nAdd a new header library to remove libdexfile and others\u0027 dependence on\nruntime (typically runtime/base) includes in libdexfile.  Also a small step\nto tease dexlayout and profman away from relying on these as well.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host-gtest\n\nChange-Id: I38e2fe399a75f4bc6318c77a71954c00ea73ec2b\n"
    },
    {
      "commit": "698ebbca3c54d17c696e87b9e5838df6a5ac9b08",
      "tree": "7887b2cd4662410114f205bbe1896ff094d51407",
      "parents": [
        "4b9a11f1d43df69c50e93ba1793fce1c2216682b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 05 11:00:42 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 08 09:11:49 2018 -0800"
      },
      "message": "Clean up CodeItemAccessors and Compact/StandardDexFile\n\nChange constructor to use a reference to a dex file.\n\nRemove duplicated logic for GetCodeItemSize.\n\nBug: 63756964\nTest: test-art-host\nChange-Id: I69af8b93abdf6bdfa4454e16db8f4e75883bca46\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "73f21d45a41aaad1a02eecdf3bbdbf78ef599d5e",
      "tree": "88d52c615cd8ec5bd8d2fad44fddeef0911e2458",
      "parents": [
        "d096b3a09f0e7129813fb663fec5b5f131565d71"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 14:26:50 2018 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 02 17:53:21 2018 -0800"
      },
      "message": "Remove CodeItem accessor functions\n\nThese are replaced by the accessor helpers.\n\nBug: 63756964\nTest: test-art-host\nTest: test/testrunner/testrunner.py --host -j30\n\nChange-Id: Ic93d60b68b684eeb5f69be286b4e15b8f8f97542\n"
    },
    {
      "commit": "8758454d380a2b0de1f4a99e9623cfac5460ccdf",
      "tree": "0c23241949fc3ab94c826a18ffa2185218521bd4",
      "parents": [
        "e619f6c51d0ff99a00c63d3d092e0132522e8fc8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 12 17:47:52 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 14 16:05:15 2017 +0000"
      },
      "message": "Clean up InstanceOf/CheckCast.\n\nAvoid read barriers for boot image class InstanceOf. Boot\nimage classes are non-moveable, so comparing them against\nfrom-space and to-space reference yields the same result.\n\nChange the notion of a \"fatal\" type check slow path to mean\nthat the runtime call shall not return by normal path, i.e.\n\"fatal\" now includes certainly throwing in a try-block. This\navoids unnecessary code to restore registers and jump back.\nFor boot image classes the CheckCast comparisons do not need\nread barriers (for the same reason as for InstanceOf), so we\nshall not have any false negatives and can treat the check\u0027s\nslow paths as final in the same cases as in non-CC configs.\n\nBoot image size for aosp_taimen-userdebug in AOSP master:\n  - before:\n    arm boot*.oat: 37075460\n    arm64 boot*.oat: 43431768\n  - after:\n    arm boot*.oat: 36894292 (-177KiB, -0.5%)\n    arm64 boot*.oat: 43201256 (-225KiB, -0.5%)\n\nAlso remove some obsolete helpers from CodeGenerator.\n\nTest: Additional test in 603-checker-instanceof.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nBug: 12687968\nChange-Id: Ib1381084e46a10e70320dcc618f0502ad725f0b8\n"
    },
    {
      "commit": "fec85cdfa337dfb1f1c6d5bd9a940bc2d20a0edb",
      "tree": "ffb6eab50cd38f92631c2f2fb85accc7074b1221",
      "parents": [
        "dc93cac66f1db225474cec5bf0350fd7a148085e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 04 13:00:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 04 15:22:50 2017 +0000"
      },
      "message": "Minor cleanup in CodeGenerator::RecordPcInfo().\n\nAnd remove HInvokeInterface::GetDexMethodIndex() as the\nbase class version is identical.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I489bff5b3f624eec19269487529e29d58f068960\n"
    },
    {
      "commit": "cd09e1f4f9902b82fa62cb2da984ea499e3b2d70",
      "tree": "535f7f75849af30b67c560804125ead95909d72b",
      "parents": [
        "72a3f1da3a300b486626b066e33280108b5ce994"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 24 15:02:40 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 27 19:02:34 2017 +0000"
      },
      "message": "Fix stats reporting over 100% methods compiled.\n\nAdd statistics for intrinsic and native stub compilation\nand JIT failing to allocate memory for committing the\ncode. Clean up recording of compilation statistics.\n\nNew statistics when building aosp_taimen-userdebug boot\nimage with --dump-stats:\n  Attempted compilation of 94304 methods: 99.99% (94295) compiled.\n  OptStat#AttemptBytecodeCompilation: 89487\n  OptStat#AttemptIntrinsicCompilation: 160\n  OptStat#CompiledNativeStub: 4733\n  OptStat#CompiledIntrinsic: 84\n  OptStat#CompiledBytecode: 89478\n  ...\nwhere 94304\u003d89487+4733+84 and 94295\u003d89478+4733+84.\n\nTest: testrunner.py -b --host --optimizing\nTest: Manually inspect output of building boot image\n      with --dump-stats.\nBug: 69627511\nChange-Id: I15eb2b062a96f09a7721948bcc77b83ee4f18efd\n"
    },
    {
      "commit": "92f7f3ce3b01f7c7df1c15b81c900e087248093f",
      "tree": "37647ac824e450f80d752539cabbe631ba795c75",
      "parents": [
        "5dcb0d2cabe9d67987a6a7477fb124cef92abefb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 11:38:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 15 14:29:52 2017 +0000"
      },
      "message": "Use intrinsic codegen for compiling intrinsic methods.\n\nWhen compiling an intrinsic method, generate a graph that\ninvokes the same method and try to compile it. If the call\nis actually intrinsified (or simplified to other HIR) and\nyields a leaf method, use the result of this compilation\nattempt, otherwise compile the actual code or JNI stub.\n\nNote that CodeGenerator::CreateThrowingSlowPathLocations()\nactually marks the locations as kNoCall if the throw is not\nin a catch block, thus considering some throwing methods\n(for example, String.charAt()) as leaf methods.\n\nWe would ideally want to use the intrinsic codegen for all\nintrinsics that do not generate a slow-path call to the\ndefault implementation. Relying on the leaf method is\nsuboptimal as we\u0027re missing out on methods that do other\ntypes of calls, for example runtime calls. This shall be\nfixed in a subsequent CL.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 67717501\nChange-Id: I640fda7c22d4ff494b5ff77ebec3b7f5f75af652\n"
    },
    {
      "commit": "5f317039d87d74f25d3b0a442072557086742d17",
      "tree": "6beae56f543d234b49a2f973dcbeb5f6f0bd2b90",
      "parents": [
        "72627a5f675b1c664beb2ad33d60a1c8dca80826",
        "2b2bef245d5b2c6faa2d6f36da14866b2d8f5e4f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 03 15:56:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 03 15:56:22 2017 +0000"
      },
      "message": "Merge \"Refactor DexInstructionIterator\""
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "2b2bef245d5b2c6faa2d6f36da14866b2d8f5e4f",
      "tree": "7948ee1d32e211198a595bb7ed35558d22838da8",
      "parents": [
        "f199f1d3a9816edf9282766a8874d894d7bf87c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 26 17:10:19 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 01 15:36:21 2017 -0700"
      },
      "message": "Refactor DexInstructionIterator\n\nAdd a way to get the dex PC for the \"for each\" use case.\n\nBug: 67104794\nTest: test-art-host\nChange-Id: I144c459c9a2a03ec8d56842280338d1f7ce1caf0\n"
    },
    {
      "commit": "43f0cdbe3281cd5c9a33d5472b1538e5617f6691",
      "tree": "afed702b60c483bd5fa63be7cb3ad866b83d24d1",
      "parents": [
        "26ef34c01ae5db2d3c964844b3717b8974a612c9"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Oct 10 14:47:32 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 01 16:22:45 2017 +0000"
      },
      "message": "ART: Intrinsify polymorphic signature methods\n\nAdds VarHandle accessor method to list of intrinsics.\n\nAdds code to interpreter to ensure intrinsics with polymorphic\nsignatures are initialized.\n\nRename most uses of InvokePolymorphic to InvokeMethodHandle (and\nsimilar changes) to be clear that the particular code path applies to\nMethodHandle instances rather than VarHandle.\n\nChange-Id: Ib74865124a1e986badc0a7c4bb3d782af07225d4\nBug: 65872996\nTest: art/test.py --host\n"
    },
    {
      "commit": "174b2e27ebf933b80f4e8b64b4b024ab4306aaac",
      "tree": "968cdd8d7fd68571115db77cc288807c3b257911",
      "parents": [
        "6783118d2ad9d759f0617b1219a9e29a10a569f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 12 13:34:49 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 17 11:12:08 2017 +0100"
      },
      "message": "Use ScopedArenaAllocator for code generation.\n\nReuse the memory previously allocated on the ArenaStack by\noptimization passes.\n\nThis CL handles only the architecture-independent codegen\nand slow paths, architecture-dependent codegen allocations\nshall be moved to the ScopedArenaAllocator in a follow-up.\n\nMemory needed to compile the two most expensive methods for\naosp_angler-userdebug boot image:\n  BatteryStats.dumpCheckinLocked() : 19.6MiB -\u003e 18.5MiB (-1189KiB)\n  BatteryStats.dumpLocked(): 39.3MiB -\u003e 37.0MiB (-2379KiB)\n\nAlso move definitions of functions that use bit_vector-inl.h\nfrom bit_vector.h also to bit_vector-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 64312607\nChange-Id: I84688c3a5a95bf90f56bd3a150bc31fedc95f29c\n"
    },
    {
      "commit": "bea75ff0835324076fed6ff5d443b9e02c65d223",
      "tree": "61ae2e8fe552938fcae1e277f51823ba2a4f6e74",
      "parents": [
        "567563a9c6ccc06c2c9889d1c3c4feaa3c2b2dab"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 11 20:39:54 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 12 10:58:02 2017 +0100"
      },
      "message": "Fix using LiveIntervals beyond their lifetime.\n\nFixes a bug introduced by\n    https://android-review.googlesource.com/504041\n\nTest: test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 64312607\nChange-Id: I7fd2d55c2a657f736eaed7c94c41d1237ae2ec0b\n"
    },
    {
      "commit": "e764d2e50c544c2cb98ee61a15d613161ac6bd17",
      "tree": "112aa7ca459d2edb4f800897060a2407fcc622c7",
      "parents": [
        "ca6fff898afcb62491458ae8bcd428bfb3043da1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 05 14:35:55 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 09 10:39:22 2017 +0100"
      },
      "message": "Use ScopedArenaAllocator for register allocation.\n\nMemory needed to compile the two most expensive methods for\naosp_angler-userdebug boot image:\n  BatteryStats.dumpCheckinLocked() : 25.1MiB -\u003e 21.1MiB\n  BatteryStats.dumpLocked(): 49.6MiB -\u003e 42.0MiB\nThis is because all the memory previously used by Scheduler\nis reused by the register allocator; the register allocator\nhas a higher peak usage of the ArenaStack.\n\nAnd continue the \"arena\"-\u003e\"allocator\" renaming.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 64312607\nChange-Id: Idfd79a9901552b5147ec0bf591cb38120de86b01\n"
    },
    {
      "commit": "ca6fff898afcb62491458ae8bcd428bfb3043da1",
      "tree": "195a6b16d3a4b34acc2faf91ce56f448efb15e07",
      "parents": [
        "aa7273e56fbafc2692c8d20a31b50d2f4bdd2aa1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 03 14:49:14 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 06 17:53:50 2017 +0100"
      },
      "message": "ART: Use ScopedArenaAllocator for pass-local data.\n\nPasses using local ArenaAllocator were hiding their memory\nusage from the allocation counting, making it difficult to\ntrack down where memory was used. Using ScopedArenaAllocator\nreveals the memory usage.\n\nThis changes the HGraph constructor which requires a lot of\nchanges in tests. Refactor these tests to limit the amount\nof work needed the next time we change that constructor.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Build with kArenaAllocatorCountAllocations \u003d true.\nBug: 64312607\nChange-Id: I34939e4086b500d6e827ff3ef2211d1a421ac91a\n"
    },
    {
      "commit": "1d2d4ff8570bb88d9d2d4633706fd7f6fb18d75e",
      "tree": "cbe67e8e9214828656314117121e8ce906a762ab",
      "parents": [
        "e5b35ed787fbfb388d162361310bae5b0e7682a7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Sep 23 16:11:06 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 27 11:51:53 2017 -0700"
      },
      "message": "Add DexInstructionIterator and use it a few places\n\nMotivation:\nWant to start abstracting away dex specific functionality to enable\nCompactDex. Adding an iterator will enable CompactDex iteration to\nwork differently than normal dex iteration.\n\nWill eventually replace CodeItemIterator.\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: I90e67c1a994b7698aaac0523a82816b0a003fbdc\n"
    },
    {
      "commit": "0ebe0d83138bba1996e9c8007969b5381d972b32",
      "tree": "a5ee66ebc5b587ade97e56ac8fc7d832fbbed4af",
      "parents": [
        "e1e347dace0ded83774999bb26c37527dcdb1d5a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 21 22:50:39 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 25 15:45:01 2017 +0100"
      },
      "message": "ART: Introduce compiler data type.\n\nReplace most uses of the runtime\u0027s Primitive in compiler\nwith a new class DataType. This prepares for introducing\nnew types, such as Uint8, that the runtime does not need\nto know about.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 23964345\nChange-Id: Iec2ad82454eec678fffcd8279a9746b90feb9b0c\n"
    },
    {
      "commit": "d8dbc8da0e5cc6b5c2176ce2d3877e6194d72c0c",
      "tree": "af6e9fb02471d75ebdea46190a0aa3e9dbdb892d",
      "parents": [
        "93780a60090356921b844dbefdc13442c9f18b52"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 13:37:47 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 20 15:55:10 2017 +0100"
      },
      "message": "Refactor compiled_method.h .\n\nMove LinkerPatch to compiler/linker/linker_patch.h .\nMove SrcMapElem to compiler/debug/src_map_elem.h .\nIntroduce compiled_method-inl.h to reduce the number\nof `#include`s in compiled_method.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Id211cdf94a63ad265bf4709f1a5e06dffbe30f64\n"
    },
    {
      "commit": "1e065a54845da12541572f4f149e6ab0dcd20180",
      "tree": "061d28c8905c7bc8ac50c8c86f4073034afb5ba2",
      "parents": [
        "f573972a087b798f74bf5404e271355a2805e100"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Aug 09 13:20:34 2017 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Aug 11 10:23:07 2017 -0700"
      },
      "message": "optimizing: Refactor statistics to use OptimizingCompilerStats helper\n\nRemove all copies of \u0027MaybeRecordStat\u0027, replacing them with a single\nOptimizingCompilerStats::MaybeRecordStat helper.\n\nChange-Id: I83b96b41439dccece3eee2e159b18c95336ea933\n"
    },
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "9983e302384c12a975c8d2d5ae239f79fd8e1996",
      "tree": "4e4d269fe1a3d4f0f1b93cd972adab9f17aab8e0",
      "parents": [
        "bac2bd1c2fbdd94f4d4dfe83d8451f655e875e36"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 14 14:34:22 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jul 14 17:25:39 2017 +0100"
      },
      "message": "Remove the old ARM code generator from ART\u0027s Optimizing compiler.\n\nThe AArch32 VIXL-based code generator has been the default\nARM code generator in ART for some time now. The old ARM\ncode generator does not compile anymore; retiring it.\n\nTest: test.py\nBug: 63316036\nChange-Id: Iab8fbc4ac73eac2c1a809cd7b22fec6b619755db\n"
    },
    {
      "commit": "5678db5b3a0275d04bc610236f89fac9f76b5b1e",
      "tree": "efc4ffe5d59a0c6c5f4c15a886459962d24de4aa",
      "parents": [
        "83b140474aa1759739c8ee4464bf226c4fa0f6d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 14:11:18 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 14:11:18 2017 -0700"
      },
      "message": "ART: Refactor bit_utils and stl_util\n\nMove iterator code from bit_utils.h into bit_utils_iterator.h. Move\nIdentity into stl_util_identity.h. Remove now unnecessary includes,\nand fix up transitive users.\n\nTest: m\nChange-Id: Id1ce9cda66827c5d00584f39ed310b6b37629906\n"
    },
    {
      "commit": "3c8a91250b3e4e87548ec16bf1ab1ea46dbb84a4",
      "tree": "b5da100b358d1335eab403372e4f616c5c2d607c",
      "parents": [
        "0a87f31513e5f9da27856af054d2241452898b22",
        "e7197bf7d58c705a048e13e241d7ca320502cd40"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jun 07 10:38:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 07 10:38:11 2017 +0000"
      },
      "message": "Merge \"Replace invoke kind kDexCacheViaMethod with kRuntimeCall.\""
    },
    {
      "commit": "e7197bf7d58c705a048e13e241d7ca320502cd40",
      "tree": "496032b40145660b40002b9d5b7a78f1c2eeb44f",
      "parents": [
        "4ee8e291a7d5b7b98f35f495eb97705836910871"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 17:00:23 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 06 15:26:42 2017 +0100"
      },
      "message": "Replace invoke kind kDexCacheViaMethod with kRuntimeCall.\n\nIn preparation for replacing the dex cache method array\nwith a hash-based array, get rid of one unnecessary use.\nThis method load kind is currently used only on mips for\nirreducible loops and OSR, so this should have no impact\non x86/x86-64/arm/arm64.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Repeat the above tests with manually changing\n      kDexCachePcRelative to kRuntimeCall in sharpening.cc.\n      (Ignore failures in 552-checker-sharpening.)\nBug: 30627598\nChange-Id: Ifce42645f2dcc350bbb88c2f4642e88fc5f98152\n"
    },
    {
      "commit": "0a50965275df2da590c49a7a955e6ff5a7c7d2ae",
      "tree": "7c4b3f2ebab0abb1c13239878450dc2bf7aaca08",
      "parents": [
        "ab6393400f0dd213d335092c6e83f6a8743f00c2",
        "4ee8e291a7d5b7b98f35f495eb97705836910871"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 05 14:40:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 05 14:40:25 2017 +0000"
      },
      "message": "Merge \"Revert^3 \"ART: Reference.getReferent intrinsic for x86 and x86_64\"\""
    },
    {
      "commit": "2c97600c1107931825bf9f7f25517e89b7210ab4",
      "tree": "1951ed02eaf1abac7257d22c5881366c3fe493ba",
      "parents": [
        "af8d813133af6e2988296c9cc19719a9186f4cc8",
        "847e6ce98b4b822fd94c631975763845978ebaa3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 05 09:04:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 05 09:04:21 2017 +0000"
      },
      "message": "Merge \"Rename kDexCacheViaMethod to kRuntimeCall for HLoadClass/String.\""
    },
    {
      "commit": "4ee8e291a7d5b7b98f35f495eb97705836910871",
      "tree": "90aa3ea4a0674905b0f6fdb313cab129ca112a56",
      "parents": [
        "d254f5c0d7b43397e8b8885a56ec4d36e9b61602"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 15:39:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 16:48:23 2017 +0100"
      },
      "message": "Revert^3 \"ART: Reference.getReferent intrinsic for x86 and x86_64\"\n\nReverting because GenerateCalleeMethodStaticOrDirectCall()\nprevents replacing kDexCacheViaMethod with kRuntimeCall\nwhere we would not retrieve the target method at all and\nleave the runtime to retrieve and call it just like for\nunresolved methods.\n\nThe intrinsic should be re-implemented by loading the\nflags through HLoadClass.\n\nNote that the intrinsic was unimplemented for CC.\n\nTest: Rely on TreeHugger.\nBug: 32535355\nBug: 30627598\n\nThis reverts commit 288c7a8664e516d7486ab85267050e676e84cc39.\n\nChange-Id: Ia22864553ff55562897571e180b11926ccd51588\n"
    },
    {
      "commit": "b486a98aadc95d80548953410cf23edba62259fa",
      "tree": "b113b7d50a4a015502873b7742c9ece00d293e84",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 13:45:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 02 08:24:02 2017 -0700"
      },
      "message": "ART: Introduce thread-current-inl.h\n\nFactor out Thread::Current() code into its own -inl file to remove\ntransitive includes.\n\nThis requires at the same time correcting mutex.h, i.e., moving\nsome functions into mutex-inl.h.\n\nTest: m test-art-host\nChange-Id: I88f888b604e0897368d9b483edce6ce4332dd9c9\n"
    },
    {
      "commit": "847e6ce98b4b822fd94c631975763845978ebaa3",
      "tree": "760e26dea1597d8219d8c515317d978b0213cdc1",
      "parents": [
        "cff1b21b3e19c5d3a2d726fdb60dacd7de2a6f0d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 13:55:07 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 14:03:28 2017 +0100"
      },
      "message": "Rename kDexCacheViaMethod to kRuntimeCall for HLoadClass/String.\n\nThe old name does not reflect the actual code anymore.\n\nTest: testrunner.py --host\nChange-Id: I2e13cf727bba9d901c4d3fc821bb526d38a775b8\n"
    },
    {
      "commit": "ec32f6402382303608544fdac5a88067781bdec5",
      "tree": "5a8cddd783a86d3ecb9c3565e65f8fad91e93ada",
      "parents": [
        "8144b1ebea42feaa798419eaf53a6bbbf37822a9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 10:51:55 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 02 11:00:59 2017 +0100"
      },
      "message": "Delay allocating environment locations.\n\nMany environments are killed before we get to the register\nallocation, so the early allocation of their locations was\nsimply wasting memory. For the most expensive method of a\ncertain app, this reduces EnvLocations with 64-bit dex2oat\nfrom 8657200 to 5339712 (-3.16MiB).\n\nTest: m test-art-host\nTest: testrunner.py --host\nBug: 33650849\nChange-Id: I70a02fc3c7ec87b54a87e989e1239dc4acfcf18b\n"
    },
    {
      "commit": "7d157fcaaae137cc98dbfb872aa1bdc0105a898f",
      "tree": "2b7d8affda23908e5bfbfaad446079db2ef1ee09",
      "parents": [
        "58d7ddc678e5bcd2364c24c4bdc8a3cfbcfc5358"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 10 16:29:23 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 11 11:14:54 2017 +0100"
      },
      "message": "Clean up some uses of \"auto\".\n\nMake actual types more explicit, either by replacing \"auto\"\nwith actual type or by assigning std::pair\u003c\u003e elements of\nan \"auto\" variable to typed variables. Avoid binding const\nreferences to temporaries. Avoid copying a container.\n\nTest: m test-art-host-gtest\nChange-Id: I1a59f9ba1ee15950cacfc5853bd010c1726de603\n"
    },
    {
      "commit": "c15a2f4f45661a7f5f542e406282c146ea1a968d",
      "tree": "50ad6104b0b8739f272782c35a7022cca64d2601",
      "parents": [
        "9ae527f615f61aec4aaca310c52f373e8c3d8d58"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 12:09:39 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 16:48:00 2017 -0700"
      },
      "message": "ART: Add object-readbarrier-inl.h\n\nMove some read-barrier code into a new header. This prunes the\ninclude tree for the concurrent-copying collector. Clean up other\nrelated includes.\n\nTest: mmma art\nChange-Id: I40ce4e74f2e5d4c692529ffb4df933230b6fd73e\n"
    },
    {
      "commit": "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11",
      "tree": "a6d3332a8592fb806841314d55b206b573d37d86",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 16:46:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:40:33 2017 -0700"
      },
      "message": "ART: Clean up art_method.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit. Introduce new -inl files\nfor method handles and reference visiting.\n\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_angler-userdebug \u0026\u0026 mmma art\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_mips64-userdebug \u0026\u0026 mmma art\nChange-Id: I8f60f1160c2a702fdf3598149dae38f6fa6bc851\n"
    },
    {
      "commit": "cbcedbf9382bc773713cd3552ed96f417bf1daeb",
      "tree": "58eed766a69ddddbc41d21624244e14547fa1dff",
      "parents": [
        "ef62210a1466c133056c4bfdae9f8f5417065eff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 12 22:24:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 10:20:34 2017 -0700"
      },
      "message": "Add method info to oat files\n\nThe method info data is stored separately from the code info to\nreduce oat size by improving deduplication of stack maps.\n\nTo reduce code size, this moves the invoke info and inline info\nmethod indices to this table.\n\nOat size for a large app (arm64): 77746816 -\u003e 74023552 (-4.8%)\nAverage oat size reduction for golem (arm64): 2%\n\nRepurposed unused SrcMapElem deduping to be for MethodInfo.\nTODO: Delete SrcMapElem in a follow up CL.\n\nBug: 36124906\n\nTest: clean-oat-host \u0026\u0026 test-art-host-run-test\n\nChange-Id: I2241362e728389030b959f42161ce817cf6e2009\n"
    },
    {
      "commit": "0c95c12a102cb8c1514410be6e264f9730d847a7",
      "tree": "30c5f581ee7dd3186a9498f9fdc527aa0c31edc7",
      "parents": [
        "5e2227b961980c69361050a4396763937285af9b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Feb 26 14:10:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Feb 26 14:12:02 2017 -0800"
      },
      "message": "ART: Fix underflow in codegen\n\nCheck for count \u003d\u003d 0 first before accessing non-existent stack map.\n\nTest: m ART_TEST_JIT\u003dtrue test-art-host\nTest: m ART_TEST_JIT\u003dtrue test-art-host-run-test-913-heaps\nChange-Id: Id4cad8e791d731147860b8a9a0d90cc893cc6972\n"
    },
    {
      "commit": "d776ff08e07494327716f0d2ea1a774b2ebfbca9",
      "tree": "cedf874dd494d881adc572a10a9d14bca852add6",
      "parents": [
        "3fb852a88d2a8ffaa87089752f4b1d5f9d6ce3c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 17 09:32:18 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 15 14:46:15 2017 -0800"
      },
      "message": "Add invoke infos to stack maps\n\nInvoke info records the invoke type and dex method index for invokes\nthat may reach artQuickResolutionTrampoline. Having this information\nrecorded allows the runtime to avoid reading the dex code and pulling\nin extra pages.\n\nCode size increase for a large app:\n93886360 -\u003e 95811480 (2.05% increase)\n\n1/2 of the code size increase is from making less stack maps deduped.\nI suspect there is less deduping because of the invoke info method\nindex.\n\nMerged disabled until we measure the RAM savings.\n\nTest: test-art-host, N6P boots\n\nBug: 34109702\n\nChange-Id: I6c5e4a60675a1d7c76dee0561a12909e4ab6d5d9\n"
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "b048cb74b742b03eb6dd5f1d6dd49e559f730b36",
      "tree": "b1f663cbb343488a548cce4db352dbc4af720a89",
      "parents": [
        "f34077c96af3389e8eae65252d4c5d51cf630039"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 23 22:50:24 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 26 09:56:36 2017 +0000"
      },
      "message": "Add per array size allocation entrypoints.\n\n- Update architectures that have fast paths for\n  array allocation to use it.\n- Will add more fast paths in follow-up CLs.\n\nTest: test-art-target test-art-host.\nChange-Id: I138cccd16464a85de22a8ed31c915f876e78fb04\n"
    },
    {
      "commit": "a2f526f889be06f96ea59624c9dfb1223b3839f3",
      "tree": "769f517e6664de0e89abeadf07a39d5410fcee42",
      "parents": [
        "64e50021845b1ad9d8851596e8aaddf18be217c2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 19 14:48:48 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 20 15:47:06 2017 -0800"
      },
      "message": "Compressed native PC for stack maps\n\nCompress native PC based on instruction alignment. This reduces the\nsize of stack maps, boot.oat is 0.4% smaller for arm64.\n\nTest: test-art-host, test-art-target, N6P booting\n\nChange-Id: I2b70eecabda88b06fa80a85688fd992070d54278\n"
    },
    {
      "commit": "e037a736be43c1e8ba9340dcbf1d17722356a37b",
      "tree": "f0bc7b4a78d04376b042046afbfd0677d766b523",
      "parents": [
        "db54cc42859a8cc24ed1cda7f9b2f64b27dcb34a",
        "5d37c152f21a0807459c6f53bc25e2d84f56d259"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 17 09:16:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 17 09:16:31 2017 +0000"
      },
      "message": "Merge \"Put inlined ArtMethod pointer in stack maps.\""
    }
  ],
  "next": "5d37c152f21a0807459c6f53bc25e2d84f56d259"
}
