)]}'
{
  "log": [
    {
      "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": "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": "2a487eb89b67d7ff030368e4e4a6ed0a3ac39003",
      "tree": "bedffc5f4ee16d07c957d06cdab5148c69bd6a56",
      "parents": [
        "875b4f26517ce215342746f07e41cda4c1991237"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 19 11:41:22 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 20 13:04:36 2018 -0800"
      },
      "message": "ART: Fix performance-inefficient-vector-operation\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I286e27424ac39c0fed308811dc3004e734c0560c\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "afaf7f8198fe5ffc054278da6800f81dd83f272c",
      "tree": "3ebdec9fca813351d178709743121fa66815a7a0",
      "parents": [
        "6ca8ec7809f87ccac8d9d66d267f2379bdfdfe66"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 16 11:32:38 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 18 08:20:09 2018 -0700"
      },
      "message": "ART: Enable bugprone-unused-return-value\n\nEnable bugprone-unused-return-value as an error. This is on top of\nthe compiler warning for attribute((warn_unused)).\n\nMark the current occurrences (all unique_ptr.release()) with NOLINT\nto signal that we know what we\u0027re doing.\n\nBug: 32619234\nBug: 117926937\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: I36659722335eef36acfa5845289104257a393874\n"
    },
    {
      "commit": "2386636e0330051a96fe7d577524e929d81e9ba8",
      "tree": "5624040f2dedfecffabb395b0df0fe57fe3c2bc1",
      "parents": [
        "eaa4f836706f82614d0745e401c5ea805ac9d69b"
      ],
      "author": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Wed Aug 22 16:16:58 2018 -0700"
      },
      "committer": {
        "name": "Chris Wailes",
        "email": "chriswailes@google.com",
        "time": "Thu Sep 27 12:45:36 2018 -0700"
      },
      "message": "Preparing for work on string interning for AppImages.\n\n* Allow classes that have string fields to be put into AppImages.\n* Updated tracing messages to be more descriptive and searchable.\n* Added new tracing objects to more accurately report time spent in\nhandling AppImages.\n\nTest: Built image / flashed device / ran applications\n\n(cherry picked from commit e3015b59fb297d236f0b3ce844eef81c67e423d3)\n\nChange-Id: I6e5fba8c8ddeff8e077672b799d244e767478373\n"
    },
    {
      "commit": "48ba197beaffe64646e21cc06923d8b019c7aa6d",
      "tree": "fe21827494e10a8d83aea93fb23fa7e67b11de9e",
      "parents": [
        "26f048f48cdb1e884aab2b6fddf26d58346d29ad"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Mon Sep 24 13:35:54 2018 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Mon Sep 24 16:31:41 2018 -0700"
      },
      "message": "Fix some performance-unnecessary-value-param tidy and performance-for-range warnings.\n\nart/profman/profile_assistant_test.cc:119:54: error: the const qualified parameter \u0027hot_methods\u0027 is copied for each invocation; consider making it a reference [performance-unnecessary-value-param,-warnings-as-errors]\n                         const std::vector\u003cuint32_t\u003e hot_methods,\n                                                     ^\n                                                    \u0026\nart/profman/profile_assistant_test.cc:120:54: error: the const qualified parameter \u0027startup_methods\u0027 is copied for each invocation; consider making it a reference [performance-unnecessary-value-param,-warnings-as-errors]\n                         const std::vector\u003cuint32_t\u003e startup_methods,\n                                                     ^\n                                                    \u0026\nart/profman/profile_assistant_test.cc:121:54: error: the const qualified parameter \u0027post_startup_methods\u0027 is copied for each invocation; consider making it a reference [performance-unnecessary-value-param,-warnings-as-errors]\n                         const std::vector\u003cuint32_t\u003e post_startup_methods,\n                                                     ^\n                                                    \u0026\nart/runtime/subtype_check_info_test.cc:134:56: error: the parameter \u0027sc\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\n  static SubtypeCheckInfo CopyCleared(SubtypeCheckInfo sc) {\n                                      ~~~~~~~~~~~~~~~~ ^\n                                      const \u0026\nart/runtime/class_linker.cc:6451:62: error: the parameter \u0027to_process\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\n                          std::vector\u003cObjPtr\u003cmirror::Class\u003e\u003e to_process)\n                          ~~~                                ^\n                          const                             \u0026\nart/runtime/trace.cc:1127:13: error: loop variable is copied but only used as const reference; consider making it a const reference [performance-for-range-copy,-warnings-as-errors]\n  for (auto it : exited_threads_) {\n       ~~~~ ^\n       const \u0026\nart/runtime/oat_file_manager.cc:154:41: error: the parameter \u0027spaces\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\n    std::vector\u003cgc::space::ImageSpace*\u003e spaces) {\n    ~~~                                 ^\n    const                              \u0026\nart/test/004-JniTest/jni_test.cc:707:72: error: the parameter \u0027methods\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\n  void TestCalls(const char* declaring_class, std::vector\u003cconst char*\u003e methods) {\n                                              ~~~                      ^\n                                              const                   \u0026\nart/compiler/optimizing/optimizing_compiler.cc:1409:89: error: the parameter \u0027info\u0027 is copied for each invocation but only used as a const reference; consider making it a const reference [performance-unnecessary-value-param,-warnings-as-errors]\nvoid OptimizingCompiler::GenerateJitDebugInfo(ArtMethod* method, debug::MethodDebugInfo info) {\n                                                                 ~~~~~                  ^\n                                                                 const                 \u0026\n\nBug: http://b/32619234\nBug: http://b/110779387\nTest: Build using WITH_TIDY\u003d1\nChange-Id: I911d838b8c26ddab3d6a64024f3220000f078cba\n"
    },
    {
      "commit": "e0669326c0282b5b645aba75160425eef9d57617",
      "tree": "3bb05553ee5f14081bb4ea8193fd29fa938e722f",
      "parents": [
        "56b0773d515527df60a38084cef3b813fefb5b9d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 03 15:44:54 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 04 12:57:49 2018 +0100"
      },
      "message": "Remove PIC option from oat files.\n\ndex2oat has been producing only PIC code for some time,\nso there\u0027s no need to record it in the oat file anymore.\nAlso get rid of the now unnecessary relocation logic\nthat was using the flag.\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: 77856493\nChange-Id: I070071ca5a808371f67883f4ae93d633a76231d0\n"
    },
    {
      "commit": "3d8a78a79aaa47be68162cb3e3fb2544f9b624a3",
      "tree": "0f9790f629c798f5c371e75ae20af60fa39a3203",
      "parents": [
        "c497fca9aa25a331af6428aa0fb6b083c6292089"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 29 21:10:16 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 30 13:37:02 2018 +0100"
      },
      "message": "Revert \"Revert \"Remove OatFileAssistant::MakeUpToDate and friends.\"\"\n\nThis reverts commit baf3761013a30b8c5dc1d6179cddaeee0a764311.\n\nAlso remove the now deprecated --{no-}dex2oat option.\n\nChange-Id: I502c7011877f43f315abffa9b7d482ef13857125\nbug: 111174995\nbug: 111342996\n"
    },
    {
      "commit": "baf3761013a30b8c5dc1d6179cddaeee0a764311",
      "tree": "5ec94a773e2c7e19842b1f2de02baf4343aff6c9",
      "parents": [
        "d6698e34246ea5d99167538b042a70ef203838e6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 29 20:28:25 2018 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 29 20:29:06 2018 +0000"
      },
      "message": "Revert \"Remove OatFileAssistant::MakeUpToDate and friends.\"\n\nThis reverts commit d6698e34246ea5d99167538b042a70ef203838e6.\n\nReason for revert: 116-nodex2oat failing on no-prebuild\nTest: test/run-test --always-clean --dex2oat-jobs 4 --host --no-prebuild --compact-dex-level fast --interpreter --no-relocate --runtime-option -Xcheck:jni --pic-test --64 116-nodex2oat\n\nbug: 111174995\nbug: 111342996\n\nChange-Id: I05da1774e9274da35993ab301d1632022655583f\n"
    },
    {
      "commit": "d6698e34246ea5d99167538b042a70ef203838e6",
      "tree": "f4fbf6db7cc7bbcc2ea513d30669d975635eefb1",
      "parents": [
        "d3678dc2531f95ced2d015b800ecd9018ce96c73"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 24 18:25:07 2018 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Aug 28 15:30:36 2018 +0100"
      },
      "message": "Remove OatFileAssistant::MakeUpToDate and friends.\n\nRemove dex2oat invocations for non boot-image compilation for ART.\n\nbug: 111174995\nbug: 111342996\nTest: test.py\nChange-Id: If7f92537898e326bfd9dfbd969018f4c08da98b7\n"
    },
    {
      "commit": "adc9086aac1f9442f5ec80cec5734909f0b0f262",
      "tree": "b55804542510f8592c1c5b9e522a16d35567b2f1",
      "parents": [
        "54c42cea2b73e664c36fc4efaa28a33aea39b97c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 13:03:06 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 13:05:40 2018 -0700"
      },
      "message": "Revert \"Revert \"Do not load app image for class collisions\"\"\n\nFixed bug in oat file assistant to allow the special shared library\nmarker.\n\nBug: 77342775\nBug: 79200502\nBug: 79575750\nTest: test-art-host\n\nThis reverts commit 2c7e13b120926d3c3c18d649cd9849ea31b81477.\n\nChange-Id: I647f55a07e4aef8bef56fb1ad7ff23056174b135\n"
    },
    {
      "commit": "2c7e13b120926d3c3c18d649cd9849ea31b81477",
      "tree": "74766773ba254c40b44b53012156061ff2527c88",
      "parents": [
        "b12c46f8382ca939f55abc0c20fb48fb17b2c1be"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 19:40:17 2018 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 11 19:43:32 2018 +0000"
      },
      "message": "Revert \"Do not load app image for class collisions\"\n\nThis reverts commit d8860b42e47d48fcc47db9d0daf5a1b9432180a1.\n\nBug: 77342775\nBug: 79200502\nBug: 79575750\n\nReason for revert: Some regressions in boot time.\nTest: test-art-host\n\nChange-Id: Id5e5844b5156d048a54011708378c7cdb0650f68\n"
    },
    {
      "commit": "d8860b42e47d48fcc47db9d0daf5a1b9432180a1",
      "tree": "c5522fa9c6d1e9e63cb497da7dc84b72b6b11531",
      "parents": [
        "48af3b39cd7c8abaa7f9671191ec8260630239b2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 02 14:58:12 2018 +0100"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 10 16:17:30 2018 -0700"
      },
      "message": "Do not load app image for class collisions\n\nEven for special shared libraries that are compiled with\n\u0027--class-loader-context\u003d\u0026\u0027, we must reject the app image\nif there are duplicate classes.\n\nIn the case where \"\u0026\" is not specified, avoid the collision check.\nThis is safe since the class loader context check was actually run.\n\nTest: 172-app-image-twice\nBug: 77342775\nBug: 79200502\n\nChange-Id: Idc2d59166680948d4d34d0f224491f77ecad2974\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": "9ea84d0bd33694162eb27d9d06bb687f8794a6a0",
      "tree": "10772b12386d7d734ff20c61cd53de74ce87d274",
      "parents": [
        "f46f46cf5bd32788d5252b7107628a66594a5e98"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 02 09:32:03 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 05 15:01:12 2018 -0800"
      },
      "message": "ART: Update dex-file fallback code\n\nAllow non-executable oat files when the boot image is out of\ndate.\n\nBug: 73667005\nTest: m test-art-host\nChange-Id: Ib04339bd87fa5e268d0c636c98df62ee72d613c5\n"
    },
    {
      "commit": "2b1a21ed3581f77f34d582507177ebce33565534",
      "tree": "cd27b9f81588d3942d0fd7d61fceb5f3128484a1",
      "parents": [
        "f450a37b16062980d93a8744408c9b710895c22d",
        "29742602424fe8a30884a00947120bd3407f4da6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 24 15:47:20 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 24 15:47:20 2018 +0000"
      },
      "message": "Merge \"Load /data oat/odex files non-executable when only_use_system_oat_files is set.\""
    },
    {
      "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": "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": "29742602424fe8a30884a00947120bd3407f4da6",
      "tree": "11e72080858e75055eb350dd183b51e6daddffdb",
      "parents": [
        "7eb4333d0b60a13f9d3126eadef9eb16c399662a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 14 10:09:03 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 18 15:21:05 2017 +0000"
      },
      "message": "Load /data oat/odex files non-executable when only_use_system_oat_files is set.\n\nMake it still ok to use the vdex and the class status in the oat file.\nThis means:\n- If dex code is uncompressed in APK we\u0027ll use that\n- If dex code is compressed in APK, we\u0027ll use the dex code in the vdex.\n\nThis is a temporary solution in order to almost mimic performance-wise what\nfull stack integrity wants to achieve (priv-apps running from verified,\nuncompressed dex code in APK).\n\nThis is to assess the impact of full stack integrity on privileged apps.\n\nThis CL doesn\u0027t ensure any integrity, and doesn\u0027t check whether the vdex has\nbeen \"tainted\".\n\nbug: 30972906\n\nChange-Id: If0a6ab26dd6211290db53b7f02d88d45aff68c0c\n"
    },
    {
      "commit": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "55f39ed15652f2215e0d6369c3628435694e51d4",
      "tree": "81d8fec4484196dd8dfcbcccfd58477e921c60de",
      "parents": [
        "986005c955860a69d788f7ff7d7f28964eb684ad"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 24 10:52:05 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 27 10:01:39 2017 +0000"
      },
      "message": "Pass class loader context in ART standalone.\n\nOtherwise we pessimize the code and get surprising AOT results.\n\nbug: 69623006\nTest: performance of KotlinAutoReversiBench becomes expected\nChange-Id: I1c5b7152c016a721a12d05b5eee4857c2ba5a51e\n"
    },
    {
      "commit": "b0b68cfc0d2444e2333adcc5a6bc6f670b89fe83",
      "tree": "2cd71b6d221470f3c26fd089e68c6349009bdd80",
      "parents": [
        "f4580f43bcb74061ba8b7847ec65f2fe160f1751"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 14 18:11:50 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 14 18:29:20 2017 +0000"
      },
      "message": "ART: Clean up #includes in jit_code_cache.h .\n\nAnd fix code that relied on those indirect #includes.\n\nAlso remove forward declaration of art::LinkerPatch because\nwe actually use art::linker::LinkerPatch.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 65574695\nChange-Id: I102affed9a3eacbd21b79c370fbc72b5fc762c96\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": "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": "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": "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": "403cb2cfc619a7b6dfcdd25a7bbd5496df25957f",
      "tree": "909fa02cd2a0283c7def6870d5bb11927f67bcaa",
      "parents": [
        "249726c999de97d08d22d7935e6866d66508f6e1",
        "8d8d37b80e9f5f2ffd664c54e31337f178c3e62c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Oct 10 02:06:17 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 10 02:06:17 2017 +0000"
      },
      "message": "Merge \"[art] Compile secondary dex files in isolation\""
    },
    {
      "commit": "8d8d37b80e9f5f2ffd664c54e31337f178c3e62c",
      "tree": "36f474d3fa6a6ffd57c038246228eff10e95fdb9",
      "parents": [
        "0588f3aa446b9eb96ee7452d4a4494684b41d039"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 02 14:56:29 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Oct 09 17:23:58 2017 -0700"
      },
      "message": "[art] Compile secondary dex files in isolation\n\nThe class loader context adds the overhead of extracting in-memory and\npossibly extra verification which is being frowned upon when the loading\nhappens on the UI thread. Revert the correct fix of compiling secondary\ndex files with their context until b/64530081 is done.\n\nPartial revert of commit 659a7dccd73c6b67e2d8bf56c84c09cbe69215c1.\n\nTest: m test-art-host\nBug: 64530081\nBug: 66984396\n\n(cherry picked from commit 2ea7ad1e083fd446c0e909d2b7fbb4ff4b5d9a78)\n\nChange-Id: I9b9c0a42e532fc057a36bc241127dd8a147b9abd\n"
    },
    {
      "commit": "3f093891e55383055eecc940b724ee1f24f50123",
      "tree": "289006f142414b62066c55bc21b1a6b4d2d18656",
      "parents": [
        "f2d23eefe95c35df3c910ae02834bb725147a277"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 14 15:11:01 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 25 14:12:16 2017 -0700"
      },
      "message": "ART: Change GetAndroidRoot() handling\n\nChange ART\u0027s very static setup for the root (\u003dsystem) directory.\nThis change still prefers the value of the ANDROID_ROOT environment\nvariable. But as a second step, check the path of the running\nlibart(d) and try to derive a folder by removing the library and\nlibrary path component. Only if that fails attempt the static\n\"/system.\"\n\nThis requires a change to GetAndroidRoot\u0027s return type to std::string.\n\nAdd a test of GetAndroidRootSafe to utils_test.\n\nBug: 65679670\nTest: m\nTest: m test-art-host-gtest-utils_test\nTest: m test-art-host\nTest: device boots\nChange-Id: Ica99eef8b0ab798f951d63a326f0e599a4a8b469\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": "44e5efa4ae79cf76c65f37fc41c1fa0ed431ec4a",
      "tree": "7f144c75386ca4584455bfa87c356824f4aadfb9",
      "parents": [
        "c5b215f7004c46a274a54e232f0cd146c7494f9a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 12 00:54:26 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Sep 14 16:29:15 2017 -0700"
      },
      "message": "Add check that classpath is up to date to getDexOptNeeded\n\nExtend getDexOptNeeded to factor into the decision the expected class\nloader context. If the context does not match, oat file assistant and\ndexoptanalyzer will advise kDex2OatFromScratch.\n\nNote that this does not currently extend the java side\nDexFile.getDexOptNeeded. The calls coming from the java side will continue\nto ignore the classpath checks by passing null as the class loader\ncontext.\n\nBug: 62269291\nTest: m test-art-host\nChange-Id: Ia01728c06810e418bbcbfe2a774d1f904d2525ba\n"
    },
    {
      "commit": "be8303d3e7afb5a9088b69858cbcf40cf8737d1a",
      "tree": "a1349fa9d461515d231478df0118e1443e178988",
      "parents": [
        "c9d88538d73680563f7a6e73885acfff2c55ef58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 17 17:39:39 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 18 10:51:59 2017 -0700"
      },
      "message": "Call madvise hints for image dex files\n\nAfter opening image spaces, perform madvise hints for the\ncorresponding dex files.\n\nMoved kMadviseDexFileAccesses to oat_file.cc to not have this enabled\nyet.\n\nBug: 63178181\nTest: make and flash\n\n(cherry picked from commit 3efecdef520e80cd79f34549c4ba3a77042d0d92)\n\nChange-Id: If91537e098b159d00354551ce6400a806549b2ca\n"
    },
    {
      "commit": "120aa286ab6adf3e76a31bc61fb4e583e5158d71",
      "tree": "07f1546ce7a090af8c88110598920769bfb5e669",
      "parents": [
        "5bfead584f56b2a1cfb69f78c385965ec57f7e8b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 05 16:03:03 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 14 17:47:25 2017 -0700"
      },
      "message": "Store layout info in dex files\n\nStore layout info for code sections inside of the oat file. This will\nbe used to advise the kernel when dex files are loaded in\na follow up CL.\n\nAdded unit test in dex2oat_test.\n\nBug: 63178181\nTest: test-art-host\n\n(cherry-picked from commit 75c5ed6e75f70002db5fa7c609137c04dd2bdf40)\n\nChange-Id: I4777506886bde42ff0affdac412a8395e8013a40\n"
    },
    {
      "commit": "27e0d1f3da2e0b7046dacb40794739d739e454a3",
      "tree": "d3c69ca2917325cf20998060d0e0d5f8ab6b1b8e",
      "parents": [
        "52a3c989f96984f9bc9e02620694fc44708a1df2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 26 00:16:07 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 02 19:23:14 2017 -0700"
      },
      "message": "Pass the class loader context to dex2oat when optimizing at runtime\n\nUntil now we always passed the special shared library symbol \"\u0026\" when we\ncalled dex2oat at runtime without an explicit class path.\n\nThis CL changes that and passes the class loader context inferred from the\nruntime class loaders to dex2oat. If any of the runtime class loaders is\nnot supported we continue to pass the special library symbol.\n\nBug: 38138251\nTest: m test-art-host\nChange-Id: Ica43ee8a3f36dab2d9ed0e634a9f6341379c8e1c\n"
    },
    {
      "commit": "774beea7dd475a3ec5089d891ab8de79a5a9fbc2",
      "tree": "fba4c0e8105c762327c4a0625c34f9e4f89b7f6b",
      "parents": [
        "3d931dc76aa3cd9787bfc7d3f42bc819b57cdcc0",
        "3f9186446faa01636475596335240f39472ba9f4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jul 18 20:57:09 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 18 20:57:09 2017 +0000"
      },
      "message": "Merge \"Verify the class loader context when loading oat files\""
    },
    {
      "commit": "3f9186446faa01636475596335240f39472ba9f4",
      "tree": "ac0320e73671d11551ba65867a51d74b5dc69aee",
      "parents": [
        "57d0accc081c1779edb604ab86e5a4c0cfba16eb"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 11 19:04:20 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 18 11:42:36 2017 -0700"
      },
      "message": "Verify the class loader context when loading oat files\n\nPreviously, the oat_file_manager would expect and perform validation on a\nsimple classpath: a list of dex files separated by \u0027:\u0027.\n\nThis is no longer enough since the oat file may encode a chain of class\nloaders now. The CL moves the validation logic in ClassLoaderContext and\nextends it to verify the complete chain of class loaders.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I8ac9c65db1a14909aaecb04fa7a7115ddedc673f\n"
    },
    {
      "commit": "0cb172874481f736c6b7c491dd621166cc25561b",
      "tree": "2408750b6e08c686b89cee5df0ddae736a775092",
      "parents": [
        "890045e5a768257d8def42827a09a516ebe3e07e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jul 12 14:51:49 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jul 17 14:09:56 2017 -0700"
      },
      "message": "Do superclass validation at compile time and log with new class status.\n\nTries to perform superclass validation for classes that are resolved,\nbut not initialized at runtime. If successful, saves the result in the\noat file with a new class status. At runtime, the superclass validation\ncan be skipped during class initialization, saving some time and\nreducing string accesses.\n\nResults show savings of 50kB PSS in maps on startup, with slight\ndecrease in startup time.\n\nMaps (average of 100 runs)\nBefore: dex 9941.3 odex 15159.8 total 25101.1 launch 908\nAfter: dex 9897.4 odex 15155.7 total 25053.1 launch 906.6\n\nBug: 63456114\nTest: mm test-art-host\nChange-Id: If67a4a49d61781b6d561c26118d7e0c6b9cc0d6f\n"
    },
    {
      "commit": "7b0648aa7cb4b7a58e73bf353e031dfe4553d9d7",
      "tree": "e588dee4a455cb248ec9a1830ee7d1a7c12acfbc",
      "parents": [
        "1ce7085831316272f071a01d14eea8048264a7bf"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jul 07 18:40:50 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 12 13:02:19 2017 -0700"
      },
      "message": "Move dex files dependencies (en/de)coding to ClassLoaderContext\n\nEncode the full class loader context in the oat file (rather than just a\nlist of dex files).\n\nThe context encoding matches the format used by dex2oat with the addition\nof checksums.\n\nTemporarily assert that at decoding time we are operating on a\nPathClassLoader until the checking logic covers all supported cases.\n\nAlso, bump the version of the oat file because the format of the classpath\nkey has changed.\n\nThis is a transition step to minimize the size of follow up changes.\n\nTest: m test-art-host\nBug: 38138251\nChange-Id: I9ec0cfe092ce1afccb741a36e737896880d5f1d2\n"
    },
    {
      "commit": "ef878ea6b8afce4fdb4501974019d06cca50bb04",
      "tree": "0cd68c1c801db391f0edfd336c8235128e3719d6",
      "parents": [
        "542bbf760b4f0b94e1e93ddad3e4d8d318705ab6",
        "0bb4031b976aeb2bad88db81115fea46b19878f0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jun 03 00:18:18 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jun 03 00:18:20 2017 +0000"
      },
      "message": "Merge \"Added DexFileAsanRegistrar and necessary additions\""
    },
    {
      "commit": "0bb4031b976aeb2bad88db81115fea46b19878f0",
      "tree": "7762ab7eef86e27d8205866342357409cbb5341a",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Bharadwaj Kalandhabhatta",
        "email": "bharadwajsk@google.com",
        "time": "Thu Jun 01 10:47:00 2017 -0700"
      },
      "committer": {
        "name": "Bharadwaj Kalandhabhatta",
        "email": "bharadwajsk@google.com",
        "time": "Fri Jun 02 10:26:56 2017 -0700"
      },
      "message": "Added DexFileAsanRegistrar and necessary additions\n\nThis class was made so that sections of dex files\ncan be easily poisoned to check accesses to those sections.\n\nIn order to enable logging of reads to poisoned sections,\nuse art/tools/add_package_property.sh along with package\nname on the device and art/tools/asan.sh.\n\nBug: 37754950\nTest: export ART_DEX_FILE_ACCESS_TRACKING\u003dtrue ; mm -j \u0026\u0026 mm -j\nSANITIZE_TARGET\u003daddress SANITIZE_LITE\u003dtrue test-art-host;\n\n(cherry picked from commit ecfa103caf2ccead029bd0e1bfcee02601a0c212)\n\nChange-Id: Ie57aa935b7f5f6854ba53d7740cc0d1547b40847\n"
    },
    {
      "commit": "b486a98aadc95d80548953410cf23edba62259fa",
      "tree": "b113b7d50a4a015502873b7742c9ece00d293e84",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 13:45:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 02 08:24:02 2017 -0700"
      },
      "message": "ART: Introduce thread-current-inl.h\n\nFactor out Thread::Current() code into its own -inl file to remove\ntransitive includes.\n\nThis requires at the same time correcting mutex.h, i.e., moving\nsome functions into mutex-inl.h.\n\nTest: m test-art-host\nChange-Id: I88f888b604e0897368d9b483edce6ce4332dd9c9\n"
    },
    {
      "commit": "357c66dcc20ce15108ecf05f5ecf69a80b383dab",
      "tree": "c6b1984838a0faff32bed37ceaf8be2b4a5c4deb",
      "parents": [
        "9e8797d1c96dd4744b667ef6bbd10812e2087f79"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 04 01:57:17 2017 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 04 16:08:57 2017 -0700"
      },
      "message": "Revert \"Revert \"Ensure dex file are extracted and verified at load time\"\"\n\nThe issue was caused by running device-gtests as root (which will always\nhave full write access everywhere).\n\nFor now, disable the tests that rely on file permissions when running as\nroot.\n\nTest: m test-art-target-gtest-oat_file_assistant_test\nBug: 36605597\nBug: 36824842\n\nThis reverts commit 9bfc6bb1f44797aec19a151e47c0902ef2516095.\n\nChange-Id: I60e8c3d602ca40b1f1e12e8808055effcbb8dcc6\n"
    },
    {
      "commit": "9bfc6bb1f44797aec19a151e47c0902ef2516095",
      "tree": "af9fe3020cd389105a8bb03c8680289f4287953e",
      "parents": [
        "d2510c92e7c1f571ab012fcb82e77d7e1806ae3b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 04 00:13:50 2017 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 04 00:13:50 2017 +0000"
      },
      "message": "Revert \"Ensure dex file are extracted and verified at load time\"\n\nThe art build bot fails for the oat location tests. I suspect that ScopedNonWritable is not working properly on the bot.\n\nThis reverts commit d2510c92e7c1f571ab012fcb82e77d7e1806ae3b.\n\nChange-Id: Ica70862fd608ebdeb3c710f786ae21b99b69bc20\n"
    },
    {
      "commit": "d2510c92e7c1f571ab012fcb82e77d7e1806ae3b",
      "tree": "b175bb55137627b7beb879592be001bbc85851aa",
      "parents": [
        "3650acb134b4e68ba3f190772b02105f74081bf2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Apr 20 19:28:25 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed May 03 11:56:32 2017 -0700"
      },
      "message": "Ensure dex file are extracted and verified at load time\n\nThis change removes the ability to specify an explicit OAT location and\nensures that the best oat file (either the oat or the odex) is compiled\naccording to its special filter (kDefaultCompilerFilterForDexLoading).\n\nThe oat files location can therefore be:\n- in dalvik-cache: referred as the OAT location.\n- in dex_parent_dir/oat/ISA/: referred as the ODEX location.\n\nThe \"best oat file\" for a dex location is changed to prefer the ODEX\nlocation whenever the location is writable (see\nOatFileAssistant::GetBestInfo()).\n\nMakeUpTodate will now attempt to generate the \"best oat file\" instead of\nalways defaulting to the oat location.\n\nTest: m test-art-host-getest-oat_file_assistant_test\nBug: 36605597\nBug: 36824842\nChange-Id: Ic54b3b94be06c8c47f211ce3d738b0db0a9c7bb3\n"
    },
    {
      "commit": "5c525746c63f48f11aee787103d023511c54e4e3",
      "tree": "975d1bbbff92c77aa7712a765ebd8ff5b654d1ea",
      "parents": [
        "70940dfe99df0084a3f3fed1a88255ec976a60e3"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 28 10:19:29 2017 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 28 10:47:50 2017 -0700"
      },
      "message": "oat_file_manager: Avoid global collision check.\n\nAvoid the global collision check in case we encounter a classloader\nthat we don\u0027t recognize. This seems overly conservative. Instead, trust\nthat the classloader does the right thing.\n\nBug: 36480683\nBug: 37777332\n\nTest: make test-art-host\nTest: manual testing\nChange-Id: I9cf026baab4264a0e4eab3710ab3c15df7c01edf\n"
    },
    {
      "commit": "2a9dc4dcc5cb6cec1e9a4411ea81aee2ee9daa74",
      "tree": "fdd228b34741d240c32376d7efa43daf95a49389",
      "parents": [
        "9bb7ab6750d39461f57fb089d7950e1c137d8e87",
        "1f7079b72965cba0b1a40f53be97a4944ecb4a51"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 21 18:41:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 21 18:41:24 2017 +0000"
      },
      "message": "Merge \"Ignore the optimized location passed to DexFile.loadDex()\""
    },
    {
      "commit": "1f7079b72965cba0b1a40f53be97a4944ecb4a51",
      "tree": "bfa230da1e0ccea2f5cb343a40fb0cf6eb691ff0",
      "parents": [
        "77ced6adfd4de14a868364c4f03986be79d3a081"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 18 21:25:37 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 18 21:35:27 2017 -0700"
      },
      "message": "Ignore the optimized location passed to DexFile.loadDex()\n\nThis ensures that apps don\u0027t trigger dex2oat to locations\nthat are not recognized (anymore) by the runtime.\n\nThe background compilation job will takes care of optimizing\nthe dex files loaded via DexClassLoader.\n\nTest: m test-art-host\nBug: 36824842\nChange-Id: I6883740407203b4aa9511e7d15a8201db3df1168\n"
    },
    {
      "commit": "16d4843433e024100b4ecd183f827ad5bd8772a6",
      "tree": "30b6f526051faaf8cc5ebbc15a7dfeef051a153f",
      "parents": [
        "2203253254e18ebde386740d3c841c04c432a42e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 05 17:05:46 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 18 17:03:11 2017 -0700"
      },
      "message": "Allow dex2oat to handle relative paths.\n\nDuring installation at compile time, the PackageManager is passing\nshared libraries to dex2oat with -classpath. For split apps, we want the\nsplits to have the proper dependencies, and are now passing previous\nparts of the split apk as shared libraries as we compile them all. These\napks are staged in a temp dir during compilation, so we pass a relative\npath for them instead.\n\nSince PackageManager can now pass relative paths to dex2oat as shared\nlibraries, dex2oat has an added --classpath-dir switch to specify the\ndirectory to use for relative class paths. At runtime when checking\nshared libraries, we use oat file functionality to resolve relative paths\nto determine if the paths match.\n\nBug: 34169257\nTest: cts-tradefed run singleCommand cts -d --module\nCtsAppSecurityHostTestCases -t android.appsecurity.cts.SplitTests\n\nMerged-In: I9667f0069c8d12e94598f8a78888d3855d870824\n(cherry-picked from commit f79ac83a8c18b0bd81aafc9c8823f6bed35d8847)\n\nChange-Id: I8e4703fdd4bfeb94f982e93abb7eb0cd71060fce\n"
    },
    {
      "commit": "0471ece3d0166097619da19c9f43522200bfda78",
      "tree": "260b7333e6ea7db7ee8681c1985682f03c5dd4b5",
      "parents": [
        "672082ab6edf7c12a1d7b1d9303aa0aa4fcce089"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 07 16:28:12 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 07 18:38:36 2017 -0700"
      },
      "message": "Add option for duplicate classes check to return all dupes.\n\nWhen verbose oat is enabled, duplicate classes check will not stop at\nthe first duplicate found, outputting all duplicates found.\nCan be enabled via: adb shell setprop dalvik.vm.extra-opts -verbose:oat\n\nTest: mm test-art-host\nChange-Id: If1cd55e2ad18fa4bb12d9237e18735ee0f89840b\n"
    },
    {
      "commit": "8ec0a20abae9a1e9a708ee02dd2639351933c028",
      "tree": "70ec5d7bdc4ed2ee02999543a131987e72cf3f0a",
      "parents": [
        "68948e01f56ad1996af77f4c0aab721940b0e18d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 07 21:56:31 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 08 10:33:10 2017 -0800"
      },
      "message": "Fix duplicate classes check to iterate over classes properly.\n\nPreviously would iterate in class index order, but classes are not\norganized alphabetically. This changes the check to iterate over the\nclasses\u0027s type indexes, which are in alphabetical order.\n\nUnit test to come.\n\nBug: 35477728\nTest: mm test-art-host\nChange-Id: Iddaad84c30be042d09dde56c998221fd07f04ab6\n"
    },
    {
      "commit": "77651c4bbd56d502bcf05347e641061bbebca099",
      "tree": "7965e6e8cf29f1c78fc15e3eb3d645bb681a3f7d",
      "parents": [
        "f9d80d72a686048200bcf6a7f37192f9eb75d5bd"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 18:04:02 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 07 11:38:22 2017 -0800"
      },
      "message": "ART: Clean up code related to foreign dex use\n\nWe simplified the way we track whether or not a dex file is used by\nother apps. DexManager in the framework keeps track of the data and we\nno longer need file markers on disk.\n\nTest: device boots, foreign dex markers are not created anymore\n\nBug: 32871170\n\n(cherry picked from commit 868515e2606820ea96f8b9022b442f5bcc770867)\n\nChange-Id: If51b3301c845a8c3bbaf87d0e35a12c700e1d0aa\nMerged-In: I5a04d3bba29581dedf05e21b8b20d79afa9b405a\n"
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "90b936ddda63139ff46a6755c3b83ad6e4ab4ac5",
      "tree": "c7ce2c3004eecc16ab41ed7cde105c3019638d4b",
      "parents": [
        "b78a8af993e877d74c5938f65f95feaf2fa01321"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 31 08:58:55 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 03 10:03:52 2017 -0800"
      },
      "message": "ART: Refactor verify_object.h\n\nMove the actual VerifyObject check into a new cc file, as we\ncommonly don\u0027t enable the check at all. This allows to cut the\n-inl include from almost all current users.\n\nThis also exposes missing -inl includes. Also fix up some of our old\nmess where .h defined functions require -inl.h defined functions.\n\nTest: m\n\nChange-Id: I3dd821bbe2015564a29bf1ed9be00f7a7276ad61\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "b4f52304d53162a27ca7047aeeb4d18fcb95143b",
      "tree": "0518bef2d8a407f0952ed37bfc5f1bc0ee3be73c",
      "parents": [
        "66ceada00fec4b52481a42120fb9d1b89f357390"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 14 15:31:06 2016 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 14 15:31:06 2016 -0800"
      },
      "message": "Fix use of std::stoi without error handling.\n\nChanged to use strtoul, with a break if it fails to read the checksum.\n\nTest: mm test-art-host\nBug: 32066687\nChange-Id: Ic1299c23aae15a8329ad57b4eca5c0857f6eefb6\n"
    },
    {
      "commit": "3773f2106864cf71fa17be33058717ecc402a5ad",
      "tree": "1bf43b280f3a8f484758d308383c67af328e1a9f",
      "parents": [
        "8acdebc1a1b5821d3bb8e9461f7877fc234a37ff",
        "ca620d7bc03b23a0bcf0ef58df58603ee000dca0"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 09 01:48:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 09 01:48:19 2016 +0000"
      },
      "message": "Merge \"ART: Fix tidy warnings\""
    },
    {
      "commit": "ca620d7bc03b23a0bcf0ef58df58603ee000dca0",
      "tree": "07cb026075b70a958d14ae84b4e213178a6ba0b4",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 08:09:33 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 15:04:48 2016 -0800"
      },
      "message": "ART: Fix tidy warnings\n\nSwitch to char versions of find variants.\n\nAdd \"explicit\" constructor variants or refactor and\nremove defaults.\n\nUse const references.\n\nBug: 32619234\nTest: m test-art-host\nChange-Id: I970cc2f47d6cf8f0c74104b994b075b2fafb3d45\n"
    },
    {
      "commit": "08883debd927d18c9ecf66683a2a11aa98165656",
      "tree": "a73e1025905c5d5a4a64f1f20fcc4fc5295c5f5e",
      "parents": [
        "8bab69aafb3039f1dfe4aad4faf2a99986018abb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 13:20:52 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 08 13:20:52 2016 -0800"
      },
      "message": "ART: Refactor jfieldID handling\n\nArtField objects have been native since Marshmallow.\nRemove the dependency on being runnable. Refactor the\ncode into the jni_internal header.\n\nTest: m test-art-host\nChange-Id: I46708c70f9b4b566d7e26e4c5ffc3f0cbadc43fa\n"
    },
    {
      "commit": "47b6bdb2a06cc4c296762c7461281f4390e17c2d",
      "tree": "eea19f00e50741e2e3dc00fc96f077f83f9ec6fb",
      "parents": [
        "878d1889f7273cbfd48035762b67ce634503d55e",
        "4c481a4245aebe6821914237249f11d03e687bf9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Nov 03 20:43:06 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 03 20:43:06 2016 +0000"
      },
      "message": "Merge changes I86bc206d,If20a34e7,I6ee6c826,I240341a0\n\n* changes:\n  ART: Make some variables references\n  ART: Put macro parameters into parentheses\n  ART: Add \"explicit\" to constructors\n  ART: Change iterator value type to match\n"
    },
    {
      "commit": "4c481a4245aebe6821914237249f11d03e687bf9",
      "tree": "87ef976688f64b28ba132c98c03e1bfef7e5fc94",
      "parents": [
        "44fd235d1babc62725f09b042e629352f463199f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 03 08:21:59 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 03 11:16:36 2016 -0700"
      },
      "message": "ART: Make some variables references\n\nAvoid copying values.\n\nBug: 32619234\nTest: m\nChange-Id: I86bc206d6f6fccdf730c62c60317a7a4ae26c11b\n"
    },
    {
      "commit": "5c657fe8e3afdce77dc610446f37a43865cff702",
      "tree": "1f9fe466058b7512036b27a5b22f7720eb00729d",
      "parents": [
        "2ab98309c0fc7b3c7451205b2371db5c34b05d49"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 03 15:12:29 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 03 15:13:06 2016 +0000"
      },
      "message": "Pass some arguments by const reference.\n\nTest: Rely on TreeHugger.\nBug: 32619234\nChange-Id: Ia26277893641dcb3562eaeacaec4e089a978d56a\n"
    },
    {
      "commit": "46aba36a1c982567d7e80a62b0cff9c0935e7455",
      "tree": "597b436db28186864524d5208628082e52a5ff52",
      "parents": [
        "bda454e9a09018cde1ea2ee10f0fdd5bf2ad756b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 28 14:33:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 01 08:23:27 2016 -0700"
      },
      "message": "ART: Move pathList well-known-field to actual class\n\nUse the actual declaring class, BaseDexClassLoader.\n\nTest: m test-art-host\nChange-Id: Ie051e7d45dd73f6adc3c90bc8acc523f204dfab5\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "3398c7874e002beaa6c2b2fadf183e7d1ddad23a",
      "tree": "7db754b5b0c3a6c68bc1f91d7cb2477f534d2ad3",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 10:27:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 14:06:27 2016 -0700"
      },
      "message": "Move ArtField to ObjPtr\n\nAdded EXPECT_OBJ_PTR_EQ and variants to gtests.\n\nFixed moving GC bugs in:\nClassLinker::CreatePathClassLoader\nClassLinkerTest: StaticFields\n\nObjPtr Decode call sites: 186 -\u003e 181.\n\nSome tests fail due to ResolvedFieldAccessTest, will fix in follow\nup CL.\n\nBug: 31113334\n\nTest: test-art-host CC baker\n\nChange-Id: I8b266ad00f3c20c8cbe7cfdf280d175083df0b88\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "a463b6a920a2a0bf14f9cca20a561b412b9349d1",
      "tree": "8bffe70a26799c7a3d9ad9941a8062e30212190e",
      "parents": [
        "554b6fb8759d186eba1046c220c9cff9a8610525"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 12 21:53:32 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 15 10:35:31 2016 -0700"
      },
      "message": "ART: Refactor ImageSpace loading\n\nMake the code more straightforward so it is easier to reason\nabout and extend.\n\nAlso change return types to unique pointers so it\u0027s clear that\nit is the caller\u0027s responsibility to free those when necessary.\n\nBug: 30832951\nTest: m test-art-host\nTest: device booting\nChange-Id: I3216eb702e45357a48af5158dacbe40e79bd1ae9\n"
    },
    {
      "commit": "d1472a27e856ec68ab5a27abaaebe9c61d91d343",
      "tree": "7a3aa99465a6b1f5563bdced3af009bd628bfacd",
      "parents": [
        "4c7f1933cb5d5cdd43741a5e352d662187f81ca4"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Apr 15 15:18:56 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jul 07 16:13:00 2016 -0700"
      },
      "message": "profile_changed should not effect GetBestOatFile.\n\nThis change moves the check for whether a profile changed from\nGetBestOatFile to GetDexOptStatus, because profile_changed should not\neffect what oat files are loaded.\n\nTest: OatFileAssistantTest.ProfileOatUpToDate\nChange-Id: Iafd12677f20d2844809337d1d83b688f17461cc0\n"
    },
    {
      "commit": "37d6a3bbf5826abb73f872ed0bc4c6ae9553e274",
      "tree": "0fbe5fda78e251597f909f654014f2c25efa62e5",
      "parents": [
        "739dc72773c5dee583a1d322f91b5abd61f9889d"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue Jun 21 18:30:10 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jun 22 15:39:07 2016 -0700"
      },
      "message": "Support the -i flag in the new dexdump.\n\nRationale:\nThe old dexdump supported the -i feature (ignore checksum failures).\nThis CL adds the same functionality to the new dexdump. Note that\nthis feature is, for example, useful to inspect DEX files that are\nextracted from images (with quickened instructions), since the\nchecksum is not always valid in those cases.\n\nBUG\u003d29548017\n\nChange-Id: I6017b2f3d789f450560b568297f43c62bf9453b1\n"
    },
    {
      "commit": "14d7b3e37b6129d845d6c8da8ee8d612937c63d4",
      "tree": "78fbff24020bbb21a57fa647523bd32970669c2c",
      "parents": [
        "531e86c88872f7d28fb751a57efccdeed7ec960a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 09 16:18:04 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 10 09:41:36 2016 -0700"
      },
      "message": "Fix dex file leak in oat file manager\n\nSimplified ownership by having a vector of unique pointers own\nall newly opened dex files.\n\nBug: 29246280\n\n(cherry picked from commit fed316715faeec7bf34e3c4a878288c1342cb0e8)\n\nChange-Id: I97db09ced76db8ffdbae371ff72977c4276a0494\n"
    },
    {
      "commit": "1fdbe1b034d97b852551d24e70245df64f03ebeb",
      "tree": "5878bb082905af886124bf2c6945ff2083f8b203",
      "parents": [
        "ca7399a1d7b3c92d73322adf54187fde31eee1bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 10 08:36:20 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 10 08:36:20 2016 -0700"
      },
      "message": "ART: Add ATRACE section for collision check\n\nThe collision check for duplicate classes is potentially expensive.\nAdd a ScopedTrace to mark it.\n\nBug: 26880306\nChange-Id: Icd75bd0ccc15f0d1f321d85382a4d038fa8ab049\n"
    },
    {
      "commit": "347eff2699557340c493a026300a73b84a796cd3",
      "tree": "35c147bef1d09b2864fccb4efb788d76bf27cc6e",
      "parents": [
        "faf18de818bc39c25d0c87715c19c375b761a463",
        "a206c745dbb64b14f05c87891d425475c2f6d63a"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu May 26 20:52:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 26 20:52:54 2016 +0000"
      },
      "message": "Merge \"Don\u0027t use dlopen on host for already loaded oat files.\""
    },
    {
      "commit": "a206c745dbb64b14f05c87891d425475c2f6d63a",
      "tree": "b73c6dfa1f78d6605e71fab8a3e43fb484715647",
      "parents": [
        "d53208c8e7ca4b2e2d4070d8e67ec1ee078cee74"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 24 15:04:22 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed May 25 11:26:43 2016 -0700"
      },
      "message": "Don\u0027t use dlopen on host for already loaded oat files.\n\nBecause the behavior of dlopen on the host is different then the\ntarget in that case, and it causes tests to fail.\n\nBug: 28826195\n\nChange-Id: Id202bbac3318bade89a4133a9bcb1ee01e8b6182\n"
    },
    {
      "commit": "01be68100e96a44b4ff8cb4cb3c9baa346ff048d",
      "tree": "5d90bfc7b0e4c790ac9215ed6100a3130756e935",
      "parents": [
        "d53208c8e7ca4b2e2d4070d8e67ec1ee078cee74"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 17 10:34:52 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 24 17:33:11 2016 -0700"
      },
      "message": "Only compile dex files if they are not up to date.\n\nInstead of trying to compile them all the time, and relying on file\npermissions to keep us from overwriting up-to-date dex files with\ndifferent compiler filters.\n\nBug: 27641809\nBug: 28639246\nBug: 28826195\nChange-Id: Ie717089d58517427b6f9a522b48146761c57a1a9\n"
    },
    {
      "commit": "f0192c86a58b2f43378c9a2113007538dd38ddbf",
      "tree": "df3fef8e9ccd30152819e893e6212ce45b5f51a5",
      "parents": [
        "783d02e527107e91880f12bddf41afd313919132"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 28 20:39:50 2016 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 17 11:08:41 2016 -0700"
      },
      "message": "Support to pass \u003cuses-library\u003e option through to dex2oat.\n\nThis change takes an app\u0027s shared libraries specified by \u003cuses-library\u003e\nand passes it through to dex2oat to be used during compilation.\n\nPart of a multi-project change.\n\nBug: 26880306\n\n(cherry-picked from commit 26e8a2f150cd7f7195a10650ab8a5b6fa5014bc8)\n\nChange-Id: I72a352abdfc37eacd8bedfa6c218e3809ca8e39c\n"
    },
    {
      "commit": "f4b3487ee77e3c2e3d5372ae9e857cd3429bb808",
      "tree": "b48ab16dec4e8d1deab6556788f9a5fe2b62f77a",
      "parents": [
        "a6513729ae2ad0d2f9dd21d77ea6cf9ed9fa6eef"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Apr 13 11:03:46 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue May 03 12:22:39 2016 -0700"
      },
      "message": "Remove -XOatFileManagerCompilerFilter argument.\n\nInstead use the value of \u0027-Xcompiler-option --compiler-filter\u003dXXX\u0027 for\nthe target compiler filter to use to determine if the runtime should\ntry to invoke dex2oat when oat files are loaded.\n\nBug: 27641809\nChange-Id: I1856e0e37df91835b81105567c70d8a285a88f62\n"
    },
    {
      "commit": "0b791279f67b0f4b72db991707b16b737871bcde",
      "tree": "0f64860d0775810e14d5c14ec1fcdefba6228af2",
      "parents": [
        "aa840f42485d2f0ddbe7280823489aa9b487810b"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 18 16:38:27 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 22 16:14:10 2016 +0100"
      },
      "message": "Skip profiling if the dex file is fully compiled\n\nThe OatFile does not store the original dex location that was used to\ncompile the file. So in order to get the oat file for a given code path\nwe need to iterate over the inner oat dex files and check against them.\n\nAlso, we used to pass the unfiltered code_paths set to the saver which\nwould make the filtering useless. This fixes the parameter passing as\nwell.\n\nBug: 27893309\n\n(cherry picked from commit 7506423b2b9ea13fc5fa9711ab0106977876a5a2)\n\nChange-Id: I99388dee40f2d0e70f970b3f5c6a4171a7e97c0e\n"
    },
    {
      "commit": "3045b66613404fa973aafc8c2aae3728e9c12d9a",
      "tree": "c59383d5e791a5e7e7d30ee8092d0663df44a4cd",
      "parents": [
        "6435910a65067fb38477232b2620cc53978b13c7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 20 14:26:34 2016 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Apr 20 14:31:03 2016 -0700"
      },
      "message": "Make dex file loading failure more explicit about failure.\n\nWe make sure that if we fail to load a dex file due to having an\nunsupported dex version number we will say so explicitly in the\nexceptions.\n\nBug: 28269864\nChange-Id: I3c61d088cd0d04cf2a02246e69a4161180e3f2d8\n"
    },
    {
      "commit": "76f5cb6026b9c83bf00fd1007703503a327f704d",
      "tree": "cab074443f474275a784957585130201b5138ee4",
      "parents": [
        "d27fd40d5353141660c033156492efd639c4d048"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Apr 04 13:30:16 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Apr 13 13:03:45 2016 -0700"
      },
      "message": "Restore fallback behavior in the no-image stripped-dex case.\n\nAdd --strip-dex option to run-test to test this case.\n\nBug: 27599626\nChange-Id: I010543f48c39adbda007e2e05dda62ac1d70715c\n"
    },
    {
      "commit": "1e860619cdcc9c0b6a202a247c50cf7633ac7b74",
      "tree": "6621e6ca137d79cc58faa515692a039da4d15cac",
      "parents": [
        "20df4e408e9d285920558e6afc8442a412df3ac4"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Mar 30 12:17:55 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Mar 30 12:17:55 2016 -0700"
      },
      "message": "Refine OatFileAssistant.MakeUpToDate failure result.\n\nAvoid misleading log messages if MakeUpToDate fails because we decided\nnot to compile dex code.\n\nBug: 27641809\nChange-Id: I184f8e89648183cba4ebe7a1dc5e0e6c8774c15b\n"
    },
    {
      "commit": "29d38e77c553c6cf71fc4dafe2d22b4e3f814872",
      "tree": "92f34f589af205af56189d221ded293234935c26",
      "parents": [
        "2e89e901b9f303549f3ba64e45d87292e9c986c8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 23 15:31:51 2016 +0000"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Mar 23 11:30:29 2016 -0700"
      },
      "message": "Revert \"Revert \"Use compiler filter to determine oat file status.\"\"\n\nThis reverts commit 845e5064580bd37ad5014f7aa0d078be7265464d.\n\nAdd an option to change what OatFileManager considers up-to-date.\nIn our tests we\u0027re allowed to write to the dalvik-cache, so it\ncannot be kSpeed.\n\nBug: 27689078\nChange-Id: I0c578705a9921114ed1fb00d360cc7448addc93a\n"
    },
    {
      "commit": "845e5064580bd37ad5014f7aa0d078be7265464d",
      "tree": "1e621756ba6a1fd345f2fb468eed88cdc81886e7",
      "parents": [
        "a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 23 06:42:05 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 23 06:42:05 2016 +0000"
      },
      "message": "Revert \"Use compiler filter to determine oat file status.\"\n\nBots are red. Tentative reverting as this is likely the offender.\n\nBug: 27689078\n\nThis reverts commit a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931.\n\nChange-Id: I3ec6947a5a4be878ff81f26f17dc36a209734e2a\n"
    },
    {
      "commit": "a62d2f04a6ecf804f8a78e722a6ca8ccb2dfa931",
      "tree": "d8624bb85016a3301b473b6503324db4d4cf24a3",
      "parents": [
        "48e722432bb6e19df7bba02427e4a707e671af06"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Mar 18 15:05:30 2016 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Mar 22 15:38:36 2016 -0700"
      },
      "message": "Use compiler filter to determine oat file status.\n\nRecord the compiler filter in the oat header. Use that to determine\nwhen the oat file is up-to-date with respect to a target compiler\nfilter level.\n\nNew xxx-profile filter levels are added to specify if a profile should\nbe used instead of testing for the presence of a profile file.\n\nThis change should allow for different compiler-filters to be set for\ndifferent package manager use cases.\n\nBug: 27689078\nChange-Id: Id6706d0ed91b45f307142692ea4316aa9713b023\n"
    },
    {
      "commit": "04680f3d7b021a0afb460266d442f564186a3b6f",
      "tree": "47acec9c78b982555e7a4fdfa2c685ded0d46a76",
      "parents": [
        "0205b58a0d7a9ce5832393857c19c086c78996e9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 17 11:56:54 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 17 13:51:47 2016 +0000"
      },
      "message": "Dump oat file information as part of DumpForSigQuit.\n\nChange-Id: Ie8d256d8fa16565105cfe5c39cc96826983469da\n"
    },
    {
      "commit": "c421907d0df229e96390932503fda4bfbaf3e4d4",
      "tree": "fe8fb6f16eb0c53af51c670dfded97dd7ca8d316",
      "parents": [
        "87aa99c261a7921e28fbe6136197bb640ddef4a4",
        "b077e15d2d11b7c81aacbcd4a46c2b1e9c9ba20d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 09 11:57:36 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 09 11:57:36 2016 +0000"
      },
      "message": "Merge \"Update GetDexOptNeeded to handle different levels of compilation\""
    },
    {
      "commit": "87aa99c261a7921e28fbe6136197bb640ddef4a4",
      "tree": "4ce329a356f3289cdcee9b64a1b911d7b25a2590",
      "parents": [
        "a9778b24bfb8007f20caff7a082e8b4531a14dae",
        "c90bc92bc577020ff4d3caced4cee1cdf41fa5de"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 09 11:57:23 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 09 11:57:24 2016 +0000"
      },
      "message": "Merge \"Record foreign dex files loaded by the app in the profile\""
    },
    {
      "commit": "b077e15d2d11b7c81aacbcd4a46c2b1e9c9ba20d",
      "tree": "148a47a1aace48313cdfdeede48902563d89c7ee",
      "parents": [
        "c90bc92bc577020ff4d3caced4cee1cdf41fa5de"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 18 18:47:37 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 08 15:53:30 2016 +0000"
      },
      "message": "Update GetDexOptNeeded to handle different levels of compilation\n\nextract-only or profile-guide oat files are considered up to date from\nruntime perspective as they don\u0027t necessary need (re)compilation or\nrelocation. However, it is useful to return a more refined code to the\ncaller so that they can decide whether or not that\u0027s good enough.\n\nFor example, the package manager might decide to still compile a\nprevious extract-only and during profile guide compilation we should\nalways recompile even if we have an oat file.\n\nNote that dex files compiled via ClassLoaders will still be fully\ncompiled.\n\nThis change introduces:\n- a new key in the oat header kCompilationType to capture what type of\ncompilation has been made. Note tha the key might be missing. The\ndistinction is needed in order to avoid recompilation of a previous\nfully compiled file during profile guide compilation analysis.\n- a new argument to GetDexOptNeeded which tells the runtime to cast its\nopinion whether or not the oat file is up to date relative to the\ndesired target type of compilation.\n\nBug: 27189430\n\n(cherry picked from commit d91b8a2464b99625efe03caf7d30c8372bc378ed)\n\nChange-Id: I6ce450350f388451f7bab7d285c1846d539a4b13\n"
    },
    {
      "commit": "32ce2adefb8a3d0eda59a29f5e87c1eb43eef796",
      "tree": "50aaa40b31ede355359765259edc7989485cc7d5",
      "parents": [
        "c71dc3852edfa8e0cd2083d12845ff8607e189ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 14:58:03 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 18:37:19 2016 -0800"
      },
      "message": "Add more systracing everywhere\n\nAdded to:\nJIT\nDexFile functions\nOat file manager\n\nAdded helper ScopedTrace to prevent errors and reduce excess code.\n\nBug: 27502458\n\n(cherry picked from commit dabdc0fe183d4684f3cf4d70cb09d318cff81b42)\n\nChange-Id: Ifaeff8913d79eefc797380987d13cc00456266f8\n"
    },
    {
      "commit": "c90bc92bc577020ff4d3caced4cee1cdf41fa5de",
      "tree": "1a10edfaecfe09cb07b61857a4e22a50cda04047",
      "parents": [
        "f9f3c5b0ebacbfed59af9c5c81fe9752e6b1258c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Feb 24 10:13:09 2016 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Mar 02 13:04:21 2016 +0000"
      },
      "message": "Record foreign dex files loaded by the app in the profile\n\nA foreign dex file is a file which is not owned by the app\n(it\u0027s not part of its code paths or its private data directory).\n\nWhen such a dex file is loaded by the app, the runtime will record\na marker in a dedicated profile folder (foreing_dex_profile_path).\nThe marker is just a file named after the canonical location of the\ndex file where \u0027/\u0027 is replaced by \u0027@\u0027.\n\nThe markers will be used by the system server system server to\ndecide if the apk should be fully or profile guide compiled.\n\nBug: 27334750\nBug: 26080105\n\n(cherry picked from commit 86a9ebe4197e963249ffbbaa1830da97ed642fa5)\n\nChange-Id: I8be1fd4d854fa1e23c3c1054c9c083ad7b27317b\n"
    },
    {
      "commit": "a6e81ed4c185b7362cd5199ebe5507d00883a9b0",
      "tree": "851f18eeb8b6401793051d5f52dfad1f7e69f965",
      "parents": [
        "eea36cb923b078b86c7b5033ce75fe1b8ea4e522"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 25 13:52:10 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 25 14:55:55 2016 -0800"
      },
      "message": "Add lz4hc image compression format\n\nSmaller than lz4 and decompresses at the same speed. Compression is\na bit slower.\n\nExample saves on old FB APK:\nUncompressed: 44748800 bytes\nLZ4: 12443648 bytes\nLZ4HC: 11055104 bytes\n\nGenerating the image slows down by ~1s per 20MB of image due to\nslower compression. Decompression is about the same speed but there\nshould be a slight speedup since less data needs to be read from\nflash.\n\nAdded test.\n\nBug: 22858531\n\nChange-Id: Ib2704305b9bec5b0ba3b1e871f59f4eedff330b7\n"
    },
    {
      "commit": "bd064ea2269b23360e32e8139c22d5993ddc385b",
      "tree": "eeef3acff4c1e45e77406558fa2278ab91291c31",
      "parents": [
        "d3caabd4f85f86dd744da432993e12935d843a83"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 11 16:27:18 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 12 09:53:51 2016 -0800"
      },
      "message": "Fix app image memory leak\n\nThere was a memory leak if we failed to add an image space, this\nwas caused by releasing ownership without adding it to the heap.\n\nBug: 22858531\n\nChange-Id: Ia3c97ec822ca5362f52008e813fa434107198bc9\n"
    },
    {
      "commit": "61d2b2d353ba4ab952247d2bff2c905598118bb4",
      "tree": "93a34ade4a10dce218d756ef45d56358ab88b4d2",
      "parents": [
        "a4e981265dd57adbe755e12a814c0f30ae073c2f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 04 13:31:46 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 04 15:45:24 2016 -0800"
      },
      "message": "Use GC critical section for adding and removing app images\n\nA SuspendAll was not sufficient since there are points during the GC\nwhen the mutator lock can be temporarily released. This was causing\nat least some assert failures in CC such as attempting to clear\nblack read barrier pointers on app image objects with white read\nbarrier pointers.\n\nBug: 26979834\nBug: 26970811\nBug: 26786304\nBug: 22858531\n\nChange-Id: I375fc05e787e629c40de6f345802447c02601ff0\n"
    },
    {
      "commit": "a9d82fe8bc6960b565245b920e99107a824ca515",
      "tree": "a6ced4b8bca71232d20d91ff344c7531948b7be3",
      "parents": [
        "1af0204dddc1d99dc17a13eca135c1b57023c1c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 25 20:06:11 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 26 12:24:02 2016 -0800"
      },
      "message": "Use mutator lock to guard adding and removing heap spaces\n\nToo hard to add a new lock since dlmalloc ArtMoreCore requires\nlooping through the spaces while holding the allocator lock.\n\nBug: 22858531\nChange-Id: Ieac2136da02c766b6795cd604a58798bee37ef2a\n"
    },
    {
      "commit": "fbc31087932a65e036a153afab3049dc5298656a",
      "tree": "c728b9039a71db3be9cae888ad5e1afc31f34a13",
      "parents": [
        "c7f4e3a5aeaa23342b4e03b0d751f60ac5c5815c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Jan 24 11:59:56 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 25 14:22:15 2016 -0800"
      },
      "message": "Revert \"Revert \"Load app images\"\"\n\nThis reverts commit 1bc977cf2f8199311a97f2ba9431a184540e3e9c.\n\nBug: 22858531\n\nChange-Id: Ide00bf3a73a02cba3bb364177204ad1b13f70295\n"
    },
    {
      "commit": "1bc977cf2f8199311a97f2ba9431a184540e3e9c",
      "tree": "580a02752d8e447f6dce7cce01386c7e2a9a87f4",
      "parents": [
        "f7fd970244f143b1abb956e29794c446e4d57f46"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 14:15:49 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jan 23 14:15:49 2016 +0000"
      },
      "message": "Revert \"Load app images\"\n\nFails when a method is duplicated (see test 097-duplicate-method)\n\nBug: 22858531\n\nThis reverts commit f7fd970244f143b1abb956e29794c446e4d57f46.\n\nChange-Id: Ib30ae5be00cc568e799290be6b3c8f29cbbe4c20\n"
    },
    {
      "commit": "f7fd970244f143b1abb956e29794c446e4d57f46",
      "tree": "aac1f57ac70747957f609bb46305dfeca87645a1",
      "parents": [
        "95005291d8ebdd1d2ac58ffc5181fef4fbbf2383"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 09 11:16:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 22 15:01:55 2016 -0800"
      },
      "message": "Load app images\n\nSupport in-place patching of the app image based on boot image\nlocation and app oat location. Only loads for art run test so far\nsince we do not automatically generate app images for app installs.\n\nN5 maps launch time (~200 runs):\nBefore: 930ms\nAfter: 878.18ms\nAfter + image class table: 864.57ms\n\nTODO:\nOatdump support.\nStore class loaders as class roots in image.\n\nBug: 22858531\n\nChange-Id: I9cbc645645e62ea2ed1ad8e139e91af7d88514c1\n"
    },
    {
      "commit": "46ac34f82226f53caa932d8990c1ba7c90c001b2",
      "tree": "d456d3fd2d0d283f155787f107f6dc0b6a35ba8a",
      "parents": [
        "475a05e03a7fff101f0b2e97e20a7079e00cc3ec",
        "a28267fdbcafbbc08bae56c5997c8ffa9a008c50"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 22 08:53:31 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 22 08:53:31 2016 +0000"
      },
      "message": "Merge \"Update to INFO to not confuse adb logcat readers.\""
    }
  ],
  "next": "dcdc85bbd569f0ee66c331b4219c19304a616214"
}
