)]}'
{
  "log": [
    {
      "commit": "6834d3414308e3d536bc685dbb3d60fe70186f23",
      "tree": "7c579de52d3acc5cc4d02babf25c7fcb2b94793b",
      "parents": [
        "c7aa87e1666ac48ddf9149cfdfd64b026b3969e5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 13:12:09 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 14:12:31 2018 +0100"
      },
      "message": "Remove mirror::Reference::java_lang_ref_Reference.\n\nAnd some #include cleanup after previous CLs removing\nstatic GcRoot\u003c\u003es.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I56b34637f9d793ed7680696a1eeedd07d061ad00\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": "0278be74269fcfe4f2517d449f2bd53472f9b2f9",
      "tree": "1a59adbd7b5632cba4766b55195fdaf627cdfec0",
      "parents": [
        "b4eb1b19e1dd35d12a408358656c1421f507d231"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 24 13:30:24 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 25 11:33:37 2018 +0100"
      },
      "message": "Remove PrimitiveArray\u003cT\u003e::array_class_.\n\nAnd ObjPtr\u003c\u003e-ify jni_internal.cc while we\u0027re touching it.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I15a8ade772e3e4337371c6f3c472f9efea9f4636\n"
    },
    {
      "commit": "197f1ef6f4f2411d011d7e8f696775c3fbcffd86",
      "tree": "eacc720024479e75b03d12ac6764f2cd2ba945b3",
      "parents": [
        "04f0eaffa70e0384c07bb3680aa0724144358330",
        "8b362a87d52a6668ffd2283ef6ffc274315f41c8"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue May 22 23:00:40 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 23:00:40 2018 +0000"
      },
      "message": "Merge \"Revert \"Remove support for Valgrind in ART.\"\""
    },
    {
      "commit": "8b362a87d52a6668ffd2283ef6ffc274315f41c8",
      "tree": "14b187cd0b4afde501b9cc7a9dc82c997362e888",
      "parents": [
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 22 20:54:14 2018 +0000"
      },
      "message": "Revert \"Remove support for Valgrind in ART.\"\n\nThis reverts commit 8268cb677bd92bfbcfec7e803775c29687494e53.\n\nReason for revert: ASAN failures\n\nChange-Id: I7e66d3f3fb461ae4f6dea6ec7d506b7dface3402\nTest: SANITIZE_HOST\u003daddress m test-art-host\nBug: 77856586\nBug: 29282211\n"
    },
    {
      "commit": "f31343f1eab771010b3f293366149d2524f30902",
      "tree": "5187b2bceee4c7d5347750dc6ba0020172d5ef51",
      "parents": [
        "e816389b61d17b9a82d8e61426ddfcce20e1238c",
        "8268cb677bd92bfbcfec7e803775c29687494e53"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue May 22 16:46:43 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 16:46:43 2018 +0000"
      },
      "message": "Merge \"Remove support for Valgrind in ART.\""
    },
    {
      "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.\""
    },
    {
      "commit": "d3083dd15af1cb4ffc13d87a7d2c3be2edb9199d",
      "tree": "88dd2599ad89da5a4f2668a2c9debd0335669cd0",
      "parents": [
        "6623bc389c43efc87668ce7465e19b195e765e22"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 17 08:43:47 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 14:38:14 2018 +0100"
      },
      "message": "Refactor runtime callee save frame info.\n\nAnd avoid storing the info in Runtime.\n\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: Ib14853fc06c420753993e1f9e82a1b01f5e35e8c\n"
    },
    {
      "commit": "8268cb677bd92bfbcfec7e803775c29687494e53",
      "tree": "b63ca42dcd440117187e3c859b4b311b11b8137e",
      "parents": [
        "004b8875b291af5001d384fb1eb76ae0660ff056"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri May 11 15:06:17 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon May 14 18:40:49 2018 +0100"
      },
      "message": "Remove support for Valgrind in ART.\n\n- Disable test configuration art-gtest-valgrind64\n  (art-gtest-valgrind32 was already disabled).\n- Remove Makefile logic regarding testing with Valgrind.\n- Remove occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_VALGRIND`.\n- Replace occurrences of `TEST_DISABLED_FOR_MEMORY_TOOL_ASAN` with\n  `TEST_DISABLED_FOR_MEMORY_TOOL`.\n- Replace the potentially dynamically evaluated\n  `RUNNING_ON_MEMORY_TOOL` expression with constant\n  `kRunningOnMemoryTool`.\n- Simplify and fold the logic of\n  `art::ArenaAllocatorMemoryToolCheckImpl` and\n  `art::ArenaAllocatorMemoryToolCheck` into\n  `art::ArenaAllocatorMemoryTool`.\n- Adjust comments regarding memory tools.\n- Remove Valgrind suppression files.\n- Remove `--callgrind` option from tools/art.\n\nTest: art/test.py\nBug: 77856586\nBug: 29282211\nChange-Id: Ifdcbfccc1830104c455760457df66ede4a4cd135\n"
    },
    {
      "commit": "46226f02fdfe50e1d49ffd77d3e99598ff79d9b9",
      "tree": "06a933c38e710a9ce96d9a26688786c76abf1c6e",
      "parents": [
        "32bde99142c5e59b8cad572d9a7b5a81ee12cd00"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 14 15:34:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon May 14 15:34:32 2018 +0100"
      },
      "message": "Set default hidden API policy to dark+black\n\nWhen invoking dex2oat, only a boolean flag is used to enabled/disable\nhidden API checks, instead of a 2-bit value passed down to zygote.\nWhen the flag is true, use dark+black lists as the enforcement policy.\nThis is conservative, as compiling with both lists enforced may lead\nto more classes being re-verified at runtime, but correctness is\npreserved.\n\nBug: 64382372\nTest: N/A\nChange-Id: If15723ad40b99c5475f10561b5b3a669a8fb01c7\n"
    },
    {
      "commit": "016fcbe2d24a99b688ae2b5c03ce13d270a97886",
      "tree": "96ec3e56325a6ea7618613ef96b04022612f7907",
      "parents": [
        "d10995609f9fd8b85db1a5143b124195805ca5bb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 03 19:47:35 2018 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 09 22:11:54 2018 +0000"
      },
      "message": "Support system server ART-profiling\n\nWe don\u0027t have to map the code cache as executable if we only want to save\nprofiles. This enables system server profiling without disabling SElinux\nto bypass the jit code cache exec-mapping.\n\nTest: m test-art-host\n      boot a device with system server profiling enabled.\nBug: 73313191\n\nChange-Id: I7f25a905e0b23456183e39e58ad8f4b829ddf0c5\n"
    },
    {
      "commit": "a3ad0cdd711857f04f477e2cdc5b56a2c74a3018",
      "tree": "7e0e4c7888c2497d86ce96c9574d7c9886721ccf",
      "parents": [
        "abd9e1515bc6be88372c61071971c5432a51553d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 04 10:06:38 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 11:11:09 2018 +0100"
      },
      "message": "ART: Move JNI files to runtime/jni/ .\n\nTest: Rely on TreeHugger.\nChange-Id: I9cae11191ef1567ae9453be498882a7767285140\n"
    },
    {
      "commit": "1fd97f29d646770c5e8ddee2e8fe468ffcc9ea2c",
      "tree": "be2fbd393abfe438c1e734055f1d3d084755e6a6",
      "parents": [
        "9a13d423c71517bc9cb3cf40e97dd0f6f5d5c72c"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Apr 03 15:32:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:31:20 2018 +0100"
      },
      "message": "Log an event on hidden API accesses.\n\nThe new event consists of:\n- The type of access (reflection, JNI, etc.)\n- The action taken (warn or deny)\n- The type of member accessed (field or method)\n- Name of the class which defined the member accessed\n- The name of the member\n- The type signature of the member (type of field, or method signature)\n\nThe fully qualified member name is also not included to avoid the overhead\nof building the string. It can be build from the information included.\n\nSimilarly, the package name, version, etc. are not included as they can\nbe inferred from the context when analyzing the event log.\n\nThe event is sampled, according to a sampling rate that can be set by a\nconfiguration option, to reduce log spam.\n\nTest: $ m\nTest: $ adb shell settings put global hidden_api_access_log_sampling_rate 65536\nTest: $ adb lolcat -b events | grep art_hidden_api_access\n\nSample output:\n16796 16796 I art_hidden_api_access: [1,0,Ldalvik/system/VMRuntime;,getRuntime,()Ldalvik/system/VMRuntime;]\n16796 16796 I art_hidden_api_access: [1,2,Ldalvik/system/VMRuntime;,setHiddenApiExemptions,([Ljava/lang/String;)V]\n16796 16796 I art_hidden_api_access: [1,3,Landroid/app/Activity;,mDoReportFullyDrawn,Z]\n(Timestamps have been elided)\n\nBug: 64382372\nBug: 77517571\nMerged-In: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\nChange-Id: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\n(cherry picked from commit 73ddda4403c8088a730b8d456de46bb8e0307ed8)\n"
    },
    {
      "commit": "53af040f8c1a817dcb1e727a3e83baab3449569a",
      "tree": "29a38f4aee4392fc7580f630f7909fb11da15ee5",
      "parents": [
        "b09abb2f8a988ccc95d91dc8624577188c771bc0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 03 10:40:37 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 04 11:55:30 2018 -0700"
      },
      "message": "ART: Remove tombstoned parameters\n\nThese are no longer supported. Always try to use tombstoned when on\na device.\n\nBug: 77288304\nTest: m test-art-host\nTest: Device boots\nTest: manual ANR dumps work\nChange-Id: Iffd3287432becfc7982cdcb9a0cfe44f0c5b5143\n"
    },
    {
      "commit": "89b06a15b530acf78727700075d8b457e1cc4eb0",
      "tree": "0d4cc200d359f532cb1fc27f0d7e5cc3b4bf8ee7",
      "parents": [
        "9e363f65c1d85e601b0445b51fefc5156ec71fca",
        "30025095524e471ec347633e39f26ed0606bea65"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 26 09:00:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 26 09:00:58 2018 +0000"
      },
      "message": "Merge \"Pass the fd to OatFile::Setup to avoid selinux errors.\""
    },
    {
      "commit": "30025095524e471ec347633e39f26ed0606bea65",
      "tree": "533cbe1808445dcd4dd6d8b7dacc180fcc29b90a",
      "parents": [
        "cee49280366af9aa35e889e90d0ae0e90b453a22"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 19 14:43:29 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 24 14:39:06 2018 +0100"
      },
      "message": "Pass the fd to OatFile::Setup to avoid selinux errors.\n\nbug: 77853712\nTest: test.py\nChange-Id: I069cda5296b561284d71b067924e1bc4a8562710\n"
    },
    {
      "commit": "f889c70e79643373320f5742cc719d6c467531b9",
      "tree": "ada543c87521fbfd98bbbe0004ca9e89c36a9489",
      "parents": [
        "740a50992ea1a200068eb4486a172a151c9b329c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Feb 23 15:25:45 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 19 10:30:50 2018 -0700"
      },
      "message": "Always allow agent attach on userdebug builds with kArtTiVersion\n\nWe added support for the jvmti-alike ArtTi for use by debuggers on\nuserdebug/eng builds of android. Extend this support to allow any\nagent to be loaded on any process of a userdebug device. These agents\nwill need to make use of kArtTiVersion (0x70010200) envs.\n\nTest: build\nTest: ./test.py --host -j50\nTest: ensure AS profiler continues to work with userdebug devices\nBug: 78195998\nChange-Id: I984d1ea937eb49afb376a48bea3d67085192020e\n"
    },
    {
      "commit": "7b0e844d8f0a59c6e1e9ac0c441409d2e435ac36",
      "tree": "e127fcf1840a8e249bfdb0725f6c73181fe84246",
      "parents": [
        "6c3533991522d036cbb5a656c44f63bf633a2925"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Apr 11 18:27:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Apr 11 19:04:04 2018 +0100"
      },
      "message": "Distinguish the various pre-allocated OutOfMemoryError use cases.\n\nThe pre-allocated exception \"OutOfMemoryError thrown while trying to\nthrow OutOfMemoryError; no stack trace available\", can be thrown in\nthree occasions:\n1. OOME thrown while throwing an exception (not necessarily an OOME);\n2. OOME thrown while throwing an OOME;\n3. OOME thrown while handling a stack overflow.\n\nTo improve error reports, replace the unique pre-allocated OOME\nexception with three different exceptions for these three use cases.\n\nNoe that we were already manually dumping a stack trace in case #2.\nThis change implements this for case #1 too.\n\nTest: art/test.py\nBug: 68251879\nBug: 77567088\nBug: 77844013\nChange-Id: I84cd15b729b4d0bd7bf6c831caeb0eb93c458114\n"
    },
    {
      "commit": "cdb4cb19f1135bf2003a6649c2c72ea13a406f88",
      "tree": "ee9ac1e1703d76a6bfec72f46253539eb39c4e3e",
      "parents": [
        "ddc694267aee845c9b61779be2a5487eb65b1757"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 11:29:16 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 11:29:16 2018 -0700"
      },
      "message": "Remove historical workarounds.\n\nWe removed libcorkscrew in L, and we removed its replacement in P.\n\nWe removed the LLVM uses several years ago too.\n\nBug: N/A\nTest: builds\nChange-Id: I414c9c3dc3c2c2e0016b9da0e9f8aa16068daa8c\n"
    },
    {
      "commit": "3215fff7ef8fa3c2250b91158560eacc613a4671",
      "tree": "50d6fe7aff3f8fae31dcf2ca020f5079f49a592f",
      "parents": [
        "6371249ce05032db5d8c4c7ec96bf7fd7264c42f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Apr 03 17:10:12 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Apr 04 14:47:57 2018 -0700"
      },
      "message": "Separate Malloc and MemMap ArenaPools\n\nMake ArenaPool an abstract base class and leave MallocArenaPool\nimplementation with it.  This enables arena_allocator to be free\nof MemMap, Mutex, etc., in preparation to move the remaining collections\nout of runtime/base to libartbase/base.\n\nBug: 22322814\nTest: make -j 50 test-art-host\n      build and boot\n\nChange-Id: Ief84dcbfb749165d9bc82000c6b8f96f93052422\n"
    },
    {
      "commit": "75b47b47c4c54adccbb723cfbf48e32953887713",
      "tree": "876ce211773db3e3785254ae8d7e6b66545c76be",
      "parents": [
        "0b1d3ca323bd504818e4cdab1baa732964ee150a",
        "6ee497188b0e8c7bcf5126cefad04090f956616a"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 30 16:54:27 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 30 16:54:27 2018 +0000"
      },
      "message": "Merge \"Revert^4 \"Add an option to disable native stack dumping on SIGQUIT.\"\""
    },
    {
      "commit": "6ee497188b0e8c7bcf5126cefad04090f956616a",
      "tree": "db2d06b01d255811726ea748db8eb6f62cd7b71c",
      "parents": [
        "642e9d8249be5aff68022cabdc8ba576a57ff8d6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 30 14:39:05 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 30 14:39:05 2018 +0000"
      },
      "message": "Revert^4 \"Add an option to disable native stack dumping on SIGQUIT.\"\n\nBug: 74121887\n\nStill failing :(\n\nThis reverts commit 642e9d8249be5aff68022cabdc8ba576a57ff8d6.\n\nChange-Id: I603ca9fdd2d8f2f759527130b3288efe5b23b5c3\n"
    },
    {
      "commit": "aa12001baf69c124ab3901c13385aaa43fc76987",
      "tree": "9cedf9714284f6a25dc40e8746aae3a719e86de4",
      "parents": [
        "3be56a02c6311d2a751f8a7410843199f9f4c9cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 28 16:23:24 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 28 17:32:16 2018 -0700"
      },
      "message": "ART: Refactor hidden_api\n\nAdd hidden_api.cc, move handling of hidden fields there. Also\nremove an unnecessary include that meant hidden_api was imported\ninto too many compilation units, and fix transitive includes.\n\nBug: 73896556\nTest: mmma art\nTest: m test-art-host\nChange-Id: Ie47e11abcea68e326c410bab215ebbfbf049051b\n"
    },
    {
      "commit": "642e9d8249be5aff68022cabdc8ba576a57ff8d6",
      "tree": "1fa53cee639241bd3968997e55e38ed282235569",
      "parents": [
        "b939805d9d4b0957274c562fb8053512d04138b2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 27 20:30:55 2018 +0000"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 27 22:36:09 2018 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\"\n\nThis reverts commit 74d25c9040dfd1e0985987eb38817e526878a3db.\n\nReason for revert: The original failing condition appears to be gone.\n\nBug: 74121887\n\nTest: Ran 004-ThreadStress many times against the target.\nChange-Id: Ie5bd050112e654a99bdfea7d6dd673882ca35567\n"
    },
    {
      "commit": "e8a4e378c5a928d5de07bee6db99150a57dabcd8",
      "tree": "cfe89ca742bed927e67d9cf926937fe5e6f89347",
      "parents": [
        "454bc46869f116fc1c3b9e38b0868341d463ed4b",
        "597d7f650b0656fcb3985b01f53284717b41e5cc"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Mar 23 13:29:03 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 23 13:29:03 2018 +0000"
      },
      "message": "Merge \"More flexible API enforcement policy support.\""
    },
    {
      "commit": "597d7f650b0656fcb3985b01f53284717b41e5cc",
      "tree": "59ba9853104427b19f2449ce547301764d22756b",
      "parents": [
        "753ce1bcf458ad6c6fbb41689901943d44e7738e"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Mar 22 11:36:47 2018 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Mar 23 11:43:35 2018 +0000"
      },
      "message": "More flexible API enforcement policy support.\n\nThis CL adds the ability to configure which banned API lists to enforce,\ndefined by new enum hiddenapi::ApiEnforcementPolicy. Currently, the policy\ncan be set at zygote fork time, but not at dex optimization time where\nblacklist enforcement is still assumed. As such, making the policy more\nstrict will not work as expected yet. This will be improved in a follow up\nCL.\n\nTest: art tests pass\nTest: Device boots\n\nBUG: 73337509\n\n(cherry-picked from commit 159f596eec01adbb5a1c9654402c137cdb943131)\n\nChange-Id: I6c319bb8a3000cb1d3c4693b4fb196e749c36d96\nMerged-In: I33f9afce628a86727e400052f4d5979d3536da8c\n"
    },
    {
      "commit": "6ff3b371e53ffdb6d0aa9f85ae9468696f5fa2b0",
      "tree": "e4ceaf9ac71100bcc68942ec3fd0e718e8dc89f0",
      "parents": [
        "182cbe4dcba21f797f3a9195338baf3cba775f60"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 15 08:53:16 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 15 20:58:40 2018 -0700"
      },
      "message": "ART: Clean up Trace\n\nRemove unneeded field. Refactor Start to have a cleaner interface.\nAdd exception for invalid file descriptor.\n\nTest: mmma art\nTest: art/test/testrunner/testrunner.py -b --host --trace\nChange-Id: I7d0cd9629796c690a993dbbba5ae96d940c44dba\n"
    },
    {
      "commit": "86821aca0eff7fb1fff18c0d71acfcc06f5d73f3",
      "tree": "a285269f9035de4767c2b166784b33ca3a8e9d01",
      "parents": [
        "ec9855e6262cd477c9f61ed245b9e2526e351698",
        "74d25c9040dfd1e0985987eb38817e526878a3db"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 13 08:57:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 13 08:57:20 2018 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\""
    },
    {
      "commit": "74d25c9040dfd1e0985987eb38817e526878a3db",
      "tree": "e63323329298a7cc67799324a6edc2378cfb6822",
      "parents": [
        "8b089742252e827d863218413e8855e1bae75af5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 12 19:26:44 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 12 19:26:44 2018 +0000"
      },
      "message": "Revert \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\"\n\nBug: 27185632\nBug: 74121887\n\n\nGot flakes on device for 004-ThreadStress and 141-static-field-sigquit\n\nThis reverts commit 8b089742252e827d863218413e8855e1bae75af5.\n\nChange-Id: Ie76c84a1889e85b885d5f4123d60e8a760cf186d\n"
    },
    {
      "commit": "2229f6d515fb82157e3adbe802d10f9ea98598ae",
      "tree": "f1c02f869e5e4e68251d1ab8541a627c41934368",
      "parents": [
        "1639f65404c77ae6e992faf19617491dbc417dfc",
        "230fa94bb87e6414376aa828bd47068c684ed57f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 09 02:22:49 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 09 02:22:49 2018 +0000"
      },
      "message": "Merge \"Make LOG(INFO) a VLOG(jdwp)\""
    },
    {
      "commit": "230fa94bb87e6414376aa828bd47068c684ed57f",
      "tree": "1c0991f8f2e761cb701d5247e3fa28fee02f21eb",
      "parents": [
        "08a6c3dd9f65a91cfa0df13c055262bb496f3a98"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 08 14:07:02 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Mar 08 14:07:02 2018 -0800"
      },
      "message": "Make LOG(INFO) a VLOG(jdwp)\n\nThis log is often printed during cts tests where it is not useful.\n\nTest: build\nBug: 62821960\nChange-Id: I16c349152215fd41266725870e6ff39819fb03d4\n"
    },
    {
      "commit": "7a02c66fd9ed174fc2e49ccc9f582dd661b7de9e",
      "tree": "8f193c8ecea0ff418370bf72babb97487e8c9c65",
      "parents": [
        "334f170654fed18711d8dcf5238c1ac8bad7ecd1",
        "8b089742252e827d863218413e8855e1bae75af5"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Mar 06 19:56:58 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 06 19:56:58 2018 +0000"
      },
      "message": "Merge \"Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\""
    },
    {
      "commit": "c431b9dc4b23cc950eb313695258df5d89f53b22",
      "tree": "422273559c3ae52caff0c6b1cf1a62a8312f0e26",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Mar 02 12:01:51 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Mar 05 13:58:20 2018 -0800"
      },
      "message": "Move most of runtime/base to libartbase/base\n\nEnforce the layering that code in runtime/base should not depend on\nruntime by separating it into libartbase.  Some of the code in\nruntime/base depends on the Runtime class, so it cannot be moved yet.\nAlso, some of the tests depend on CommonRuntimeTest, which itself needs\nto be factored (in a subsequent CL).\n\nBug: 22322814\nTest: make -j 50 checkbuild\n      make -j 50 test-art-host\n\nChange-Id: I8b096c1e2542f829eb456b4b057c71421b77d7e2\n"
    },
    {
      "commit": "8b089742252e827d863218413e8855e1bae75af5",
      "tree": "bbfe333fced26fbc42f87a4469c59822611acd9f",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 11:47:30 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 13:43:15 2018 -0800"
      },
      "message": "Revert \"Add an option to disable native stack dumping on SIGQUIT.\"\n\nThis reverts commit a73280df8cac1279b6dea0424722f42ef0048613.\n\nBug: 27185632\nBug: 74121887\nTest: m test-art-host\nChange-Id: I24af48619577a78371c93cbad24d307d4d7a217d\n"
    },
    {
      "commit": "66ff8a8b82ff103d48d40e8dad01342c2d6f6d0d",
      "tree": "f1e177b7276d0387bc109fa12e6bd4cde060d5e9",
      "parents": [
        "878124c13b794900b0f5c437f52ac0f61538ab55"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:27:55 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 28 13:31:13 2018 +0000"
      },
      "message": "Revert \"Revert \"Full-stack integrity: check vdex contents.\"\"\n\nbug: 30972906\n\nInitial revert due to \u0027check\u0027 file of the test needing updating for target tests.\n\nThis reverts commit a19b7649faf8780737be7ce3ec48a12d81c6d69f.\n\nChange-Id: I455780bd88cd89ff80c9084d399e2beeb819b95f\n"
    },
    {
      "commit": "a19b7649faf8780737be7ce3ec48a12d81c6d69f",
      "tree": "a96372834531ab26b0fae78ce9ef4fecac3ef2c1",
      "parents": [
        "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 17:26:11 2018 +0000"
      },
      "message": "Revert \"Full-stack integrity: check vdex contents.\"\n\nbug: 30972906\n\nTest fails on device.\n\nThis reverts commit d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb.\n\nChange-Id: I53902b0d6d4dbe8237f61bf01542acf538229c71\n"
    },
    {
      "commit": "d6f914ea4bd09f2d60db2783f7a3fd93d3ec0afb",
      "tree": "596ef15de83798868d8e6c6cb6cbcb9a45e203e8",
      "parents": [
        "b81dedbf4eae5c5a7e65836d3b6d3b6d541b6fa9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 13:56:50 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 27 10:40:05 2018 +0000"
      },
      "message": "Full-stack integrity: check vdex contents.\n\nFor priv-apps, if a vdex on /data has dex code, it must\nbe because the APK has compressed dex code.\n\nFall back to APK if not.\n\nFor test convenience, update --copy-dex-files to also\ntake a \"always\" variant.\n\nbug: 30972906\nTest: 677-fsi\n\nChange-Id: I49f0eab46650145316a86de2971a3b9c140bcff7\n"
    },
    {
      "commit": "2bce0763cbbd8cf35ab4e14a1920afce735e9b89",
      "tree": "702989f754d38b7251d9116fc67c9087416c1440",
      "parents": [
        "a1322f062616c7979da49d2c2198eabb6b7b259d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 20 16:03:34 2018 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 20 16:03:34 2018 -0800"
      },
      "message": "Register tests for profiling after the runtime has started\n\nEnsure that the profile saver thread starts after the runtime finishes\nstarting. In test mode (when -Xps-profile-path is passed) we were\nregistering the app info to early.\n\nTest: run-test 927-timers\nChange-Id: Iede588524dda3ff60aa3e2c61ed1d906f63a6c70\n"
    },
    {
      "commit": "7287c4d75e38e7a01c7ea3fdebb47d9cfe128a56",
      "tree": "2b43d1b334e05e1c5719fee3f2a16bebaff059d9",
      "parents": [
        "1efa7cb8c415f4df8a248242cd773a1fc671878e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 15 10:41:07 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 15 15:36:21 2018 +0000"
      },
      "message": "Add Class.getPrimitiveClass().\n\nImplement the native part in ART and remove the native parts\nof the previously needed workaround for java.lang.Void.TYPE.\n\nCompanion libcore/ change:\n    https://android-review.googlesource.com/619326\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nBug: 73346078\nChange-Id: Icfb201a1f08d8ff2a65c58f7c0ec25aa2296db29\n"
    },
    {
      "commit": "d7fbc0eb824e495b940dd739404d945a35f01fd3",
      "tree": "bec376f405c5bef02d2c61f73c43738b6ef33fff",
      "parents": [
        "3bffbe8a8288cf01b7248fffdd320bf688529bcb"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Feb 12 16:44:36 2018 -0800"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 14 10:06:03 2018 +0000"
      },
      "message": "Refactor hidden API runtime flag from negative to positive\n\nThere are only two situations in which we want to enable hidden API\naccess checks: (a) when forking a non-platform app from zygote, and\n(b) when compiling such app with dex2oat. It is easier to cover these\ntwo situations than all the other situations when we want to disable\nthe checks. Make the flag in Runtime class false by default and only\nenable if checks are explicitly requested by the runtime.\n\nBug: 64382372\nTest: boot device, install and run apps, check log messages\n\n(cherry picked from commit 9cf8b671a24f55c7e1a1df561d6cce85b45cebd8)\n\nChange-Id: Ib5ccb20596c708cedf9b2c05af228463bec2adb1\n"
    },
    {
      "commit": "65400370103ac8005005d0ac68a905c39ba21b45",
      "tree": "6e957058a007302ded720fea4d1ed021219c7481",
      "parents": [
        "b7a3ddfaa37f4c1d6483b9c285080b25bbdd343e",
        "25419b59f6fce8da492c9d742d4a157c6c645558"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 09 17:39:55 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 09 17:39:55 2018 +0000"
      },
      "message": "Merge \"ART: Add option to use stderr logger\""
    },
    {
      "commit": "cd4ddeea1c33d5f9b7758d116451bd06f1b81aff",
      "tree": "fa333538dc655ac62edd7f25a11c88749c6c7ad5",
      "parents": [
        "551ff7e3176533576527b74e37cb65296d60ac15",
        "928033d81f63912f669acd27a72897694eb31db6"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Feb 09 14:55:25 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 09 14:55:25 2018 +0000"
      },
      "message": "Merge \"Revert^2 \"ART: Interpreter support for VarHandle accessors\"\""
    },
    {
      "commit": "928033d81f63912f669acd27a72897694eb31db6",
      "tree": "4fa9d3e320f1fbb8f39d4128037f6a4b02c69fd7",
      "parents": [
        "426ee26b3dcc2c6ff0e16096c57f62b98b91b71e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Feb 07 05:30:54 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Feb 09 13:09:26 2018 +0000"
      },
      "message": "Revert^2 \"ART: Interpreter support for VarHandle accessors\"\n\nThis reverts commit c4d3bf4eaff9720ed0bb7775db6fc24a1bd755dd.\n\nBug: 65872996\nTest: art/test/testrunner.py -b --host\nChange-Id: I2d1017c45cee5b2fd2dd05e5eeff0a72146663b1\n"
    },
    {
      "commit": "25419b59f6fce8da492c9d742d4a157c6c645558",
      "tree": "bcd10f3dfb0935aa7f3f38b909f0e7a2be5c0092",
      "parents": [
        "b1c724cc1e57878faed18cee007a26b9da7e3cf2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 21:30:26 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 08 21:30:26 2018 -0800"
      },
      "message": "ART: Add option to use stderr logger\n\nAdd a runtime option that sets the android-base logger to StderrLogger,\nforcing all further logging to go to stderr. This can be used for\nbetter interaction with dalvikvm or dex2oat on-device.\n\nBug: 72998814\nTest: m test-art-target-gtest-dex2oat_test\nChange-Id: I18794bbed0885810f8f0480816b1c780753a9702\n"
    },
    {
      "commit": "a6899033c5799f882f19f5e4ff7844d21058143f",
      "tree": "8880ebf73e38adb316146147a09f52deab89917b",
      "parents": [
        "7d522a4447749e395d0ce65207a479861e09445a"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 07 02:44:46 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Feb 07 16:21:35 2018 +0000"
      },
      "message": "Do not enforce hidden API for boot image and preopt compilation\n\nWhen compiling on host that hidden API checks should not be enforced.\nThis is a proxy until the compiler flags are cleaned up.\n\nBug: 64382372\nTest: make with blacklist enabled\nChange-Id: I03777526d68db22ca3589e223af9466a1c9786d8\n"
    },
    {
      "commit": "ad666279a4af62e122f52cc7872efb812d82887f",
      "tree": "709642c73fbd79f16a65eb1428fd2c625f7c3f19",
      "parents": [
        "6db9a6c240e0ef4c69448c7806c5d035b7b5b111"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 06 20:30:59 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Feb 06 21:41:18 2018 +0000"
      },
      "message": "Disable hidden API checks for Am\n\nAm starts its own runtime and its Java code should be exempt from\nhidden API checks. Change the logic in runtime.cc to disable hidden\nAPI checks by default and only enable them if:\n(a) dex2oat runs without -Xno-hidden-api-checks\n(b) zygote forks a new process without DISABLE_HIDDEN_API_CHECKS flag\n\nThis logic can be simplified by changing the flag from negative to\npositive. Since the cleanup requires touching multiple projects, it\nwill be done in a future CL.\n\nBug: 73001007\nBug: 64382372\nTest: manual\nChange-Id: I8a222f7a16bf88ffe4541558f3ba789f38d7322e\n"
    },
    {
      "commit": "92265222f1e1df56ee6d106493b1bd2be65d5ce9",
      "tree": "d73a4f9708acbedb1d464c83c22756ac0eb68799",
      "parents": [
        "e5bf41acab7cc5a798a4d19425493a4af8f20436"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Feb 02 11:21:40 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Feb 03 02:11:11 2018 +0000"
      },
      "message": "Only set UI warning on hidden API dark greylist\n\nThe framework might show a toast notification on access to greylisted\nhidden APIs. Only show this warning on dark greylist so as to not spam\nearly testers.\n\nBug: 64382372\nTest: make\nChange-Id: I8b5f7b4938e0f238c513e37d7db06856b966802f\n"
    },
    {
      "commit": "2e349167ebdaf10dee9d68f06bbe620ed9aa841b",
      "tree": "a2b9fc1f37f2e68352d0c2475fd5373ebf481686",
      "parents": [
        "c7e546ff3963a1d51b1f100d308db735bd19f736"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jan 24 19:52:24 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Feb 01 13:55:12 2018 +0000"
      },
      "message": "Enable hidden API enforcement\n\nTest: manual\nBug: 64382372\nChange-Id: I4cbbfb83a2fb697e78a22858cfdd6a6779e6762d\n"
    },
    {
      "commit": "bc718924e303339f30d5545e1088d55b772e0f5e",
      "tree": "3dac03e8a03c7aa3800706772601d47ee1a0ce90",
      "parents": [
        "cec262e99d2be886fa0b39de87cf937b69878ed3",
        "b06bd683aab50a80ef98f0ffbec9880dad068d15"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 30 19:55:28 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 30 19:55:28 2018 +0000"
      },
      "message": "Merge \"Make the runtime default to not allowing JDWP again.\""
    },
    {
      "commit": "56776014d181b7ee386a2ba5d85cf66d8bb4dd22",
      "tree": "21b9f0411f565d9e49bce916e720b70a79145750",
      "parents": [
        "47ec7ad0f819c171e41d323aff71f5ac425b1ccd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 26 17:40:55 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 30 09:26:22 2018 -0800"
      },
      "message": "ART: Call ThreadGroup.add for attached threads\n\nWhen attaching threads to the runtime, call ThreadGroup.add to\nlet the thread\u0027s group know that the thread is now started. This\nfixes incorrect internal accounting.\n\nTest: art/test/testrunner/testrunner.py -b --host -t 169\nTest: m test-art-host\nChange-Id: I60362b6b53acf06b97779ea9b3b0bc6264f1dc2d\n"
    },
    {
      "commit": "b06bd683aab50a80ef98f0ffbec9880dad068d15",
      "tree": "d9787a74a4b57fcdffd74fe98cf0f6ae74e21f85",
      "parents": [
        "0406e1e59970399393f53923704e1b9a828b2173"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 29 13:26:45 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jan 30 09:11:16 2018 -0800"
      },
      "message": "Make the runtime default to not allowing JDWP again.\n\nThis was unintentionally changed a while ago and is causing a CTS test\nto fail. Changed to make the runtime default to disabling jdwp if a\nprovider isn\u0027t given. Note this does not stop one from starting a\ndebugger with -agentpath. If jdwp options are given with jdwp disabled\nthe runtime will print a warning.\n\nTest: atest CtsJdwpSecurityHostTestCases\nTest: ./test/run-test --host --debug 001-HelloWorld\nBug: 72400560\n\nChange-Id: I6561f269d9279eba0c1ac0b0f593ece867dab49e\n"
    },
    {
      "commit": "ee7d2fd16d47b54d7fb5b9d5ec772fbc315faf4b",
      "tree": "844ed2998f78723aa7909ce0a7b19995c34f0bd9",
      "parents": [
        "5a61bb7969347ffe8e0bf4f4dff841cc6c21ed85"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Jan 20 17:25:23 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 25 10:40:56 2018 +0000"
      },
      "message": "Start warning on hidden API greylist\n\nInsert checks into reflection, JNI and the verifier to print\na warning when greylisted methods are invoked and fields accessed.\nWe do this on actual access, because reflection allows to list\nall methods/fields and simply listing a greylisted member would\nprint too many false positives.\n\nIssuing a warning also sets a boolean flag in Runtime. This will\nbe made accessible through VMRuntime to the framework which will\nissue a Toast on Activity start.\n\nThe change was tested with internal microbenchmarks of reflection\nand those flagged one issue. Microbenchmark invoking a field getter\nhas regressed by 35%. We will profile this benchmark in detail and\nconsider options for improvement. Bug b/72482474 was created to track\nprogress.\n\nTest: art/test.py -b -r -t 674-hiddenapi\nBug: 64382372\nBug: 72482474\nChange-Id: I323244935e9091a2f8d012385cefaac6b1fe3777\n"
    },
    {
      "commit": "3e0fa0aa5d929737f1d1c4bac07e2695ac438324",
      "tree": "5f2285b5a897f1978486dfba4cba3bd0e059c4be",
      "parents": [
        "b98747c267b9c7abee60dd95e1341d9138b4e5c6"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Mon Jan 15 18:41:44 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Sat Jan 20 20:07:01 2018 +0000"
      },
      "message": "Add runtime option for no hidden API access checks\n\nAdd a new Runtime option -Xno-hidden-api-checks to disable\nenforcing hidden API access restrictions.\n\nTest: m test-art-host\nBug: 64382372\nChange-Id: I8bd5b7ef307f21ba71d05a066a9d5dd2d7614543\n"
    },
    {
      "commit": "a7db026ff647eefb589043dbb55bbf28637755e8",
      "tree": "7e8c2ac3b279483405191b417bdcf03e892e6b27",
      "parents": [
        "2b9c35be35a759ba2032692648f5bbcb1e7e78c8"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 16 17:13:35 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 16 17:17:09 2018 +0000"
      },
      "message": "Add a new runtime option for target SDK version\n\nSDK version can be set through VMRuntime, but we also need a way\nof setting it in dex2oat.\n\nBug: 64382372\nTest: make test-art-host\nChange-Id: I82b9360be59a8bc1984006379d8011d50a0199c3\n"
    },
    {
      "commit": "017adc29ab0384fa042fdea21cdbf6cfaf4019f2",
      "tree": "81ec402eb034df9b6a72f7a6a7946e635322c948",
      "parents": [
        "5a2492b8c0b8903ac4fe5bbb518824a91de4da47",
        "94730ef9ca432b5ede81e928cffc4006911aa650"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jan 12 22:28:24 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 12 22:28:24 2018 +0000"
      },
      "message": "Merge changes from topic \"userdebug-jdwp\"\n\n* changes:\n  Ensure that methods requiring interpreter entrypoint always have it.\n  Support using adbconnection and openjdkjvmti without JAVA_DEBUGGABLE\n"
    },
    {
      "commit": "013fd8073f3ece22b0bba1853d3f3430c8a9e4bd",
      "tree": "d1fb1ce709d4927a8b5f5d7fc673b6932ca4977a",
      "parents": [
        "a7e4a15ba7b40fbe1ecd76ce0d99de90aa42201f"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 11 22:55:24 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 12 12:47:13 2018 -0800"
      },
      "message": "Create an ART-independent DexFileLoader\n\nOpening DEX files should not rely on instantiating a runtime or having a\nlarge number of dependencies on runtime components.  This CL makes\nDexFileLoader a stub class that is independent of ART, and introduces a\nsubclass ArtDexFileLoader that contains the current implementations.\n\nBug: 22322814\nTest: make -j 50 test-art-host\nChange-Id: Ia6e92ae93c347057ea0c10455525239cbbe42c03\n"
    },
    {
      "commit": "2ce6fc80711af9afa3ecda8fdff6f4ed80aa3022",
      "tree": "9fa6be931e7bc8d0f47b0eb2d91a683ffcf1c3f1",
      "parents": [
        "1530591dbd05238236dc6dfe4bdb9118ce7ca3f7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 18 16:42:36 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 11 09:52:00 2018 -0800"
      },
      "message": "Support using adbconnection and openjdkjvmti without JAVA_DEBUGGABLE\n\nWe need to support using a best-effort JDWP when we have the\nENABLE_JDWP attribute without the JAVA_DEBUGGABLE attribute. This is\nused on eng and userdebug builds. We do this by making the plugin try\nto change the runtime to debuggable if possible and to allow getting\nan ArtTiEnv which is a best-effort version of JVMTI by calling GetEnv\nwith (JVMTI_VERSION_1_2 | 0x4000000). This is needed since if the\nruntime isn\u0027t debuggable we cannot guarantee compatibility with the\nJVMTI specification in all cases due to compiler optimizations such as\ninlining. By creating this special version agents are able to\npositively signal that they are able to deal with this uncertainty.\n\nWe also support using openjdkjvmti without being JAVA_DEBUGGABLE. This\nis done by either only allowing the best effort ArtTiEnvs or by\nchanging the environment to be debuggable if we are loaded early\nenough.\n\nMoving the runtime to debuggable state involves deoptimizing the boot\nimage and throwing out any image files associated with non-debuggable\noat-files.\n\nBug: 62821960\nTest: ./test.py --host -j50\nTest: Manual\nTest: Build, Test debugging system_server and other processes.\nChange-Id: I2233299fceb83c76785e5de09e51eaf18b7922e8\n"
    },
    {
      "commit": "e44ee0c3d073e00e88f3a29f2a42129c3eba84e7",
      "tree": "65180639908c568845a2dd7402fa9c935df2cbeb",
      "parents": [
        "812d4d4091b07c83a340e775325b7f42c8521574"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 08 10:26:17 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 08 21:59:52 2018 +0000"
      },
      "message": "Do not abort if we fail to allocate a thread-peer on shutdown\n\nWe were aborting if we failed to allocate the \"Shutdown thread\" a\njava-peer. This can sometimes happen if there is very constrained\nmemory during shutdown for some reason. Since the thread-peer is only\nobservable in very rare situations (and the runtime is shutting down\nanyway) we will instead simply continue without it.\n\nWe also change a test that was hitting this situation to handle not\nhaving a thread peer.\n\nBug: 71623806\n\nTest: while ./test/run-test --host \\\n                            --prebuild \\\n                            --compact-dex-level none \\\n                            --optimizing \\\n                            --no-relocate \\\n                            --runtime-option -Xcheck:jni \\\n                            --pic-test \\\n                            --64 \\\n                            --build-with-javac-dx \\\n                            004-ThreadStress;\n      do; done\nTest: ./test.py --host -j50\nChange-Id: Ib159d03e9f4b0e4d5b1b071d4b85e94620679bb0\n"
    },
    {
      "commit": "4cb6347613e37c98bf40d8bb5e6583ac81f4d856",
      "tree": "065ca3d73f5f8b0a86dab92b5b4784a7e4486707",
      "parents": [
        "118c59cf6af50e128d29609c9046a4af15826976",
        "7b38e692caa474bf0470349d016ef8f4502d50b9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Mon Jan 08 09:40:50 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 08 09:40:50 2018 +0000"
      },
      "message": "Merge \"ART: Take classloader into account for AttachAgent\""
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "7b38e692caa474bf0470349d016ef8f4502d50b9",
      "tree": "df3dbcdce59af2ecaddb124bf315132593b3eedb",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 19:18:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 05 10:16:18 2018 -0800"
      },
      "message": "ART: Take classloader into account for AttachAgent\n\nTake a classloader into account for attaching an agent, if given.\nThis will use the library path from the classloader to find the\nagent library.\n\nSwitch to libnativeloader to do the actual loading.\n\nBug: 70901841\nTest: m test-art-host\nChange-Id: I59ec55178792bc738fb06e0299522e207dd4a784\n"
    },
    {
      "commit": "b496af808eaf3af5ebac50aef4fbec33323b5016",
      "tree": "9a2a93352c34113b936335f0561ffc69c4c0a046",
      "parents": [
        "daa27bcedade7ff2ee50fbdcbec11a4291b447ee",
        "473191c4093aac1ec50bc275c588287fa37a981e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 05 17:50:44 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 05 17:50:44 2018 +0000"
      },
      "message": "Merge \"ART: Clean up library loading\""
    },
    {
      "commit": "b6f3464a934910e84e9a76e9f453bec71bffed5c",
      "tree": "5b43e419a96763d272e8c034ea1489e1db99d64f",
      "parents": [
        "2f1ca4c99fe779a52bea32fab78fd6da59971eeb"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 04 11:01:48 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jan 04 18:19:36 2018 -0800"
      },
      "message": "Ensure shutdown thread has a java peer.\n\nUsing JVMTI it is possible to be running user-supplied code both on\nthe shutdown thread and on other threads while the shutdown thread is\nrunning. Specifically some real-world JVMTI agents rely on being able\nto suspend the shutdown thread while they do cleanup work. In order to\nsupport this we will make sure that the shutdown thread is given its\nown java peer so it can be suspended by other threads.\n\nBug: 66904725\nBug: 62821960\n\nTest: ./test.py --host -j50\n\nChange-Id: I1c89537c47fd3dd41aa4c0e7f7a6940d1c5ba913\n"
    },
    {
      "commit": "473191c4093aac1ec50bc275c588287fa37a981e",
      "tree": "df5b6493b21498097c29b5c9772cd1606f1bd29c",
      "parents": [
        "a3e50959997f5c3e3b2d7e200b3b022757845f20"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 16:55:31 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 03 23:27:37 2018 -0800"
      },
      "message": "ART: Clean up library loading\n\nRetrieve the library path from the classloader before attempting to\nload, instead of getting it passed down. This allows unifying said\nloading behavior for follow-up changes.\n\nFix up test code to support the new required data in classloader\nobjects.\n\nBug: 70901841\nTest: m test-art-host\nTest: device boots\nChange-Id: Iaccaeb56422877abac9f7fe6f5a17364c8adf4ca\n"
    },
    {
      "commit": "aadcbc64c674995ccdaf686789c8d39ada9913ad",
      "tree": "2b0c9c473437e49ac3c85f8a04ce979ffced880b",
      "parents": [
        "ce4982554648998abd0980bd06e738f4bcaa35d9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 28 14:05:42 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 02 09:08:00 2018 -0800"
      },
      "message": "ART: Refactor Agent into Agent and AgentSpec\n\nSeparate configuration/loading and runtime state.\n\nTest: m test-art-host\nChange-Id: I69bb91e13ef10b9e1ce313f45b0b809b913d8e10\n"
    },
    {
      "commit": "55256cb60e11d4fac71affb4b9760a2931a3598d",
      "tree": "fc1ed6885b013e0aa2bcfd9ef4dd94fec29bd382",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 21 17:07:11 2017 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 22 10:11:39 2017 -0800"
      },
      "message": "Extensions to check JNI.\n\nEnsure critical lock isn\u0027t held when returning from a down-call.\nLog a warning if the critical lock is held for a significant period of\ntime.\nRefactor JNIEnvExt to be a class rather than a struct.\n\nTest: mma test-art-host\n\nChange-Id: I4d149cb04d3a7308a22b92b196e51e2f1ae17ede\n"
    },
    {
      "commit": "fbf9670f31d09c47078d43fd85ee2bda23273d26",
      "tree": "c2ee763c73f3cf89cfe3aed6230c1830b27583b3",
      "parents": [
        "3979571aa1dfc907569fb7e27ab225ca89f6f86e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 14 13:27:13 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 19 14:52:08 2017 -0800"
      },
      "message": "Add adbconnection plugin\n\nThis plugin will take care of creating and managing a debugger connection\nthrough the adb daemon. This involves sending DDMS messages from the\nruntime, loading the JDWP agent when required, and setting up the\nconnection. We need this since DDMS packets can be sent even if there has\nnot been a full handshake done with the JDWP agent.\n\nAdd an \u0027adbconnection\u0027 value to \u0027-XjdwpProvider:...\u0027 to allow one to\nrequest that the adbconnection plugin be used to provide JDWP\nfunctionality.\n\nBug: 62821960\nTest: Manual, Flash walleye, debug apps\n\nChange-Id: Id9bed589b7c5e3830e6cdfbfee460b091459a27b\n"
    },
    {
      "commit": "403207107da7f11525c4d305184c56b35ec1c17a",
      "tree": "f97f080fcfa8051df18536e97a33582ee4bbbc6a",
      "parents": [
        "ba3a790338725a37ecd4cb314c4a6147e29aef38"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 14 11:52:04 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Dec 19 09:26:11 2017 -0800"
      },
      "message": "Add support for selecting alternate JDWP implementations\n\nChange JDWP options parsing to take place later and add a\n-XjdwpProvider:_ option that can be used by the runtime to select an\nappropriate JDWP provider. The argument is a string.\n\nIf \u0027none\u0027 is given JDWP will be totally disabled.\n\nIf \u0027internal\u0027 is given the current internal JDWP implementation is\nused.\n\nIf \u0027default\u0027 is given the \u0027internal\u0027 JDWP implementation will\ncurrently be used.\n\nOther values will be added in the future.\n\nAlso adds a runtime callback that will be invoked when the runtime\nwants to start or stop the debugger (namely at the post-zygote fork\nand just before exit) and check if a debugger is availible.\n\nAlso add \u0027-XjdwpOptions:_\u0027 in preparation for the eventual removal of\nthe existing -Xrunjdwp\u003d_ and -Xagentlib:jdwp\u003d_ as top-level options.\nAll of these options now store their arguments as a std::string to be\ninterpreted by the JDWP implementation as it sees fit. Also change the\njdwpOptions to default to transport\u003ddt_android_adb if there is not one\nspecified and it is available. This will make changing the default\ntransport based on the JDWP provider easier.\n\nThese new options are needed to allow us to support both the old,\ninternal, JDWP implementation as its replacement is tested and\nverified. This lets us switch between them with little difficulty.\n\nWe will probably remove one or both of these options once we have\nconfidence that the new jdwp implementation has stuck.\n\nTest: ./test.py --host -j50\nTest: ./test/run-test --host --debug 001-HelloWorld\nTest: Manual, flash walleye, debug app\n\nBug: 62821960\n\nChange-Id: Ie31db6b6f7d76a03d4ab8e178fcf298ed0eec203\n"
    },
    {
      "commit": "b0042b83f9695bb7e2f07c451166a97a6c14383f",
      "tree": "8509e71a666a3c67b0a3459165b4c5282eedb41d",
      "parents": [
        "3f74ea478d755453a2fe5789ce155e80be3e7c7f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 13 13:50:36 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 13 13:52:06 2017 -0800"
      },
      "message": "Specify INFO log severity for -XX:DumpGCPerformanceOnShutdown\n\nThe art script only has severity set to warning, this was causing\nthe GC timings to not get output.\n\nBug: 70630582\nTest: art -Xmx512m -XX:DumpGCPerformanceOnShutdown .. some benchmark\n\nChange-Id: I03e4e09836f0bd73fbbff3640b4db8617cc63c95\n"
    },
    {
      "commit": "39b378ca3b4b6dc6da1651b84ee4289cd9bff0f8",
      "tree": "1da7bdc834fbc2f11243fa2b936f0d7a67d982c1",
      "parents": [
        "dcc528d2c7d5ac2cc075d4c965fdf702421d0f43"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 15:44:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Factor out gAborting\n\nCut dependencies on base/logging.h by moving gAborting to its\nown header. Leave the static storage in logging.cc.\n\nTest: m\nChange-Id: Ib2ca880e15f9cb50cb9aab803784826bb46efb5e\n"
    },
    {
      "commit": "7919db947bc41f6f5d194c50b88d0cba47319a1c",
      "tree": "ae1aa7fed4e9a6c6bbec3fc1c2b85cef173e737c",
      "parents": [
        "50f90a44f8cd1928054245cab4cd3bd47a1a6347"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 29 09:00:55 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 01 08:55:08 2017 -0800"
      },
      "message": "Speed up MterpShouldSwitchInterpreters check\n\nWe were often performing a pair of TLS reads in order to determine in\nthe current thread has any pending asynchronous exceptions (exceptions\nthrown by the JVMTI StopThread function). This is quite slow and was\nimpacting some benchmarks. Since it is expected that asynchronous\nexceptions are extremely rare we will first check to see if any\nasynchronous exceptions have been sent on the current process. Only if\nat least one asynchronous exception has been thrown will we do the\nexpensive TLS lookups to determine if one has been thrown on the\ncurrent thread.\n\nUsing a global instance value without synchronization or atomics is ok\nhere since the checkpoint that actually sets the async_exception_thrown\nflag provides synchronization by either occurring on the target thread\nor passing the checkpoint.\n\nAccording to go/lem this gives us a 7% increase on the caffeine\nstring benchmark.\n\nTest: go/lem runs\nTest: ./test.py --host -j50\nBug: 68010816\nChange-Id: I62684a5b3a7fc7cc600f5efd2a2393d9c4025917\n"
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "891a50e9dc0f02ee34bd7348f80b621249153af5",
      "tree": "6af57b3aa8961ed8e6cd39fdf5a0ac335905b4c6",
      "parents": [
        "13e6f2935d67742e9eec14b412d33bf71b20697b"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Oct 27 17:01:07 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Nov 01 11:39:19 2017 -0700"
      },
      "message": "Separate file utilities from utils.cc\n\nReduce the dependencies from utils.cc to arch/ subdirectories, etc.\n\nBug: 22322814\nTest: make test-art-host\nChange-Id: I4decd15ff4ec460735bfb58cebb1c6a1bf32b68f\n"
    },
    {
      "commit": "26ef34c01ae5db2d3c964844b3717b8974a612c9",
      "tree": "8470588d8d0601626b3524abb5fbe19386ba7fe4",
      "parents": [
        "62540e3cc58abde95e147210d584614651d858b5"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 01 13:32:41 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 01 16:21:52 2017 +0000"
      },
      "message": "ART: Move intrinsics definitions to runtime\n\nBug: 37538194\nTest: art/test.py --host\nChange-Id: Ic7adf5f8b14be0e1880ae898a4e199b4416a4d24\n"
    },
    {
      "commit": "5751dc831ffd8acb089c2aff2e2ddf18f89da975",
      "tree": "bdbf90587d3c0aaa42a2276db06bd1ddeb3cb2c0",
      "parents": [
        "dc02d53eeea1c80d4f77cc66a00c42d398a04c18",
        "e875f4c210ce0598e47b6d66ec12cd7c60208844"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 27 10:08:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 27 10:08:58 2017 +0000"
      },
      "message": "Merge \"Don\u0027t verify dex file when the runtime is in NoVerify mode.\""
    },
    {
      "commit": "e875f4c210ce0598e47b6d66ec12cd7c60208844",
      "tree": "c3836836ceafec0d881fd7c27a1438ab860cac0a",
      "parents": [
        "88a6296e13cae96157a451efa5776d1fecb05912"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 26 12:26:43 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 26 12:26:43 2017 +0100"
      },
      "message": "Don\u0027t verify dex file when the runtime is in NoVerify mode.\n\nbug: 30972906\nbug: 63920015\n\nTest: systrace of priv-app with OOB, no verification at startup\nChange-Id: I479a7ddcfa495228a379744b23c26fa8c91c3dde\n"
    },
    {
      "commit": "d863be7a36bf2017958051fe1191ed47192085e8",
      "tree": "528db45904a0bfac04bb96e38f9de63701fb8169",
      "parents": [
        "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 12 12:02:28 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 26 02:13:09 2017 +0000"
      },
      "message": "ART: Move JniConstants::init from ART to libcore\n\nThis should live with libcore. There\u0027s no deep magic in the runtime\nstartup.\n\nAlso remove dependency on libnativehelper shared library.\n\nBug: 65522645\nTest: m\nTest: m test-art-host\nTest: Device boots (bullhead)\nChange-Id: I6d03144fa02461d31e9e26c27cdb3a9a9510122d\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "cad70a281cc7c97a6c2eeb2675952f2d3b12f4ee",
      "tree": "1c0c51b34dc92ce87d7fd579ac46b495aebd615c",
      "parents": [
        "2a79e48b43e1a2c0ece941db8d141a0c02542deb",
        "dfeec3a983c81e62fbfeb4eb81d4f58b65effd80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Oct 23 08:33:43 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 23 08:33:43 2017 +0000"
      },
      "message": "Merge \"Pass the verify flag to DexFileLoader utilities.\"\nam: dfeec3a983\n\nChange-Id: I0af6e8ebd41e9feb187ea640ac4e043cb7a9a80d\n"
    },
    {
      "commit": "095c6c96236476b605b3ac672f6d2b8c151e9479",
      "tree": "fe04b7fe93e65efadd3f019dd1ecba4c2c40df18",
      "parents": [
        "b277aa1385f7f4593c9978d8106669142d158f4f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 19 13:59:55 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 20 14:22:52 2017 +0100"
      },
      "message": "Pass the verify flag to DexFileLoader utilities.\n\nRefactoring-only change.\n\nAlso remove unused DexFilerLoader::OpenMemory.\n\nbug: 30972906\nbug: 63920015\n\nTest: build.\n\nChange-Id: I7cd4b5787565ab1a3457ce2be6bb14657229c550\n"
    },
    {
      "commit": "ebd60e1331d8330f01d792be61a14cf425240f6b",
      "tree": "156cd2bdba366e5591c889b5f38daae5bed752e0",
      "parents": [
        "8fb092125112ec4a6bf38a91e417c53bbb7f7a8e",
        "26d46e51a8c387d26e7971857e26f4582b936204"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 16 23:20:53 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 16 23:20:53 2017 +0000"
      },
      "message": "Merge \"Remove low RAM special casing for heap growth multiplier\"\nam: 26d46e51a8\n\nChange-Id: Ief4f2993762c0fce548fc8c5efc62c33b8e89a7a\n"
    },
    {
      "commit": "11c273ddfda3e30d14af32e385570955b61bc39b",
      "tree": "d771029bda69385e3ea3297a473bf841a05bed6d",
      "parents": [
        "44f520b12bab27ef4c0719f9dd296d76c79b23cb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Oct 15 20:54:45 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 16 13:11:15 2017 -0700"
      },
      "message": "Remove low RAM special casing for heap growth multiplier\n\nMoved to change the default value in runtime.cc. This enables\nchanging the value by passing in a\n-XX:ForegroundHeapGrowthMultiplier value.\n\nThis enables devices to set the foreground heap growth multiplier\nto non 1.0 values even when low_memory_mode is true. Doing this\nreduces GC frequency and can help device performance.\n\nIncreased the limit to 5.0 since the old limit of 1.0 was bogus.\n\nBug: 67416130\nTest: test-art-host\nTest: make and flash\n\n(cherry picked from commit 2f33ad21a5c3688c33c1f36665216d76bac47f2c)\n\nMerged-In: I86166830261c034255c23611cb8f4ebcf8c43b09\nChange-Id: I6fdf82e69ebe350476fb4fe3da9d22bf671b9eac\n"
    },
    {
      "commit": "b61bb245fdf49582582cb59074343a003afd1a4e",
      "tree": "866e16192e2950007b98235bdd1a29d3e6fbf8ac",
      "parents": [
        "66fca596f806f25da7402cefcadf84ad82e9d8c0",
        "2c8fe470a4a79be7280bfa467232d7de0f6ee6d5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 16 16:42:36 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Oct 16 16:42:36 2017 +0000"
      },
      "message": "Merge \"Add -XX:MadviseRandomAccess option\"\nam: 2c8fe470a4\n\nChange-Id: I091c0cde18625cf7111a5057b65b9fb7d374e80c\n"
    },
    {
      "commit": "c42cb0e08a7c8f7085115e57b0ea92da9eee1575",
      "tree": "05fe067296d7e15bd3e607ac8792eca8652548dc",
      "parents": [
        "6cee5e402cb206f0c0878e999f885a7206dcbb09"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 13 11:35:00 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 13 16:35:55 2017 -0700"
      },
      "message": "Add -XX:MadviseRandomAccess option\n\nIf enabled, ART will advise random access to the kernel for files\nthat are thought to have such access patterns.\n\nBug: 67772594\nTest: verify that -XX:MadviseRandomAccess:true is passed to runtime init\n\n(cherry picked from commit 087f2046dfdf41646c740a05004b4d40cbd99b11)\n\nChange-Id: I76a5f62846d563a4f2cf25e47dbd320464aee8c1\n"
    },
    {
      "commit": "8e6cf2e3f62c0e1a745c7fe9c1b522aa6638da3c",
      "tree": "d533cf086eca6baf762a96336fb47447749d7284",
      "parents": [
        "51c1365b39b32dddc150b68b26f7b284a568e6a3",
        "ce7213d88b01c8f40a7d30116048eee5fd161a29"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 11 23:37:09 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Oct 11 23:37:09 2017 +0000"
      },
      "message": "Merge \"Add DexFileLoader class\"\nam: ce7213d88b\n\nChange-Id: I6a63d4d65b11f681ed0a095390c698ec4b7dbe85\n"
    },
    {
      "commit": "79c87da9d4698ec58ece65af0065eebd55a1cfe0",
      "tree": "399797f37712da9d20829d5b5059b6c84943cb02",
      "parents": [
        "656e97f949df4081fba908113406b32915174502"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 10 11:54:29 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 11 14:47:06 2017 -0700"
      },
      "message": "Add DexFileLoader class\n\nAdded DexFileLoader class, moved functionality from DexFile there:\n- Multidex loading logic\n- DexFile opening logic for Zip and etc\n- Some other helpers\n\nBug: 63756964\nTest: test-art-host\n\nChange-Id: Ic3dfa458947d4b69912dea5cdd836e7e8f55061c\n"
    },
    {
      "commit": "277a467a17e1d2c053eb1b07b57841f2ad8e76dd",
      "tree": "6fb5b73945d5fd8f5193faafcb920f9ea9981204",
      "parents": [
        "a43f002e7b1f025437e91fbf4d146ef911e638d0",
        "e1fe6a98d43118fe0698b5122339c7af072fc418"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 19 11:54:44 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Sep 19 11:54:44 2017 +0000"
      },
      "message": "Merge \"Handle new zygote flags in ART\"\nam: e1fe6a98d4\n\nChange-Id: I92fbfa89d45f465376d37e57f11f27a6e23ba613\n"
    },
    {
      "commit": "e1fe6a98d43118fe0698b5122339c7af072fc418",
      "tree": "46ba2d257be9267b3439bc879b9ba4688c3b02cd",
      "parents": [
        "560b7c8f7fbec6df9c5e2e64892686f1b19c7373",
        "68bf3903250ff0bea11c4705ba331818c5bf5792"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Sep 19 11:47:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 19 11:47:58 2017 +0000"
      },
      "message": "Merge \"Handle new zygote flags in ART\""
    },
    {
      "commit": "0c5edfeae694fbf224ad9104d686a85fdc4434ef",
      "tree": "85f41c77b2d57bedf636e6893f32eafd21238b33",
      "parents": [
        "9c2ff7ac87df212cf628220afacc27908408d928",
        "e16ed6da590e717e28c07e2c9d1b342efc678870"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 19:26:23 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 18 19:26:23 2017 +0000"
      },
      "message": "Merge changes I8ef4492b,I3c61421d\nam: e16ed6da59\n\nChange-Id: I1f5c80b54c6f470b6bcc6a917b28763286edbdb6\n"
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "68bf3903250ff0bea11c4705ba331818c5bf5792",
      "tree": "fe6c88466f3ee941232efd5ad2fdb9b3b03c7f76",
      "parents": [
        "fe712a8b9c247d66df013f2b4b6faa6009d745bb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 07 14:40:48 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 18 13:00:20 2017 +0100"
      },
      "message": "Handle new zygote flags in ART\n\nAdd support for DISABLE_VERIFIER and ONLY_USE_SYSTEM_OAT_FILES.\n\nbug: 30972906\nbug: 63920015\n\nTest: device boots\nChange-Id: I7c4eddc070908aed980d54d374c0b261d1f32d57\n"
    },
    {
      "commit": "7021287e6b34cf6d697f4a6f78fa6bd711afc590",
      "tree": "f3089c61b5b1c736e5d1a30b2d7fc3fbcf370308",
      "parents": [
        "97256b4205607fdd067663b48540e141c7f9f69a",
        "89c2f5edb096a82b5271b4671f40e4608a6cb14e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 13 02:53:58 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Sep 13 02:53:58 2017 +0000"
      },
      "message": "Merge \"ART: Clear JniConstants on shutdown\"\nam: 89c2f5edb0\n\nChange-Id: I9294113aa08b76adac5fca8176d9b1263976ca64\n"
    },
    {
      "commit": "c4cb7c143d8acdbacf5276991df6f0aa83ab1f35",
      "tree": "096b95eafc2b6f514cfc6d04958bf61fc482b467",
      "parents": [
        "6b411fc9fd94da3c552d8b96cee14f6414e7b734"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 19:57:48 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 12 15:15:31 2017 -0700"
      },
      "message": "ART: Clear JniConstants on shutdown\n\nTo permit a new runtime to repopulate the JniConstants cache,\ncall ClearJniConstantsCache() on shutdown.\n\nBug: 65522645\nTest: m\nTest: m test-art-host\nChange-Id: I340cc2ced6b2e5bcd541f1d7b9741574e37c27eb\n"
    },
    {
      "commit": "2040eaa485c443754762af1be590a569f0c46534",
      "tree": "c2ccc6afe8472a34d268c076c0695777f76bdfb3",
      "parents": [
        "4dee436b9a68b701d096fcc0e31cae376a9a82f0",
        "47d00f6c4657af33c3cc29783c0f2eb156aa1449"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 21:36:46 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Sep 11 21:36:46 2017 +0000"
      },
      "message": "Merge changes I88fd4905,Ib8c0a28c\nam: 47d00f6c46\n\nChange-Id: I2f2640ad8daa3b2067a297d73b9fd815ad1b2865\n"
    },
    {
      "commit": "db48a79e49a900e255c1a472d6436a655016125f",
      "tree": "76aceef48f11dd471782d73b75d1fe800916eb3d",
      "parents": [
        "fe30b3e2815c6140471338df5d903a2c1d242414"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 08 22:18:30 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 11 08:14:10 2017 -0700"
      },
      "message": "ART: Clear WellKnownClasses on shutdown\n\nThe members go stale on shutdown, so delete them. This also works\naround a startup bug that is relying on null members.\n\nBug: 65500943\nTest: m test-art-host\nChange-Id: Ib8c0a28c4b6509a0614a12e123b73e7c117db319\n"
    },
    {
      "commit": "9101bb8006e0200b1019dd151720b66c422fe942",
      "tree": "6c8ed94f4b04dbafa7c46d5ffc047bae36d99bef",
      "parents": [
        "11916265c30b2fe486d310dec52792f0ae6acee5",
        "afd3acdfd02dd027689afcbf19b6bb9252751205"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 07 20:33:02 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Sep 07 20:33:02 2017 +0000"
      },
      "message": "Merge \"ART: Change thread dump order on abort\"\nam: afd3acdfd0\n\nChange-Id: Ib00dddf7adc116cd04d9c5fd0a415aff741eb869\n"
    },
    {
      "commit": "a3f78fedfb9f791f849d0daa8b10a43232f09752",
      "tree": "c93cd8ed6c26a630882bf9b1c1a97cb46fbba9a2",
      "parents": [
        "c101222c854a0c476f5b6ae64e20adbd38126a3c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 05 09:31:04 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 06 16:04:13 2017 -0700"
      },
      "message": "ART: Change thread dump order on abort\n\nDump the aborting thread last, in an effort to have it appear in\nthe logcat.\n\nBug: 64689630\nTest: m test-art-host\nChange-Id: Ib9148b542a950545a5873e7ca71d3d3b2cefbd1f\n"
    },
    {
      "commit": "7ac34dbd32f577f865d5a35163b79aeea77bedac",
      "tree": "e34da33296df7d6b9666f0ae215369cc73c1e623",
      "parents": [
        "59a65a14beda28a184357b1dfc1676637b627576",
        "adb075e5086b296164beed3ffafb2466d7f0d5ae"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 27 17:12:41 2017 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Jul 27 17:12:41 2017 +0000"
      },
      "message": "Merge changes If53d3ee3,I7cc0eea1 am: 078a27af84 am: e00842c852\nam: adb075e508\n\nChange-Id: I9d21bd1ae90d3d7993e9640b02d1bcfbc67eacc1\n"
    },
    {
      "commit": "605fe24d07062a038c8332a4d98f47052e9cee6a",
      "tree": "9c6b132e5ec615d3f0f3aa4ab6f24486fb31d2bb",
      "parents": [
        "5a906fcc111ffc07d9fd1e7265e8b4a89609f00e"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 15:57:21 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 26 16:26:23 2017 -0700"
      },
      "message": "Implemented Nested Transaction\n\nTransaction can be created recursively and every transaction knows which\nclass it is created for.\n\nThe goal of implementing nested transaction is to let every class\ninitialization (especially execution of class initializer) associates\nwith one transaction which provides the ability to track whether field\naccesses are valid. To achieve this goal, we implemented a subclass for\nClassLinker called AotClassLinker, which will be instantiated instead of\nClassLinker under AOT compiler.\n\nAll invocations of InitializeClass happens at AOT compiler will be\nwrapped with creating and destorying transactions.\n\nTransactions will be paused when rollbacking, otherwise the memory will\nnot be rollbacked properly.\n\nThe use the transaction is changed and all usage are updated,\ncorresponding with native tests mentioning transaction, including\ntransaction_test and unstarted_runtime_test.\n\nThe validation rules will be implemented and explained in another CL.\n\nTest: make test-art-host -j64\n\nChange-Id: If53d3ee3231c337a9ea917f5b885c173917765de\n"
    },
    {
      "commit": "5a906fcc111ffc07d9fd1e7265e8b4a89609f00e",
      "tree": "2bc863d6a51f5e67562653686b138ae1d3757caf",
      "parents": [
        "055761a47c4c0f591faaf44279e8d6a412c4f513"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 26 15:01:16 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Wed Jul 26 15:05:24 2017 -0700"
      },
      "message": "Add strict flag in transaction\n\nAdd a flag named strict_ indicating whether we are compiling app images,\nwhich need more strict constraints to control \u003cclinit\u003es\u0027 behavours.\n\nWhen the transaction is marked as strict mode, behaviour changes\nincluding nested transactions, field access validation, memory\nconsumption limit and time out for \u003cclinit\u003e at compile time.\n\nTest: make test-art-host -j64\n\nChange-Id: I7cc0eea161803ad0d7763725d4deaeee21858054\n"
    }
  ],
  "next": "d5ecd3875fe99dada2627c373d9cd59553418b4e"
}
