)]}'
{
  "log": [
    {
      "commit": "654f01cd509ca11eae22177d4e764f1241fb3a53",
      "tree": "d17db438be0691a5e4e6b4721b670530e336690e",
      "parents": [
        "028c7efaf7321a1e253fb4d9dcc5d85e8a9e6d68"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 26 16:40:20 2021 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 28 00:31:54 2021 +0000"
      },
      "message": "Fix lock visiting for synchronized native methods.\n\nThe `GetGenericJniSynchronizationObject()` function was used\nin the wrong context. As documented, it can be used only for\na method with a GenericJni frame and also on the top of the\nstack. When visiting locks, we can have a non-GenericJni\nmethod frame as well as a method deeper in the stack.\nReplace the wrong use with specialized code.\n\nTest: Added regression test to 178-app-image-native-methods\nTest: testrunner.py --host --debug --ndebug\nBug: 172332525\nBug: 189235039\nChange-Id: Ia26f0b980c04a766e31b1588a1c011bcf46c90d8\n"
    },
    {
      "commit": "6bc480b56e8bf070eb425b792757c62ca8fd38b2",
      "tree": "b00302f3be9f3ca54b4d0e870e47d14dcd97705f",
      "parents": [
        "66704db5967a8eed64f53d82594205d6d48a953d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 08 09:00:33 2020 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 08 14:56:13 2020 +0000"
      },
      "message": "Fix dlsym lookup trampoline for @CriticalNative.\n\nFor @CriticalNative we do not have the JniEnv* argument to\nretrieve the Thread*, we must use the thread register.\n\nThe test 178-app-image-native-method was supposed to cover\nthis but the profile was missing the necessary references.\nWe add those references and add $noinline$opt$ tags to make\nsure the test actually runs the way it was supposed to and\nadd extra calls to the critical methods as they can take\ndifferent paths on subsequent execution.\n\nAlso add an extra test for class initialization checks that\nensures correct behavior for planned direct calls from\ncompiled managed code to registered @CriticalNative code.\n\nTest: testrunner.py --target --optimizing -t 178\nBug: 112189621\nChange-Id: I6a63d990bc08236ebaac7dacb0f5979d835ee321\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": "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": "7dac864d7eae3d731eeacf55cfc7f71b4df6cee3",
      "tree": "9f27bb1c0b6f076c2dd1b721441200f9f7a78022",
      "parents": [
        "047081a1509762879a9eb51981982af65f419bac"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 06 17:09:30 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 27 10:02:22 2019 +0000"
      },
      "message": "Clean up JNI dlsym lookup trampoline.\n\nMake sure the GenericJniTrampoline recognizes the trampoline\nin primary boot image oat file. Rename that trampoline, add\na test and flag some issues in the code.\n\nTest: New test 178-app-image-native-method.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: testrunner.py --host -t 178-app-image-native-method\nBug: 112189621\nChange-Id: I8f8cd11998af536fd3842dd4183a25f0367655a6\n"
    }
  ]
}
