)]}'
{
  "log": [
    {
      "commit": "93fc098b11a7cb5526049fb170bd833bf3fabcfd",
      "tree": "fab9f788a9db1fb7463208bdf1c2031dc12579f0",
      "parents": [
        "0b58ec56d3169dbd69d20f4492913b25b2c875dd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 03 09:06:14 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 03 14:02:51 2021 +0000"
      },
      "message": "Mark jclass in JNI stubs in a slow path.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --gcstress\nBug: 172332525\nChange-Id: Id791a16135c8a947c317ed56ac88dac81cadfd2d\n"
    },
    {
      "commit": "cedec9db0a9accfdcf5eb695879e0b2caf2c34cb",
      "tree": "99fd71a3ef398a471507ed815c4a175805ad51f3",
      "parents": [
        "0ccc970b3c00b172e3cff8e10da13dd6323ccd52"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 08 16:16:13 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 14:34:43 2021 +0000"
      },
      "message": "Do not create HandleScope for JNI transitions.\n\nWe previously crated a HandleScope in the JNI transition\nframe to hold references passed as jobject (jclass, etc.)\nto the native function and these references were actually\nspilled twice during the transition.\n\nWe now construct the jobject as a pointer to the reference\nspilled in the reserved out vreg area in the caller\u0027s frame.\nAnd the jclass for static methods is just a pointer to the\nmethod\u0027s declaring class. This reduces the amount of work\nrequired in the JNI transition, both on entry (in compiled\nstubs) and exit (in JniMethodEnd*).\n\nSome additional work is required when GC visits references\nof a native method as we need to walk over the method\u0027s\nshorty which was unnecessary for a HandleScope.\n\nAlso fix Thread::InitStackHwm() to calculate correct stack\nsize needed by the new Thread::IsJniTransitionReference().\n\nThe results for StringToBytesBenchmark on blueline little\ncores running at fixed frequency 1420800 are approximately\narm64 (medians from 3 runs) before after\ntimeGetBytesAscii EMPTY     447.33 436.86\ntimeGetBytesIso88591 EMPTY  440.52 431.13\ntimeGetBytesUtf8 EMPTY      432.31 409.82\narm (medians from 3 runs)   before after\ntimeGetBytesAscii EMPTY     500.53 490.87\ntimeGetBytesIso88591 EMPTY  496.45 495.30\ntimeGetBytesUtf8 EMPTY      488.84 472.68\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --gcstress\nTest: testrunner.py --host --jit-on-first-use\nTest: testrunner.py --host --jit-on-first-use --gcstress\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: boots.\nBug: 172332525\nChange-Id: I658f9d87071587b3e89f31c65feca976a11e9cc2\n"
    },
    {
      "commit": "2cefb3be7346aa1b468e91b78ac6d7f9852a50e5",
      "tree": "fa8c9c514386b114df20f3face4ef363af76625a",
      "parents": [
        "09efc1604936c234b65a5d278f5ea63da29b17cd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 22 13:32:33 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 23 09:44:09 2021 +0000"
      },
      "message": "x86: Fix CriticalNative argument spilling in JNI stubs.\n\nDo not move incoming stack arguments before we have spilled\nthe scratch register ECX.\n\nFix JniCompilerTest to initialize classes early so that we\nreally test what we were supposed to. This exposed the x86\nbug fixed here.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 172332525\nChange-Id: I7c06c8ccf18f5f66772c70f6a9a9a314668ce70d\n"
    },
    {
      "commit": "853367b85d8e58fa7de8b8b7bc9810da9147fcd8",
      "tree": "c25bc624819d5e09cd0a81123d6cbbe9f29c0b60",
      "parents": [
        "c39af9409ed4c8dd711be606f758a9b378cd0ee3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 25 09:58:21 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 27 09:12:37 2021 +0000"
      },
      "message": "arm: Fix and improve JNI frame entry/exit.\n\nAdd workaround for vixl emitting UNPREDICTABLE instruction\nin frame exit. Pop LR directly to PC when possible and emit\npreviously missing CFI data otherwise.\n\nFor frames that just save LR and align the stack with one\nmore unused word, make the frame entry a single PUSH (by\narbitrarily storing r3) and make exit a single POP (by\narbitrarily restoring r3 which we are allowed to clobber\nas it\u0027s a caller-save register not used for return value).\n\nTest: m test-art-host-gtest\nTest: run-gtests.sh\nTest: testrunner.py --target --32 --optimizing\nBug: 178048807\nChange-Id: I8752711bfd4bcfc2c1cfa371108de393df00aeb8\n"
    },
    {
      "commit": "72e27b0b29fd1bdea6747f62c5bd865d26a0bdcd",
      "tree": "970bdf71ef5272a231df09a0818a08d81920e5c2",
      "parents": [
        "a462fa67f88a2b893e1543a763821d483247011d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jul 27 12:59:58 2020 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 28 16:13:40 2020 +0000"
      },
      "message": "Remove deprecated debug_suspend_count TLS value\n\nThe debug_suspend_count TLS value has been dead for a while and was\naccidentally left in. Remove it entirely.\n\nTest: ./test.py --host\nChange-Id: Ie2ead0d30e5ff3885cdd83242cad2c826c7fb732\n"
    },
    {
      "commit": "2d53643ca0e05e7c67894aa75eba899acbb9f287",
      "tree": "39299475c04303312f527bc00355bd9fd7a3fad8",
      "parents": [
        "cefebc86af30522bf79d2a89a2bcf96f7f970ecb"
      ],
      "author": {
        "name": "Ian Pedowitz",
        "email": "ijpedowitz@google.com",
        "time": "Wed Jul 22 14:33:00 2020 -0700"
      },
      "committer": {
        "name": "Ian Pedowitz",
        "email": "ijpedowitz@google.com",
        "time": "Fri Jul 24 00:41:56 2020 +0000"
      },
      "message": "Update language to comply with Android’s inclusive language guidance\n\nSee https://source.android.com/setup/contribute/respectful-code for\nreference\n\nBug: 161896447\nBug: 161850439\nBug: 161336379\nTest: m -j checkbuild cts docs tests\nChange-Id: I32d869c274a5d9a3dac63221e25874fe685d38c4\n"
    },
    {
      "commit": "c2208272f24e921b808af53721d2ca821d76503c",
      "tree": "924a1ca0e42c8a59947c4c86e5d26ac4f9d8d71b",
      "parents": [
        "50a454b23485ceb8fe37e102abc0e41e2857876a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 23 11:04:39 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 23 14:15:33 2020 +0000"
      },
      "message": "Replace \"dummy\" with \"fake\" in some tests.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing -t 004-JniTest\nBug: 161336379\nChange-Id: Ifab653fbf66af8ea3bd4a35ca116c7cc91be51bd\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": "d34b73b4ac478462acc03c4cd42ae7568c832eb8",
      "tree": "27f1c4599178ba57451c29d0156c232768711b6d",
      "parents": [
        "4a48775376a4c0b180a7d32ad2cdf00bd0dca140"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 10:07:59 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 05 13:34:31 2020 +0000"
      },
      "message": "Clean up internal stack trace construction.\n\nSimplify the code by ignoring active transactions. Writing\nto fields of a newly allocated object does not need to be\nrecorded as aborting the transaction removes all references\nto the new object and it\u0027s unnecessary to roll back writes\nto unreachable object\u0027s fields.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nChange-Id: Ia91d3274398b0ca0f5b0040dcf323921d915b657\n"
    },
    {
      "commit": "03008223bc443c2e7a411d6595671e376dea0a9b",
      "tree": "e1267a5d5b1b4190cb112b7ea374b13b42e662ee",
      "parents": [
        "e8ed866d391291e80f5d267cce1b5f913dcfc0fe"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 06 14:04:21 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 16 18:47:31 2020 +0000"
      },
      "message": "Move @CriticalNative arguments in registers.\n\nAnd spill stack arguments directly to the right location.\nDo not spill to the reserved space in the caller\u0027s frame.\n\nPreliminary Golem results for art-opt-cc:\n                            x86 x86-64    arm  arm64\nNativeDowncallCritical6:    n/a +14.3% +17.2% +26.1%\n(x86 seems to be currently providing results that are worse\nthan interpreter, so something is not working.)\n\nTest: Additional tests in 178-app-image-native-method test.\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\nBug: 112189621\nChange-Id: I709c52ab2585a8f5f441f53ad2bf4a01d2b25dca\n"
    },
    {
      "commit": "e42876fa5557cf3fe30238f7e7e70cafdbe50001",
      "tree": "650fce68339c95874abf6ba278003fb3a5ecf445",
      "parents": [
        "e521eb041875fbaf99eca5e6d2b438e7040b1dd8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 28 16:43:06 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 05 10:11:51 2020 +0000"
      },
      "message": "Minor improvements in JNI assemblers.\n\nAddress issues identified in\n    https://android-review.googlesource.com/1246286\nand clean up a few other things.\n\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\nBug: 12189621\nChange-Id: I9ee1a9c113ef756d7aa3bd4d3f17ef1aaa4306f5\n"
    },
    {
      "commit": "662f12ee2f2b886aebcc22d321b2d752227e0b38",
      "tree": "b10edc5ca99d0bae716462580cb025b4b48eb83d",
      "parents": [
        "eedca4a5f72b449df035979f31785dd5eaa46e0e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 26 12:46:09 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 02 12:53:56 2020 +0000"
      },
      "message": "Move entry spills determination to JNI compiler.\n\nThe calling convention no longer describes entry spills as\nspilling is the JNI compiler\u0027s responsibility. This allows\nfuture improvements, such as spilling registers directly to\nthe HandleScope or outgoing stack args.\n\nRemove the notion of interprocedural scratch register from\ncalling conventions and let assemblers deal with all scratch\nregister uses. The remaining JNI assembler APIs that take\nscratch registers are currently unused and can be removed.\n\nAlso fix a bug in disassembly comparison for tests; the\ncontents of two files were considered identical if the\nsecond one just contained additional data.\n\nThis change fully preserves the generated code and adds TODO\ncomments where doing so results in weird or suboptimal code.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Prebuilt boot image is unchanged.\nTest: aosp_taimen-userdebug boots.\nBug: 12189621\nChange-Id: Ic26a670276920313cd907a6eda8d982cf0abfd81\n"
    },
    {
      "commit": "fa458ac21af98b3bdde2c62ed86b9c192b994372",
      "tree": "5fa7543c9fd5edd0e950b19a70412002e10bba47",
      "parents": [
        "99d91d18f9f73427eced2f22642520d50c3c3b83"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 14:08:07 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 19 16:08:34 2020 +0000"
      },
      "message": "Allow late lookup for @CriticalNative methods.\n\nTest: Add and enable tests in 178-app-image-native-method\nTest: Add and enable tests in jni_compiler_test\nTest: Manually step through the new stub in GDB and check\n      that backtrace works at various points.\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\nBug: 112189621\nChange-Id: If094e5062acbb99eefa88f2afb4815f93730cb82\n"
    },
    {
      "commit": "2c8123c1480dcd42e31963697264fca7ad6fa154",
      "tree": "9599252703d41b43ac973c38032385b303bcb9c8",
      "parents": [
        "c3f2fe95ef4f3a51039e497b02b978e7d85ee3fa"
      ],
      "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 15:07:15 2020 +0000"
      },
      "message": "Remove MIPS support from JNI/trampoline compiler.\n\nAlso remove MIPS assembler/disassembler support.\n\nTest: aosp_taimen-userdebug boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 147346243\nChange-Id: Id736074b97cd04987a7902741828b119508df1c0\n"
    },
    {
      "commit": "948f0624554f3811020daadc5413f87dace964c3",
      "tree": "1ff10d4f5dab6c28f8f4712a3d0ce186ee4abb52",
      "parents": [
        "51ad7fe2ecfb731d5d23e08ec3c58909825d0beb"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Feb 04 17:18:41 2020 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Feb 05 18:17:58 2020 +0000"
      },
      "message": "jni: Fix templates for clang-r377782 update.\n\nIn the next clang update, non-type template parameter of function type T\nis adjusted to be type \"pointer to T\". It follows section 17.1.8 in\nc++17 standard. But it reports error when compiling code like below:\n\ntemplate \u003ctypename T, T fn\u003e\nclass helper;\n\ntemplate \u003ctypename T, typename... Args, T fn(Args...)\u003e\nclass helper\u003cT(Args...), fn\u003e {};\n\nerror: class template partial specialization is not more specialized than\n  the primary template [-Winvalid-partial-specialization]\n\nThe reason is the non-type template parameter fn of\nhelper\u003cT(Args...), fn\u003e is decayed to T (*)(Args...), making the partial\nspecialization not match primary template \u003ctypename T, T fn\u003e.\n\nTo fix this, use \u003ctypename T, T* fn\u003e in the primary template. And use\nfunction pointer type explicitly in the partial template specialization\nto make code clear.\n\nBug: 148287303\nTest: run jni_compiler_tests.\n\nChange-Id: I99731b08032574b6fc4c1d45bba19e240e9354b4\n"
    },
    {
      "commit": "1c3c106fc896453e6e9b8dd5914eddf5b20d2416",
      "tree": "029a8276590131c7fe1c5daef153e90863c628a6",
      "parents": [
        "0330e38bbad6addc2f1c9ae2b61347e421db9c3f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 03 11:18:44 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 16 16:25:28 2020 +0000"
      },
      "message": "jni: Do not create a managed frame for @CriticalNative.\n\nOmit managed frame for @CriticalNative methods, do not check\nfor exceptions and and make a tail call when possible.\nPass the method pointer in a hidden argument to prepare for\nimplementing late binding for @CriticalNative methods.\n\nThis changes only the JNI compiler, Generic JNI shall be\nupdated in a separate change.\n\nPerformance improvements reported by Golem (art-opt-cc):\n                                 x86 x86-64    arm  arm64\nNativeDowncallStaticCritical6   +17%   +50%   +88%  +139%\nNativeDowncallStaticCritical    +37%   +32%  +103%  +216%\n\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\nBug: 112189621\nChange-Id: I5758c8f478627f2eee8f615b4537a907c211b9f8\n"
    },
    {
      "commit": "bdc93b47e2e7e8f17413669e03bc461d259d16f6",
      "tree": "bd1c632196a437e90d012475afa83adf614be538",
      "parents": [
        "f52d92fce224c86491d9b0fd6fca805564119426"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 16:12:04 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 09:37:59 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify StackTraceElement and ClassLoader.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I457eeda55bbfb905dd2de0abd68451ab42ef9c1f\n"
    },
    {
      "commit": "423bebb17f15c3867a52315f0ae421f08f14544f",
      "tree": "97bdf50c7144ae21e6abfe8bdc26858a6a10f94d",
      "parents": [
        "93d99f3665cbd890509f4c707e1a62c5f26d320e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 15:17:21 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 09:45:20 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::ObjectArray.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I611b3e49d3feed306f6cd35d2b662a1e727e24c6\n"
    },
    {
      "commit": "179b7c61ea6769b99f70c80a7a89cbb212423ec2",
      "tree": "06130898bfb2d8c3f71f4fe181277f20e1942726",
      "parents": [
        "c8b7d445e02b752a68d824e2bc69658dfb76288a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 22 13:38:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 25 16:54:37 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify String allocations, fix stale refs.\n\nObjPtr\u003c\u003e-ify String allocation functions and related code\nand remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr(). Fix\nstale reference uses in reference_table_test and stub_test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I42927fb8b7240e5132188f73318b2ccb218748fd\n"
    },
    {
      "commit": "2faab0064bccdf06a454ba5fc37f2cfeceab78bc",
      "tree": "bc51a211068019d77e7739164adf5be5c6333b7b",
      "parents": [
        "5f1465ff689eccbb1b6d15160d1a3700793956da"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 12 16:35:48 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Mar 20 15:20:54 2019 +0000"
      },
      "message": "Create libelffile library for ELF file manipulation.\n\nMove some of our tooling to library to make it reusable.\n\nRemove MIPS support from the ELF builder.  This is slightly\neasier than making it independent of the runtime.\n\nBug: 110133331\nTest: test.py -b --host\nChange-Id: I93343808d0e27ee8e1117e713a2503e8179fc245\n"
    },
    {
      "commit": "96259f1f2f37d222ce321fd223655d1134a8ba01",
      "tree": "e77eba088bd556dc44375e68eaa622a8301617aa",
      "parents": [
        "3c29c66933f81dbb9af17caa197257ac67ee3c78"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 18 10:04:51 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 18 11:31:26 2019 +0000"
      },
      "message": "Pass the Java caller\u0027s location to OpenNativeLibrary.\n\nWill be used to find the linker namespace to use.\n\nBug: 122874359\nTest: m, gtest, run-test, CtsJdwpTests\n\nChange-Id: Ibeebe20844e2bbdc306d65fb4f2ee3237343fa09\n"
    },
    {
      "commit": "639b2b1f3a675135d443fc380323fbc48639a7eb",
      "tree": "0aba54938e712e5dd95b525c92f836c59cca49c6",
      "parents": [
        "8764dc3b3eda7f6f13ed7b584475503fe5bedd59"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 10:32:50 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Remove instruction_set.h from thread.h\n\nMove the function definitions relying on it to the -inl. Some\nfollow-up transitive-include cleanup, as well as some more\nforward-declarations.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I820f395e6cb8343a4bb9bf02da271fbec067109f\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": "457a0174ecca0571092925219a305b5df3fa04c1",
      "tree": "c59d227949d4a8454251179eff3eb7c3a4760d9e",
      "parents": [
        "f82f53f7289e9990427dc83bfb80b60ab7c35b3b"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Dec 10 13:08:27 2018 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Dec 12 13:36:22 2018 -0800"
      },
      "message": "Fix cert-dcl16-c clang-tidy warnings.\n\nBug: 120614316\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,cert-dcl16-c\nChange-Id: I3427faae8ba64fbc6ebc3081580361043e0b49fb\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": "56de89aaf2a224de8c436291e3c23a1a61315437",
      "tree": "397fafa3662d1abde6fecff49f24a559c2b0ab32",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 01 15:32:20 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 14:38:59 2018 +0100"
      },
      "message": "Mark most *Offset helper functions as constexpr.\n\nMaking the values compile-time constants will help to\nclean up the cpp-define-generator.\n\nTest: test.py -b -g\nChange-Id: I612a19a54062784b501bfe4f41c6642d48e0dd21\n"
    },
    {
      "commit": "654698dddfd1f4d9ec0db477f4f9592d58dff039",
      "tree": "03181d1b4fada0ec4e71156df1063331297053bc",
      "parents": [
        "c74d9cbd4c7b1b5b1a4c5a6bb34e9426336bbecc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 13:34:35 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 20:32:41 2018 -0700"
      },
      "message": "ART: Fix bool-related types in compiler/\n\nAvoid implicit bool conversions.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I364de41302f379e84980f720b2be99388a74dce2\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\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": "e9987b0831403858d95bdd7a5ef9e56665a9702d",
      "tree": "3950da94b73665a52eb5e2b9c5aecc8c92145f13",
      "parents": [
        "6ec2a1bf1cbecf17546df780dd0ad769042e1874"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 16:26:43 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 23 15:16:45 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify tests using ClassLinker::FindClass().\n\nClassLinker::FindClass() returns a non-ObjPtr\u003c\u003e reference\nbut it has a lot of uses, so we shall change the uses in\na few steps. This change deals with several tests.\n\nTest: Rely on TreeHugger.\nBug: 31113334\nChange-Id: Ib75e20e7ebaff01fb607a09f96675f8cf397ae52\n"
    },
    {
      "commit": "a3ad0cdd711857f04f477e2cdc5b56a2c74a3018",
      "tree": "7e0e4c7888c2497d86ce96c9574d7c9886721ccf",
      "parents": [
        "abd9e1515bc6be88372c61071971c5432a51553d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 10:06:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 11:11:09 2018 +0100"
      },
      "message": "ART: Move JNI files to runtime/jni/ .\n\nTest: Rely on TreeHugger.\nChange-Id: I9cae11191ef1567ae9453be498882a7767285140\n"
    },
    {
      "commit": "74b9994598f497ee3c6a72bbacad9926527f67f5",
      "tree": "b876a06735c5e729da62a42e3aa5bd4d79a6ff32",
      "parents": [
        "8a78f81a16a7c8225b48bf634b67f5697f72e15f",
        "79e2607ab50163bfdc283f4a49decec26a216df5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Apr 13 17:02:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 13 17:02:21 2018 +0000"
      },
      "message": "Merge \"Move profile dependent modules to libartbase\""
    },
    {
      "commit": "79e2607ab50163bfdc283f4a49decec26a216df5",
      "tree": "0cdb2c65412b64a55ddf1a486ab3d961a0301a3e",
      "parents": [
        "b4b91460b2d01d36ddcb7d55111ccd8faf390c2a"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 06 17:58:50 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Apr 13 08:29:30 2018 -0700"
      },
      "message": "Move profile dependent modules to libartbase\n\nMove mem_map and zip_archive to libartbase.  This should be the last two\nremaining modules that profile_compilation_info is dependent upon.\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make and boot a device\n\nChange-Id: I136ee23e426aa8ec7441e3d3f1978f1bebf4b562\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": "1ce2b3b76d121a765212d69399241843951973ae",
      "tree": "6f2bb0191c869e79891df3151d6faba3a297b9a8",
      "parents": [
        "281c99864f635ef4fd005dba4ba0c750cb9a6143"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 05 11:02:03 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 05 11:07:59 2018 -0700"
      },
      "message": "Move remaining runtime/base stuff to libartbase\n\nMove the remainder of the Arena stuff, plus dumpable and\nruntime/*memory_region* to libartbase.  More preparation to build\nprofiling library.\n\nBug: 22322814\nTest: make -j 50 checkbuild\nChange-Id: Iaf26d310c89bc58846553281576c18102f5e4122\n"
    },
    {
      "commit": "3215fff7ef8fa3c2250b91158560eacc613a4671",
      "tree": "50d6fe7aff3f8fae31dcf2ca020f5079f49a592f",
      "parents": [
        "6371249ce05032db5d8c4c7ec96bf7fd7264c42f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Apr 03 17:10:12 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 04 14:47:57 2018 -0700"
      },
      "message": "Separate Malloc and MemMap ArenaPools\n\nMake ArenaPool an abstract base class and leave MallocArenaPool\nimplementation with it.  This enables arena_allocator to be free\nof MemMap, Mutex, etc., in preparation to move the remaining collections\nout of runtime/base to libartbase/base.\n\nBug: 22322814\nTest: make -j 50 test-art-host\n      build and boot\n\nChange-Id: Ief84dcbfb749165d9bc82000c6b8f96f93052422\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": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\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": "2ae376f5af8953d3524cd8ed915ebdacf505625c",
      "tree": "f6c1fa068b877054ea425bc4494462f2a9cbe955",
      "parents": [
        "dc46115ab283bac2453b4f9e454e66107e64e8ef"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jan 30 11:35:11 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Feb 09 17:50:28 2018 +0000"
      },
      "message": "Stylistic and aesthetic changes.\n\nTest: art/test.py\nChange-Id: Ic41aa80430d16af748994c80f049c5b479fd9980\n"
    },
    {
      "commit": "ef012225dcec8f736fc8fd848f5d8ee01c3c280f",
      "tree": "d5f65b05313a09e92055550f07f063537b9e6ca5",
      "parents": [
        "cd4ddeea1c33d5f9b7758d116451bd06f1b81aff"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 21 16:28:06 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Feb 09 15:36:49 2018 +0000"
      },
      "message": "Fix typos.\n\nTest: art/test/testrunner/testrunner.py\nChange-Id: I5f5e052c940650a3adb3a8717b84260e6b306500\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": "473191c4093aac1ec50bc275c588287fa37a981e",
      "tree": "df5b6493b21498097c29b5c9772cd1606f1bd29c",
      "parents": [
        "a3e50959997f5c3e3b2d7e200b3b022757845f20"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 16:55:31 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 03 23:27:37 2018 -0800"
      },
      "message": "ART: Clean up library loading\n\nRetrieve the library path from the classloader before attempting to\nload, instead of getting it passed down. This allows unifying said\nloading behavior for follow-up changes.\n\nFix up test code to support the new required data in classloader\nobjects.\n\nBug: 70901841\nTest: m test-art-host\nTest: device boots\nChange-Id: Iaccaeb56422877abac9f7fe6f5a17364c8adf4ca\n"
    },
    {
      "commit": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "7bdc6e73fd97eb75f30b77f183e4fe6c2c599a09",
      "tree": "344b0fddbbcc9a64bed2ba20dbe73fb227c2bdf4",
      "parents": [
        "5387bc5979c8984aabde455a80692f080d823c89"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 12:37:13 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 13:00:09 2017 +0000"
      },
      "message": "ART: Minor refactoring of JNI stub compilation.\n\nIntroduce JniCompiledMethod to avoid JNI compiler dependency\non CompiledMethod. This is done in preparation for compiling\nJNI stubs in JIT as the CompiledMethod class should be used\nexclusively for AOT compilation.\n\nTest: m test-art-host-gtest\nBug: 65574695\nChange-Id: I1d047d4aebc55057efb7ed3d39ea65600f5fb6ab\n"
    },
    {
      "commit": "b0a6aeee250945b1d156ebab94053380f2e5a3c5",
      "tree": "7ddb52bb20997b8f1c81be3df2250949a088e697",
      "parents": [
        "0db16e00e3927445585a588499731c58c1ae1bef"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 27 10:34:04 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 10 08:30:36 2017 +0000"
      },
      "message": "Record @{Fast,Critical}Native in method\u0027s access flags.\n\nRepurpose the old kAccFastNative flag (which wasn\u0027t actually\nused for some time) and define a new kAccCriticalNative flag\nto record the native method\u0027s annotation-based kind. This\navoids repeated determination of the kind from GenericJNI.\nAnd making two transitions to runnable and back (using the\nScopedObjectAccess) from GenericJniMethodEnd() for normal\nnative methods just to determine that we need to transition\nto runnable was really weird.\n\nSince the IsFastNative() function now records the presence\nof the @FastNative annotation, synchronized @FastNative\nmethod calls now avoid thread state transitions.\n\nWhen initializing the Runtime without a boot image, the\nWellKnowClasses may not yet be initialized, so relax the\nDCheckNativeAnnotation() to take that into account.\n\nAlso revert\n    https://android-review.googlesource.com/509715\nas the annotation checks are now much faster.\n\nBug: 65574695\nBug: 35644369\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: I2fc5ba192b9ce710a0e9202977b4f9543e387efe\n"
    },
    {
      "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": "69d310e0317e2fce97bf8c9c133c5c2c0332e61d",
      "tree": "fba05a1530e6fc4a2e6950303c1f7c6b0ffbb936",
      "parents": [
        "e764d2e50c544c2cb98ee61a15d613161ac6bd17"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 09 14:12:23 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Oct 11 09:44:26 2017 +0100"
      },
      "message": "Use ScopedArenaAllocator for building HGraph.\n\nMemory needed to compile the two most expensive methods for\naosp_angler-userdebug boot image:\n  BatteryStats.dumpCheckinLocked() : 21.1MiB -\u003e 20.2MiB\n  BatteryStats.dumpLocked(): 42.0MiB -\u003e 40.3MiB\nThis is because all the memory previously used by the graph\nbuilder is reused by later passes.\n\nAnd finish the \"arena\"-\u003e\"allocator\" renaming; make renamed\nallocator pointers that are members of classes const when\nappropriate (and make a few more members around them const).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 64312607\nChange-Id: Ia50aafc80c05941ae5b96984ba4f31ed4c78255e\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": "0d127e10de0b06ec22d8e855d1d62773c4ede101",
      "tree": "9ae3f93e78303272785b8321279226c1009854b0",
      "parents": [
        "9c0a6ce0a41eaf78f3fc3224fc34195601b6e0b3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 05 17:01:11 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 04 19:49:51 2017 +0100"
      },
      "message": "Do not refresh the Marking Register in CriticalNative methods.\n\nCriticalNative methods shall not be suspended and hence do not\nrequire MR to be refreshed in compiled JNI code.\n\nThis change is for ARM and ARM64 only.\n\nImpact on Critical Native benchmarks times (median of 10 runs,\nlower is better):\n\n* angler-userdebug - ARMv7\n\n** All cores\n\n   NativeDowncallStaticCritical   -2.78%\n   NativeDowncallStaticCritical6  -1.79%\n\n** Little cores only\n\n   NativeDowncallStaticCritical   -1.66%\n   NativeDowncallStaticCritical6  -1.27%\n\n** Big cores only\n\n   NativeDowncallStaticCritical   -2.66%\n   NativeDowncallStaticCritical6  -1.70%\n\n* angler-userdebug - ARMv8\n\n** All cores\n\n   NativeDowncallStaticCritical   -3.52%\n   NativeDowncallStaticCritical6  -1.79%\n\n** Little cores only\n\n   NativeDowncallStaticCritical   -1.63%\n   NativeDowncallStaticCritical6  -1.27%\n\n** Big cores only\n\n   NativeDowncallStaticCritical   -3.87%\n   NativeDowncallStaticCritical6  -1.75%\n\nTest: m test-art-target\nTest: m test-art-target with tree built with ART_USE_READ_BARRIER\u003dfalse\nTest: m test-art-host-gtest\nTest: ARM64 device boot test\nTest: ARM device boot test\nBug: b/37707231\nChange-Id: I95d61b9ecde0afffdd5fd44763b19caa06025ec8\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": "217d6d3cd0b78966178ab93cd221dbb2865048ee",
      "tree": "cbed5f71f5ebfc98044559ec7835bbdd1ddb339f",
      "parents": [
        "217488a9ddf351033c1688198c492b9c40c36d8a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 12:48:20 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 12:50:43 2017 -0700"
      },
      "message": "ART: Remove old code\n\nRemove unused Quick compiler flag.\n\nRemove support for arm32 soft-float code (which is no longer\nsupported by our compiler).\n\nTest: m\nChange-Id: I38b16291d90094dbf26776923a46afbf8de53f20\n"
    },
    {
      "commit": "217488a9ddf351033c1688198c492b9c40c36d8a",
      "tree": "98dc5553e2538b9b508c1837bc27b383d73b7149",
      "parents": [
        "e16ed6da590e717e28c07e2c9d1b342efc678870"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 08:34:42 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 12:50:43 2017 -0700"
      },
      "message": "ART: Move read barrier config out of globals\n\nReduce the global dependencies by refactoring where the read\nbarrier constants are defined.\n\nRename read_barier_c.h to read_barier_config.h and ifdef the\nC++ parts to have a common header for both C/asm and C++.\n\nPut heap poisoning configuration into its own minimal header.\n\nFix up transitive includes.\n\nTest: m\nChange-Id: I159669ec61e3d1c4c7ddcd79e63b023a0519717a\n"
    },
    {
      "commit": "2b03a1f24600c8c9558fb13d3f8bca1ef0f8ee40",
      "tree": "4d5fb728acd7f98f8949c84364375a804ff0ba63",
      "parents": [
        "461ec567f16039374dff35e2f3b808986c100249"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jun 06 16:09:59 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Aug 10 18:17:47 2017 +0100"
      },
      "message": "Instrument ARM64 generated code to check the Marking Register.\n\nGenerate run-time code in the Optimizing compiler checking that\nthe Marking Register\u0027s value matches `self.tls32_.is.gc_marking`\nin debug mode (on target; and on host with JIT, or with AOT when\ncompiling the core image). If a check fails, abort.\n\nTest: m test-art-target\nTest: m test-art-target with tree built with ART_USE_READ_BARRIER\u003dfalse\nTest: ARM64 device boot test with libartd.\nBug: 37707231\nChange-Id: Ie9b322b22b3d26654a06821e1db71dbda3c43061\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": "331f4c4e287791611733120c1a1c2afd55ecdd65",
      "tree": "1fcf7810c6c8e2df8b6191bb14a69084f3c7cf11",
      "parents": [
        "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "message": "Merge \"ART: Change method lookup to be more consistent to JLS and the RI.\""
    },
    {
      "commit": "ba118827465d12177f3996e50133960087b1c916",
      "tree": "f39728cdafc7810004d51c0bef2728b98993daa9",
      "parents": [
        "64a102dde8c5daad83b991710decb418ce43aac5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:41:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 13:35:06 2017 +0100"
      },
      "message": "ART: Change method lookup to be more consistent to JLS and the RI.\n\nThe method lookup for different invoke types was previously\nwidely different and didn\u0027t work well with the dex cache\nmethod array where we have only a single slot for each\nMethodId. The new behavior is to perform the same lookup for\nall cases, distinguishing only between interface and\nnon-interface referencing class, and to further align the\nbehavior with the JLS and the RI. Where the JLS conflicts\nwith the RI, we follow the JLS semantics.\n\nThe new lookup for class methods first searches the methods\ndeclared in the superclass chain (ignoring \"copied\" methods)\nand only then looks in the \"copied\" methods. If the search\nin the superclass chain finds a method that has not been\ninherited (i.e. either a private method or a package-access\nmethod where one of the classes in the chain does not belong\nto the same package, see JLS 8.4.8), we still search the\n\"copied\" methods as there may actually be a method inherited\nfrom an interface. This follows the JLS semantics where\ninherited methods are included in the search (JLS 15.12.2.1)\nbut conflicts with the RI where the private or\npackage-access method takes precedence over methods\ninherited from interfaces.\n\nNote that this search can find an accessible method that is\nnot inherited by the qualifying type, either for a package\naccess method when the referrer is in the same package but\nthe qualifying type is in another package, or for a private\nmethod where the referrer is in the same class but the\nqualifying type is actually a subclass. For the moment we\nallow such calls and we shall consider whether to throw\nan IncompatibleClassChangeError in this situation in future\nto comply with JLS 15.12.4.3.\n\nThe new lookup for interface methods searches the interface\nclass, then all the superinterfaces and then the\njava.lang.Object class, see implicitly declared methods in\ninterfaces, JLS 9.2. The search for the maximally-specific\nnon-abstract superinterface method is not yet implemented,\nbut the difference should be difficult to observe as the\nusual subsequent call to FindVirtualMethodForInterface()\nshould yield the same result for any matching method.\n\nThe new test 162-method-idx-clash exposes several cases\nwhere we previously completely messed up due to the effects\nof the DexCache, or where we were out of line with the RI.\nIt also tests a case where the JLS and the RI disagree and\nwe follow the JLS.\n\nTest: art/test/run-test --host --jvm 162-method-resolution\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nBug: 62855082\nBug: 30627598\nChange-Id: If450c8cff2751369011d649c25d28a482a2c61a3\n"
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "6d729a789d3d7771e13d9445ee0be1d9d48a81b5",
      "tree": "360b9af68920f411be5fe6753aaf7ab4976385ea",
      "parents": [
        "8cfbbb826a3ab7bb680cfcd8a8148570b165d620"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Jun 30 18:34:01 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 13 16:41:07 2017 +0100"
      },
      "message": "Introduce a Marking Register in ARM code generation.\n\nWhen generating code for ARM, maintain the status of\nThread::Current()-\u003eGetIsGcMarking() in register R8,\ndubbed MR (Marking Register), and check the value of that\nregister (instead of loading and checking a read barrier\nmarking entrypoint) in read barriers.\n\nTest: m test-art-target\nTest: m test-art-target with tree built with ART_USE_READ_BARRIER\u003dfalse\nTest: m test-art-host-gtest\nTest: ARM device boot test\nBug: 37707231\nChange-Id: I30b44254460d0bbb9f1b2adc65eca52ca3de3f53\n"
    },
    {
      "commit": "af24def8967027f10ce8d44cb209c23032a2a1b4",
      "tree": "503bc7430d73944dc1faf51082fc36be1735d4c4",
      "parents": [
        "08dd84adab79f98b2f2e7dfbccf8ef6b07cd3f2e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 12 13:18:01 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 12 13:20:53 2017 +0100"
      },
      "message": "Fix ART ARM64 CFI gtests with GCs other than CC with Baker read barriers.\n\nSince the introduction of a Marking Register in the ARM64 back\nend, gtests jni_cfi_test and optimizing_cfi_test produce\ndifferent outputs for the Concurrent Copying (CC) collector\nwith Baker read barriers on the one hand, and for other GCs on\nthe other hand.\n\nTest: m test-art-host-gtest with tree built with ART_USE_READ_BARRIER\u003dfalse\nBug: 37707231\nChange-Id: I63de8873f52df593eb664970f2be20f1089804a9\n"
    },
    {
      "commit": "97c46466aea25ab63a99b3d1afc558f0d9f55abb",
      "tree": "afd225f51d28a77329bc2590a025400e088f260c",
      "parents": [
        "00cca3a275562d110a8b35094b9b12fac37f67ab"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 11 14:04:03 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 11 17:43:27 2017 +0100"
      },
      "message": "Introduce a Marking Register in ARM64 code generation.\n\nWhen generating code for ARM64, maintain the status of\nThread::Current()-\u003eGetIsGcMarking() in register X20,\ndubbed MR (Marking Register), and check the value of that\nregister (instead of loading and checking a read barrier\nmarking entrypoint) in read barriers.\n\nTest: m test-art-target\nTest: m test-art-target with tree built with ART_USE_READ_BARRIER\u003dfalse\nTest: ARM64 device boot test\nBug: 37707231\nChange-Id: Ibe9bc5c99a2176b0a0476e9e9ad7fcc9f745017b\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": "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": "5e8d5f01b0fe87a6c649bd3a9f1534228b93423d",
      "tree": "a1441acc0021d170f412542ae2a1ae62794e7846",
      "parents": [
        "b0dde4397fa5b0756312b46bd18477a2c1f6a7da"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Oct 18 18:03:43 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jan 23 15:50:01 2017 +0000"
      },
      "message": "Fix some typos in ART.\n\nTest: m build-art-host\nTest: m cpplint-art\nChange-Id: Ifc6ce3d0d645c4a8dca72dd483fc03fc05077130\n"
    },
    {
      "commit": "1b8464d17c2266763714ae18be7c4dc26e28bf61",
      "tree": "19ab81b439fc216e289cb14be8a7618dbafb4f50",
      "parents": [
        "d7a7c7f3e93de9fa915e66d54dfc799efcc12ffb"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Sat Nov 12 17:22:05 2016 -0800"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Dec 06 13:57:04 2016 -0800"
      },
      "message": "MIPS32: Pass more arguments in registers.\n\nSpecifically, use A0-A3,T0-T1 for non-floats and F8-F19 for floats.\n\nTest: booted MIPS32R2 in QEMU\nTest: test-art-target-run-test-optimizing (MIPS32R2) on CI20\nTest: test-art-target-gtest (MIPS32R2) on CI20\nTest: booted MIPS64 (with 2nd arch MIPS32R6) in QEMU\nTest: test-art-target-run-test-optimizing (MIPS32R6) in QEMU\nTest: test-art-target-gtest (MIPS32R6) in QEMU\nTest: test-art-host-gtest\n\nChange-Id: Ib8b0310a109d9f3d70119c1e605e54b013e60728\n"
    },
    {
      "commit": "8eaa426ca98eda0c4a7493de9bd5949a78514c87",
      "tree": "490116f7eec36d8167362580751003dfdabe556c",
      "parents": [
        "3825da56fb16cb8c8128dfad3f65ce392ebf0642",
        "837e72ae04f6bc53a12e7a26c36fdb896d149583"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 17 17:30:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 17 17:30:44 2016 +0000"
      },
      "message": "Merge \"[MIPS64] JNI Compiler: compiler independent test\""
    },
    {
      "commit": "c180a1b86197890c21217dd193718fc266a07781",
      "tree": "fb28ee432256e3584aa66a0c7cd5bca4872cf22d",
      "parents": [
        "2b362587ab659451e3cafda8de8cef09214d9ca3",
        "cc8b04e5481ca7567d337d9358f92dc2195fc137"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 17 15:57:53 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 17 15:57:54 2016 +0000"
      },
      "message": "Merge \"jni: Add @CriticalNative support for MIPS32/MIPS64\""
    },
    {
      "commit": "837e72ae04f6bc53a12e7a26c36fdb896d149583",
      "tree": "261006cf6b39481ed9b3401dd769d948076dbfde",
      "parents": [
        "f75d4c239defe4c64170ac408cbd14b3c46e20b6"
      ],
      "author": {
        "name": "Pavle Batuta",
        "email": "pavle.batuta@imgtec.com",
        "time": "Wed Mar 16 11:31:46 2016 +0100"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Nov 17 12:00:58 2016 +0100"
      },
      "message": "[MIPS64] JNI Compiler: compiler independent test\n\nFixed MIPS64 stackArgsSignExtendedTest that did not work properly\nwhen code was built with clang. The the test is now written in an\nasm stub and should be completely compiler indepedent.\n\nTest: mma test-art-target-gtest-jni_compiler_test\n\nChange-Id: Idefef3a8414dd8b88a28d2d8862a724bc72402a7\n"
    },
    {
      "commit": "13b27842e88ccf1a42807c92daeb108e867dc4cd",
      "tree": "d95968f678070058ec084376d561c7ed4f1bcff3",
      "parents": [
        "689a331aded82340d2ab144d0adb9bbbbd4b53ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 07 16:48:23 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 07 19:45:48 2016 -0800"
      },
      "message": "ART: Refactor jmethodID handling\n\nArtMethod objects have been native since Marshmallow.\nRemove the dependency on being runnable. Refactor the\ncode into the jni_internal header.\n\nTest: m test-art-host\nChange-Id: I1385fcd4c08981491701da55a87036b447aa2fc2\n"
    },
    {
      "commit": "0a85576a71adb9af631c9b9f5e48f21888313c14",
      "tree": "31c7db15c43096ca7118b528f17aa73eef92ce63",
      "parents": [
        "54f07b502f7ac216e00beccee67781a3b72ae00f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 26 13:43:14 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 28 10:15:42 2016 -0700"
      },
      "message": "ART: Clean up Thread\n\nMake some functions private. Move some test-only functionality to\nthe test using it.\n\nTest: m test-art-host\nChange-Id: Ic84c8bcb150f991c6fc264c2d490363a3bd3e1f4\n"
    },
    {
      "commit": "af1e2990cd1406a0fb7cba1d2e208208e950e413",
      "tree": "07e80e4dcc31931003a87be7884134ea42ceec07",
      "parents": [
        "3f699ae23266b2c4adc98958dcbd80c71c2c3284"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 12 17:44:50 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 19 11:38:54 2016 -0700"
      },
      "message": "jni: Support @FastNative methods that return objects\n\nBug: 32088975\nChange-Id: I16f8b7ec6b251812af60ab25f2153d9b72f37044\n"
    },
    {
      "commit": "3f699ae23266b2c4adc98958dcbd80c71c2c3284",
      "tree": "0b0aff9f690c74818f5b1da056e46f448d71681f",
      "parents": [
        "b0d2fe854b78865484608d07ed774fe5a0b996c5"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 13 15:12:20 2016 +0000"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 19 11:33:33 2016 -0700"
      },
      "message": "Revert \"jni: Disable FastNative path for methods returning objects\"\n\nThis reverts commit 6f029d9cfae142f318e3986331b04695f3ea524a.\n\nChange-Id: I075bbf55a07565118b8fa529a397bb42490e6e51\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "ae7ff92c430aa12484ff8258ee4ed13421ac7934",
      "tree": "32774f5b3b0f96b921145a4af62dce182882fb7c",
      "parents": [
        "6e5fa09510c7280168e040382d27dd8b55760d9a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 06 14:59:19 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 13 17:26:37 2016 +0000"
      },
      "message": "jni: Add read barrier fast path to jni compiler\n\nStatic method dispatch via JNI requires a read barrier\nfor the ArtMethod::GetDeclaringClass() load before adding it to the\nJNI StackHandleScope.\n\nWe used to call ReadBarrierJni unconditionally but add a branch\nto skip calling it if the GC is not currently in the marking phase.\n\nTest: ART_USE_READ_BARRIER\u003dtrue make test-art-host test-art-target\nBug: 30437917\nChange-Id: I4f505ebde17c0a67209c7bb51b3f39e37a06373a\n"
    },
    {
      "commit": "480ddd6f589047376dd90fa4bc49cce256d43aef",
      "tree": "062ce1ad412c5f0abb119ce8875ff91fb1fccc2a",
      "parents": [
        "c2f1fc70dba4db8751248c4ad15315946f6d13d0",
        "e8a3c576301fd531d5f73a65fc8b84a63619d580"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 23:47:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 12 23:47:10 2016 +0000"
      },
      "message": "Merge \"Replace StackHandleScopeCollection with VariableSizedHandleScope\""
    },
    {
      "commit": "6f029d9cfae142f318e3986331b04695f3ea524a",
      "tree": "bc41c94fb673b1018bfac46f989c7d7b5f1657a5",
      "parents": [
        "3d9f2834ba7be001e49f51637b91fd4667b036e1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 12 13:33:43 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 12 20:50:03 2016 +0000"
      },
      "message": "jni: Disable FastNative path for methods returning objects\n\nBug: 32088975\nChange-Id: Iba3a8f5462829ccb38f771f8f940b57c4e6a1c3f\n"
    },
    {
      "commit": "e8a3c576301fd531d5f73a65fc8b84a63619d580",
      "tree": "a00e488f153505ee890c28873308d373e6ab231b",
      "parents": [
        "e8317d90c61dde07c12e404a2bc1fabf584905c1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 11 16:52:17 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 12 13:30:54 2016 -0700"
      },
      "message": "Replace StackHandleScopeCollection with VariableSizedHandleScope\n\nVariableSizedHandleScope\u0027s internal handle scopes are not pushed\ndirectly on the thread. This means that it is safe to intermix with\nother types of handle scopes.\n\nAdded test.\n\nTest: clean-oat-host \u0026\u0026 test-art-host\n\nChange-Id: Id2fd1155788428f394d49615d337d9134824c8f0\n"
    },
    {
      "commit": "1e0d8ce4e56d47a399ab367b9dcb5b34069a9f27",
      "tree": "1d61055551f07b1c235dcd26fd994a84de376766",
      "parents": [
        "91d1b61db7f83c7b8119a0327fbe2f3c0b6a17db",
        "b982c388e0c86f196088a00f6c053115091029e9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 11 16:03:13 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 11 16:03:14 2016 +0000"
      },
      "message": "Merge \"Enable generic JNI tests for MIPS32\""
    },
    {
      "commit": "4229811dde9ff81ec3b963a22db558509a4e8e5c",
      "tree": "b478a7b8baea57c9093934c651e56e0a58f2efb3",
      "parents": [
        "a51d8b77a8b0d2466e8d931bd5de552465fb6961"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 06 10:51:11 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 06 10:52:08 2016 -0700"
      },
      "message": "test: Fix jni_compiler_test for const correctness\n\nChange-Id: Id0ea8f18f8fac3cf884a43a2ae6448bb0221209a\n"
    },
    {
      "commit": "cc8b04e5481ca7567d337d9358f92dc2195fc137",
      "tree": "5d3d8d11004d04358d5d7c20e6fcd44acea4560c",
      "parents": [
        "6e9854e4df95de62e9d7bea4be770603077faf22"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Sep 27 16:52:06 2016 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Oct 06 14:08:52 2016 +0200"
      },
      "message": "jni: Add @CriticalNative support for MIPS32/MIPS64\n\nTest: lunch aosp_mips-eng \u0026\u0026 make\nTest: lunch aosp_mips64-eng \u0026\u0026 make\nTest: mma -j2 test-art-target on CI20 and QEMU\n\nBug: 31743474\n\nChange-Id: Ic73c384c4b187cdeb610b1a8e39a4d54d5be1481\n"
    },
    {
      "commit": "a51d8b77a8b0d2466e8d931bd5de552465fb6961",
      "tree": "e791ee8f74d3e91802615c00451b9e85e376e2ae",
      "parents": [
        "4aa6a93c46a959df1ab71ee7a68ad345338046ef"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 05 14:33:30 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 05 14:33:30 2016 -0700"
      },
      "message": "jni: Test that pushed handle scopes are popped after JNI transitions\n\nThere was previously a bug in generic JNI for @CriticalNative where new\nhandle scopes were pushed, but then not popped after the native call\nwas done. This caused a bug with stale pointers being found by GC.\n\nBug: 31933313\nChange-Id: I423f9e7a7d391ba3a4771c830691931f0025b354\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "294a9152688dfdf28cbb4c1d9b73d1605a7084d2",
      "tree": "5dfc670296ca84b06fcf555d7face43be7b0a8fc",
      "parents": [
        "9aa9fa243198fc1f48eb7ae5e3f363b71915c36f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Sep 28 13:23:19 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Sep 28 20:26:55 2016 +0000"
      },
      "message": "jni: test CriticalNative with generic jni\n\nPreviously this combination was uncovered due to a missing\nline in the macro definition.\n\nBug: 31400248\nTest: make test-art-host\nChange-Id: I5407f46f2394edc028c9b74dc783899a3a2f6588\n"
    },
    {
      "commit": "b982c388e0c86f196088a00f6c053115091029e9",
      "tree": "0b8448c2a0eebe083b072612d61fe74615f24dec",
      "parents": [
        "1b6cf7fbca0fd90ae58938e4a16a77b79a83408e"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Wed Sep 28 17:55:32 2016 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Wed Sep 28 18:59:15 2016 +0200"
      },
      "message": "Enable generic JNI tests for MIPS32\n\nWe don\u0027t need to skip Generic JNI tests on MIPS32 since the original\nissue has been fixed:\nhttps://android-review.googlesource.com/#/q/topic:libjavacore_unload\n\nTest: make test-art-target-gtest-jni_compiler_test on CI20\n\nChange-Id: I98849ae2924ce886910c87f72813cb7a6465e8ad\n"
    },
    {
      "commit": "06a04e0e776875303577c2d871b53a53c78da1b5",
      "tree": "6f8b38fa918f49cc502b573c96d9a6338ad343df",
      "parents": [
        "48d10ee126838f060aa6dcd304fc161b57bc14af"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Sep 13 15:57:37 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Sep 21 13:32:00 2016 -0700"
      },
      "message": "jni: Implement generic JNI support for @CriticalNative/@FastNative\n\nAlso:\n* Extend existing test cases to check generic JNI for the above.\n* Re-enable previously blacklisted @CriticalNative JNI run-tests.\n\nBug: 31400248\nChange-Id: I436ed00c8b8880e936a0c3483bc0dc251f0c0ce2\n"
    },
    {
      "commit": "d9c90373d640a5e08072cf469c372e24a8c0fc35",
      "tree": "35615699aa6c12b21d9c0de7d11ccf0f088ba0d8",
      "parents": [
        "b180b893b5acb5c55251522465f9d20ed45c3b5a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Sep 14 16:53:55 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Sep 14 19:57:21 2016 +0100"
      },
      "message": "Move ArrayRef to runtime/base\n\nWill be used in upcoming CLs regarding VDEX and VerifierDeps.\n\nTest: m test-art-host\nChange-Id: I68e611a4a52246c2bdf45eab7c61f3212908afd4\n"
    },
    {
      "commit": "367f3dd32454858b8b25d87feb8f6599d3b4c9dd",
      "tree": "9fe45c9f6785c31918f70ed2d12683f9c8d702af",
      "parents": [
        "fa7b5c97db681e3d64d145807927cfafae78729b"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Sep 01 17:00:24 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 09 10:48:56 2016 -0700"
      },
      "message": "jni: Add @CriticalNative optimization to speed up JNI transitions\n\nChange-Id: I963059ac3a72dd8e6a867596c356d7062deb6da7\n"
    },
    {
      "commit": "57eb0f58419e0e6773f69cf6e0c78e5fed0464cd",
      "tree": "5104bb1c1ad04f9f6a04fcac5d497d54ed0c97ab",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Fri Jul 29 22:04:46 2016 -0700"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Aug 30 16:50:28 2016 -0700"
      },
      "message": "MIPS32: Fill branch delay slots\n\nTest: booted MIPS32 in QEMU\nTest: test-art-host-gtest\nTest: test-art-target-gtest\nTest: test-art-target-run-test-optimizing on CI20\n\nChange-Id: I727e80753395ab99fff004cb5d2e0a06409150d7\n"
    },
    {
      "commit": "a75b01a549f0c86669dd24e53c9e3e74f0bf5b40",
      "tree": "fbca55a54871421db00709e6bbb51e48c851069f",
      "parents": [
        "3049b2a54b5b55d094fea603236f492c31b842e1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Aug 18 13:45:24 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Aug 19 10:47:35 2016 -0700"
      },
      "message": "Fix building tests with partial arch codegen support\n\nAdd conditionals around more code that is only used for codegen for\nspecific architectures, and move a few more files into the\narchitecture-specific codegen lists.\n\nTests: ART_HOST_CODEGEN_ARCHS\u003d\"x86_64 mips\" m -j ART_TARGET_CODEGEN_ARCHS\u003dsvelte test-art-host\nBug: 30928847\nChange-Id: I0444d15e1cafe4c9b13ff78718c3b13b544270e7\n"
    },
    {
      "commit": "9d4b6da934934c322536ee3309b63ce402740f49",
      "tree": "9e7ee5023d6036b98e0560411bb0527efdedca01",
      "parents": [
        "2af1aa066e3d20edd8fea5d5b6dbbbad73102d52"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Jul 29 09:51:58 2016 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 16 20:19:36 2016 +0000"
      },
      "message": "jni: Fast path for @FastNative annotated java methods\n\nAdds a faster path for java methods annotated with\ndalvik.annotation.optimization.FastNative .\n\nIntended to replace usage of fast JNI (registering with \"!(FOO)BAR\" descriptors).\n\nPerformance Microbenchmark Results (Angler):\n* Regular JNI cost in nanoseconds: 115\n* Fast JNI cost in nanoseconds: 60\n* @FastNative cost in nanoseconds: 36\n\nSummary: Up to 67% faster (vs fast jni) JNI transition cost\n\nChange-Id: Ic23823ae0f232270c068ec999fd89aa993894b0e\n"
    },
    {
      "commit": "3b165bc53c2f063e3a9c644d0edc7bc30c634884",
      "tree": "a408bcb65e848d76a22fcd0367a96ed2630a50b8",
      "parents": [
        "11a59a48474caa818ddf344575aa6afc51f45590"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 22:07:04 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 05 17:57:26 2016 -0700"
      },
      "message": "ART: Extract macro assembler\n\nExtract macro assembler functionality used by the JNI compiler from\nthe assembler interface. Templatize the new interface so that\ntype safety ensures correct usage.\n\nChange-Id: Idb9f56e5b87e43ee6a7378853d8a9f01abe156b2\nTest: m test-art-host\n"
    },
    {
      "commit": "3a656e183ab3131d4a0e1fa79acc79e8da762508",
      "tree": "fa68a3b838778c89cbcd3c6f234513edbb43312e",
      "parents": [
        "3d6094531e3790b25c43e59fd6cd0b6b99d3447c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 02 14:57:56 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 04 16:52:11 2016 +0100"
      },
      "message": "Thumb2: Clean up 16-bit LDR/STR detection.\n\nThe 16-bit LDR/STR sp, #N can be used for N \u003d (imm8 \u003c\u003c 2)\nbut it was previously used only for N \u003c 128. This cleans up\nthe 16-bit instruction availability calculation for this\ncase as well as for byte and half word loads and stores.\nHowever, only the LDR/STR sp, #N has impact on the code we\ncurrently generate in Optimizing.\n\nReduces aosp_hammerhead-userdebug boot.oat by 108KiB.\n\nTest: Run ART test suite on Nexus 5.\nChange-Id: Ie06d130a48efad10c23f8ff2596a51efd98d0761\n"
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "3224838dfe9c95330ad963286f2c47e9546d3b5c",
      "tree": "50d1b8759c61d392ecc159ede7efab94ecbfcde8",
      "parents": [
        "db9fcb30402a2726564905c206fa23ee86e146c3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 19 10:37:24 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 19 18:12:22 2016 +0100"
      },
      "message": "Clean up JNI calling convention callee saves.\n\nPrecalculate callee saves at compile time and return them\nas ArrayRef\u003c\u003e instead of keeping then in a std::vector\u003c\u003e.\n\nChange-Id: I4fd7d2bbf6138dc31b0fe8554eac35b0777ec9ef\n"
    },
    {
      "commit": "c544f34bfed4273b38e5c3769c627e0c3e9c5d73",
      "tree": "2b4c8c7c7787290f8680674ffd9b34bf15c21dc1",
      "parents": [
        "266f2d4d51a18a703b2d4fbfedc63eb1baaf3ffb"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 09 16:26:13 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 09 16:26:13 2016 -0700"
      },
      "message": "Initialize native loader before starting runtime\n\nLoading public libraries before everything else\nto prevent situation when libssl.so gets into\nlibopenjdk.so load group which then prevented\nfrom unloading by a global library referencing\nthe very same libssl.so\n\nBug: http://b/28449304\nChange-Id: I3bbff3cc6926c2377ae5cb5b7b5b5d6e26ea4470\n"
    },
    {
      "commit": "5edb063fc050bad66fe4ae41c93f6d08b0ccccfe",
      "tree": "89c840f95751667139256587f55b222537cf62c8",
      "parents": [
        "457bc24d2a6842ec43451387276629d1288eb195"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Apr 29 11:14:25 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 02 13:43:36 2016 -0700"
      },
      "message": "Fix check_jni_compiler tests\n\nTest needs to initialize nativeloader on runtime-\u003eStart(),\nand reset it when runtime is stopped.\n\nBug: http://b/28449304\nChange-Id: I0ba946fe5fc2817dff73154e3191444106dfcb08\n"
    },
    {
      "commit": "457bc24d2a6842ec43451387276629d1288eb195",
      "tree": "925cdd6d1239bc2740f1b7d249815829c482fe9d",
      "parents": [
        "39d68ef756ef82afbc78baedd0cad8789c732958"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 02 13:39:39 2016 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon May 02 13:43:36 2016 -0700"
      },
      "message": "Revert \"Disable tests after latest nativeloader changes.\"\n\nThis reverts commit 7032e780836a464faf5901d9d8d7fedb97f3a739.\n\nBug: http://b/28449304\n"
    },
    {
      "commit": "7032e780836a464faf5901d9d8d7fedb97f3a739",
      "tree": "141aafe4c42bce12310273a9f805e8bd9ca3b99d",
      "parents": [
        "7f89067bd65eda7edb3c2356bdb712f9401e987d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 29 10:44:21 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 29 10:44:57 2016 +0100"
      },
      "message": "Disable tests after latest nativeloader changes.\n\nbug:28449304\nChange-Id: I27649e0545898012c1e826a4648210d61fbb4a0d\n"
    }
  ],
  "next": "bb661c0f0cb72d4bbfc2e251f6ded6949a713292"
}
