)]}'
{
  "log": [
    {
      "commit": "383f114f8d950f51eb2085ee5ea5375a2403cece",
      "tree": "eda6610fe4339e6ffa0d3affc2393e80075c83ba",
      "parents": [
        "6d4280c35023389a3886b4f67fe24db283a0abc9"
      ],
      "author": {
        "name": "yuguoxu",
        "email": "yuguoxu@allwinnertech.com",
        "time": "Thu Apr 04 17:41:33 2019 +0800"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Apr 04 13:58:02 2019 +0000"
      },
      "message": "Fix ILL_ILLOPC issue-id 129895920 on 32bit armv7 device\n\n\u0027ldrd r0, r1, [r2, r1]\u0027 will be compiled to \u00270xe18200d1\u0027 by clang.\nThis is an unpredictable instruction on armv7 devices such as\nARM cortex-A7 and may case ILL_ILLOPC (or it may also work).\n\nBug: 129895920\nChange-Id: I7d087e46e59956af00f4261961dce22f1e6d0181\nSigned-off-by: yuguoxu \u003cyuguoxu@allwinnertech.com\u003e\n"
    },
    {
      "commit": "5dbd02a497f4bbdf33ae37e715159fe33594a02a",
      "tree": "63aa67209bb528d56d416f7d57f2acf0e5703d70",
      "parents": [
        "2c5bcb873f086c3db4f633e620de31d53cedede5"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 03 11:32:38 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 03 12:49:37 2019 +0000"
      },
      "message": "Make couple of mterp function names start with lower-case.\n\nMost of our hand-written-assembly functions have lower-case name.\n\nTest: test.py -b --host --interpreter\nChange-Id: Ie1641dd77fcf772bc4c1f0d1896a7ce721f5d5a8\n"
    },
    {
      "commit": "dfc0de7696a50a9aeee95dcf74dac036e3334314",
      "tree": "20a6edd33cca852f8e65ce8d20a85949b566904c",
      "parents": [
        "9ef308da0ea8d1df2edf65d4957599fafcc56aeb"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 01 10:57:55 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 02 07:57:27 2019 +0000"
      },
      "message": "Partially ObjPtr\u003c\u003e-ify Object, fix stale ref in test.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I0c0bc669c0ab8d99185e662a2fec16f32a42a0a2\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": "0984e483c1b8033250a32b11f112ae3e65eef39b",
      "tree": "267b4f59818e5080dff726adf25e5b5710111377",
      "parents": [
        "621c8807f38fedab56ea701370a18df123177f67"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:41:41 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "Style cleanup for ObjPtr\u003c\u003e-ify changes.\n\nReplace \"ObjPtr\u003c.\u003e const\" with \"const ObjPtr\u003c.\u003e\".\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5a1c080bc88b091e15ee9eb0bb1ef6f6f290701c\n"
    },
    {
      "commit": "621c8807f38fedab56ea701370a18df123177f67",
      "tree": "058a0b3e4157ef726f909b0efe14965a7e336513",
      "parents": [
        "0eefb9bad0b098e892f977694ad1207f3ef42c90"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:18:18 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::CallSite.\n\nAnd remove unused function CallSite::Create().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I936cda76543fb79edda1c2cc8671b0684fb9f08a\n"
    },
    {
      "commit": "0eefb9bad0b098e892f977694ad1207f3ef42c90",
      "tree": "9c1abc5959eaf2d6a3a420369ba642381febca04",
      "parents": [
        "5aead700219d9c9fc05524d5d72dc32cb1807c61"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 15:04:31 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Field and mirror::Executable.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ib536df95543cb7240a5816bef019391bb90e6369\n"
    },
    {
      "commit": "5aead700219d9c9fc05524d5d72dc32cb1807c61",
      "tree": "84dac95f7627fefc8fd8d3dfbd5d6baf5d1e1a01",
      "parents": [
        "4f1e3288a845b91a5ce369865ec7e249f4f94622"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 11:00:36 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify method/var handles, fix stale refs in tests.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I89ea84f7970899643e437161b598d3232a182e98\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": "c524e9e7e767be0801cf110310039635698c1532",
      "tree": "cd11699dce8c175a0940a583f5ea02ce89f73a85",
      "parents": [
        "2e1ec835d08ca0ab81b1c24436f659f952ace260"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 10:54:50 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 26 17:06:55 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify mirror::Class.\n\nAnd move function definitions that rely on obj_ptr-inl.h\nfrom class.h to class-inl.h .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5ccc765d0a02b1d37cb39ed68c17b8456faf92ea\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": "09d3576c2acda0785047cf830a228e413a36e757",
      "tree": "60f319bde18191373f4db3c775b95d0013a0694a",
      "parents": [
        "a040ddc1378118ac6b3735fa8333c1a19e646fe1"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 20 10:36:20 2019 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 21 00:07:20 2019 +0000"
      },
      "message": "Update mips and mips64 mterp assembly\n\nCargo-cult the changes from Icc5eb98590243969dc47c59a65e39a3a406660f2\nand I45a39ec73abaefaecf5b8c636f3f9d519a0a8bb0 into mips and mips64.\nThis will fix errors from the mips genrules when all genrules are\nrun during checkbuilds.\n\nTest: m libart_mterp.mips64 libart_mterp.mips\nChange-Id: I7dab944d40dbc05893eae513f2323fc7c6ec6226\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": "d388390c556181942b78a5384c3c66afd1d34222",
      "tree": "ca62bd886f00c53260abe3053dd8c058354984d6",
      "parents": [
        "817a47faba3b9150fd9345fbbda1320b02ebfa01"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 17:29:32 2019 +0000"
      },
      "message": "\"Revert^3 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 817a47faba3b9150fd9345fbbda1320b02ebfa01.\n\nReason for revert: Breaks build.\n\nChange-Id: I51a38e47186f778b4c1c119e9f21a5d5a1b786a8\n"
    },
    {
      "commit": "817a47faba3b9150fd9345fbbda1320b02ebfa01",
      "tree": "51d0876c8cb667384a25ee6a2eede761a121d455",
      "parents": [
        "e173798b890e3fdd2bbd68cda997d7b3d1a5a902"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Jan 08 14:05:37 2019 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Feb 26 11:08:41 2019 +0000"
      },
      "message": "Revert^2 \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 9fd68f6795eab7085986f80b1c4d00dc45a68485.\n\nTest: art/test.py -b --host --64\nTest: art/tools/run-libcore-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nTest: art/tools/run-libjdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX64\u0027\nChange-Id: I9d2faeb8b88ce7cf42915890c6089c725907e6dd\n"
    },
    {
      "commit": "7210108e6d930f9b8bcf5eac6b7a03ea29f92f84",
      "tree": "809a2477f11a98eeb5f258635489424841e6feba",
      "parents": [
        "2ef01100bb56b3f8ab5fbc886a7066d721290d74"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 05 16:16:30 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 06 14:05:17 2019 +0000"
      },
      "message": "Replace StringPiece with std::string_view in art/runtime/.\n\nAnd in art/test/.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123750182\nChange-Id: I14c7cddd7ba4fb2183c643d32a89b594008d8bd0\n"
    },
    {
      "commit": "4bcd65753c1e49ceba2c41983f26af81ae319670",
      "tree": "3fc7bd53d37448621726dc508f173490807af9c7",
      "parents": [
        "2da3cbb4af20a64108e474c0bbbe0cc5d3af2aa2"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Feb 02 20:08:44 2019 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 04 15:00:20 2019 +0000"
      },
      "message": "Take hidden API into account during getDeclaredMethod()\n\nGenerics make it possible for two methods to have the same name and list\nof parameters but differ in their return type. Class.getDeclaredMethod()\ndoes not allow callers to specify the type, so either of the matching\nmethods can be returned (ART will prefer the non-synthetic one).\n\nHowever, Class::GetDeclaredMethodInternal() did not use to take hidden API\ninto account and could return a hidden method, despite a non-hidden one\nbeing available. The reflective call would then reject the method and\nthrow NoSuchMethodException.\n\nThis patch modifies Class:GetDeclaredMethodInternal() to consider:\n(a) hidden/non-hidden\n(b) virtual/direct\n(c) synthetic/non-synthetic\nin that decreasing order of importance and pick the best matching\nmethod. The hiddenness checks are performed with AccessMethod::kNone\nso as to not trigger warnings. A hidden method may still be returned and\nthe caller should do the access check again with the appropriate\nAccessMethod.\n\nBug: 122291025\nTest: art/test.py -r -t 690-hiddenapi-same-name-methods\nChange-Id: Iaee780c1e87f5587f51e24b517b2b37101c729e3\n"
    },
    {
      "commit": "e7681823f8259c8c04ce0c361746216606784e69",
      "tree": "8bd248fc6be126d7d4e55bb4072ed24b2851ebbd",
      "parents": [
        "90faceb71e25748172ba6369209f8a2a66735394"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Dec 14 16:25:33 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 21 10:22:27 2019 +0000"
      },
      "message": "hiddenapi: Print warnings for @CorePlatformApi violations\n\nWhen accessing a method/field at runtime, determine the context of both\nthe caller and the callee, and add new logic for the case\n\"platform -\u003e core-platform\" which used to be always allowed.\n\nIf the callee is marked with kAccCorePlatformApi, access is allowed.\nIf not, a warning is printed into logcat.\n\nBug: 119068555\nTest: 674-hiddenapi\nChange-Id: I64839596bf6eb06d7a169fd59b18fd82c140ce6e\n"
    },
    {
      "commit": "62629598f845c2efec0dff652e440e8fbcce4b8a",
      "tree": "7af96934e7ca5313787a9b328e85e6606645c4e5",
      "parents": [
        "d77abd9e128f60917f712b8da84bab46e3ed5870"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:08:31 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 03 16:09:07 2019 -0800"
      },
      "message": "ART: Some more IWYU in common headers\n\nForward-declare a few structs and classes. Remove unused includes.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I21215cee39269b373784d6a82577039322a4a950\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "ca7027d30aa8b1abf4ef76dda156dd893234ddca",
      "tree": "def9167e4686b07da887e0a51afb7558195d26dd",
      "parents": [
        "7201ef48fb42cc36824126a26f758f02c9200bad",
        "776a7c294f6356b314505369679bffc73f4a345e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 21 16:12:17 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 16:12:17 2018 +0000"
      },
      "message": "Merge \"ART: Add CRC32.updateByteBuffer intrinsic for ARM64\""
    },
    {
      "commit": "f05ad2a8d1e573c4d1aa0f3add9c721c0a8eb894",
      "tree": "8d26dcb9c406b9840586adfa62b4fdf0ec0a12b2",
      "parents": [
        "6c22540b2c21399285abd390fbef9f2ea1ea794f",
        "9fd68f6795eab7085986f80b1c4d00dc45a68485"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 21 01:14:21 2018 +0000"
      },
      "message": "Merge \"Revert \"Suspend the runtime when switching interpreters.\"\""
    },
    {
      "commit": "9fd68f6795eab7085986f80b1c4d00dc45a68485",
      "tree": "960357f9bc42471a0a97ba6e7da5b380aeb83f87",
      "parents": [
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "committer": {
        "name": "Lokesh Gidra",
        "email": "lokeshgidra@google.com",
        "time": "Fri Dec 21 00:33:46 2018 +0000"
      },
      "message": "Revert \"Suspend the runtime when switching interpreters.\"\n\nThis reverts commit 01e1d3217c9b6ad5b3f118a539bea6778ad6096c.\n\nReason for revert: JDWP JIT and Interpreter tests on hosts failing.\n\nChange-Id: I95bbda936c573983ff0c6041267bffaa73315cb7\n"
    },
    {
      "commit": "6c22540b2c21399285abd390fbef9f2ea1ea794f",
      "tree": "fd2d25c8d893aa2138280a2a0069b95aa4ebb4be",
      "parents": [
        "d88f3eba1a2c879b362ffdcb3ce0acfff4570db4",
        "e3fc2d1644fd788509b834b01b83a28595721c47"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 20 23:23:13 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 23:23:13 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Reduce the number of calls to Jit::AddSamples.\"\""
    },
    {
      "commit": "b7e23dcd0c499bc00632666328810483f39aece6",
      "tree": "061b7987e0d01e9c5689c2f50d7898802d2d5c70",
      "parents": [
        "adf595900e6f6328c68a15b88f53529cb5e520f3",
        "01e1d3217c9b6ad5b3f118a539bea6778ad6096c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 20 16:18:32 2018 +0000"
      },
      "message": "Merge \"Suspend the runtime when switching interpreters.\""
    },
    {
      "commit": "776a7c294f6356b314505369679bffc73f4a345e",
      "tree": "ec1d678a0923d2c7ec869f806f5b4860e1a1a721",
      "parents": [
        "8ceeb2ede9a7280fab618dfcb55f424a79dc00ca"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Mon Dec 17 11:40:34 2018 +0000"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Wed Dec 19 23:01:02 2018 +0000"
      },
      "message": "ART: Add CRC32.updateByteBuffer intrinsic for ARM64\n\nUse crc32 instructions for\njava.util.zip.CRC32.updateByteBuffer(int, long, int, int).\n\nNote that CRC32 is an optional feature in ARMv8, this intrinsic\nis only enabled for devices supporting the CRC32 instructions.\n\nThe performance of the intrinsic is the same as the performance of the\nCRC32.updateBytes intrinsic. However the intrinsic does not have a\nrestriction on the size of the byte buffer. For big input data\nthe intrinsic will be faster than CRC32.updateBytes.\n\nTest: m test-art-target-gtest\nTest: m test-art-host-gtest\nTest: art/test.py --target --optimizing\nTest: art/test.py --host --optimizing\nTest: 580-crc32\n\nChange-Id: I6b6160b56e829731402bd5fc56bcac59664f634d\n"
    },
    {
      "commit": "01e1d3217c9b6ad5b3f118a539bea6778ad6096c",
      "tree": "7fc2ff1a143a66990485ed36afd24f98f50de646",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 19:48:58 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 17:02:46 2018 +0000"
      },
      "message": "Suspend the runtime when switching interpreters.\n\nMake the interpreter switch more deterministic by suspending.\n\nThis also allows to remove some of the checks - for example,\nif we are in mterp the conditions must be favourable already.\n\nTest: ./art/test.py -b --host --64\nChange-Id: Ic5fa70592393c7e17decfb84565f3138659340fe\n"
    },
    {
      "commit": "e3fc2d1644fd788509b834b01b83a28595721c47",
      "tree": "ed18c7651b9968486ea91d7717f6e6bd1dbdb674",
      "parents": [
        "58431a7cf863b2eb7fe25eff6a28ec376f2f151d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 30 13:41:14 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Dec 14 16:32:47 2018 +0000"
      },
      "message": "Revert^2 \"Reduce the number of calls to Jit::AddSamples.\"\n\nThe method is called for every invoke which is expensive.\nAdd samples, but don\u0027t check the consequences every time.\n\nThis reduces its cost from 3.5% to 1% (maps on device).\n\nThis reverts commit 0402f4b019c1d6c567b1c56589f1ea9170ab5dcc\nand fixes 667-jit-jni-stub which relied on being able to set\nthe sample count to exactly one below the compilation threshold,\nand then expected the compilation to happen on the next sample.\n\nTest: ./art/test.py -b --host -r --ndebug\nTest: ./art/test.py -b -r -t 570\nChange-Id: I99c6d03f565f17fe6539ed89632d8f8bbda68107\n"
    },
    {
      "commit": "81c61bf0ef90c1fd79694aab49758e16cd0dd044",
      "tree": "7af6bdf9457c4f10c654ec1975fc7b22a9c63cf1",
      "parents": [
        "c2f685a64f819193fb563d33924d233872b8970a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 11 18:57:39 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 13 10:52:08 2018 -0800"
      },
      "message": "ART: Add integrity check\n\nBoot classpath classes are expected to be fully verified. Check in\nthe interpreter that we are not running access-checks for the boot\nclasspath.\n\nBug: 115834172\nTest: m test-art-host\nChange-Id: I39a9313e9a3b99133115e764c0155f2303b65f10\n"
    },
    {
      "commit": "91f1032505cfaec3aef51fc0a3085b213813f0ed",
      "tree": "6469e772d9fb562d26dc1d22dd0b71844bbb743f",
      "parents": [
        "573b3877fac3c5a4a9703301502694fe7219b21c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:04:10 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:13:55 2018 +0000"
      },
      "message": "Revert^2 \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit db4b1deebf425be5f1d0f597d1ef540f19908324.\n\nFixed JDWP tests, see \"Test:\" stanzas below.\n\nChange-Id: I6fb56ac990b78164cbd3f93c9f6df66e0dd9a813\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\nBug: 119868597\n"
    },
    {
      "commit": "db4b1deebf425be5f1d0f597d1ef540f19908324",
      "tree": "5851aab8a4d71b49dbd272b822bfd1ae2cbd08df",
      "parents": [
        "e3c6dfe2009d2fad6f8e4401cb17935bdd09ab9e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:18:07 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:23:26 2018 +0000"
      },
      "message": "Revert \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit d19085141ad9c71eae1b0ff585999ac8e27dadd4.\n\nAlso squash a revert of\n    Fix oatdump tests on target.\n    (commit 77eea0898aca2881a87afd177a0422870c39a318)\n\nReason for revert: Broke JDWP tests.\nBug: 119868597\nChange-Id: I005097d2d96014c961e5a4c0b089e7675004febc\n"
    },
    {
      "commit": "a6dd280a61bdb09f608dd920d23394a5b6223ef4",
      "tree": "b1fad48bb4d4ed7ca39ec5c250d20d1238739028",
      "parents": [
        "17ed987eeebdebbd1b923c3c2a6887a233cb7517",
        "15c5b97d0093a804881acf3a53bda8b6b4c1521d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 10:19:34 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 07 10:19:34 2018 +0000"
      },
      "message": "Merge \"ART: Add CRC32.updateBytes intrinsic for ARM64\""
    },
    {
      "commit": "a9a0973ff03ce2c2d1ec65695ad0f4cd8ed170a7",
      "tree": "9f00efead2c694b2a590f8c4890a9052571bbcff",
      "parents": [
        "260a50cb43618dfdd325e7c89745d8bc38b20292",
        "d19085141ad9c71eae1b0ff585999ac8e27dadd4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 07:51:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 07 07:51:00 2018 +0000"
      },
      "message": "Merge \"Pass boot class path to ImageSpace::LoadBootImage.\""
    },
    {
      "commit": "15c5b97d0093a804881acf3a53bda8b6b4c1521d",
      "tree": "ad6befd10a3d6dee0f1667d254374e267ad89ce7",
      "parents": [
        "cfc4b3ac67b364d753d970d1adcf97668114e959"
      ],
      "author": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Tue Nov 20 13:41:40 2018 +0000"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Thu Dec 06 22:19:23 2018 +0000"
      },
      "message": "ART: Add CRC32.updateBytes intrinsic for ARM64\n\nUse crc32 instructions for\njava.util.zip.CRC32.updateBytes(int,byte[],int,int).\n\nThe intrinsic is used if a number of processed bytes is less or equal to\nkCRC32UpdateBytesThreshold. If it exceeds kCRC32UpdateBytesThreshold the\ncore library provided function is used.\n\nNote that CRC32 is an optional feature in ARMv8, this intrinsic\nis only enabled for devices supporting the CRC32 instructions.\n\nThe CL is based on code from tim.zhang@linaro.org.\n\nPerformance improvements - speedup:\narray size | Cortex-A53 | Cortex-A57\n------------------------------------\n128        | 14x        | 20x\n256        | 10x        | 14x\n512        | 8x         | 11x\n1024       | 7x         | 9x\n2048       | 6x         | 8x\n4096       | 5x         | 7x\n8192       | 5x         | 7x\n16384      | 5x         | 7x\n32768      | 5x         | 7x\n65536      | 5x         | 7x\n\nTest: m test-art-target-gtest\nTest: m test-art-host-gtest\nTest: art/test/testrunner/testrunner.py --target --optimizing --interpreter\nTest: art/test/testrunner/testrunner.py --target --jit\nTest: art/test/testrunner/testrunner.py --host --optimizing --interpreter\nTest: art/test/testrunner/testrunner.py --host --jit\nTest: 580-crc32\n\nChange-Id: I0054cea41b5fc3e712e18b0afc7e3eacbf41feb6\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": "d19085141ad9c71eae1b0ff585999ac8e27dadd4",
      "tree": "24284e84f5df4601bacc2a97c56af1bc5950c253",
      "parents": [
        "523940b40f9701504d6e007dd2af48f315038dc1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 22 14:57:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 06 14:43:07 2018 +0000"
      },
      "message": "Pass boot class path to ImageSpace::LoadBootImage.\n\nWhen loading the boot image by ImageSpace, do not rely on\nthe boot class path (BCP) recorded in the primary boot image\noat file. Instead, check the BCP from image against the BCP\nprovided by the Runtime, i.e. from -Xbootclasspath:_ or the\nenvironment variable BOOTCLASSPATH. For now, allow Runtime\nto extract the BCP from the primary boot image oat file when\nwe have -Ximage:_ but no BCP.\n\nAlso pass the boot class path components down to the OatFile\nso that we can open and use the original dex files when we\ndo not have copies in the vdex files. This allows compiling\napp prebuilts when the boot dex files are uncompressed and\naligned in the original jars.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: Manually create boot image jars with uncompressed and\n      aligned dex files, compile a boot image with dex files\n      not copied into vdex files and use this boot image for\n      compiling a prebuilt services.{art,vdex,odex}.\nBug: 119868597\nChange-Id: If9411ddbecf6bb90bfa9233040931c5e833f6aee\n"
    },
    {
      "commit": "f355ec703f519c3091853d85f61904be6dfb68aa",
      "tree": "82486a5104742260ab35382c0678165ebff85112",
      "parents": [
        "0e211e55fe51adbd6bab7278ff1ceabea21faf78",
        "c1896c9a0e15df3a1b9a3a19bcd2a933b654fe06"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Nov 29 22:51:00 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 22:51:00 2018 +0000"
      },
      "message": "Merge \"C++17 compatibility: make WITH_TIDY\u003d1 happy again.\""
    },
    {
      "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": "c89a28730fb8dff57c6cb5b18295fec45fe85d09",
      "tree": "5d596ced1f30cb59c86179c05f4fb2a947ba5253",
      "parents": [
        "f2970cd870948a6ee1c8ecd30c9c3147d05aa0be",
        "0402f4b019c1d6c567b1c56589f1ea9170ab5dcc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 19:19:10 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 19:19:10 2018 +0000"
      },
      "message": "Merge \"Revert \"Reduce the number of calls to Jit::AddSamples.\"\""
    },
    {
      "commit": "0402f4b019c1d6c567b1c56589f1ea9170ab5dcc",
      "tree": "fb0705380c3d1600a08c0e95ed581a967bdf0da0",
      "parents": [
        "db94f2be59e60bde11ac903c5bf30e63ead67992"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 19:18:46 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 29 19:18:46 2018 +0000"
      },
      "message": "Revert \"Reduce the number of calls to Jit::AddSamples.\"\n\nThis reverts commit db94f2be59e60bde11ac903c5bf30e63ead67992.\n\nReason for revert: Break 667-jit-jni-stub\n\nChange-Id: Ia84a78be8acb62e87f7cd93e43c2967efac8caab\n"
    },
    {
      "commit": "b2eeca05130c2bb9249850d83aad8281ddfcf5c5",
      "tree": "5a73aa2362725ef41140132d054abb08f313fb46",
      "parents": [
        "9a9f8f627ebcbf609813df548115fe9452556ebf",
        "db94f2be59e60bde11ac903c5bf30e63ead67992"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 29 14:50:36 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 14:50:36 2018 +0000"
      },
      "message": "Merge \"Reduce the number of calls to Jit::AddSamples.\""
    },
    {
      "commit": "9a9f8f627ebcbf609813df548115fe9452556ebf",
      "tree": "73d1d2a2cec915631be13b6dce6950901da54638",
      "parents": [
        "d8eb2f2f2d6ddca682b4aa0703f00bb34069e298",
        "68b926eaa1d907dc830afc8b3f2f0677d134833e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 29 13:44:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 29 13:44:47 2018 +0000"
      },
      "message": "Merge \"Check consistency of mterp vregs before every opcode for slow debug.\""
    },
    {
      "commit": "db94f2be59e60bde11ac903c5bf30e63ead67992",
      "tree": "95d66a33cefefac89f84534ac4f023e76ff096d9",
      "parents": [
        "076c9da66b606057109e5fb2902d28129d120b96"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 09 12:58:28 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 29 11:41:07 2018 +0000"
      },
      "message": "Reduce the number of calls to Jit::AddSamples.\n\nThe method is called for every invoke which is expensive.\nAdd samples, but don\u0027t check the consequences every time.\n\nThis reduces its cost from 3.5% to 1% (maps on device).\n\nTest: ./art/test.py -b -r --host --64\nChange-Id: Ie90da905d067b5d85a3c494c7c9af81b24dc8135\n"
    },
    {
      "commit": "68b926eaa1d907dc830afc8b3f2f0677d134833e",
      "tree": "b3ef5af3a02b282004780967adfc4bb8c3d75d4b",
      "parents": [
        "8f50b2c27f9b32726bbadfcebba910640b94036e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 17:43:42 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 18:23:02 2018 +0000"
      },
      "message": "Check consistency of mterp vregs before every opcode for slow debug.\n\nTest: ./art/test.py -b -r -t 525 --runtime-option\u003d-XX:SlowDebug\u003dtrue\nChange-Id: Ia156567fb454dc547191941a1bc999a289cd39ed\n"
    },
    {
      "commit": "124bb24394ca89bdc20ff12cafc0546beaf83615",
      "tree": "f9c83798f21a27094ff65d5338844f2fc3f213b5",
      "parents": [
        "8f50b2c27f9b32726bbadfcebba910640b94036e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 23 21:08:49 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 17:09:41 2018 +0000"
      },
      "message": "Mterp: Add missing shadow reg clear to op_long_to_double\n\nBug: 118647289\nTest: ./art/test.py -b -r --target --32 --interpreter --gcstress -t 525\n      with shadow_frame-\u003eCheckConsistentVRegs() added to MterpCheckBefore.\nChange-Id: I49c12e9f5c8250b7172e0e8fae7c932b2eb10f69\n"
    },
    {
      "commit": "a0ca79a603a0aecc1f3a723b25589aafb91943c7",
      "tree": "ad4e7325b3ecda008d40d621a31ca7bfdaad7214",
      "parents": [
        "08005628d20b862ea8b3a510a06cf5d6e0147328",
        "561303f94b5262bf939b91eb11feff5dc3a6aab9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 28 14:02:02 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 28 14:02:02 2018 +0000"
      },
      "message": "Merge \"Mterp: Always use macros for vreg reads/writes.\""
    },
    {
      "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": "561303f94b5262bf939b91eb11feff5dc3a6aab9",
      "tree": "818a142401e8e969848dec39867e7854dbb4380d",
      "parents": [
        "244470afafdb1c5aba17507ef793d316b9c4d038"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 20 21:55:42 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Nov 25 14:31:56 2018 +0000"
      },
      "message": "Mterp: Always use macros for vreg reads/writes.\n\nThis makes is easier to find/modify the related code.\n\nTest: No change of the assembly instructions in libart.so\nChange-Id: Ia01a5cbda247bcb06fad4c1d1c903d8c53a56e93\n"
    },
    {
      "commit": "f50ac103426588d9f7c014ef2d2b9c766f8dc25e",
      "tree": "bac6537c3cd63cc382e24d9b94f0eb64f18ab0a4",
      "parents": [
        "b56e8353020acda1a8285daa11c69f57060cd015"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Oct 17 18:00:06 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Nov 14 16:49:40 2018 +0000"
      },
      "message": "Simplify hidden_api.h logic\n\nRefactor GetMemberAction to return a boolean whether access to a class\nmember should be denied. This also moves StrictMode consumer\nnotification into hidden_api.cc and removes notifications for toasts.\nTests are changed accordingly.\n\nTest: phone boots\nTest: m test-art\nMerged-In: I02902143de0ff91d402ba79c83f28226b1822a6f\nChange-Id: I02902143de0ff91d402ba79c83f28226b1822a6f\n(cherry picked from commit 51995f90adaa0e5047dee56d22f15e4225e70517)\n"
    },
    {
      "commit": "790ff518ad4d08ed4fb105f5c011c0ec47e092cd",
      "tree": "bf9def1c8a0567905bec3946ee67fe7410ca3715",
      "parents": [
        "4630f9a032575f75be317fe0d8dc054bbce5790a"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 09 18:55:19 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Nov 14 10:01:02 2018 +0000"
      },
      "message": "Add mterp checks after monitor entry/exit opcodes.\n\nCheck whether we are allowed to continue running in mterp.\n\nThis tries to enforce that we bail out of mterp after suspend point\nif needed (in particular, if debugger event switches interpreters).\n\nTest: ./art/test.py -b -r --interpreter\nChange-Id: If2d55e5ece22831ef864c181b7d6d5c70ca50e5d\n"
    },
    {
      "commit": "5f250014f4cc348a573798c4daa191ea1381078d",
      "tree": "ea7937619632fa1fa341563a5b8c443bcf77fd2f",
      "parents": [
        "fdf6401e1594e71a1e86d455d55333b939160bd9"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 14:16:38 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Nov 09 11:42:17 2018 +0000"
      },
      "message": "Make exception handling code in switch interpreter NO_INLINE.\n\nExceptions should be rare so the code can be shared.\nThe compiler needs a bit of help with optimization.\n\nIt saves 81k(arm32) and 150k(arm64) from libart.so.\n\nPerformance difference is within noise (golem using the switch).\n\nTest: \"./art/test.py -b -r --interpreter --host\" with switch interpreter.\nChange-Id: I08a5690ceaf6b3cae8c2a486ab809e5604b88e0a\n"
    },
    {
      "commit": "8ed45c876077771455d63dd7e315b439230812f8",
      "tree": "239cc6db092fa00908af0be433b80baff16b172e",
      "parents": [
        "a5de05da46e8a93436e68e7e0d242dce46269527"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 15:08:57 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 17:09:16 2018 +0000"
      },
      "message": "Add test configuration for the switch interpreter.\n\nBug: 31358597\nTest: ./art/test/testrunner/run_build_test_target.py art-interpreter-cxx\nChange-Id: Iebb7a3a5168a27654984f3749a7b86542422671b\n"
    },
    {
      "commit": "a4a96afd95e0819f4f35ece733e9a0731355d0d2",
      "tree": "60abbacda9fcbbdb56392e540aa5c683000812ff",
      "parents": [
        "d4c1c08773414451dda32a4228253c0f443313a2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 16:34:58 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 12:25:15 2018 +0000"
      },
      "message": "Share the preamble in switch interpreter.\n\nMove the preamble code to the main loop to avoid replicating it.\n\nThis halves per-file compile time to 0.5 min.\n\nIt saves 225k(arm32) and 348k(arm64) from libart.so.\n\nPerformance difference is within noise (golem using the switch).\n\nTest: \"test.py -b -r --interpreter --host\" with switch interpreter.\nChange-Id: I2615b3568eb79560d2d342ac3dd28f6269ee5e74\n"
    },
    {
      "commit": "47ad3763e0f0e74c6469e899af883a6c4d09d7bf",
      "tree": "d6e67f431a21ee8fbdfe6d2283e1e04587a8aeca",
      "parents": [
        "fe59955fc41e277bf1c60378202ba785abb1e4a8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 12:43:40 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Nov 08 10:30:21 2018 +0000"
      },
      "message": "Replace switch interpreter macros with C++ functions.\n\nC++ code is more maintainable than huge macros.\n\nThe \"return\" statement was used within the macros to skip the rest\nof the interpreted opcode.  This is slightly more tricky in functions.\nAll such use cases have been replaced with \"return false\", and the\ncalling functions always check the return value and propagate it up.\n\nPerformance difference is within noise (golem using the switch).\n\nThis halves per-file compile time to 1min.\n\nTest: \"test.py -b -r --interpreter --host\" with switch interpreter.\nChange-Id: I01d861dec1c4a7e95e412fd4b662e5a4d7bd55a8\n"
    },
    {
      "commit": "6da8247ebe2e063cc14a5e943fa8b3416edf936a",
      "tree": "2765ad9af2e9aa4132ca66218ee927b35943ec95",
      "parents": [
        "4fc843c4fc9f33c4ba49c1303d526d0e0e6a3788"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 23 14:03:08 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Nov 06 16:22:06 2018 +0000"
      },
      "message": "Split interpreter_switch_impl into smaller functions.\n\nSplit the uber switch statement into smaller functions.\nThose functions are still always inlined in the switch,\nso it makes little difference for the time being.\n\nHowever the separation should allow us to:\n - Remove the excessive use of macros in the interpreter.\n - Add helpers to handle similar opcodes.\n - Simplify the individual opcode handlers.\n - Simplify interactions with mterp.\n - Easily experiment (e.g. switch vs goto dispatch).\n\nPerformance difference is within noise (golem using the switch).\n\nTest: \"test.py -r --interpreter --host\" with switch interpreter.\nChange-Id: I6075b354e0439bf89061f492dd9b9cbe743145cb\n"
    },
    {
      "commit": "cb58b07d233c5f8e910e6e5946da8ac4ec3099f5",
      "tree": "bd19cb9a44555adf51e2d145c322a592c6cd3527",
      "parents": [
        "e2acc339ede3c620a476827880cf68d044dcd53e"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Fri Oct 13 12:06:56 2017 +0100"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Fri Nov 02 10:07:12 2018 +0000"
      },
      "message": "ART: Add CRC32.udate(int,int) intrinsic for ARM64\n\nUse crc32 instructions for java.util.zip.CRC32.update(int,int).\n\nNote that CRC32 is an optional feature on ARMv8, this intrinsic\nis only enabled for devices with CRC32 intruction support.\n\nOriginal author: tim.zhang@linaro.org\n\nPerformance improvements in CRC32Bench.UpdateInt:\nPixel 2: 22.8x\nNexus 6P:\n  little core: 28.3x\n  big core   : 21.6x\n\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing --jit --interpreter\nTest: 580-crc32\n\nChange-Id: I1a9bc2befd2934b04103a27ce05806e919874070\n"
    },
    {
      "commit": "9581e6176c78f3f2a8f40ff9d5a6c4d4029253fb",
      "tree": "e12f130a067566c9360b04e14714e8743c9e21ae",
      "parents": [
        "30890f6af9bae6ece7267c72e3c82e3c61da4d9e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 14:29:43 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 31 09:42:07 2018 +0000"
      },
      "message": "Cache whether we should use interpreter invoke fast-path.\n\nThere is many conditions to check on each invoke.  If they all pass,\ncache the result in the access flags of the called ArtMethod.\n\nThis speeds up arm64 golem interpreter benchmarks by 4%.\n\nTest: ./art/test.py -b -r --interpreter --host --64\nChange-Id: I86313dbdba84cbf8c707aae84e0ff05b6e034700\n"
    },
    {
      "commit": "30890f6af9bae6ece7267c72e3c82e3c61da4d9e",
      "tree": "88473f05ace3839eb8b0ea51b9d76d80d17e1c96",
      "parents": [
        "6b72b77e0823849fb75201461af80e69e1b4d803",
        "08cb7382573f122c70b84656370dfa9a18d833b1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 22:42:05 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 22:42:05 2018 +0000"
      },
      "message": "Merge \"Add invoke fast-path support for quickened invokes.\""
    },
    {
      "commit": "08cb7382573f122c70b84656370dfa9a18d833b1",
      "tree": "e583bbe955094ca081a0112549b46fd3708c4214",
      "parents": [
        "dc0156dd2e76d518bf1432ae95785ddff9144b78"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 09:27:59 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 30 22:40:56 2018 +0000"
      },
      "message": "Add invoke fast-path support for quickened invokes.\n\nQuickened invokes had their own handler implementation.\nMerge it into the generic DoInvoke which has the fast-path.\n\nThis speeds up arm64 golem interpreter benchmarks by 6%.\n\nTest: test.py -b -r --interpreter --host --64\nChange-Id: Icac9e073f61df67780242877179111ed7bee7154\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": "dc0156dd2e76d518bf1432ae95785ddff9144b78",
      "tree": "52132517631d92c0bb67308749c1af5ef6832d8a",
      "parents": [
        "1023cf8be6da1b128ab9ec56aef3f1feda0ce2b6",
        "893147c57345481a41138bd7c9494a33d0aede8f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 30 08:43:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 30 08:43:55 2018 +0000"
      },
      "message": "Merge \"Clear registers in mterp floating point operations.\""
    },
    {
      "commit": "bec5b298422f681d67f8deee08a2f85c828e3f11",
      "tree": "9266c3f83e14c9153b706ddeda9e2c49b9fa04f7",
      "parents": [
        "72d3493a6b9fde2fc3c1abb9ee6afff4451ec291",
        "cb4f09e050ec2ef98b7b0b359f36fbb9d36a6e10"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 20:35:03 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 29 20:35:03 2018 +0000"
      },
      "message": "Merge \"Move some fast invoke checks to CanUseMterp\""
    },
    {
      "commit": "5ca1f47eb5d8a3eeab08e3f95341263239d6bb81",
      "tree": "1f8f767151dc5a2ee42421f9e591541c5acd82c1",
      "parents": [
        "4594c3207691bb6d7f9b11c2f13289f426398986",
        "30232c452f2397f9cff4a3a52c5a81770f06548b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 19:03:27 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 29 19:03:27 2018 +0000"
      },
      "message": "Merge \"Fix HANDLE_PENDING_EXCEPTION in switch interpreter.\""
    },
    {
      "commit": "893147c57345481a41138bd7c9494a33d0aede8f",
      "tree": "016dc6c9ba25d103e517d41c083fa6774246ff9a",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 29 14:49:30 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 29 14:54:37 2018 +0000"
      },
      "message": "Clear registers in mterp floating point operations.\n\nAlso add a sanity check when pushing a shadow frame that its\nvregs/shadow_vregs match. We can do that check in other places if\nwe want to.\n\nTest: test.py --gcstress\nChange-Id: I272c3afac7b1df84ac373acd8a784f2d86fd6200\n"
    },
    {
      "commit": "cb4f09e050ec2ef98b7b0b359f36fbb9d36a6e10",
      "tree": "1057f31fea9bb05eaa35bc27f9c2b08b55043f80",
      "parents": [
        "ce2a00daa92670a4fc01ef59fdbc3769a846f69c"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Sun Oct 21 08:45:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 29 14:52:09 2018 +0000"
      },
      "message": "Move some fast invoke checks to CanUseMterp\n\nThis speeds up arm64 golem interpreter benchmarks by 1.5%.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: Ia9d7c885cd488de56c6b726373072070b509bdf1\n"
    },
    {
      "commit": "30232c452f2397f9cff4a3a52c5a81770f06548b",
      "tree": "29c9a90e282f8fe384e329d6cffb5dc1d70a3b58",
      "parents": [
        "3070e9c98573f94f1ccc5997985a630ab5fbf21b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Oct 26 18:56:01 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Oct 26 19:11:59 2018 +0100"
      },
      "message": "Fix HANDLE_PENDING_EXCEPTION in switch interpreter.\n\nEnsure that we immediately return to caller or jump to the handler.\n\nThere were cases where we executed the rest of the current opcode.\n\nTest: ./art/test.py -b -r --interpreter --host --64\nChange-Id: I3c82669fde2c77b8565d012286fd4bc609e15896\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": "52ecb65ae9e1ad6fe7f58beecc88cdc08e08f0c4",
      "tree": "7a8ee84cad0df34ab33bdcb0115fc0c79d6c83be",
      "parents": [
        "c2099b0b0c052dd61137b9cf5f9f8b30bab1a7a8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 15:18:21 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 26 08:44:12 2018 -0700"
      },
      "message": "ART: Add object-array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for object array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: I0d7c40ed53708d4c759190961b40f0cac3fe696d\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": "c58dca3941459b4375a53925f3471373584eab5e",
      "tree": "b6d2e6954a7966b296dce0f7ecdcd762e7b82c15",
      "parents": [
        "2d99da12261888accd440d265cfd8c6fa8ba6324",
        "960327bc77d523b56994714968861f73237248a6"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 25 13:08:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 25 13:08:55 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"Add fast path for interpreter to interpreter invokes.\"\""
    },
    {
      "commit": "960327bc77d523b56994714968861f73237248a6",
      "tree": "4f12409c85657177c14c22c3cfc7d9177efd13c0",
      "parents": [
        "ac355f967e64afb12dfc39167e9f2faf85887122"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 25 10:11:59 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 25 10:11:59 2018 +0000"
      },
      "message": "Revert^2 \"Add fast path for interpreter to interpreter invokes.\"\n\nThis reverts commit ac355f967e64afb12dfc39167e9f2faf85887122.\n\nThis speeds up arm64 golem interpreter benchmarks by 5%\non average with some invoke-heavy ones up to 40% faster.\n\nChange-Id: Ia7b544c1b7f72221c239a71f229b4973c3600a4c\n"
    },
    {
      "commit": "5314caec5a2c61fa96a2d6ee134706c085c18b11",
      "tree": "83e00a895e0340dc5a1afca4a37bec9c2aad26ac",
      "parents": [
        "0f454a5b66bcda2d2144bc4c89506e6457fac7ff",
        "ac355f967e64afb12dfc39167e9f2faf85887122"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 23:53:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 24 23:53:14 2018 +0000"
      },
      "message": "Merge \"Revert \"Add fast path for interpreter to interpreter invokes.\"\""
    },
    {
      "commit": "ac355f967e64afb12dfc39167e9f2faf85887122",
      "tree": "b5c01b99a0dd78abd9231348a660b41d35c2b1ac",
      "parents": [
        "7584333117e0d6f0529ddc72a43002ab812e73a1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:34:54 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 19:34:54 2018 +0000"
      },
      "message": "Revert \"Add fast path for interpreter to interpreter invokes.\"\n\nThis reverts commit 7584333117e0d6f0529ddc72a43002ab812e73a1.\n\nReason for revert: Breaks ASAN tests.\n\nChange-Id: Ia58cf361393f620ad30a3e3e05f37b758a060622\n"
    },
    {
      "commit": "2ee09ffc7a6aca354a958357801711688a7a4154",
      "tree": "dbd56e49b025d2a0695610cbfddb7b5bc6432c30",
      "parents": [
        "fd2aa2bf72563870c9261f248f992a20ac4837a8"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 24 13:24:22 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 24 17:11:57 2018 +0100"
      },
      "message": "Split interpreter_switch_impl.cc\n\nDue to regression in clang this file takes long to compile (\u003e10min).\nAs a quick fix, split the file - one per explicit instantiation.\n\nTest: Measure incremental build time - it halves the build time.\nChange-Id: I9d35d43c185deb19ef9cf32ed35328c433a837f2\n"
    },
    {
      "commit": "fd2aa2bf72563870c9261f248f992a20ac4837a8",
      "tree": "b31c1748dcd30a5bf76c2186b4c0124fb18b9dd6",
      "parents": [
        "cd98cde0642e664ae2396555c5d90c0a44c77ba7",
        "7584333117e0d6f0529ddc72a43002ab812e73a1"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 24 10:44:37 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 24 10:44:37 2018 +0000"
      },
      "message": "Merge \"Add fast path for interpreter to interpreter invokes.\""
    },
    {
      "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": "02338775e33b553be51d44ff60bb1ef8e527bd94",
      "tree": "e2a8ba2f5ed7fad15468d9a943e28c7bc34e5b7e",
      "parents": [
        "0a4510a7728e3aa2b13fe5e0c0dc4641f173a12c",
        "584771b5a85843700289ffcd36a46f3b187ca349"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 21:23:47 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 23 21:23:47 2018 +0000"
      },
      "message": "Merge \"ART: Fix tidy bugprone-macro-parentheses\""
    },
    {
      "commit": "7584333117e0d6f0529ddc72a43002ab812e73a1",
      "tree": "4f12409c85657177c14c22c3cfc7d9177efd13c0",
      "parents": [
        "1cb95b1f532e795fa7527328cae7cf46b879e426"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Jul 26 16:23:09 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 23 13:36:15 2018 +0100"
      },
      "message": "Add fast path for interpreter to interpreter invokes.\n\nThis speeds up arm64 golem interpreter benchmarks by 5%\non average with some invoke-heavy ones up to 40% faster.\n\nTest: test.py --host -b\nChange-Id: I66069fd391488409b9e3e32127c88ee3d889b076\n"
    },
    {
      "commit": "28f6cff854b61e39f953e69ebf3646ee9826ec82",
      "tree": "a98e2bf1746d93079b7abe54e278ba87f0aef360",
      "parents": [
        "06ef9aa6a562a3a1f7c1f9b91aadda5018f8ba86"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:07:28 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 22 14:35:07 2018 +0100"
      },
      "message": "Cache the value of MterpShouldSwitchInterpreters()\n\nAdd field to the Thread object which stores the value instead (negated).\nExplicitly update the field when relevant state changes (which is rare).\n\nThis speeds up golem interpreter benchmarks by 3.5%\non average with some benchmarks up to 15% faster.\n\nTest: test.py -b -r --interpreter --host\nChange-Id: If2df0d3bf9e69ab50c30102b2648e997927c34d8\n"
    },
    {
      "commit": "584771b5a85843700289ffcd36a46f3b187ca349",
      "tree": "a88996e445a1a2aee66e15ee58b977891ddf9618",
      "parents": [
        "6bc39b1e080d574a0ed0c4dabe4d0895dd40456c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 18 13:22:23 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 12:14:10 2018 -0700"
      },
      "message": "ART: Fix tidy bugprone-macro-parentheses\n\nAdd parens where necessary, add NOLINT for the cases where it\u0027s wrong.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: If56ce51c078e9adf26b9469a01c95a857aac66a4\n"
    },
    {
      "commit": "6c444480dc55d4d0e3a99e441ce0804663bf05b4",
      "tree": "8c325d51710b558bd03c8f73434ffd46e787cdf4",
      "parents": [
        "f1d0b729552b22c9a36184bd497c0816dcf8ba63"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 15:15:19 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 18 14:48:46 2018 +0100"
      },
      "message": "Count transitions from interpreter to intrinsic.\n\nRemove the special cases for intrinsic, and copy the needed\ncounting from the slow path to the fast path as well.\n\nTest: test.py -b -r --host -t 638\nChange-Id: I68a867c0b84234ed79bd32de29238e65f5ffa200\n"
    },
    {
      "commit": "f1d0b729552b22c9a36184bd497c0816dcf8ba63",
      "tree": "5b145ad60fd69631c71de433a3ea1b8e463e036c",
      "parents": [
        "b71265dac216f0d9a78111c5b4c12be094af8266",
        "1f5ab4ecc6589a8d5a671ef56e6efcc3e40d7c5b"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 18 13:47:09 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 18 13:47:09 2018 +0000"
      },
      "message": "Merge \"Rename fast_invoke template argument of DoInvoke to is_mterp.\""
    },
    {
      "commit": "9f1893be10781eec8a1774e431084bb91b36c92c",
      "tree": "2854fb30501d40f4aa45f71af10d9d719171b4fb",
      "parents": [
        "f06ca50f0aff5167f767b09f624c60186290a623"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 17:54:58 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Oct 18 12:19:44 2018 +0100"
      },
      "message": "Replace hard-coded vreg accesses in mterp with macros.\n\nIt will make it easier to change them in the future.\n\nTest: diff of libart.so disassembly\nChange-Id: I138f3d9b56b3a569a8181b3ad5cc12695cf897ef\n"
    },
    {
      "commit": "1f5ab4ecc6589a8d5a671ef56e6efcc3e40d7c5b",
      "tree": "a0912961631749e7bca17a527b1e106a10554185",
      "parents": [
        "21ff4ad92e8d74cfe8d95ec64b177d47084ec374"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 15 11:46:46 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 18:37:32 2018 +0000"
      },
      "message": "Rename fast_invoke template argument of DoInvoke to is_mterp.\n\nThis is more descriptive than \"fast\".\n\nTest: test.py -b --interpreter --host\nChange-Id: I107c59db2aa00dd6fd727fe08c739c940dd7899c\n"
    },
    {
      "commit": "74844fb5e2a76a5dddde00c1aa91980a7bb518aa",
      "tree": "d18394d609aaf65f0f31adecac1ef589936a3c4c",
      "parents": [
        "a52ac0cd739e6c5b33bdaf81a19370d3acf4eadf",
        "776f3f7bfa33e0449e4e2c5535bae1babfdbaf83"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 13:26:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 17 13:26:14 2018 +0000"
      },
      "message": "Merge \"Remove mterp \"alternate\" opcode handlers.\""
    },
    {
      "commit": "a52ac0cd739e6c5b33bdaf81a19370d3acf4eadf",
      "tree": "d5c63d0a7b05378d1cd1806c50dc38dd9548c609",
      "parents": [
        "905c1de6afd973a196dfc0c96339c928134e3ea9",
        "d88f5f7b22571511b93206f02806568648138a35"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Oct 17 10:11:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 17 10:11:31 2018 +0000"
      },
      "message": "Merge \"Shrink couple of x86 mterp handlers.\""
    },
    {
      "commit": "776f3f7bfa33e0449e4e2c5535bae1babfdbaf83",
      "tree": "274d20979e48c772327258b7cbeab92b276df84e",
      "parents": [
        "d88f5f7b22571511b93206f02806568648138a35"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Oct 15 18:03:55 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 15:13:44 2018 +0100"
      },
      "message": "Remove mterp \"alternate\" opcode handlers.\n\nThey are currently unused and I don\u0027t have plans to use them.\n\nThe alternate table made it possible to enable extra mterp checks.\nHowever, it is possible to move the debug checks to the main path.\n\nTest: test.py -b -r --interpreter -t 001-HelloWorld\nChange-Id: I45a39ec73abaefaecf5b8c636f3f9d519a0a8bb0\n"
    },
    {
      "commit": "d88f5f7b22571511b93206f02806568648138a35",
      "tree": "651f3e1954db1da94b2bb27f0393cb17bc3e89ab",
      "parents": [
        "e7019db7f0dce1bbad836396710c792fd39593fc"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 14:22:33 2018 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 14:22:33 2018 +0100"
      },
      "message": "Shrink couple of x86 mterp handlers.\n\nUse helpers to make more room for the follow-up CL.\n\nRefactor the code so that it is possible to add\nnon-opcode specific helpers with custom name.\n\nTest: test.py -b -r --interpreter -t 001-HelloWorld\nChange-Id: I3714f83c10e1c16d3b26108e6eb475805482c785\n"
    },
    {
      "commit": "4c8d22fa559e248490544e2bd7309b4b1014e972",
      "tree": "0df5e9ddf0af5c6a846a636979e17cb78d37eb1c",
      "parents": [
        "6071d2d1cd94b3f2bfe422a3e567ca11a7e3438f",
        "6c2b86ea5347883564cf4450adbe79922bd8b458"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Oct 16 11:42:33 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 16 11:42:33 2018 +0000"
      },
      "message": "Merge \"Cache the ImtTable index in the interpreter.\""
    },
    {
      "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": "8db807252e1d4d0bab7785be231e20a1e5fd8e74",
      "tree": "b3ab6a96ddc9ef3e0dfbbc2422321f73ef50c4c9",
      "parents": [
        "e7019db7f0dce1bbad836396710c792fd39593fc",
        "78baed5ec51a6e2d113e8b29aafa5c6203b46845"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Oct 15 08:25:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 15 08:25:50 2018 +0000"
      },
      "message": "Merge \"ART: Use reinterpret_cast{32,64}\u003c\u003e when appropriate.\""
    },
    {
      "commit": "d55f6ee508a9a3c81bb1911bb203a22845bfab86",
      "tree": "38a8793c9d1c182771f89075c1218ec9d1c2da75",
      "parents": [
        "332c8e36356b21d65c4003612334a681150a5643",
        "0aa7a5a6a7bc350b79351f52e26c97747e927acf"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 12 17:58:18 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 12 17:58:18 2018 +0000"
      },
      "message": "Merge \"Revert^4 \"JVMTI PopFrame support\"\""
    },
    {
      "commit": "78baed5ec51a6e2d113e8b29aafa5c6203b46845",
      "tree": "57ca544020f309e3529e33300ad4867ca4579c1e",
      "parents": [
        "a48eb7e0690187618d2824a7d9b5601e7f5cdf80"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 11 10:44:58 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Oct 12 17:53:50 2018 +0100"
      },
      "message": "ART: Use reinterpret_cast{32,64}\u003c\u003e when appropriate.\n\nAnd fix UnstartedRuntime checking for null arguments in all\nfunctions where we now use reinterpret_cast32\u003c\u003e.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/783607 .\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nBug: 117427174\nChange-Id: I58f8ad59f70e3fbb1d06aef419cd26555706fa65\n"
    },
    {
      "commit": "4cbfadc29b4ba89b32fa6eb55a287db78d12a45c",
      "tree": "70cd681c4326ab8cf034da6c0fb0fef222cd67b1",
      "parents": [
        "a48eb7e0690187618d2824a7d9b5601e7f5cdf80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 10 16:09:43 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 12 10:07:41 2018 +0100"
      },
      "message": "Remove CHECK that GetThis() must always work.\n\nEnsures GetVReg of a reference on compiled code checks that the\nvalue is indeed a reference from the stack maps.\n\nbug: 116683601\nbug: 117452149\nTest: 686-get-this\nChange-Id: I3a370c45786a4892c7888491bec6d5ae64672f6c\n"
    }
  ],
  "next": "0aa7a5a6a7bc350b79351f52e26c97747e927acf"
}
