)]}'
{
  "log": [
    {
      "commit": "2f4942879da18c9789800878b0e5eb87fbedb7b0",
      "tree": "b14968d70ac2f623f980207b4afad64806470994",
      "parents": [
        "0b1afb7c63d99c88f90f17770ad94ccb0b0c57d3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 07 22:53:09 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 07 17:31:43 2020 -0800"
      },
      "message": "Revert^2 \"Remove finalizable restriction on structural redefinition\"\n\nThis reverts commit 0b1afb7c63d99c88f90f17770ad94ccb0b0c57d3.\n\nDaemon shutdown is known to be somewhat flaky. That seems to be the\ncause of this failure.\n\nReason for revert: Removed Daemon threads from tests 2006 \u0026 2007.\nBug: 134162467\nTest: % ./art/test/run-test --create-runner --host --prebuild --compact-dex-level fast --jit --no-relocate --runtime-option -Xcheck:jni --debuggable --runtime-option -Xopaque-jni-ids:true --64 2007\n      ...\n      Runnable test script written to /tmp/allight/test-230585/runit.sh\n      ...\n      % ./art/tools/parallel_run.py -j80 /tmp/allight/test-230585/runit.sh --out failure.txt\nTest: ./art/test/run-test --create-runner --host --prebuild --compact-dex-level fast --jit --no-relocate --runtime-option -Xcheck:jni --debuggable --runtime-option -Xopaque-jni-ids:true --64 2006\n\nChange-Id: I392a2936995dd05b08feea36f11b616c1548ae46\n"
    },
    {
      "commit": "0b1afb7c63d99c88f90f17770ad94ccb0b0c57d3",
      "tree": "92e88de49a2e79c2a00ce8990e412febc81e5318",
      "parents": [
        "93be70effba70b78596fc4bda6b583615c3b6d0c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 07 22:51:03 2020 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 07 22:51:55 2020 +0000"
      },
      "message": "Revert \"Remove finalizable restriction on structural redefinition\"\n\nThis reverts commit 55d6fa4c352a1fadbd21b8d8e0929833e547b9e5.\n\nBug: 134162467\nTest: None, pure revert.\nReason for revert: Flaky segvs across multiple configurations.\n\nChange-Id: Iaa8ec6cbd2eee141e271cd3a56a1b6be8bbb3a7c\n"
    },
    {
      "commit": "55d6fa4c352a1fadbd21b8d8e0929833e547b9e5",
      "tree": "2f84bbe0ee1129aa754a30603269e34656b30f07",
      "parents": [
        "65c18a21e7cb0d48327788df498f15ae195e9e3c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 20 12:58:14 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 07 19:43:10 2020 +0000"
      },
      "message": "Remove finalizable restriction on structural redefinition\n\nPreviously we restricted performing structural redefinition of classes\nwith finalizers. We did this because we need to be careful that\nfinalizers are not run on any obsolete objects and are run on the\nreplaced objects. This fixes these issues and removes the restriction.\n\nNote that the objects of classes that were initially non-finalizable\nand then redefined to be finalize able will never be called. This is\n(technically) compliant with the spec and avoids issues around safely\ncreating finalizer references. See comment in ti_redefine.cc for more\ninformation.\n\nTest: ./test.py --host\nBug: 134162467\nChange-Id: I51d4de3d15833dce989cd1e44c32b0e6a57f063a\n"
    },
    {
      "commit": "eeae32ba02c7d3785a8d195e967febfaa0b1113b",
      "tree": "d7e7a1b09460db0f9b359d582602300a25570a26",
      "parents": [
        "066dd902930582873e7d9372ac0c8483ac700cb9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Dec 28 00:53:50 2019 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Dec 28 02:25:26 2019 +0000"
      },
      "message": "Revert \"Add consistency CHECKs around ArtMethod fields.\"\n\nThis reverts commit 382df393c684c6a5f3856365177da715880d7f08.\n\nReason for revert: Fails for test BuzzBeepBlinkTest on x86\n\nBug: 146765723\nChange-Id: If86c07959969a831ab5b24681e70c85d3c59c1fd\nTest: TH\n"
    },
    {
      "commit": "c9af14e93f6a2691bf8231752d8d7c3e41b14c76",
      "tree": "e56dcf999630a752cd955a06c7f4c00b7add290b",
      "parents": [
        "80777ed308b965175223455d738c890618a008b5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 12 09:51:38 2019 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 18 23:00:11 2019 +0000"
      },
      "message": "Add comment \u0026 refactor check for Obsolete class in FindFieldFromCode\n\nAdd a comment explaining why we need a check for a class not being an\nobsolete class in FindFieldFromCode. It is needed since if we\nstructurally redefine a class that is in the middle of running its\n\u003cclinit\u003e or \u003cinit\u003e function the classes final fields will be set from\na function with the obsolete class as its declaring-class.\n\nAlso refactor the code a bit to put this logic in ArtField.\n\nTest: None\nChange-Id: I9ebb0c89568b9d8e5a60d44c982584b174370eef\n"
    },
    {
      "commit": "013d1ee96b928f3bda9031e94d4a69f827133ce6",
      "tree": "4e374c043330f123dc3888922b554fd1291349b4",
      "parents": [
        "9ca8b2bf46978e3a5698f8a27b48aa7eff3514df"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 16:18:15 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 17 09:43:08 2019 +0000"
      },
      "message": "Introduce the notion of an nterp frame.\n\nSee comments in nterp_helpers.cc. An nterp frame follows the\ncalling conventions and exception handling of the compiler. There are\nno ManagedStack transitions, and the compiler and interpreter can\njust call each other directly.\n\nFor the stack walker, an nterp frame looks like a compiled frame.\n\nThis CL introduces an nterp frame, another CL will contain an\nimplementation for x64.\n\nBug: 119800099\nTest: test.py\nChange-Id: Ie9b691f58908b7f283b4cd63b84b651526155d27\n"
    },
    {
      "commit": "270db1ce48377e3d9ca0c3dcec834ac807ca885b",
      "tree": "ffc553c6ff1ad37bdc3caca01ad686fa41ca0688",
      "parents": [
        "42b9c19772542457701d5efea26aae4449dec8c7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 03 12:20:01 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Dec 11 18:46:44 2019 +0000"
      },
      "message": "Revert^4 \"Allow structural redefinition on non-final classes.\"\n\nThis reverts commit 664999a12d6fc8a8ef5c0519b12ec1e8a51bb085.\n\nFixed issues with GC and quickened instructions in parent CLs.\n\nReason for revert: Fixed issues with GC CHECK fail and device SEGVs.\n\nTest: ./test.py --host\nTest: ./test.py --target\nBug: 134162467\nBug: 144168550\nChange-Id: Ibacddaf45beb72184f97d53d5d048bd442578658\n"
    },
    {
      "commit": "a00b54b74bee06c006b8bebfbef85e2801de293c",
      "tree": "6edb2a96c1f89ae913e6b5f190b117cb290239e8",
      "parents": [
        "e571a283b73fb4621c401811f523503b3266564b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 14:36:42 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 04 12:04:36 2019 +0000"
      },
      "message": "Helpers and refactorings to prepare for interpreter optimizations (x64)\n\n- Add data structure offsets that will be used in assembly code.\n- Be explicit about a stack overflow in a fault handler.\n- Move assembly helper code in asm_support so interpreter can use it.\n- Support putting literals in InterpreterCache.\n- Fix artHandleFillArrayDataFromCode for x64.\n\nBug: 119800099\nTest: test.py\nChange-Id: I2729f87fe5d09c04ae2e7081636f0cd89ac14c21\n"
    },
    {
      "commit": "a59af8aeaad8fe7d68d8f8de63eab9cf85b6ab31",
      "tree": "83195c74b135731cc4555254763a8f449691c1b0",
      "parents": [
        "5c8cc64b5f1580faf510f27527e7e22987174963"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 27 17:42:32 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 14:32:09 2019 +0000"
      },
      "message": "JIT baseline: trigger optimized compilation on hotness threshold.\n\n- Add a new hotness count in the ProfilingInfo to not conflict with\ninterpreter hotness which may use it for OSR.\n- Add a baseline flag in the OatQuickMethodHeader to identify baseline\ncompiled methods.\n- Add a -Xusetieredjit flag to experiment and test.\n\nBug: 119800099\nTest: test.py with Xusetieredjit to true\n\nChange-Id: I8512853f869f1312e3edc60bf64413dee9143c52\n"
    },
    {
      "commit": "664999a12d6fc8a8ef5c0519b12ec1e8a51bb085",
      "tree": "f4ae1b0844ac075807229db9695ead7dec07ff8a",
      "parents": [
        "642af13b1b14794d8ab0db5cc82206213e648fa1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 08:47:26 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 03 08:47:45 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Allow structural redefinition on non-final classes.\"\"\n\nThis reverts commit f1b809ce611e943f926fff97cefe0930226ffcc2.\n\nReason for revert: Tests still fail\n\nBug: 134162467\nBug: 144168550\nChange-Id: Icdebc826b8630920b716afbfd6f338a29669fcc2\n"
    },
    {
      "commit": "f1b809ce611e943f926fff97cefe0930226ffcc2",
      "tree": "f75675383cf8018f9f333e608df35edbacf1c913",
      "parents": [
        "20b7a9b8aeaf76fc8f3248f211489fd00af73170"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 26 18:52:06 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Dec 02 18:34:20 2019 +0000"
      },
      "message": "Revert^2 \"Allow structural redefinition on non-final classes.\"\n\nWe were incorrectly racing with the rest of the runtime in a couple of\nplaces. First we would return an ObjPtr of a newly defined class after\nholding it over a suspend point. This could lead to DefineClass\nreturning an obsolete class in some cases.\n\nWe also failed to ensure the class-status was synchronized between the\nold and new classes during structural redefinition. This could lead to\na class appearing to go backwards in status.\n\nThis reverts commit 88b1c83080afcb2bfb6f781ded1c90fe8f9eab4d.\n\nReason for revert: Fixed issues causing test failures.\n\nTest: ./test.py --host\nBug: 134162467\nBug: 144168550\n\nChange-Id: I4d0f7718490532f0ef14a9561b8e7000ef292b12\n"
    },
    {
      "commit": "08d0984bfeaff1a1bc2db2d51ecf45f2867b3bc4",
      "tree": "3c8c47aae746f4057d541448f873d6e287a092d6",
      "parents": [
        "2d8b7f4ef7a305b98dd54d259e0c2b9f6aed4fd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 02 12:38:49 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 02 15:44:20 2019 +0000"
      },
      "message": "Allow late lookup for @FastNative methods.\n\nAvoid failing a runtime state assertion.\n\nTest: Enable tests in 178-app-image-native-method\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: I3eb5c9fd239743732866e8ea0863a84bf85f7b20\n"
    },
    {
      "commit": "e2a3aa988630b3c2952ac44943f03dde60454195",
      "tree": "acee7012af6e2b161c91e6cd8b7b4d12eb5aa927",
      "parents": [
        "a2c4d61e482a15974e3e220bcd62a64043ee536f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 25 17:52:58 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 27 14:04:43 2019 +0000"
      },
      "message": "Baseline JIT: update inline caches in compiled code.\n\nIn trying to remove profiling from interpreter, to speed up\ninterpreter performance.\n\nBug: 119800099\nTest: test.py --baseline\nChange-Id: Ica1fa41a889b31262d9f5691b30a31fbcec01b34\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"
    },
    {
      "commit": "88b1c83080afcb2bfb6f781ded1c90fe8f9eab4d",
      "tree": "e3ee63ccca83c60c5790e51610349889f44daacf",
      "parents": [
        "8e895008a3e2f2813bb46cb0c6bc76884e46e9ac"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 26 14:13:44 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 26 15:55:26 2019 +0000"
      },
      "message": "Revert \"Allow structural redefinition on non-final classes.\"\n\nThis reverts commit c47040d31cbcd8cddd5fadb552b4f0f6c94b5bd0.\n\nReason for revert: Breaks ART tests (see e.g. b/145197371).\n\nBug: 145197371\nBug: 134162467\nBug: 144168550\nChange-Id: Ia8e5788655057e380fc723a38900d26d69cda938\n"
    },
    {
      "commit": "c47040d31cbcd8cddd5fadb552b4f0f6c94b5bd0",
      "tree": "50df569420cd6746daadf1487933719d1f86d66b",
      "parents": [
        "dc540dfffb6863177143d024dd6f491775d77585"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 13 09:33:52 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Nov 26 02:11:19 2019 +0000"
      },
      "message": "Allow structural redefinition on non-final classes.\n\nThis adds support for structurally redefining non-final,\nnon-finalizable classes. The only restriction is that one cannot\nredefine a class at the same time as any of its supertypes, if a\nstructural redefinition is occurring. The structural redefinition may\nnot remove any fields or methods, change the superclass or change the\nimplemented interfaces. Adding new methods or fields, both static or\nnon-static, public, private, protected, or package-private, is\nsupported.\n\nTest: ./test.py --host\nBug: 134162467\nBug: 144168550\nChange-Id: I32e9e854b3e56270170b10e8f5aba9de8f6bfdfa\n"
    },
    {
      "commit": "d3d00c06a439f5204b290505a3333f780dd00bce",
      "tree": "7fb793aa293908b9218267acbf8e10da14e95031",
      "parents": [
        "0f7c792f12905558836cc01f3406d6ba364cefd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 15:09:07 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 07 16:46:05 2019 +0000"
      },
      "message": "Refactor oat.h.\n\nMove OatClassType and OatMethodOffsets to oat_file.h and\nmake all dependencies on oat.h explicit instead of relying\non transitive #includes. This reduces the number of files\nthat need to be rebuilt for oat version changes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I89c8e397a4f423043d7a036a995cc33548b25051\n"
    },
    {
      "commit": "382df393c684c6a5f3856365177da715880d7f08",
      "tree": "ef0923a3f0b2ab354e4be077798777533fc8f9e2",
      "parents": [
        "9f459c4ef60d771fc4eb8da1f709f479ca23a6ab"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 31 11:57:15 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 04 08:24:20 2019 +0000"
      },
      "message": "Add consistency CHECKs around ArtMethod fields.\n\nThe jitzygote approach relies on those CHECKs which are currently\nguaranteed.\n\nBug: 119800099\nTest: builds\nChange-Id: Ie5bb57bdd9b3c28a2d9cab607db2cf858e1ec131\n"
    },
    {
      "commit": "5115a4dffb95637efe1df92d6f6eb70a8724c9ae",
      "tree": "605f5ca51dde13b1ec93fb0348d52969367b126e",
      "parents": [
        "15ffafd026962a16ee1abdea630542dc46f67482"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 17 14:56:47 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 18 12:49:45 2019 +0000"
      },
      "message": "Clean up initialization checks for entrypoints.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing --jit\nBug: 18161648\nChange-Id: Ia3c2fdb616a5bb289e5afeccd4e6fe3eaf7ed697\n"
    },
    {
      "commit": "47d2947967e301b7a1f9d3d01ad8953cea8a52c7",
      "tree": "ef51e614883565896440880935ca8c89a30b979f",
      "parents": [
        "08dcf15d1a1c321752e72b63c52ec2045b82d50f"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Oct 13 12:10:48 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Oct 13 18:54:24 2019 +0000"
      },
      "message": "Revert \"Improve stack unwinding during gcstress tests.\"\n\nThis reverts commit 357d4db493467e4dd74b2ba1d4b8d7c80f8409b6.\n\nReason for revert: Investigating timeout issues.\n\nBug: 142039427\nChange-Id: Iec1df893c75c6ab5b8cd52ba4b617acff57c3049\n"
    },
    {
      "commit": "55eccdf61f46bd2a633f489f8d09cf78e1de1938",
      "tree": "e60d91c8fc48dfe70956ec9febd346b9dc9fcf77",
      "parents": [
        "49df715faf3700e874fbe246b339a8e426549216"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Oct 07 13:51:13 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Oct 07 18:59:55 2019 +0000"
      },
      "message": "Revert^4 \"Walk internal ArtField/ArtMethod pointers\"\n\nSeveral of the new tests make use of the invoke-custom opcode. This\nopcode is not supported by dexter/slicer causing the tests to fail.\n\nThis reverts commit c34eab45161c51bf63e548e44645cbcc59d01268.\n\nReason for revert: Added tests to redefine-stress known failures\nTest: ./test.py --host --redefine-stress\nBug: 134162467\n\nChange-Id: Ic1b375a0cb1e44d0252c17115af92c269fb8efc5\n"
    },
    {
      "commit": "c34eab45161c51bf63e548e44645cbcc59d01268",
      "tree": "1b2a0eb85865d2cf6b1627cb5d64869e72412505",
      "parents": [
        "623d4f1ba4f4218c5472e3d9e1e9bf707795878d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 07 07:15:53 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 07 07:16:18 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Walk internal ArtField/ArtMethod pointers\"\"\n\nThis reverts commit ea2a3d949354c8b054983ba629c81bc5ff7163da.\n\nBug: 134162467\n\nReason for revert: Fails redefine stress\n\nChange-Id: If487c0bcacaf3a3f565ff475b6dad8321e3428b9\n"
    },
    {
      "commit": "623d4f1ba4f4218c5472e3d9e1e9bf707795878d",
      "tree": "44a01387b2fcdda602019cefa3bf78b6535b2caa",
      "parents": [
        "94af5824acb28f9756fb8246f95f78c4026228e2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 30 13:45:51 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Oct 06 13:09:09 2019 +0000"
      },
      "message": "Share boot image methods memory in JIT zygote.\n\nOnce the zygote is done compiling, copy the ArtMethods to\nshared memory that will be in-place remapped. This is\na memory optimization that enables memory sharing between\nzygote and early forked processes.\n\nCurrently relies on undefined behavior of the kernel, but will\nfollow-up with a CL that uses file sealing that will address this.\n\nSaves around 2MB of memory for processes forked before zygote is\ndone compiling - there are around a dozen of processes.\n\nBug: 119800099\nTest: boots, PostLaunchMemoryUsage\nChange-Id: Ia1bdbd1abd27f28b087d9f33aca4cd901d55082f\n"
    },
    {
      "commit": "ea2a3d949354c8b054983ba629c81bc5ff7163da",
      "tree": "dc94a9c92b254d3f94d96ad0dc27f195d5a7767c",
      "parents": [
        "7fca6ef7b9dbe5a54f2c93a3484035f48ebae27a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 04 20:34:46 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 04 14:21:21 2019 -0700"
      },
      "message": "Revert^2 \"Walk internal ArtField/ArtMethod pointers\"\n\nThis reverts commit 712fa800b2b78e527d36c88dc369bf4b723587ea.\n\nWe incorrectly didn\u0027t check if a method was obsolete before giving its\nclass\u0027s MethodIds array. We then incorrectly used this array and the\n(placeholder) -1 index to try to find the previous method-id. Since -1\nis not a valid array index we got check failures. To fix this we\nsimply added a check that the method is not obsolete and if it is we\ngo to the slow-path.\n\nReason for revert: Fixed issue causing out-of-bounds array access\nTest: ./test.py --host --debuggable --ndebuggable\nBug: 134162467\n\nChange-Id: Iaffefeab6e889b4fb6554a11452d0af051001cb7\n"
    },
    {
      "commit": "712fa800b2b78e527d36c88dc369bf4b723587ea",
      "tree": "ccc4573a3c6bef136ef6da022350ebb5c17a1892",
      "parents": [
        "f70dfec27cae2625c199f1b8ecf1ef1f23580a45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 04 08:38:11 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 04 08:38:38 2019 +0000"
      },
      "message": "Revert \"Walk internal ArtField/ArtMethod pointers\"\n\nThis reverts commit c84fc3a742b160ce51cbf01c2e5f971ccc0a2c6c.\n\nBug: 134162467\n\nReason for revert: Test fails on debuggable.\n\nChange-Id: I240d58fafcc7434749947330b64c67d65b9b7a1e\n"
    },
    {
      "commit": "c84fc3a742b160ce51cbf01c2e5f971ccc0a2c6c",
      "tree": "1380b353e0d3b5015c9d1ef29fd4c2534828f97b",
      "parents": [
        "8679fd5e938d7bed67d3ab67c55b7f4fb2cdd92a"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Sep 24 14:36:50 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Oct 03 20:44:33 2019 +0000"
      },
      "message": "Walk internal ArtField/ArtMethod pointers\n\nDuring structural class redefinition we sometimes need to update some\nof the ArtMethod/ArtField pointers held by runtime frames. This adds\nsupport for doing this through a StackReflectiveHandleScope similar to\nthe StackHandleScope used for holding object references. This also\nupdates various places where reflective-handles to ArtMethods and\nArtFields are needed, for example the JniIdManager, field Read/Write\noperations and events, field resolution, and the old debugger.\n\nTest: ./test.py --host\nBug: 134162467\n\nChange-Id: I4ea73e85956a07735c6d7b125c5828a4233670bc\n"
    },
    {
      "commit": "5a0b6726562948421fbbeb38d20ffd66ef688ff8",
      "tree": "9507db95b78ba55228fc24dc43f485a9755b9773",
      "parents": [
        "a6c9b78a3f2c7a7f39761427dcd32e0bf6c546f3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 24 15:09:40 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 25 16:02:56 2019 +0000"
      },
      "message": "Boot image: only use the resolution stub when there is AOT code.\n\nThis avoids dirtying the page when the class becomes initialized.\n\nTest: test.py\nBug: 119800099\nChange-Id: I5cd7ae56b6637583179dbb766da251977b7ac961\n"
    },
    {
      "commit": "357d4db493467e4dd74b2ba1d4b8d7c80f8409b6",
      "tree": "54850dac045ba281a68671483f8224ca3e6e9ad7",
      "parents": [
        "b0ce4d2e5e01f712443b146644166363d231abe0"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Sep 17 22:23:05 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Sep 20 16:30:48 2019 +0000"
      },
      "message": "Improve stack unwinding during gcstress tests.\n\nReparse process mmaps if new library has been loaded.\n\nTest: test.py -b -r --gcstress --optimizing --host\nChange-Id: If50c226e37301a435d007331d24625bbd391889d\n"
    },
    {
      "commit": "635967b5d16e25630276c23aa47daf52ec493ea1",
      "tree": "4f9cba20e58ae2997b4d693d4e1e76ccd684637f",
      "parents": [
        "8d5a215a7e879d8aa9c7d9d2791ed107ecc41f59"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 07 10:15:39 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 07 14:11:21 2019 +0000"
      },
      "message": "Remove \tmessage ART creates for \"throw null\".\n\nThe new version of R8 transforms:\n  throw new NullPointerException()\n\nInto:\n  throw null\n\nART used to create a message for the pattern \"throw null\", which is\nsomething that now breaks ObjectsTest.requireNonNull.\n\nTest: libcore.java.util.ObjectsTest#test_requireNonNull_T\nChange-Id: I142ddc74a9c0cfc76d2479eb92078b7a7d077b27\n"
    },
    {
      "commit": "baa81b5f25e10dd054e3562688802468512f8f67",
      "tree": "3833d8d83baf6988e995b2dd757353f7925ba939",
      "parents": [
        "38a062eb7390f07ee0a318517f71d9b56491a5f7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 02 10:14:04 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Aug 05 20:35:53 2019 +0000"
      },
      "message": "Use ClassStatus::kVisiblyInitialized in interpreter.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter --interp-ac\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --interpreter --interp-ac\nBug: 36692143\nChange-Id: Ic081c3fab8fb98ba2667bc851fb2b7dd746e7020\n"
    },
    {
      "commit": "8e1106587f0273116302afe06956129b5d82784a",
      "tree": "e1869e8da9ab9a6bfdf89a34f4e8cedd44045005",
      "parents": [
        "5a11036542fbd2c00de1896c0ae2477f655e8ed3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 30 10:14:41 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 01 08:35:08 2019 +0000"
      },
      "message": "Use ClassStatus::kVisiblyInitialized for allocations.\n\nAnd move the \"intialized but not visibly initialized\" check\nto ClassLinker::EnsureIntialized().\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: 36692143\nChange-Id: Ib5e19326b1149b2aef586b905ce89470c3a8e405\n"
    },
    {
      "commit": "bf12191214c0d6215a98dfe846a51230d995dad9",
      "tree": "085c1059014ce66fdb7eceb6e8502d906f0eacbd",
      "parents": [
        "78342419743cb6d0f17dc2d4c0cd99d18d9c83d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 04 13:49:05 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 26 11:10:26 2019 +0000"
      },
      "message": "Implement ClassStatus::kVisiblyInitialized.\n\nPreviously all class initialization checks involved a memory\nbarrier to ensure appropriate memory visibility. We change\nthat by introducing the kVisiblyInitialized status which can\nbe checked without a memory barrier. Before we mark a class\nas visibly initialized, we run a checkpoint on all threads\nto ensure memory visibility. This is done in batches for up\nto 32 classes to reduce the overhead.\n\nAvoiding memory barriers in the compiled code reduces code\nsize and improves performance. This is also the first step\ntoward fixing a long-standing synchronization bug 18161648.\n\nPrebuilt sizes for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19150696\n   arm64/boot*.oat: 22574336\n   oat/arm64/services.odex: 21929800\n - after:\n   arm/boot*.oat: 19134508 (-16KiB)\n   arm64/boot*.oat: 22553664 (-20KiB)\n   oat/arm64/services.odex: 21888760 (-40KiB)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots\nTest: run-gtests.sh -j4\nTest: testrunner.py --target --optimizing\nTest: Manually diff `m dump-oat-boot` output from before\n      with output after this CL without codegen changes,\n      with `sed` replacements for class status. Check that\n      only checksums and the oatdump runtime values of\n      DexCache.dexFile differ.\nBug: 18161648\nBug: 36692143\nChange-Id: Ida10439d347e680a0abf4674546923374ffaa957\n"
    },
    {
      "commit": "323844002e54243e295497e7f829e46a533da621",
      "tree": "e6219f651332ee140042e4e0d4c975919f4fe9bf",
      "parents": [
        "297a0533d2e3f1d49f0b73c5d1e3b09ce0418de2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 17 20:06:44 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 18 13:12:57 2019 +0000"
      },
      "message": "jitzygote: Handle case of methods having the resolution stub.\n\nWe need to cache the compiled code until the class is initialized.\n\nTest: test.py\nTest: jitzygote config boots\nBug: 119800099\nChange-Id: Ib7a1efc3e101d9dabfad963621a1fe4a142e9b29\n"
    },
    {
      "commit": "d5fd5c3bbb44880e440c6920ce5ed56b5383c788",
      "tree": "2cf8a6354e5509c5a5e0bc2937c24fe7e03a12b1",
      "parents": [
        "1a6f9fcce199f437a5945dfe0163188b923adb28"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 02 14:46:32 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 04 08:17:30 2019 +0000"
      },
      "message": "Make .bss stores atomic release operations.\n\nAnd rely on architecture-dependent behavior for the .bss\nentry loads.\n\nThis fixes theoretical races when one thread updates the\n.bss entry and another uses it immediately thereafter;\npreviously we did not ensure correct memory visibility.\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\nChange-Id: Ie7b7969eb355025b9c9205f8c936e702861943f4\n"
    },
    {
      "commit": "0d4567f26701abae84b02389c379843c1dc851a8",
      "tree": "f665e6d5db5af79a4afa3b97cd7cdb7a2069da3f",
      "parents": [
        "cc08c50948d8b2a93b53a327717c7b2a146ac754"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu May 30 22:45:40 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 30 18:04:44 2019 +0000"
      },
      "message": "Stack maps: Refactor constructors.\n\nCreate dedicated static methods instead of passing flags.\nThis creates dedicated methods for the purpose and merges\nconstructor and decoding into single optimized method.\n\nThis speeds up CodeInfo by 10%, and maps startup by 0.1%.\n\nTest: ./art/test.py -b --host\nChange-Id: Ic7d43e22bca0be9fb13bc2c7544ebfdf46798cfe\n"
    },
    {
      "commit": "b7c640d364d32b79cb52d04750b063667a9a0c86",
      "tree": "9caafc96879f83f8e5dd3cd45b9005be6e2b7deb",
      "parents": [
        "3ffb5b1576f8af0c361284ebd8d2d54c70ede3ff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Mar 20 15:52:13 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jun 10 18:33:25 2019 +0000"
      },
      "message": "JVMTI Force early return\n\nAdd support for can_force_early_return jvmti capability. This allows\none to force java frames to exit early. Exited frames have all of\ntheir normal locks released.\n\nWe implement this by modifying the existing method exit events to\nallow one to modify the exit value during the callback. This is used\nto implement ForceEarlyReturn by adding internal-only events that will\nchange the return value of methods once they return (using\nkForcePopFrame) avoiding the need to modify the actual interpreter\nvery deeply. This also makes it simple to continue to use the standard\ndeoptimization functions to force the actual return.\n\nIn order to simplify book-keeping the internal event is refcounted,\nnot associated with any specific jvmtiEnv, and only settable on\nspecific threads. The internal event is added by the ForceEarlyReturn\nfunction and then removed by the MethodExit event when we update the\nreturn value.\n\nBug: 130028055\nTest: ./test.py --host\nChange-Id: Ifa44605b4e8032605f503a654ddf4bd2fc6b60bf\n"
    },
    {
      "commit": "743600d5ae654817a5d81179fb480816e0cd139d",
      "tree": "b7d32337b7edda269d9ebc72b73551eff1b791f7",
      "parents": [
        "bd613eced14bc56ece6beb276addab0f40337163"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 04 10:49:52 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 04 14:58:29 2019 +0000"
      },
      "message": "ARM/ARM64: Clean up artFindNativeMethod().\n\nPass the Thread::Current() as an argument just like we\ndo for other architectures.\n\nTest: aosp_taimen-userdebug boots.\nTest: testrunner.py --target --optimizing\nChange-Id: I1dfb019da1018f493ee55ff28bd20e2db2258eb9\n"
    },
    {
      "commit": "e42a4b95eed312e6f7019645f4c66b2d77254433",
      "tree": "dd150dd4651180c5fbba3a4fd90f8ca8a3f14e9d",
      "parents": [
        "67ba872df798271d2960be27c7f1e813259feabc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun May 26 00:10:25 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun May 26 23:47:47 2019 +0000"
      },
      "message": "Optimize stack maps: add fast path for no inline info.\n\nConsumers of CodeInfo can skip significant chunks of work\nif they can quickly determine that method has no inlining.\n\nStore this fact as a flag bit at the start of code info.\nThis changes binary format and adds \u003c0.1% to oat size.\n\nI added the extra flag field as the simplest solution for now,\nalthough I would like to use it for more things in the future.\n(e.g. store the special cases of empty/deduped tables in it)\n\nThis improves app startup by 0.4% (maps,speed).\nPMD on golem seems to gets around 15% faster.\n\nBug: 133257467\nTest: ./art/test.py -b --host --64\nChange-Id: Ia498a31bafc74b51cc95b8c70cf1da4b0e3d894e\n"
    },
    {
      "commit": "9b81ac36e161fd993eab17b43b93a96e8c63b5cc",
      "tree": "bac59dd8a62ae9f410c707a4086c330b8923a55b",
      "parents": [
        "92ed90ca3897ae7861b22aa12740065152839649"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 16:47:08 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 17 08:10:30 2019 +0000"
      },
      "message": "Add default argument kIsInstrumented\u003dtrue.\n\nkIsInstrumented\u003dfalse is reserved for use by specialized\nentrypoints which are used only when we can ensure that\nthe code is not instrumented. So add the default argument\nto simplify all other callers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3419795794fec9a1733ab3ad698b6415dbac679d\n"
    },
    {
      "commit": "552a13415573da19eafa46e1ac00fb0eb68f2b23",
      "tree": "8cae5f3602d8f8e65cd3cbc349af17d785128605",
      "parents": [
        "0dda8c84938d6bb4ce5a1707e5e109ea187fc33d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 10:56:47 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 14:44:09 2019 +0000"
      },
      "message": "ART: Optimize StringBuilder append pattern.\n\nRecognize appending with StringBuilder and replace the\nentire expression with a runtime call that perfoms the\nappend in a more efficient manner.\n\nFor now, require the entire pattern to be in a single block\nand be very strict about the StringBuilder environment uses.\nAlso, do not accept StringBuilder/char[]/Object/float/double\narguments as they throw non-OOME exceptions and/or require a\ncall from the entrypoint back to a helper function in Java;\nthese shall be implemented later.\n\nBoot image size for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19653872\n   arm64/boot*.oat: 23292784\n   oat/arm64/services.odex: 22408664\n - after:\n   arm/boot*.oat: 19432184 (-216KiB)\n   arm64/boot*.oat: 22992488 (-293KiB)\n   oat/arm64/services.odex: 22376776 (-31KiB)\nNote that const-string in compiled boot image methods cannot\nthrow, but for apps it can and therefore its environment can\nprevent the optimization for apps. We could implement either\na simple carve-out for const-string or generic environment\npruning to allow this pattern to be applied more often.\n\nResults for the new StringBuilderAppendBenchmark on taimen:\n  timeAppendLongStrings: ~700ns -\u003e ~200ns\n  timeAppendStringAndInt: ~220ns -\u003e ~140ns\n  timeAppendStrings: ~200ns -\u003e 130ns\n\nBug: 19575890\nTest: 697-checker-string-append\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: vogar --benchmark art/benchmark/stringbuilder-append/src/StringBuilderAppendBenchmark.java\nChange-Id: I51789bf299f5219f68ada4c077b6a1d3fe083964\n"
    },
    {
      "commit": "19711d479cd4bc4c2d02edf37526cd4e2a6235f7",
      "tree": "53851b37097ffe2b11e42fd271eb27869956f2c0",
      "parents": [
        "8311489bcaa94a4527d8e010df6a78d457273b53"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 12 14:05:34 2019 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 08 10:18:50 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify instrumentation.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I95d9e1c9c9a0c9e460048c686c229618126b66d5\n"
    },
    {
      "commit": "7989ac9ef0f50db26ce5844e7e6f9a659994c244",
      "tree": "a71974b358b1b06cdd9d740b83cbab41493db4b3",
      "parents": [
        "6dfdfef85b210dc104a7cd221c6717e1a2123a13"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 10 12:42:30 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 12 16:10:51 2019 +0000"
      },
      "message": "Save the JIT compiled code when the class isn\u0027t initialized yet.\n\nWhen a class isn\u0027t initialized, we put resolution stubs to its\nstatic methods. In order to fetch the compiled code at the point of\ninitialization, save it in the profiling info.\n\nBug: 119800099\nTest: start an app, no JIT compilation of boot classpath methods\nChange-Id: I32b947318dbcb1010c94a11b51ea39d992d247e3\n"
    },
    {
      "commit": "21a6ec5a5e9d392e33e4febffaa581da4d4855f2",
      "tree": "f15a490e54d1076765c558583dc0447ce4e60952",
      "parents": [
        "9298875403a470320c7e6a7731522f78583ca124"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 28 10:55:50 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Apr 02 16:39:07 2019 +0000"
      },
      "message": "ART: Add VLOG to GenericJNI\n\nAdd a VLOG(third_party_jni) that details the call, that is, print\nthe Java method and the target\u0027s address.\n\nBug: 128869974\nTest: m test-art-host\nChange-Id: I335115924c0f040d939f3bb55237f7e253b7a549\n"
    },
    {
      "commit": "f52d92fce224c86491d9b0fd6fca805564119426",
      "tree": "fbf38f272a980e965627918d9dc6bbb536395c00",
      "parents": [
        "e660f7232a19a2c173f562b8e0987755a78ee298"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 12:33:02 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 09:37:59 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify Monitor/-Pool.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 31113334\nChange-Id: I2d2ebc5ef56e73e5678e0cfcd84c479611dfcca8\n"
    },
    {
      "commit": "4617d5823c8e7841fed813b3b9c72664d7fd4dc6",
      "tree": "9eafbee06717e02a2c4acd5d7ce1e6601955356e",
      "parents": [
        "d7e9bbf092b5a61048358fd54183526ef12284af"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:48:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Object::As*(), fix stale refs in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ia04c4996f5cbfa1f26acbadcd747342c57b1aac3\n"
    },
    {
      "commit": "d7e9bbf092b5a61048358fd54183526ef12284af",
      "tree": "620cee17c499bdb23217224b0b1332408d725a6e",
      "parents": [
        "bb206de72135271e66e58576b1196f3e08d5b6fd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 13:18:57 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 29 09:50:00 2019 +0000"
      },
      "message": "Clean up explicit conversions to ObjPtr\u003c\u003e.\n\nAdd an ObjPtr\u003c\u003e::DownCast() overload that takes a plain\npointer and remove unnecessary calls to MakeObjPtr(),\nusually preceding DownCast(). Move the MakeObjPtr() to\ncommon_art_test.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I2a243b6d8f3b2e773396dfc53b659c5f7d9ea44a\n"
    },
    {
      "commit": "3b45890cf987c0b57965acd78958cd8eca487b8e",
      "tree": "18a3dd853e9829873688a6a61bda39dd681b2a27",
      "parents": [
        "423bebb17f15c3867a52315f0ae421f08f14544f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:08:41 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::Throwable.\n\nAnd do some cleanup after previously submitted changes.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I4f8e118bb385a9cba464a564b15addc1c7306ac2\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": "4bb2af5e6163cf68ec65c5497983303302a15a09",
      "tree": "6cc72eae79472645b2c4833acb69f74849e43b0a",
      "parents": [
        "975b77427413977665f3be66d02e1d164df1efbc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 22 11:09:19 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 22 13:08:16 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify entrypoint utils.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --interpreter\nBug: 31113334\nChange-Id: Id05ce5b827b5c11a0fa796bca0b939e29ecf3c5f\n"
    },
    {
      "commit": "3dacdd6343ea9a6471692914c7a9dff66d6453c7",
      "tree": "5e0a3b8f99e914a7fbd49822e5c8fb1bd4709f5c",
      "parents": [
        "939798e6a565a92e597136c589428e89c28bffd5"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 15:45:47 2019 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Mar 12 09:52:59 2019 -0700"
      },
      "message": "Revert^4 \"Remove Global deopt requirement for several jvmti events\"\n\nIt was possible for the top frame of a thread to enter the\nartQuickToInterpreterBridge during runtime shutdown. This could be\ncaused by the libjdwp agent. If this happens the caller of the frame\nwill be \u0027null\u0027, which could cause a segv if not detected correctly.\n\nThis reverts commit 939798e6a565a92e597136c589428e89c28bffd5.\n\nReason for revert: Fixed issue that could cause crash during process\n                   shutdown.\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\nTest: ./test.py --host\n\nChange-Id: I2aad1705c761edb4ed788cec4fc8a3068d67aee5\n"
    },
    {
      "commit": "939798e6a565a92e597136c589428e89c28bffd5",
      "tree": "3274ff355163df18cd2d7343ce0d34214f9d09c9",
      "parents": [
        "a55e8b5c9827cc4dc4e7f7c7ee07ef1fdafc35e0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:22 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 12 14:26:42 2019 +0000"
      },
      "message": "Revert \"Revert^2 \"Remove Global deopt requirement for several jvmti events\"\"\n\nThis reverts commit a75e5892fba6d0208f33e9ab8e19e732daf94996.\n\nReason for revert: Fails jdwp tests.\n\nChange-Id: Ic883f4f0108b07f1609c6c6a9565eae5903bfd2c\n"
    },
    {
      "commit": "a75e5892fba6d0208f33e9ab8e19e732daf94996",
      "tree": "3daff8c3ce1608bacba7358711ccf9bd61c0bb05",
      "parents": [
        "dd83a40a3c4fea0d917577de96742900a61ab548"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 11 15:49:40 2019 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Mar 11 21:59:44 2019 +0000"
      },
      "message": "Revert^2 \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit ad344b6a14feba90a06a205760e9bc766c56cab0.\n\nJit-on-first-use would cause the runtime to skip sending FramePop\nevents for exceptions in some circumstances due to longjmp-ing over\nthe frames. This requires forcing jit off from the first instant a\nthread can get frame popped events, which is unfortunate.\n\nReason for revert: Fixed issue causing 1925 to fail on\n                   jit-on-first-use and redefine-stress\nTest: ./test.py --host\nTest: ./art/test/testrunner/run_build_test_target.py -j50 art-jit-on-first-use\n\nChange-Id: I6ec2a799db1041262a055be10e1af1faece6f2fc\n"
    },
    {
      "commit": "ad344b6a14feba90a06a205760e9bc766c56cab0",
      "tree": "47801fc5b432b0baf544bb8fd522a9fd3b567a7e",
      "parents": [
        "739383c80684eeb41d380ca5d18e1e9a1fe9fd7f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 17:49:52 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Mar 09 21:13:15 2019 +0000"
      },
      "message": "Revert \"Remove Global deopt requirement for several jvmti events\"\n\nThis reverts commit 334630ee9dffdd1932c1ee641d938f25362a4c1a.\n\nReason for revert: 1924-frame-pop-toggle fails on some configs.\n\nChange-Id: I5ed3846e0dfff09c67a468f319ff516e14c44e61\n"
    },
    {
      "commit": "334630ee9dffdd1932c1ee641d938f25362a4c1a",
      "tree": "81957d634aa76967d97c89014eb69158682b0128",
      "parents": [
        "5b76c16cca1984209e838ada4d79e370d7fda431"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Mar 04 15:08:04 2019 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 08 04:07:45 2019 +0000"
      },
      "message": "Remove Global deopt requirement for several jvmti events\n\nThe JVMTI_EVENT_SINGLE_STEP, JVMTI_EVENT_FIELD_MODIFICATION,\nJVMTI_EVENT_METHOD_EXIT, JVMTI_EVENT_SINGLE_FIELD_ACCESS, and\nJVMTI_EVENT_FRAME_POP events would all deoptimize all threads in all\ncases when enabled. This changes the behavior to instead only\ndeoptimize individual threads when possible. This should make some\ndebugger interactions faster.\n\nTest: ./test.py --host -j72\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nChange-Id: I42513cb17fd1144aeb03ca11afd3e3b05e918ce2\n"
    },
    {
      "commit": "62e7c097988a52add5f51640ff8cfd79229a9dbb",
      "tree": "bbdc0ab64f8f6dffd8fb38029b8fab7becd72144",
      "parents": [
        "e7bd7aa01c05ed8ed7d2227f5fc7c4e8ea0861cf"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 08 09:43:01 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 08 14:15:24 2019 +0000"
      },
      "message": "Put the deoptimized method in the trace tag.\n\nUseful when debugging with a trace.\n\nTest: m\nChange-Id: I59cb5d6810acdeb7cdd40604f8b123cb42aa8be7\n"
    },
    {
      "commit": "7fbc4a59ba2e60d869313d7961662430df83b2cb",
      "tree": "59520285df8d2075412ddc566a0d4d96d4c7e109",
      "parents": [
        "7cc45fd1dbcf5704e442d0443e437aa2ae3fe21b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 28 08:26:47 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 06 11:37:19 2018 -0800"
      },
      "message": "ART: Move to using locks.h instead of mutex.h\n\nWhen only annotating lock requirements, use locks.h.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I1608b03254712feff0072ebad012c3af0cc3dda4\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": "076c9da66b606057109e5fb2902d28129d120b96",
      "tree": "fb0705380c3d1600a08c0e95ed581a967bdf0da0",
      "parents": [
        "1ad1254db5a7d44775840339240a10deb148034b",
        "7e09737125ddb8c6f243ac1882d2a23da3f109c4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 29 07:14:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 07:14:40 2018 +0000"
      },
      "message": "Merge \"Use ArtMethod::GetDexFile() instead of using declaring class.\""
    },
    {
      "commit": "7e09737125ddb8c6f243ac1882d2a23da3f109c4",
      "tree": "1105bc475dec6b923c205cde3d90ca32cd3a803b",
      "parents": [
        "201330ccfb11989f7449486865c6f74b54f1a914"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 28 16:40:59 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 28 16:43:06 2018 +0000"
      },
      "message": "Use ArtMethod::GetDexFile() instead of using declaring class.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/834082 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nBug: 119830111\nChange-Id: I5bd55b0293ef176385a7e9d8b296be6b470cfcc4\n"
    },
    {
      "commit": "e36e7f2226e4e08b7a7094f78cb80bbe0e729c2b",
      "tree": "0787ae19a232728121a60791f3a18094529120f1",
      "parents": [
        "244470afafdb1c5aba17507ef793d316b9c4d038"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 14 14:21:23 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 27 17:31:01 2018 +0000"
      },
      "message": "Store ImtIndex in ArtMethod.\n\nThis avoids recalculation and reduces pressure on the thread local cache.\n\nThis halves the time we spend hashing from 2% to 1% (maps on device).\n\nTest: ./art/test.py -b --host --64\nChange-Id: I2407bd9c222de4ddc6eea938908a1ac6d7abc35b\n"
    },
    {
      "commit": "2bb2fbd2879d0a6d9ebf7acff817079dde89b417",
      "tree": "d607aa6bfb2ea55fbfd875237b37c79f3cfed5f6",
      "parents": [
        "85865697ff9fabede3d64ff64cde72727c3fc4c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 13 18:24:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Create SdkVersion enum, migrate users to it\n\nCreates a new SdkVersion enum with integer codes of known\nAndroid SDK versions, together with helper functions for common\npredicates. Also converts target_sdk_version_ in Runtime to\nuint32_t and cleans up its uses.\n\nTest: m test-art\nChange-Id: Idc6e518c8675068bf952d0256686c88bb0eb833e\n"
    },
    {
      "commit": "fd63bbf88147e19c32c21678b90d8cc450496fc3",
      "tree": "d78f12fbfd72bf29b16e13a7f3fabfca5f1d3f88",
      "parents": [
        "0ee508253edcdee41a80fcbf1511234ca176233d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 29 12:55:35 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 30 10:57:42 2018 -0700"
      },
      "message": "ART: Add string-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for string allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I68d3bcf2b3615d12231010940d0a24a1dbc03826\n"
    },
    {
      "commit": "70f5fd0770adbef645950895309a2a63c3bde7c0",
      "tree": "d9794484e83858cf7e33551eb8a108e07f46b18c",
      "parents": [
        "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:58:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add class-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for class instance allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I32529f0221a836452c58687330a91ac0d5fde162\n"
    },
    {
      "commit": "8e0f04319c7c3ddee60c505376b31768533b0dd5",
      "tree": "b9d215de61b3a16895695e52ff4ee5ecbd985f14",
      "parents": [
        "88dbad33ae92167a89a5d5469f39f41624535dbf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 13:38:03 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 25 09:52:37 2018 -0700"
      },
      "message": "ART: Add array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: Id3378f40c52fa7ef4297af08cb7509e0c04b94d1\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "6c2b86ea5347883564cf4450adbe79922bd8b458",
      "tree": "f39d824d8cf0744303356874cf7d8e28e9a801ae",
      "parents": [
        "e7019db7f0dce1bbad836396710c792fd39593fc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 15 12:57:20 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 15 22:40:56 2018 +0100"
      },
      "message": "Cache the ImtTable index in the interpreter.\n\nThe index is fairly expensive to calculate; cache it.\n\nThis makes the interpreter 1% faster on average (golem; arm64),\nwith some benchmarks being up to 15% faster.\n\nTest: test.py -b --interpreter --host\nChange-Id: If77340967148254c47974538c3ebf051a055d4b0\n"
    },
    {
      "commit": "0aa7a5a6a7bc350b79351f52e26c97747e927acf",
      "tree": "a583889668d9703d16d37586d56421bd27c62661",
      "parents": [
        "e12575640dca5118bf96245f373acda276c22178"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 10 15:58:14 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Oct 11 16:41:54 2018 -0700"
      },
      "message": "Revert^4 \"JVMTI PopFrame support\"\n\nThis reverts commit 202b617acf477e8e8e11915f467120a0bd518e74.\nThis unreverts commit 202b617acf.\nThis unreverts commit 88a2a9d7a1.\n\nThere were several bugs with the implementation of pop-frame related\nto interactions between the jit, exception handling, class-loading,\nand deoptimization.\n\n- We were instrumenting the target thread stack in cases where it was\n  unnecessary which caused the exception handler to incorrectly\n  determine that a method was not deoptimizable. This caused the\n  pop-frame to be ignored.\n\n- We were incorrectly sending ExceptionCatch events if an exception\n  suppressed by pop-frame would have been caught in the current frame.\n\n- We were allowing pop-frame to be used on threads suspended in the\n  ClassLoad or ClassPrepare events despite having surprising semantics\n  in that situation (see b/117615146).\n\nNeeded to modify test 1953 slightly for inclusion in CTS. I needed to\nmake the CTS entrypoint not run the class-load tests (since the cts\nconfiguration means the classes are loaded by the verifier and not the\ninterpreter). I updated the expected.txt and check script to reflect\nthis.\n\nReason for revert: Fixed issue causing Exception events to sometimes\n                   eat PopFrame and other issues.\n\nTest: ./test.py --host\nTest: ./art/tools/run-libjdwp-tests.sh --mode\u003dhost\n\nBug: 73255278\nBug: 111357976\nBug: 117533193\nBug: 117615146\n\nChange-Id: I655c4fe769938cf41d7589f931d6710cf2001506\n"
    },
    {
      "commit": "9293b530ac2a387d85063bffe1797b97c330e475",
      "tree": "32137e54e4f07fccfda3a5a999b1b646421d59c7",
      "parents": [
        "89dc5e2fcff4aee90c60e1a23cded5fa2d9a1f4c",
        "494b12c7c0d860a2aada21bdce7542d18255415c"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Oct 04 13:22:15 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 04 13:22:15 2018 +0000"
      },
      "message": "Merge \"Only warn if a pre-P app overrides inlined methods at runtime\""
    },
    {
      "commit": "c853eed83eb9670ba671b6f271f612e958f64d34",
      "tree": "7f1c0b8bd8328194ead74002f5883e54295f44cd",
      "parents": [
        "ededf08e2f4a5df3401a5d4badb98ff3c8cb8fb9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Sep 13 14:33:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 03 14:26:06 2018 +0100"
      },
      "message": "Use the small thread-local cache for mterp invokes.\n\nThis speeds up non-quickened interpreter by 2% (measured on golem).\n\nTest: ./art/test.py -b -r --interpreter --host\nChange-Id: I6b00db1b2da7fda4cb0a34beb62d3857ae3d72df\n"
    },
    {
      "commit": "494b12c7c0d860a2aada21bdce7542d18255415c",
      "tree": "fa5cd8978c6ceedfe6636181ee41678fe649c92d",
      "parents": [
        "8a19432ee24e87c7962439beffd8a5f481ba4d28"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 07 15:03:57 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 07 17:02:08 2018 +0100"
      },
      "message": "Only warn if a pre-P app overrides inlined methods at runtime\n\nCL Ibe9792f952d0c963b8560f10d57a951e227b24aa increased strictness of\na check that an inlined method did not cross a dex file boundary. For\napp compat reasons, turn this into a warning if the app targets SDK\nversion \u003c 28 (P). The warning makes it clear that the runtime is in an\nunsafe state, but this was the case before P too. Developers will have\ntime to fix the issue until they start targetting P.\n\nBug: 74410240\nBug: 110985613\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nChange-Id: Id1e159449a3766335de0913b94cdb240c1484a33\n"
    },
    {
      "commit": "ce32c1045ef2765fd02cb579245eee8b21476688",
      "tree": "dd2b807355a8778b14f1337209b7980e8da6be9a",
      "parents": [
        "c677cc2911258e077a65abddbbc82c47a68c4172"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Aug 31 07:21:07 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Sep 05 10:28:49 2018 +0100"
      },
      "message": "Rewrite mterp field access helpers\n\nSimplify the code to make further optimizations easier.\n\nTest: ./art/test.py -b -g\nTest: ./art/test.py -b -r --interpreter\nChange-Id: I54fc29a27a982bc007b600e044660ef04b6d9f29\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": "9d479254d0dc4043a15ab26205f40439eca15493",
      "tree": "af8a9c9c6f2c28e723a971c9d39c9d1cebd1f814",
      "parents": [
        "ca20fb6cc4dda392e63bdc8ec9de54d89793373e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 24 11:35:20 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 11:43:30 2018 +0000"
      },
      "message": "Rename type resolution entrypoints.\n\nRename the InitializeType and InitializeTypeAndVerifyAccess\nentrypoints to Resolve* to better match their semantics.\nKeep the InitializeStaticStorage name for now as the most\nappropriate name InitializeType would clash with the old\nname of the ResolveType entrypoint.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ide55b58c490d085ab37d8536f90699f7ed571d59\n"
    },
    {
      "commit": "a9f303c089aa2b2fc82d97201352945678ef54ae",
      "tree": "0df0eb5294a3ee72aea8ca670762c02ca9ffa8dd",
      "parents": [
        "1bfd891d06e276d602b4a6ccf1a9f70967195218"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 20 16:43:56 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 02 17:41:21 2018 +0100"
      },
      "message": "Rewrite Class init entrypoint to take a Class arg.\n\nFixes invalid type index being passed to the entrypoint for\nclass init check across dex files when the target type does\nnot have a TypeId in the compilation unit\u0027s DexFile.\n\nThe size of the aosp_taimen-userdebug prebuilts:\n  - before:\n    arm/boot*.oat: 16782748\n    arm64/boot*.oat: 19764400\n    oat/arm64/services.odex: 20162432\n  - after:\n    arm/boot*.oat: 16811692 (+28.3KiB, +0.17%)\n    arm64/boot*.oat: 19801032 (+35.8KiB, +0.19%)\n    oat/arm64/services.odex: 20232208 (+68.1KiB, +0.35%)\nThis increase comes from doing two runtime calls instead of\none for HLoadClass/kBssEntry that MustGenerateClinitCheck().\n\nTest: Additional test in 476-clinit-inline-static-invoke\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nTest: testrunner.py --jvm\nBug: 111433619\nChange-Id: I2fccd6944480ab4dac514f60d38e72c1014ae7b2\n"
    },
    {
      "commit": "8cd54547cec8a4537db5682c2da8be22843b1310",
      "tree": "fb1158993bab2e027984cedab59b402c051a45a7",
      "parents": [
        "91f0fdb4372d3f2bcfcd9db67afcbe7ee1901048"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jul 15 23:58:44 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Aug 01 14:49:40 2018 +0100"
      },
      "message": "Move MethodInfo to CodeInfo.\n\nThere is no need to treat it specially any more,\nbecause of the de-duplication at BitTable level.\n\nThis saves 0.6% of oat file size.\n\nTest: test-art-host-gtest\nChange-Id: Ife7927d736243879a41d6f325d49ebf6930a63f6\n"
    },
    {
      "commit": "6ee06e97cef5ee92944deaeba0da4d10c4c33a2a",
      "tree": "77d69c85d37864b4d3ee970be4b7fd1246adee7b",
      "parents": [
        "f5dcd31d89282b6c9324fdc960e6e7e2281c16f1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 25 21:45:54 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 26 11:45:54 2018 +0100"
      },
      "message": "Decode only the needed tables from CodeInfo.\n\nMost use cases need only the first two bit tables from CodeInfo.\nAdd flag to the decode method so that only those two are loaded.\nWe only touched the table header but that still made difference.\n\nThis speeds up pmd by over 10%.\n\nTest: test-art-host-gtest\nChange-Id: I7740081bf18205dd69864503b5bcec7de5e1a901\n"
    },
    {
      "commit": "d93e374e273dd45f5d829399da1d4201bf46057e",
      "tree": "280dc72b2aec4696bbc35ad39ca8d3479107380e",
      "parents": [
        "7f7f9d3991f3a55da8934a3b72890d4776373598"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 18 10:58:13 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 19 16:04:38 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify ArtMethod and mirror::Method.\n\nAnd clean up some forgotten things after old CLs.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I8af0e845c24d674d0efab21d80c29949b1cc0593\n"
    },
    {
      "commit": "2c76257e4bfcd6f522b0cd3487ba7d9900043243",
      "tree": "ab1098cffcb3e13087e770d26fef9f4d6f06a550",
      "parents": [
        "0b4a439f808f4602c7b97364e49c5546f5100d51"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jun 27 10:09:11 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Jul 13 16:32:11 2018 +0100"
      },
      "message": "Remove unused InvokeInfo from stack maps and the runtime.\n\nTest: test-art-host-gtest\nChange-Id: I5ce28973042f9241e72ceb52fc5db472ca571563\n"
    },
    {
      "commit": "d109e30eab8ba25f8d89be2a83d9036e2d541af2",
      "tree": "24df91603efe9ce8c4a2efd09ac402aceb10df4e",
      "parents": [
        "c916736ca1e375c276df251446baf2ac8ff3eb13"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 27 10:25:41 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:51 2018 -0700"
      },
      "message": "Don\u0027t use StringFactory.newEmptyString in compiled code\n\nWhen compiling debuggable code we would compile a new-instance String\ninstruction into a StringFactory.newEmptyString invoke. This\nadditional invoke could be observed using tracing and is inconsistent\nwith the interpreter, where the string is simply allocated directly.\nIn order to bring these two modes into alignment we added a new\nAllocStringObject quick entrypoint that will be used instead of the\nnormal AllocObject\u003c...\u003e entrypoints when allocating a string. This\nentrypoint directly allocates a new string in the same manner the\ninterpreter does.\n\nNeeds next CL for test to work.\n\nBug: 110884646\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xjitthreshold:0 --jit\nTest: Manual inspection of compiled code.\nChange-Id: I7b4b084bcf7dd9a23485c0e3cd2cd04a04b43d3d\n"
    },
    {
      "commit": "c916736ca1e375c276df251446baf2ac8ff3eb13",
      "tree": "64f5243c1b95e63a24861af5508b3f71311b51c0",
      "parents": [
        "2c8206ffeb07cebe2f612b8c66c0f4f4132e2be2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 11 16:46:43 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:17 2018 -0700"
      },
      "message": "Ensure proxy methods are reported by instrumentation\n\nPreviously we would not report proxy methods to instrumentation in all\ncases. Specifically if the instrumentation trampolines were not\ninstalled we would never report proxy method entry or exit. This fixes\nthat and ensures that proxy methods are always reported to\ninstrumentation regardless of what instrumentation method is being\nused. It also ensures that these methods will only ever be reported\nonce per entry.\n\nTest: ./test.py --host\nTest: ./test/testrunner/testrunner.py \\\n         --host \\\n         --run-test-option\u003d\u0027--with-agent libtifast.so\u003dMethodEntry,MethodExit\u0027\n\nChange-Id: I78f1d4b3b3f242e8915989ab26f7c204baab08e5\n"
    },
    {
      "commit": "2d441b1253cca39bf3078422e8f0b2f4ec1bb408",
      "tree": "3db740023b1322749856f943c4b25b8158da8a44",
      "parents": [
        "e824cfdcfd41d400237a806ff93caca7f2e51878"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 08 15:33:21 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:17 2018 -0700"
      },
      "message": "Make instrumentation trampoline able to jump to jit code\n\nIn order to get the benefit of the instrumentation trampoline it must\nbe able to jump to jit code. This patch adds support for doing that\nand adds code to ensure that we will not be jumping back and forth\nbetween the trampoline and the interpreter all the time if the jit has\nnot yet compiled the current method.\n\nNote we also disable the jit-gc when turning on these trampolines\nsince otherwise we could end up either sending instrumentation events\nmultiple times or running uninitialized memory.\n\nBug: 110263880\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so --runtime-option\u003d-Xjitthreshhold:0\nTest: ./test.py --host\n\nChange-Id: Ie6e92ec6367452fe4fde24d520d808b7af91d1b5\n"
    },
    {
      "commit": "a296f908e186398ff413c78f2460cb3138e531ab",
      "tree": "04592d0bcf8afac399dc562efdcac491072366eb",
      "parents": [
        "b275072ddfb1bfcacc914aff08cb0f5774000258",
        "93bd3619de4616040d672a4ed3825976bed4bfce"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 05 00:03:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 05 00:03:21 2018 +0000"
      },
      "message": "Merge \"Use iterators to access stack map data.\""
    },
    {
      "commit": "93bd3619de4616040d672a4ed3825976bed4bfce",
      "tree": "2ab3424374ed3d316053ed8e9ec2d4b95ea2ef4d",
      "parents": [
        "f07d5617770c37d87447c8bddf105eb0469ab093"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Jul 02 19:30:18 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Jul 04 14:23:12 2018 +0100"
      },
      "message": "Use iterators to access stack map data.\n\nTry to simplify the code using the recently added iterators.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I0b9f54df01749ee6ec3a67cfb07ba636a2489c89\n"
    },
    {
      "commit": "35d5b8a2c5d2fce03be59aa003c3bf3c1b481be0",
      "tree": "7665f6d1527be61af13c8ef53f10833dd4200cfd",
      "parents": [
        "b28683f43231e65860ecf91c96a8c0234542c019"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 03 09:18:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 03 09:18:32 2018 +0100"
      },
      "message": "ART: Do not use std::\u003ccontainer\u003e::at().\n\nThese functions are specified as throwing std::out_of_range\nand we do not use exceptions.\n\nTest: m\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I67c365ed6d779c101a18b9f386c751c48ca76e16\n"
    },
    {
      "commit": "88ea61ef73d4c670ae6188f60e1d07bb8befc895",
      "tree": "4be800ea6e2e6ea7b985649c62a3a88841eb1720",
      "parents": [
        "15bdbf1e189d998cb0f63772a456190cf85bc777"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 20 17:45:41 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jun 20 17:48:08 2018 -0700"
      },
      "message": "Refactor WriteBarrier logic into its own file\n\nRefactor write barrier logic to have the null check logic in the\nbarrier if possible.\n\nMoved the logic into its own file.\n\nTest: test-art-host\n\nChange-Id: I8292cd7f01dbdddea7aeab6e01da4d309ab452fe\n"
    },
    {
      "commit": "c97946ca7e99eeb53388d3d4d4577705f5537671",
      "tree": "f24e0ab43c61546f23e4c3f06723b7ed34cec904",
      "parents": [
        "6cae5ea222ba256b0ade1e18e37a0f49e952c57c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 08 09:22:55 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 13 10:32:17 2018 -0700"
      },
      "message": "Allow jumping back to interpreter in instrumentation entrypoint.\n\nWe were incorrectly asserting that all non-deoptimized methods had\nvalid (and findable) compiled code available. With the JIT this is no\nlonger true.\n\nNB Several additional patches are required for the instrumentation\ntrampolines to actually work correctly in all instances.\n\nTest: ./test.py --host\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nChange-Id: I069957a63dc36abaadd24063099c0d9e279f1884\n"
    },
    {
      "commit": "6cae5ea222ba256b0ade1e18e37a0f49e952c57c",
      "tree": "454921ebef5312cb81fa3e8e011c0d4d4eae9ad6",
      "parents": [
        "b32c6a914e7e7658c5ea64a00f2776e351adaa74"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 07 17:07:02 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 13 10:32:10 2018 -0700"
      },
      "message": "Ensure we never instrument Proxy.\u003cinit\u003e entrypoint\n\nDue to the way we implement Proxy classes we need to be very careful\nwhen modifying proxy classes and the (non-proxy)\njava.lang.reflect.Proxy class and its methods. In particular we always\navoid installing an instrumentation entrypoint into the Proxy.\u003cinit\u003e\nmethod since we copy it for each proxy class. Failing to do this\ncauses problems as the instrumentation entrypoint bounces to the Proxy\nentrypoint which gets confused since the copied init method is not\nreally a proxy method. Unfortunately if one starts the profiling\nprocess early enough it was possible for the Proxy.\u003cinit\u003e method to\nget instrumented as it is being loaded. This CL ensures that the\nmethod is skipped just like it would be if profiling was started\nlater.\n\nNB Test requires several other patches to actually run far enough to\nobserve this issue.\n\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xplugin:libtracefast-trampolined.so\nTest: ./test/testrunner/testrunner.py --host --run-test-option\u003d\u0027--with-agent libtifast.so\u003dMethodEntry,MethodExit\u0027\nChange-Id: I18fb381d18d7100b5ec843b3cddd387f2d033776\n"
    },
    {
      "commit": "4c8e12e66968929b36fac6a2237ca4b04160161e",
      "tree": "d8bbfd72a978c69ef2eef98c37e7869673c52295",
      "parents": [
        "20c64f8d802cc575cc9a1a1f6c493a611b23e2ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 18 08:33:20 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jun 11 10:57:17 2018 +0100"
      },
      "message": "ART: Adds an entrypoint for invoke-custom\n\nAdd support for the compiler to call into the runtime for\ninvoke-custom bytecodes.\n\nBug: 35337872\nTest: art/test.py --host -r -t 952\nTest: art/test.py --target --64 -r -t 952\nTest: art/test.py --target --32 -r -t 952\nChange-Id: I821432e7e5248c91b8e1d36c3112974c34171803\n"
    },
    {
      "commit": "cd260ebf53e0e05bd75c37c4139f32782eb4ad97",
      "tree": "dab8e9054c59c16303ab9c8aeed01edeb0bb12da",
      "parents": [
        "408bdc604e4fe230bf90ffa6816bfbbb3786806e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 06 09:04:17 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jun 08 14:56:10 2018 +0100"
      },
      "message": "ART: Simplify invoke-polymorphic entrypoints\n\nMoves to pattern used by the interpreter bridge and writes the result\nin both the regular return register and the floating point result\nregister.\n\nAdd return value tests to 956-method-handles.\n\nTest: art/test.py --host -r -t 956\nTest: art/test.py --target --32 -r -t 956\nTest: art/test.py --target --64 -r -t 956\nChange-Id: I7389d04b70b88e149682f6d656ab185e48bcbf66\n"
    },
    {
      "commit": "f51359edab8cd1a77677e68f0f2b56dc0f5d2561",
      "tree": "8b03fb414afac9cac2746eaaac9cd3330f1c097b",
      "parents": [
        "a13ec547911bb33d05955d9d6f336f550c8d9c10",
        "6e69e52a12883386f91d014324bebee867ca7877"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 06 00:24:22 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 06 00:24:22 2018 +0000"
      },
      "message": "Merge \"Remove depth argument from InlineInfo accessors in stack maps.\""
    },
    {
      "commit": "6e69e52a12883386f91d014324bebee867ca7877",
      "tree": "7d1850f0a59e4ea2d013d6d479cd616b66922970",
      "parents": [
        "6eb4d5e4bc2ce068004c1d7c85dbfff0c5efd11d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Jun 03 12:00:14 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jun 05 16:50:38 2018 +0100"
      },
      "message": "Remove depth argument from InlineInfo accessors in stack maps.\n\nThe InlineInfo class actually represented a list of inlining\ninformation for a given stack map, and the depth argument was\nused everywhere to select to desired element from the list.\nThis was verbose and inconsistent with the other classes.\n\nChange the InlineInfo class to represent a single inlining,\nand select the desired depth when getting it from CodeInfo.\n\nTest: test-art-host-gtest-stack_map_test\nChange-Id: I35b73e6704854f0203f51d4dbdbed5b1d1cd5a3b\n"
    },
    {
      "commit": "18090d118bfb04620aeef719e2d7780c26298bf8",
      "tree": "040e5195f0278c9bc846d5543c0e36771ffc5b48",
      "parents": [
        "9ddef18ae95859a985e7a0de7e22999fcbc28e07"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:53:12 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 04 17:52:35 2018 +0100"
      },
      "message": "Refactor String resolution.\n\nUse the same pattern as type resolution and avoid some\nunnecessary read barriers in the fast path. Consolidate\nnaming between ArtField and ArtMethod.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nChange-Id: Iea69129085f61f04a4add09edd0eadbb7ac9ecb2\n"
    },
    {
      "commit": "bcf175247272d0e321c8d988c3c01c123b56e36e",
      "tree": "9f65ece5ce9474aa4fcf16fbfca6278109dc9a67",
      "parents": [
        "09c5ca40635faee00f40f6ca0581dd475efd545e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 13:14:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:31:30 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify array allocations.\n\nAnd remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ie313980f7f23b33b0ccea4fa8d5131d643c59080\n"
    },
    {
      "commit": "5924a4a73f1a2dcf83877062d67c297a9496b326",
      "tree": "3517a1809ecbdc85533e1a8c5a0a9610cdc36005",
      "parents": [
        "2cffc5d2807096c0b7a07b89f5dda6920c6429f5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 29 17:40:41 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 30 12:50:37 2018 +0100"
      },
      "message": "Move String::SizeOf\u003c\u003e to string.h .\n\nstring.h was already indirectly (through class.h) including\neverything needed for String::SizeOf\u003c\u003e, so move it to the\nstring.h and make those includes direct. Then we can change\nthe object-inl.h to include only string.h, reducing the\nnumber of indirectly included files.\n\nTest: m test-art-host-gtest\nTest: m testrunner.py --host --optimizing\nChange-Id: I51c462c034f205498c539abe6d888be9738d4a6e\n"
    },
    {
      "commit": "c7aa87e1666ac48ddf9149cfdfd64b026b3969e5",
      "tree": "32d5d74718cc558e13642873e55724782ac9df22",
      "parents": [
        "0278be74269fcfe4f2517d449f2bd53472f9b2f9"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 24 15:19:52 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 11:37:45 2018 +0100"
      },
      "message": "Remove static_class_ from Method/VarHandle and CallSite.\n\nAnd add MethodHandle to the class roots to avoid extra\nindirection through MethodHandleImpl.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Iaf172f3732677f2b4509e8297e6e9af5fb81a89f\n"
    },
    {
      "commit": "b4eb1b19e1dd35d12a408358656c1421f507d231",
      "tree": "03ba65d206b5e6222dcca0f62a973bcbb1bf8a50",
      "parents": [
        "ff7ff426e136aa8fd6e33d873f6259311982f6bb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 24 11:09:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 11:32:31 2018 +0100"
      },
      "message": "Refactor ClassRoot/GetClassRoot().\n\nMove it outside the ClassLinker, into its own header file,\nand add retrieval based on a mirror class template argument.\nKeep the SetClassRoot() as a private member of ClassLinker.\n\nMake the new GetClassRoot()s return ObjPtr\u003c\u003e.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Icbc6b62b41f6ffd65b437297a21eadbb0454e2b7\n"
    },
    {
      "commit": "aaebb1468cc95838aa58ed537d03de000c9cfe28",
      "tree": "80f325dab976dccd846e3bd5d1b86266be24e3dc",
      "parents": [
        "79866c1f089672eca1fb7776c669c2cef3d6ad3e",
        "6ec2a1bf1cbecf17546df780dd0ad769042e1874"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 23 14:58:19 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 23 14:58:19 2018 +0000"
      },
      "message": "Merge \"ObjPtr\u003c\u003e-ify UnstartedRuntime, fix 2 stale reference uses.\""
    },
    {
      "commit": "6ec2a1bf1cbecf17546df780dd0ad769042e1874",
      "tree": "09f7430f020e04dc892ff2c2152bb773cd45c0dd",
      "parents": [
        "2d3065e6ca0bd707bc998b7d260bb8e8ec07cf87"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 15:33:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 23 13:48:31 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify UnstartedRuntime, fix 2 stale reference uses.\n\nTest: Rely on TreeHugger.\nBug: 31113334\nChange-Id: I35f76c3e3b94dfca18dbe67aba065a1270f4e5ee\n"
    },
    {
      "commit": "d352156dfeadc72fda186ef8dcbeea4d06eee509",
      "tree": "64ff7c025cacac290e21beea27ef6533e4f04d79",
      "parents": [
        "cbe50e965be5bcc7e9e0bba8b52a9b1adb7c291f",
        "d3083dd15af1cb4ffc13d87a7d2c3be2edb9199d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 15:33:35 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 15:33:35 2018 +0000"
      },
      "message": "Merge \"Refactor runtime callee save frame info.\""
    }
  ],
  "next": "d3083dd15af1cb4ffc13d87a7d2c3be2edb9199d"
}
