)]}'
{
  "log": [
    {
      "commit": "c2753e6beec483b5b14161b6bbc8e0a86aef9397",
      "tree": "070107ce0d907ab246d4a33f4d3aac7e679006c7",
      "parents": [
        "546243375d7e129aa02ca7ea9663ed7c40b4880e"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 25 15:34:09 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 01 01:52:04 2021 +0000"
      },
      "message": "Fix compiler filter / reason reporting and add the ISA to the metrics\n\nThe compiler filter / reason reporting was not accurate for a variety\nof reasons. (e.g. reporting was only done at startup, it was relying\non imprecise APIs and had errors in the logic).\n\nIn order to keep track of the precise optimization status, this CL\nintroduces the concept of AppInfo, which encapsulates the data about\nthe application / system server code paths, their optimization status\nand possible other metadata (e.g. profiles).\n\nTo populate it, we rely on 2 distinct events:\n1) The framework calling VMRuntime#registerAppInfo to inform the\nruntime about the applications code paths and their types (e.g. primary,\nsplit, secondary).\n2) Class loading, when we can determine the actual optimization status\nlike filters, reasons, and whether or not we can load the odex files.\n\nThese events may happen in any order so we could deal with a partial\nstate at some point in time, but in the majority of cases they always\nhappen at Class Loading, followed by RegisterAppInfo.\n\nThis CL also deletes the OatFileManager#getPrimaryOatFile which was\na misleading API as it didn\u0027t work in most cases. It also adds more\ntests to the metrics/reporting infra for previous missing or\nunimplemented cases.\n\nTest: gtest\nBug: 170149255\nChange-Id: If0a7a25d06ff6fb89fe4861139b7dee61c05814d\n"
    },
    {
      "commit": "beb9f2012587035a5c30d0eca8af458b2ad659b7",
      "tree": "ebc2509c9d3250d47e6e54c2c67f2f4bce74c80b",
      "parents": [
        "f31b75b2b80154112835c25bb0a21196453ac71a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 02 14:42:03 2021 -0700"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jun 08 20:58:43 2021 +0000"
      },
      "message": "Consider the size of the reference profile when assessing IsFirstSave\n\nThis makes the detection logic for the first profile save much more\nprecise. It prevents the case where we would return true if\nthe data was already moved from the current profile to the reference\nprofile.\n\nAt the same time, rework part of the logic for early save. The checks\nneeded to be moved earlier to encompass the startup class resolution.\n\nTest: run-test \u0026 manual\nadb shell stop;\nadb shell setprop dalvik.vm.ps-min-save-period-ms 300;\nadb shell setprop dalvik.vm.extra-opts -verbose:profiler;\nadb shell start;\nadb shell cmd package compile com.android.systemui -r bg-dexopt\nrestart \u0026 check\n\nBug: 185979271\nChange-Id: Icfec30c6f49c8e03b03ff4bcbc2b869393fdcbfe\n"
    },
    {
      "commit": "3ddf4d4916fdb7bc3157aa375fb1d670f4cf80bb",
      "tree": "45d67decea87e2f47339250a1bc6c253855d977a",
      "parents": [
        "06fb7fa55cca3210f38c92ac7cc7ad525ff30c83"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 11 10:19:28 2021 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 20 21:45:57 2021 +0000"
      },
      "message": "Update registerAppInfo signatures to accomodate more data.\n\nTest: m\nBug: 182793486\nBug: 185979271\nChange-Id: Ib92327e39bad5914d48ae8a37dd4b5092c5e1407\n"
    },
    {
      "commit": "5c4d0df0ee900a174b6c582cc1e918596f19db36",
      "tree": "954464e0858156fafea09791528f21c99d062404",
      "parents": [
        "9cacdce5a0e3ae57a195e2a6a1ca059808a0ee2f"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 29 16:16:39 2021 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Apr 30 21:12:17 2021 +0000"
      },
      "message": "Revert^2 \"Solidify GC triggering and reporting\"\n\nPS1 is identical to aosp/1626960 and a straight revert of aosp/1689119 .\n\nChanges in PS2:\n\nAdds aosp/1690271 (abandoned)\n\nDon\u0027t wait for nonexistent GC\n\nMake sure that when we request a concurrent GC, it will eventually\nincrement the GC count. Test the GC count correctly.\n\nDon\u0027t sleep quite as many times to reduce damage in case we still got\nsomething wrong.\n\nBug: 186592536\nBug: 181351667\n\nTest: Build and boot AOSP with kStopForNativeFactor set to 1.0.\n\nChange-Id: I0c53ec9ad91691e59427a008af3b21834ee84978\n"
    },
    {
      "commit": "afff75850413713ca3bff3eb78193a3a8ecbd277",
      "tree": "bbf7b4864b7f424a492f5e36331fad60e8088211",
      "parents": [
        "c86345c61fa4d74471a04a682284ce29354c329b"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Apr 28 23:11:30 2021 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Apr 29 14:21:02 2021 +0000"
      },
      "message": "Revert \"Solidify GC triggering and reporting\"\n\nThis reverts commit 6d5a49c9b0f26a21316577683f282cf3bef492e3.\n\nReason for revert: Probably causes occasional severe jank. b/186592536.\n\nChange-Id: I76d816b1e4c71569e195366088047d5a2a0aa8c1\n"
    },
    {
      "commit": "6d5a49c9b0f26a21316577683f282cf3bef492e3",
      "tree": "ec8da125e2cc663c1ecc94e5ebda33a212f6f72b",
      "parents": [
        "0cdbf97c3d654b8e985361e44952ef03d3fa4714"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon Mar 08 09:21:16 2021 -0800"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Apr 23 21:37:25 2021 +0000"
      },
      "message": "Solidify GC triggering and reporting\n\nEnsure that multiple roughly simultaneous collection requests are\nunlikely to result in multiple GCs. Previously multiple direct calls\nto CollectGarbageInternal would essentially be queued, with each\nwaiting for the previous one to complete. This might happen if we\u0027re\nessentially out of memory, with multiple threads running.\n\nWhenever easily possible, capture the GC number before checking\nwhether we should GC, so that we can corrrectly check for a GC\ntriggered since we performed the test.\n\nReset GC cause when appropriate so HeapTrim doesn\u0027t always show\nup as the cause.\n\nUpdate old_native_bytes_allocated before FinishGC(), closing the\nwindow during which we could decide to start a second native-triggered\nGC without having seen the effect of the first.\n\nNo longer support ConcurrentGC() calls from VMRuntime, since they\nweren\u0027t safe anyway.\n\nNo longer mark the GC following a WaitForGCToComplete triggered by\nnative allocation as blocking. That wait just waits for the previous\nGC and does not trigger a new one. We already marked the previous\none as blocking.\n\nHave CheckGCForNative sleep briefly if the GC it\u0027s waiting for\nhasn\u0027t started yet. Previously it waited for a running GC to finish,\nbut the requested one may not yet have started by then.\n\nDrive-by fix for TotalBytesAllocated() metric.\n\nTest: Build and boot AOSP. Manually check GC log messages.\nBug: 181351667\nChange-Id: Ifd1e4afdffca7de25844d49299d552fce44b6760\n"
    },
    {
      "commit": "d4ff5bb50e252b004cfa1b4bc330b017208552a5",
      "tree": "5084a931388adcdb89a08e5726ca5b13eeb94e47",
      "parents": [
        "271662c2de6df0a5c85d47177dbe257c973cb3ae"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Feb 03 17:09:40 2021 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 11 02:07:57 2021 +0000"
      },
      "message": "Remove dalvik-pruning APIs\n\nThese are no longer used anywhere.\n\nTest: m\nBug: 172114559\nChange-Id: Id7206173a370f07a9a7494a6cea85552f0f57cd3\n"
    },
    {
      "commit": "d259ffb453b04b6b8e0c48daf6dd6554ec80ee97",
      "tree": "80db436fe3cc84f052edd0bf4ace6435cc8d625d",
      "parents": [
        "955f40f336c201a93832081d2070d66a15521fa4"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Dec 08 16:59:18 2020 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Dec 10 16:30:07 2020 +0000"
      },
      "message": "Disable VMRuntime_preloadDexCaches\n\nFor compiled code, we have largely moved to using .bss, so the\nDexCache just costs us unnecessary extra space and dirty pages.\n\nFor interpreted code, the hashtables are too small and will be\noverridden many times over at run-time regardless.\n\nTest: device boots\nChange-Id: I32bff875f3784e8bc0c7350be9b02c59216d234b\n"
    },
    {
      "commit": "037d282cd1fc201601ac52dcfe0f1a4d97ca3790",
      "tree": "da6a1d61357cd09c4131501031de691491bcdb2a",
      "parents": [
        "6e71c66b35f6a96908e3d371316cba15dcb75d1f"
      ],
      "author": {
        "name": "Andrei Onea",
        "email": "andreionea@google.com",
        "time": "Thu Nov 19 00:20:04 2020 +0000"
      },
      "committer": {
        "name": "Andrei-Valentin Onea",
        "email": "andreionea@google.com",
        "time": "Mon Nov 23 19:02:00 2020 +0000"
      },
      "message": "Add compat framework logging to ART\n\nLog first call for every change id in ART to logcat.\n\nTest: manual\nBug: 153061480\n\nChange-Id: I37ff5b88572478ae6c24b0b7dec2020da03b2172\n"
    },
    {
      "commit": "7f8a7f29f07886d1008dfc26d43617e79965447c",
      "tree": "629658a364e29f26d8d8ccd312e61cd41c320b8e",
      "parents": [
        "cb4fab133d14b491c57f46a4a08b66eaf8b675f6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Sep 23 14:44:53 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 01 11:20:13 2020 +0000"
      },
      "message": "Remove unused CorePlatformAPI methods.\n\nBug: 165370038\nTest: m\nChange-Id: I944cc5354016bef8820455c092e6cfaa033fa1f0\n"
    },
    {
      "commit": "bbdc301928b4525487cba325804bfc5be1ac6756",
      "tree": "28b12e0e8c59364962ef9a87fe98c4464367ea2b",
      "parents": [
        "5472d6f75d3e68e37e801d5c75e756ac866914a2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jul 02 17:34:22 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 07 08:32:49 2020 +0000"
      },
      "message": "Remove old code that isn\u0027t relevant anymore.\n\nIn order to reduce the CorePlatformAPI surface.\n\nTest: m\nBug: 154796679\nChange-Id: I08cc05917d39a022a25ebcc875a4e8f5bb22b54e\n"
    },
    {
      "commit": "fa915c920f07a794f06a9bee47513dc5f303d019",
      "tree": "7e951be09476008a51ca19463a253f5cd26b9de1",
      "parents": [
        "6df189d5a7b68420f17bb28988b29a699f025170"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 14:40:23 2020 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 29 15:41:25 2020 +0000"
      },
      "message": "Only put resolved classes inside the dex cache.\n\nUsers of the dex cache (like the verifier) rely on entries to be\nresolved.\n\nBug: 155852343\nTest: No crash doing \"while adb shell stop \u0026\u0026 adb shell start \u0026\u0026 sleep 5; do :; done\"\nChange-Id: Ie2a97f75c6cd49a7cf1a2c6529cd8900d7acba3b\n"
    },
    {
      "commit": "edccd3cc6d0b60bcf87295774b0728fd8755c329",
      "tree": "b0f4ca89c39f12f495beca2deb0110df5f7a66d5",
      "parents": [
        "444dc1c77068e56b8fbb9789d74d34101f29bffc"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Mar 13 14:54:27 2020 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Mar 16 08:20:30 2020 +0000"
      },
      "message": "Retire VMRuntime.doNotInitializeInAot()\n\nThis was used to delay initialization of UnixChannelFactory.\n\nBug: 109735195\nBug: 144502743\nTest: art/test.py --host --prebuild --64 -r -t 071-dexfile-map-clean\nTest: atest PreloadCheck\nChange-Id: I51102f1241c1a9bf344c8cfeed9f88c625610763\n"
    },
    {
      "commit": "eb070f085df78fc39ad2c06f0638edcf0537e6a3",
      "tree": "8d464c44bf9509d8da2a77b02ab5a84e9a7301bf",
      "parents": [
        "539d1d422776c50fea3b1e725ab2b063c533f911"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Mar 10 14:00:18 2020 +0000"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 13 10:59:36 2020 +0000"
      },
      "message": "Reland \"art: Add FileDescriptor fields to native Core Platform API\"\n\nThis reverts commit Ie9fa5a25d5352f214a16e10d5bbbe45da9f3c486.\n\nOriginal commit message:\n\nAdds descriptor and ownerId to whitelisted native Core Platform API.\n\nChange in reland:\n\nAdds a method to VMRuntime to disable the initialization of a class\nduring AOT compilation.\n\nBug: 144502743\nBug: 150680645\n\nTest: art/test/run-test --host 001-HelloWorld\nTest: art/tools/run-libcore-tests.sh --mode\u003dhost --variant\u003dX64\nTest: atest PreloadCheck\nChange-Id: I9facfe3d3fa27cf50a345d24be1e7d7e0d26c848\n"
    },
    {
      "commit": "c9fa770b6eedcf0cfe05b2449423f5494eecfce0",
      "tree": "684657b011f8980da10cbdc89ca6288d933a2734",
      "parents": [
        "a7d98b9560166eddaeb78d0f19402ee80ec9df06"
      ],
      "author": {
        "name": "Dan Zimmerman",
        "email": "danzimm@fb.com",
        "time": "Fri Jan 31 13:35:12 2020 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Sat Feb 08 02:41:12 2020 +0000"
      },
      "message": "Introduce VMRuntime.isValidClassLoaderContext\n\nIn the PackageManager server we need to validate class loader contexts\nthat we receive from an untrusted process. In order to keep class loader\ncontext parsing logic centralized within the runtime let\u0027s create an API\nwhich returns whether or not the runtime can parse the encoded class\nloader context.\n\nTest: Build system image, open app using secondary dex\nTest: atest atest com.android.server.pm.dex.DexManagerTests\nTest: m test-art-host-gtest-class_loader_context_test\nChange-Id: Ied676e3239f70a8ab9d066df79f377b7036b28b7\n"
    },
    {
      "commit": "f9dfd77182296cd9161784bc0b9babf4f22a90c7",
      "tree": "8abbce5a0fc5cf7b46979cb6d47a19a6106d0297",
      "parents": [
        "c70b84e7680663c3a41a119570ecd5f708ce4d76"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 30 13:56:13 2020 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 03 16:40:25 2020 +0000"
      },
      "message": "Update VMRuntime.isBootClassPathOnDisk()...\n\n... for the new boot image location specification.\nIn particular, use only the first component and, if there is\nno path, use path from the first boot class path component.\n\nTest: aosp_taimen-userdebug boots\nTest: adb root \u0026\u0026 \\\n      adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.boot-image \\\n          \u0027boot.art:boot-framework.art\u0027 \u0026\u0026\n      adb shell start  # Starts correctly.\nTest: adb root \u0026\u0026 \\\n      adb shell stop \u0026\u0026 \\\n      adb shell setprop dalvik.vm.boot-image \\\n          \u0027boot.art:/system/framework/boot-framework.art\u0027 \u0026\u0026\n      adb shell start  # Starts correctly.\nBug: 119868597\nChange-Id: Ifae2a005b7c6b8625d744eca2df763e3f6f5d0fb\n"
    },
    {
      "commit": "f365affd27933d1d0771d0d5064101db18c19cc2",
      "tree": "b94a643c08f62a4355d3e7de143aa5e4f7b2d2e2",
      "parents": [
        "d71f1dc15e264f9d2122c427a4d99d49b525bfd3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 27 13:43:01 2020 -0800"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 28 18:39:37 2020 +0000"
      },
      "message": "Remove isDebuggerActive native implementation.\n\nThis function is identical to VMDebug#isDebuggerConnected and always\nhas been in ART (on dalvik there was a distinction between the two).\nSimply implement this function in java to reduce the number of places\nthe debugger needs to overwrite native functions.\n\nTest: build\n\nBug: 148401311\nChange-Id: I56448e5c437900cb072aa39ee784a25efad260b0\n"
    },
    {
      "commit": "a9ff45b9f6d46cf6e48685a1c5d3cd64e05149a6",
      "tree": "9af811618b7d73319eaeedfa67532bc9d7bce543",
      "parents": [
        "6a67bea2203783db7569cd99cc86e2b63f5e28a7"
      ],
      "author": {
        "name": "atrost",
        "email": "atrost@google.com",
        "time": "Tue Jan 14 15:59:02 2020 +0000"
      },
      "committer": {
        "name": "Anna Trostanetski",
        "email": "atrost@google.com",
        "time": "Mon Jan 20 16:26:26 2020 +0000"
      },
      "message": "Remove TODO from ART\n\nDoing this directly from frameworks to bionic without ART.\nBug: 145743810\nTest: none\n\nChange-Id: I79634c403038fcbe4c2e842980cc4821a6fae027\n"
    },
    {
      "commit": "fab7208934673a026ecca1799a0ec5a892b38210",
      "tree": "fc27d288c53bb359d0f02791177e3ef3951694f2",
      "parents": [
        "270db1ce48377e3d9ca0c3dcec834ac807ca885b"
      ],
      "author": {
        "name": "atrost",
        "email": "atrost@google.com",
        "time": "Fri Dec 06 13:37:36 2019 +0000"
      },
      "committer": {
        "name": "Anna Trostanetski",
        "email": "atrost@google.com",
        "time": "Thu Dec 12 12:15:16 2019 +0000"
      },
      "message": "Pipe disabled compat changes to runtime through zygote.\n\nTest: device boots\nTest: Logging results of isChangeEnabled are matching state and respect adb overrides.\nBug: 145743810\nChange-Id: I03da331d3d36876fb646c2962e200aeecb5af84b\nMerged-In: I03da331d3d36876fb646c2962e200aeecb5af84b\n"
    },
    {
      "commit": "0aa02069a224384f0c6a8d78c3465290b61bdf67",
      "tree": "b1cc859ce0449e0943e756544d2a7a581cf870ca",
      "parents": [
        "88b1c83080afcb2bfb6f781ded1c90fe8f9eab4d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 21 16:24:09 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 17:26:31 2019 +0000"
      },
      "message": "Add resetJitCounters\n\nUsed to avoid Jit counters from class preloading being recorded in the\nboot profiles.\n\nBug: 139883463\nBug: 142564450\nTest: test/run-test 2230-profile-save-hotness\nChange-Id: I69c548ea336e9fb33e74988668e5d3c93b8a6705\n"
    },
    {
      "commit": "bfcea3dca82437ac6a0b824d6d2375629f7a0eaf",
      "tree": "e87d948f78c81f40217c5cd308097c788d39311c",
      "parents": [
        "6461124331de7707f3b109cec38337d851be997e"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Mon Aug 05 15:44:00 2019 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 08 11:58:04 2019 +0000"
      },
      "message": "Jit-zygote: Postpone pre-compilation until boot is completed.\n\nCompile only needed (hot) methods during boot.\n\nThis saves about 1.5s from jit-zygote boot time.\n\nTest: device boots\nBug: 119800099\nChange-Id: If98540e42634bf1e9701231e5174d724e897ce67\n"
    },
    {
      "commit": "9b81ac36e161fd993eab17b43b93a96e8c63b5cc",
      "tree": "bac59dd8a62ae9f410c707a4086c330b8923a55b",
      "parents": [
        "92ed90ca3897ae7861b22aa12740065152839649"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 16:47:08 2019 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri May 17 08:10:30 2019 +0000"
      },
      "message": "Add default argument kIsInstrumented\u003dtrue.\n\nkIsInstrumented\u003dfalse is reserved for use by specialized\nentrypoints which are used only when we can ensure that\nthe code is not instrumented. So add the default argument\nto simplify all other callers.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I3419795794fec9a1733ab3ad698b6415dbac679d\n"
    },
    {
      "commit": "c2f43576c379db5ec366f357800cf7442b8ab849",
      "tree": "88f8eb65594251371e7a9e9e9ff6e8a6563eda0d",
      "parents": [
        "f59bc11bc0bd6c443d5350f24e4569f841e0beea"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 12:56:14 2019 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Apr 03 15:21:44 2019 +0000"
      },
      "message": "Add native counterpart for VMRuntime.setProcessDataDirectory\n\nThis is used by the framework to pass the full path to app\u0027s data\ndirectory to ART, then used for storing anonymous vdex files.\n\nTest: compiles\nBug: 72131483\nChange-Id: I90de4b22f483a40f585f9b5583a14980b812f24b\n"
    },
    {
      "commit": "b215557206a39d3d2373c4ba7095bdae6a705144",
      "tree": "d17a39d4016aac38abf0699269c2532b4c4e5376",
      "parents": [
        "184832a46b21ff3ebe54f50f21dd71f2292d8943"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Mar 27 14:25:53 2019 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Mar 29 23:49:27 2019 +0000"
      },
      "message": "Add FinalizerTimeoutMs argument, and respect it\n\nAdd -XX:FinalizerTimeoutMs commandline argument, and make it\navailable for libcore.\n\nAdd 1336-short-finalizer-timeout to test it. Blacklist it for\nthe cases in which 030-bad-finalizers was known not to work,\nsince it\u0027s largely a clone. Disable it for gcstress, since timeout\nmargins are tight.\n\nIncrease timeout in 030-bad-finalizers due to gcstress issues.\n\nUse the result in 004-NativeAllocations and 030-bad-finalizers\nto avoid timeouts. Make 004-NativeAllocations more proactive in\navoiding timeout.\n\nThis is intended as a replacement for aosp/836642 .\n\nBug: 129350738\nBug: 68792448\nTest: Boot AOSP, TreeHugger\nChange-Id: I9aef9c9bacb7e8d851bd2c879ed9fb5b596abc60\n"
    },
    {
      "commit": "0984e483c1b8033250a32b11f112ae3e65eef39b",
      "tree": "267b4f59818e5080dff726adf25e5b5710111377",
      "parents": [
        "621c8807f38fedab56ea701370a18df123177f67"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 16:41:41 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "Style cleanup for ObjPtr\u003c\u003e-ify changes.\n\nReplace \"ObjPtr\u003c.\u003e const\" with \"const ObjPtr\u003c.\u003e\".\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: I5a1c080bc88b091e15ee9eb0bb1ef6f6f290701c\n"
    },
    {
      "commit": "f57f7d4cac1d54a54737252e1cf20bee1aace958",
      "tree": "f79d0eece6b4bfc78eb10e8add75de8cf6c0b7b8",
      "parents": [
        "2faab0064bccdf06a454ba5fc37f2cfeceab78bc"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Mar 14 17:49:26 2019 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Mar 20 15:26:54 2019 +0000"
      },
      "message": "Change registerNativeAllocation to long argument\n\nBug: 128423826\nTest: AOSP boot and TreeHugger\nChange-Id: I460b4e692604a433e145e3b243ae6453bdec3fc6\n"
    },
    {
      "commit": "8682354d448e1c3c355dbcac07b77e9c40e35987",
      "tree": "a8e99b9b44617c6d9f52501069d44db773d0df47",
      "parents": [
        "1f146b7db14c976987033224caf90831bbf11b10"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 25 09:38:49 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 13 18:19:00 2019 +0000"
      },
      "message": "ART: Allow to change boot image pickup order\n\nAllow to change the pickup order of boot image files between\nsystem-first and data-first.\n\nBug: 126307038\nTest: m test-art-host\nTest: Boot device with image in /data/dalvik-cache\nChange-Id: Id80cfc06aeb023559e1a3706833e57ba4880f43b\n"
    },
    {
      "commit": "175ce3dea89a40e68a685d7f873e8b9f082c45a6",
      "tree": "f4ba53dc33aca3ae71fd006b282a55dc926e53c9",
      "parents": [
        "cc292c611af7cdea6a2d9196fc347468b9233f71"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 06 16:54:24 2019 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 08 01:22:42 2019 +0000"
      },
      "message": "Add callback for notifying that startup is completed\n\nAdd a callback that can be called to denote that application startup\nis completed. This may affect how the profile is collected and how\nstartup related caches are managed.\n\nBug: 123377072\nBug: 120671223\nTest: test-art-host\nChange-Id: If7eb8909cc5e99082a2243b5029380244b46174d\n"
    },
    {
      "commit": "3f1dcd39e134d994ac88dcc4f30ec8cabcd8decf",
      "tree": "365d20ad6b68ff1dbd4903764b63880324136e4d",
      "parents": [
        "0f0a4e40667c87fbd4ae5480eddbfd701bfabfa2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 28 09:39:56 2018 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 02 10:32:25 2019 -0800"
      },
      "message": "ART: Move dex structs into own header\n\nSeparating out the structs from DexFile allows them to be forward-\ndeclared, which reduces the need to include the dex_file header.\n\nBug: 119869270\nTest: m\nChange-Id: I32dde5a632884bca7435cd584b4a81883de2e7b4\n"
    },
    {
      "commit": "c220f981809d655fb061c92a581fd6fc4df4da5c",
      "tree": "77f494f865e9b3c24340b5761a5d762408eb3a78",
      "parents": [
        "5de31a1dd5ac6e12b37517550a609b9c0576f685"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Oct 12 16:15:45 2018 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Dec 12 21:03:14 2018 -0800"
      },
      "message": "Change GC triggering to use mallinfo()\n\nRevise the test of whether we should collect based on native allocation\nto be based on mallinfo.\n\nMake the GC triggering threshold for native allocations grow somewhat\nwith the Java heap size to account for the added cost of Java\ncollection. We currently compromise between that goal and a\ndesire to avoid drastic changes that might provoke new heap\ngrowth issues. It does now take more native allocations to\ntrigger a GC earlier in the normal Java GC cycle than later in the\ncycle, as it should.\n\nAdd the notifyNativeAllocations() interface to replace\nregisterNativeAllocation() in the common case in which native memory\nis completely allocated via malloc(), and thus no longer needs to be\naccounted for separately. Arrange for it to be called much more\nrarely, since its cost is higher, and we can save time by not going\nthrough JNI on every allocation.\n\nAdd 175-alloc-bignums test.\n\nCleanups/fixes:\n\nFix race in IsOutOfMemoryOnAllocation.\n\nRename max_allowed_footprint_ to avoid suggesting it\u0027s a hard limit.\nIt wasn\u0027t and it isn\u0027t. Make it atomic, since it\u0027s concurrently\nmodified.\n\nFix a few cases in which unsigned counters could become negative.\nI think the only bad consequences of this were weird log messages.\n\nFix integer sizes/signedness around GrowForUtilization.\nUse uint64_t only when we can exceed address space size, and\nsize_t otherwise. Improve overflow checking.\n\nMake allocator or collector tests check the important kinds first, since\nthey\u0027re not always known at compile time.\n\nBug: 111447610\n\nTest: Built and booted AOSP. Ran 175-alloc-big-bignums.\n\nChange-Id: I55deac86622019fb85bbd569c3ae8afab2d13d9a\n"
    },
    {
      "commit": "91f1032505cfaec3aef51fc0a3085b213813f0ed",
      "tree": "6469e772d9fb562d26dc1d22dd0b71844bbb743f",
      "parents": [
        "573b3877fac3c5a4a9703301502694fe7219b21c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:04:10 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 18:13:55 2018 +0000"
      },
      "message": "Revert^2 \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit db4b1deebf425be5f1d0f597d1ef540f19908324.\n\nFixed JDWP tests, see \"Test:\" stanzas below.\n\nChange-Id: I6fb56ac990b78164cbd3f93c9f6df66e0dd9a813\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: run-jdwp-tests.sh --mode\u003ddevice --variant\u003dX64\nBug: 119868597\n"
    },
    {
      "commit": "db4b1deebf425be5f1d0f597d1ef540f19908324",
      "tree": "5851aab8a4d71b49dbd272b822bfd1ae2cbd08df",
      "parents": [
        "e3c6dfe2009d2fad6f8e4401cb17935bdd09ab9e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:18:07 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Dec 07 17:23:26 2018 +0000"
      },
      "message": "Revert \"Pass boot class path to ImageSpace::LoadBootImage.\"\n\nThis reverts commit d19085141ad9c71eae1b0ff585999ac8e27dadd4.\n\nAlso squash a revert of\n    Fix oatdump tests on target.\n    (commit 77eea0898aca2881a87afd177a0422870c39a318)\n\nReason for revert: Broke JDWP tests.\nBug: 119868597\nChange-Id: I005097d2d96014c961e5a4c0b089e7675004febc\n"
    },
    {
      "commit": "d19085141ad9c71eae1b0ff585999ac8e27dadd4",
      "tree": "24284e84f5df4601bacc2a97c56af1bc5950c253",
      "parents": [
        "523940b40f9701504d6e007dd2af48f315038dc1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 22 14:57:28 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 06 14:43:07 2018 +0000"
      },
      "message": "Pass boot class path to ImageSpace::LoadBootImage.\n\nWhen loading the boot image by ImageSpace, do not rely on\nthe boot class path (BCP) recorded in the primary boot image\noat file. Instead, check the BCP from image against the BCP\nprovided by the Runtime, i.e. from -Xbootclasspath:_ or the\nenvironment variable BOOTCLASSPATH. For now, allow Runtime\nto extract the BCP from the primary boot image oat file when\nwe have -Ximage:_ but no BCP.\n\nAlso pass the boot class path components down to the OatFile\nso that we can open and use the original dex files when we\ndo not have copies in the vdex files. This allows compiling\napp prebuilts when the boot dex files are uncompressed and\naligned in the original jars.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: Pixel 2 XL boots.\nTest: m test-art-target-gtest\nTest: testrunner.py --target --optimizing\nTest: run-libcore-tests.sh --mode\u003ddevice --variant\u003dX64\nTest: Manually create boot image jars with uncompressed and\n      aligned dex files, compile a boot image with dex files\n      not copied into vdex files and use this boot image for\n      compiling a prebuilt services.{art,vdex,odex}.\nBug: 119868597\nChange-Id: If9411ddbecf6bb90bfa9233040931c5e833f6aee\n"
    },
    {
      "commit": "2bb2fbd2879d0a6d9ebf7acff817079dde89b417",
      "tree": "d607aa6bfb2ea55fbfd875237b37c79f3cfed5f6",
      "parents": [
        "85865697ff9fabede3d64ff64cde72727c3fc4c1"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Nov 13 18:24:26 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Nov 16 11:11:20 2018 +0000"
      },
      "message": "Create SdkVersion enum, migrate users to it\n\nCreates a new SdkVersion enum with integer codes of known\nAndroid SDK versions, together with helper functions for common\npredicates. Also converts target_sdk_version_ in Runtime to\nuint32_t and cleans up its uses.\n\nTest: m test-art\nChange-Id: Idc6e518c8675068bf952d0256686c88bb0eb833e\n"
    },
    {
      "commit": "9186b182c0e0e5d57dc15a03e4f8d0f2951f3a96",
      "tree": "e230bdce1f86d411c50ded9efc588590e98df261",
      "parents": [
        "a5175541c197e7bf9b03651ea5da4e64a2ac2d27"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 06 14:55:54 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 07 10:06:43 2018 +0000"
      },
      "message": "Refactor ClassLinker::FindPrimitiveClass().\n\nIntroduce ClassLinker::LookupPrimitiveClass() that never\nthrows an exception and use it to clean up callers that\nare not supposed to cause thread suspension.\n\nTest: m test-art-host-gtest\nBug: 118909457\nChange-Id: Ibfee8b7991c4a0d1fa636c85f14437c9865d1658\n"
    },
    {
      "commit": "7f226244e8adbda8019024bcf010ef3f0a8a3b0c",
      "tree": "a79f4d38979f0885d31bb0b7a201f02b8d11dc0e",
      "parents": [
        "0708fc0c096fb4126c2029d0172830cf0c8e159b"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 01 18:36:46 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Nov 01 18:38:13 2018 +0000"
      },
      "message": "Remove VMRuntime.hasUsedHiddenApi()\n\nNot needed with removal of the UI toast.\n\nTest: m, phone boots\nChange-Id: I8a99b264b66d8e9f2096b5531ad4294012a7b010\n"
    },
    {
      "commit": "8e0f04319c7c3ddee60c505376b31768533b0dd5",
      "tree": "b9d215de61b3a16895695e52ff4ee5ecbd985f14",
      "parents": [
        "88dbad33ae92167a89a5d5469f39f41624535dbf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 24 13:38:03 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 25 09:52:37 2018 -0700"
      },
      "message": "ART: Add array-alloc-inl.h\n\nIn an effort to reduce the (transitive) proliferation of heap-inl\nadd a specific inline header for array allocation.\n\nBug: 118385392\nTest: mmma art\nTest: m test-art-host\nChange-Id: Id3378f40c52fa7ef4297af08cb7509e0c04b94d1\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "08dfdf96f7885f92821fe34e8a45f1930fcb4e82",
      "tree": "e463f6a5f0a9cbbf0c8fb47edf6e86155bd3d1f9",
      "parents": [
        "1f0133bc00f96316224a7547bbe4ecc6b406c46e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 09 10:40:25 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 09 11:24:22 2018 -0700"
      },
      "message": "ART: Add VMRuntime.hasBootImageSpaces implementation\n\nExpose to the system whether ART is using a boot image.\n\nTest: m\nTest: system boots\nChange-Id: I087c269dd1e95eeeab5db4250133f9c61e9399c7\n"
    },
    {
      "commit": "c55bb390d88b8eb62a50932f7f9b47c2a3733f16",
      "tree": "ec2e74f3f8404dffcb9bfde4e7ffa3416a35543d",
      "parents": [
        "89468aeaa6a67ae4025b30d427391186306d6522"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 21 00:02:02 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 18:37:12 2018 -0700"
      },
      "message": "Revert^2 \"ART: Refactor typedef to using\"\n\nThis reverts commit ee07743e03042c2ca36e0c9513847a9e7d2509f1.\n\nReason for revert: fixed attributes.\n\nBug: 32619234\nTest: m test-art-host\nTest: m test-art-target-gtest-unstarted_runtime_test\nChange-Id: I6f0a775adfdf6ecd132b470f7c5446e949872e20\n"
    },
    {
      "commit": "ee07743e03042c2ca36e0c9513847a9e7d2509f1",
      "tree": "66867d7443a3798f6d882ef2715ddeb7baf3e771",
      "parents": [
        "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 20 15:05:17 2018 +0000"
      },
      "message": "Revert \"ART: Refactor typedef to using\"\n\nThis reverts commit 9a20ff06f7ccee08a742c315ec6d351ab56ba1cd.\n\nReason for revert: Attributes on the wrong side.\n\nBug: 32619234\nChange-Id: I8fd2abef619b22c02ccfbf5ae629339f1a60918b\n"
    },
    {
      "commit": "9a20ff06f7ccee08a742c315ec6d351ab56ba1cd",
      "tree": "7e55557e118eb5fffe03ad3456e00d8469a36232",
      "parents": [
        "70dfb6983492aff1c52cc1b52044258aef51f47f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 10:58:18 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 19 21:56:32 2018 -0700"
      },
      "message": "ART: Refactor typedef to using\n\nAdd clang-tidy\u0027s modernize-use-using.\n\nBug: 32619234\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: If50d37b5152af4270784e3cde7951292a9e19033\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "dff360005477e35edaeaf147fd381cc6819fcf3d",
      "tree": "f9533ad32c92c8f4bcff855eb8e36aa702b5af22",
      "parents": [
        "a28919e3e9df681e300db75025661b24f47fea17",
        "3ba43965ee5f9538dc38f1954c7551d245e6fccf"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 16:35:01 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 04 16:35:01 2018 -0700"
      },
      "message": "Merge \"Revert \"Revert \"Move runtime/ to ClassAccessor\"\"\" am: 6ed28cb9e6\nam: 3ba43965ee\n\nChange-Id: I82956abbb60fee7513d69ccbed994789294ee077\n"
    },
    {
      "commit": "1f1cb9f2f0945dbcf6b79d0795b035233dfd9131",
      "tree": "fc5f72ef884e0eaa92f515a90cfd997b0938208a",
      "parents": [
        "9ddef18ae95859a985e7a0de7e22999fcbc28e07"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 09:22:46 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 04 20:41:12 2018 +0000"
      },
      "message": "Revert \"Revert \"Move runtime/ to ClassAccessor\"\"\n\nFixed misplaced UnhideAccessFlags to be outside of a conditional\nthat the code item is null / not deduped. This fixes an issue\nwhere these methods would not have had their access flags restored.\n\nBug: 77709234\nBug: 79758018\nBug: 91962648\n\nThis reverts commit cc7e20f9ec7b4a7a57f7196e5e8be67a727f21d3.\n\nTest: test-art-host\nTest: atest FrameworksUiServicesTests\nTest: atest CtsInlineMockingTestCases\n\nChange-Id: I7e5712cdcccef81e19ce81d26743c517b0b8a67d\n"
    },
    {
      "commit": "406555ad2a0b590699c104339db86f56c2fcbc2a",
      "tree": "789e609d81eca91c3484123b9846dfbe0828aa61",
      "parents": [
        "5b8b222c7a1059c0fe630377b4f40b96b0d1b954",
        "da745da72f2039afa1fd555d7640837363c2c70e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 04 11:37:56 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 04 11:37:56 2018 -0700"
      },
      "message": "Merge \"ObjPtr\u003c\u003e-ify array allocations.\" am: 9ddef18ae9\nam: da745da72f\n\nChange-Id: Ie8b275d860053a9cf3aa7decd2dd8313e88a781a\n"
    },
    {
      "commit": "c13154bc2c8b8fe7e4e2455c200e11244cb6df76",
      "tree": "9abf49b90510490682191353aa85f760491bd267",
      "parents": [
        "af5dc55dee5e8e613b32c116949f1ab3a43851ec",
        "6da56aa2b70b7f72e2f17460e00dcdb5acf7ee30"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 04 11:35:58 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 04 11:35:58 2018 -0700"
      },
      "message": "Merge \"Revert \"Move runtime/ to ClassAccessor\"\" am: 5ab7d77cdc\nam: 6da56aa2b7\n\nChange-Id: I7cd201b238f50ada73fa0a32bfc2e9acc99d0435\n"
    },
    {
      "commit": "cc7e20f9ec7b4a7a57f7196e5e8be67a727f21d3",
      "tree": "3aebc9078ad94f132f7a5df0813a97bbdd4c4ed9",
      "parents": [
        "2649ecf6c59a29262556aa356fbf894d49df8fe7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Jun 02 05:37:39 2018 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Sat Jun 02 15:45:36 2018 +0000"
      },
      "message": "Revert \"Move runtime/ to ClassAccessor\"\n\nSeems to cause \u0027atest CtsInlineMockingTestCases\u0027 and other tests\nto fail due to sending agents dex files with hiddenapi flags still\npresent.\n\nThis reverts commit 2649ecf6c59a29262556aa356fbf894d49df8fe7.\n\nReason for revert: Seems to be causing sysui test failures, maybe\n\nBug: 77709234\nBug: 79758018\nBug: 91962648\n\nTest: Tree-Hugger\n\nChange-Id: I2cab5d0d58808dd8beb38400d2811307f26e1021\n"
    },
    {
      "commit": "bcf175247272d0e321c8d988c3c01c123b56e36e",
      "tree": "9f65ece5ce9474aa4fcf16fbfca6278109dc9a67",
      "parents": [
        "09c5ca40635faee00f40f6ca0581dd475efd545e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 13:14:32 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jun 01 16:31:30 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify array allocations.\n\nAnd remove some unnecessary calls to ObjPtr\u003c\u003e::Ptr().\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 31113334\nChange-Id: Ie313980f7f23b33b0ccea4fa8d5131d643c59080\n"
    },
    {
      "commit": "f8f6629fca7b831d2416db3b150d80a3c2e465f2",
      "tree": "fec93d27b6d8963780254278363d2c1cb1391ef6",
      "parents": [
        "25916259ef4410ec2cf5e5d91e7b0f228ce14cdd",
        "61afc76d9296d97a6d9f6f54c3c7401c747c6efb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 31 17:18:33 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 31 17:18:33 2018 -0700"
      },
      "message": "Merge \"Move runtime/ to ClassAccessor\" am: df0eef1aec\nam: 61afc76d92\n\nChange-Id: I90111046530d4152ef08c26ace96dc2a3d96c7b3\n"
    },
    {
      "commit": "2649ecf6c59a29262556aa356fbf894d49df8fe7",
      "tree": "5534dfcb7d32be889acba07787b303c221869f82",
      "parents": [
        "65e463cf7ea91003ef030c8a819ae4596c9b820f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 29 14:07:52 2018 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 31 11:24:30 2018 -0700"
      },
      "message": "Move runtime/ to ClassAccessor\n\nAdded more iterator helpers, added logic for dealing with hidden API\nflags.\n\nBug: 77709234\nBug: 79758018\nTest: test-art-host\n\nChange-Id: I3e6d34dd3fe61f1a3256a1cc4c74b63a6bdf514c\n"
    },
    {
      "commit": "215185c86bb4be276d35ffac73187825a87138bf",
      "tree": "b41d0ba33d20f72368e824062b3f916133ab122f",
      "parents": [
        "ee04668aa4c0468383e9be301ba3dd8ae964ef00",
        "596559b879cf80f54f334c44c94cdc4cbd2d1665"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri May 18 07:47:10 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri May 18 07:47:10 2018 -0700"
      },
      "message": "Merge \"Fix test 674-hiddenapi when debuggable.\" am: 8d744d9ea5\nam: 596559b879\n\nChange-Id: I9bc6eacb31b426bb13f0907f3b767affd74cd6c2\n"
    },
    {
      "commit": "eef7757941f2681814462b0f55d29a562c0200da",
      "tree": "647d552b640745f6ca101bee382866fc0aeedae6",
      "parents": [
        "9c422cc4ef2f1825c60a43a1e8d770f270b076e7"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri May 18 13:32:09 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri May 18 13:32:37 2018 +0100"
      },
      "message": "Fix test 674-hiddenapi when debuggable.\n\nThe runtime warns for debuggable apps even when access to an API is\nallowed. Update the expectations of this test accordingly.\n\nThis requires exposing Runtime::IsJavaDebuggable to the java code so\nit knows what to expect.\n\nTest: $ art/test.py -b --host --debuggable -t 674-hiddenapi\nBug: 79914966\nChange-Id: I339f205d7153cf7b1c12dc06813c768608921684\n"
    },
    {
      "commit": "92317b6bd7dafbec477b5fe9b25e6fb711538a52",
      "tree": "7228afc6a4ee6d9a22d7f1d664626bb075c2d3c9",
      "parents": [
        "bcb15694bb6d03be5b777f8fcd8eeda0afa060c5",
        "41463f3862bb04d68c49bc86759710034708819d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 09 05:47:42 2018 -0700"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed May 09 05:47:42 2018 -0700"
      },
      "message": "Merge \"ART: Move JNI files to runtime/jni/ .\" am: 4ed794415b\nam: 41463f3862\n\nChange-Id: I659d406ee31f31fbeef5445a05e669deb7218b52\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": "c9c87f63f7809568fbab751c8f07107e6151cced",
      "tree": "0e5638287e956bec467829159bbb1878d123eec4",
      "parents": [
        "0a054d3e8d00ba4f9841883bf3f8452b8578cf6a"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 19 14:40:40 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:31:56 2018 +0100"
      },
      "message": "Add VMRuntime.setDedupeHiddenApiWarnings().\n\nThis exposes the equivalently named functionality in arts Runtime class.\n\nTest: m\nBug: 78268765\nMerged-In: If5b2fff70a079d588ae3bba706ab7f572afac0b2\nChange-Id: If5b2fff70a079d588ae3bba706ab7f572afac0b2\n(cherry picked from commit 80900a3c6746a64b17121734af776f49f0570723)\n"
    },
    {
      "commit": "1fd97f29d646770c5e8ddee2e8fe468ffcc9ea2c",
      "tree": "be2fbd393abfe438c1e734055f1d3d084755e6a6",
      "parents": [
        "9a13d423c71517bc9cb3cf40e97dd0f6f5d5c72c"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Apr 03 15:32:32 2018 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue May 08 10:31:20 2018 +0100"
      },
      "message": "Log an event on hidden API accesses.\n\nThe new event consists of:\n- The type of access (reflection, JNI, etc.)\n- The action taken (warn or deny)\n- The type of member accessed (field or method)\n- Name of the class which defined the member accessed\n- The name of the member\n- The type signature of the member (type of field, or method signature)\n\nThe fully qualified member name is also not included to avoid the overhead\nof building the string. It can be build from the information included.\n\nSimilarly, the package name, version, etc. are not included as they can\nbe inferred from the context when analyzing the event log.\n\nThe event is sampled, according to a sampling rate that can be set by a\nconfiguration option, to reduce log spam.\n\nTest: $ m\nTest: $ adb shell settings put global hidden_api_access_log_sampling_rate 65536\nTest: $ adb lolcat -b events | grep art_hidden_api_access\n\nSample output:\n16796 16796 I art_hidden_api_access: [1,0,Ldalvik/system/VMRuntime;,getRuntime,()Ldalvik/system/VMRuntime;]\n16796 16796 I art_hidden_api_access: [1,2,Ldalvik/system/VMRuntime;,setHiddenApiExemptions,([Ljava/lang/String;)V]\n16796 16796 I art_hidden_api_access: [1,3,Landroid/app/Activity;,mDoReportFullyDrawn,Z]\n(Timestamps have been elided)\n\nBug: 64382372\nBug: 77517571\nMerged-In: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\nChange-Id: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\n(cherry picked from commit 73ddda4403c8088a730b8d456de46bb8e0307ed8)\n"
    },
    {
      "commit": "5bcef17fcee4f535c6d39177b1c55eefea81f854",
      "tree": "e2f821e5f3f17b20a3c76f3d8956968496cb3bf0",
      "parents": [
        "a5dea30f762266dc87e4160e8139101e9d01cde3"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue May 01 14:40:12 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue May 01 15:34:58 2018 +0100"
      },
      "message": "Include package name in tron events.\n\nAdd this state to Runtime, together with a getter and setter to it can be\npassed at zygote fork time.\n\nThe package name needs to be included in the event itself, as the PID/UID\nalso present are not used to look up the package name later.\n\nBug: 77517571\nTest: m\nTest: $ adb lolcat -b events | grep sysui_multi_action\nChange-Id: I40ec89152b5ecc9a81555f2e74bc4f4b44b2bcac\n"
    },
    {
      "commit": "80900a3c6746a64b17121734af776f49f0570723",
      "tree": "8db2e4b7f0991cfc6d00ee4bda38c13b40f659c0",
      "parents": [
        "9f3a0c3d5171f49111e11a62b6ff746a7838afe0"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 19 14:40:40 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Thu Apr 19 14:40:40 2018 +0100"
      },
      "message": "Add VMRuntime.setDedupeHiddenApiWarnings().\n\nThis exposes the equivalently named functionality in arts Runtime class.\n\nTest: m\nBug: 78268765\nChange-Id: If5b2fff70a079d588ae3bba706ab7f572afac0b2\n"
    },
    {
      "commit": "73ddda4403c8088a730b8d456de46bb8e0307ed8",
      "tree": "f07d4b781f15f0750292523029e1dcf27a7324b3",
      "parents": [
        "5665c97b421166f08df08cbd028d757a21000ff5"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Apr 03 15:32:32 2018 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Apr 11 13:14:50 2018 +0100"
      },
      "message": "Log an event on hidden API accesses.\n\nThe new event consists of:\n- The type of access (reflection, JNI, etc.)\n- The action taken (warn or deny)\n- The type of member accessed (field or method)\n- Name of the class which defined the member accessed\n- The name of the member\n- The type signature of the member (type of field, or method signature)\n\nThe fully qualified member name is also not included to avoid the overhead\nof building the string. It can be build from the information included.\n\nSimilarly, the package name, version, etc. are not included as they can\nbe inferred from the context when analyzing the event log.\n\nThe event is sampled, according to a sampling rate that can be set by a\nconfiguration option, to reduce log spam.\n\nTest: $ m\nTest: $ adb shell settings put global hidden_api_access_log_sampling_rate 65536\nTest: $ adb lolcat -b events | grep art_hidden_api_access\n\nSample output:\n16796 16796 I art_hidden_api_access: [1,0,Ldalvik/system/VMRuntime;,getRuntime,()Ldalvik/system/VMRuntime;]\n16796 16796 I art_hidden_api_access: [1,2,Ldalvik/system/VMRuntime;,setHiddenApiExemptions,([Ljava/lang/String;)V]\n16796 16796 I art_hidden_api_access: [1,3,Landroid/app/Activity;,mDoReportFullyDrawn,Z]\n(Timestamps have been elided)\n\nBug: 64382372\nBug: 77517571\nChange-Id: I012b2c9fbffbd00ed3219918e7a736a4f7435ec8\n"
    },
    {
      "commit": "3383aa5cc3bac56576cf48086183f59ac4de279e",
      "tree": "e196c531cf374143e6ed7d50ab084f831f3b8af2",
      "parents": [
        "a89c832fc02e57f678731860cd6059aac0535d85"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Mar 16 14:18:33 2018 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Mar 28 11:53:22 2018 +0100"
      },
      "message": "Support for API exemptions from API blacklisting.\n\nAdd support to VMRuntime for setting a list of exemptions from the hidden\nAPI enforcement. The list is used as a prefix match against the signature\nof a field/method. Any signatures that match are treated as being on the\nlight grey list, rather than the dark grey list or blacklist.\n\nRefactor some code in hidden_api.h that deals with field/method signatures,\nto encapsulate the signature in a new class MemberSignature. This allows us\nto avoid building the entire signature in member, instead just using its\nconstituent parts.\n\nTest: $ make test-art-host-gtest-hidden_api_test\nTest: $ adb shell settings put global hidden_api_blacklist_exemptions \\\nTest:    Landroid/view/RemoteAnimationDefinition\\\\\\;:Landroid/app/ActivityManager\\\\\\$TaskDescription\\\\\\;\nTest: Manually verify logcat output from app which uses named APIs\nBug: 73337509\n\n(cherry picked from commit 7d74ef585063ca2adc0ba9c18008b7c1671ff699)\n\nMerged-In: Id608743d1b5a7a37059875d8991d0d4d65f5fc36\nChange-Id: Ic868557e12c3896888184501a59481a56edebd03\n"
    },
    {
      "commit": "7d74ef585063ca2adc0ba9c18008b7c1671ff699",
      "tree": "eba7606a42ed036ca560564a939da1528aa8ba54",
      "parents": [
        "e8a4e378c5a928d5de07bee6db99150a57dabcd8"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Fri Mar 16 14:18:33 2018 +0000"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Tue Mar 27 16:28:57 2018 +0100"
      },
      "message": "Support for API exemptions from API blacklisting.\n\nAdd support to VMRuntime for setting a list of exemptions from the hidden\nAPI enforcement. The list is used as a prefix match against the signature\nof a field/method. Any signatures that match are treated as being on the\nlight grey list, rather than the dark grey list or blacklist.\n\nRefactor some code in hidden_api.h that deals with field/method signatures,\nto encapsulate the signature in a new class MemberSignature. This allows us\nto avoid building the entire signature in member, instead just using its\nconstituent parts.\n\nTest: $ make test-art-host-gtest-hidden_api_test\nTest: $ adb shell settings put global hidden_api_blacklist_exemptions \\\nTest:    Landroid/view/RemoteAnimationDefinition\\\\\\;:Landroid/app/ActivityManager\\\\\\$TaskDescription\\\\\\;\nTest: Manually verify logcat output from app which uses named APIs\nBug: 73337509\nChange-Id: Id608743d1b5a7a37059875d8991d0d4d65f5fc36\n"
    },
    {
      "commit": "ea179f477465789605e0c8f57a3ec660c3d852e8",
      "tree": "bde254b238c9ed42a5c0ae3ff14ffacadeeddb34",
      "parents": [
        "d991e5119a2bb61542899da9708f794dc60677c4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 08 22:30:18 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 15 15:47:02 2018 +0000"
      },
      "message": "Refactor method resolution in class linker.\n\nRewrite all runtime callers of DexCache::SetResolvedMethod\nto call a shared method that will do the dex cache update.\n\nbug: 64759619\nTest: test-art-host\nTest: device boots, runs\n\nChange-Id: Icc1aca121030e2864de09667bdbc793b502e3802\n"
    },
    {
      "commit": "4384b104a5a023535fc613d7f08564b681f164b6",
      "tree": "d417f3b2ef61402bd209da26b49afaf22cd1ec60",
      "parents": [
        "9779e6f470f91a688d81e7edd5f9e3990abafe32"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Jan 23 16:10:36 2018 +0000"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Thu Jan 25 14:17:03 2018 +0000"
      },
      "message": "Expose pending hidden API warning through VMRuntime\n\nFramework might want to show a warning message to the user when the\napp has used hidden APIs. Add a JNI method through which framework\ncan query ART about the state of the warning flag.\n\nBug: 64382372\nTest: make\nChange-Id: I9d63db39b4d351647e6de8a64daa30c3288a5bee\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": "55256cb60e11d4fac71affb4b9760a2931a3598d",
      "tree": "fc1ed6885b013e0aa2bcfd9ef4dd94fec29bd382",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 21 17:07:11 2017 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 22 10:11:39 2017 -0800"
      },
      "message": "Extensions to check JNI.\n\nEnsure critical lock isn\u0027t held when returning from a down-call.\nLog a warning if the critical lock is held for a significant period of\ntime.\nRefactor JNIEnvExt to be a class rather than a struct.\n\nTest: mma test-art-host\n\nChange-Id: I4d149cb04d3a7308a22b92b196e51e2f1ae17ede\n"
    },
    {
      "commit": "666ee3d7c6039c80e75287e311895bd6a9b01e9f",
      "tree": "5e65f39ff7cc83af4be3b691c247d7348052f854",
      "parents": [
        "890111968fbd3f5ae528d97e42984c12a3dd27bd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 11 18:37:36 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 12 13:48:02 2017 +0000"
      },
      "message": "Do not pass DexFile to ClassLinker::Lookup/ResolveType().\n\nThe DexFile can be easily retrieved from the DexCache,\nso reduce the number of arguments that need to be passed.\n\nAlso refactor the code to avoid doing the DexCache lookup\ntwice and avoid unnecessary read barriers in the initial\nDexCache lookup (also for Lookup/ResolveField()).\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Idea9aa42b6a5bade947e93e330b1abdb9d11b2da\n"
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "d0332e01ac26c2fd0a900de000a55ed5768ff936",
      "tree": "f65403f1dc6c3ff93c4cae9c1d60851db4e1be88",
      "parents": [
        "31275df5ea1b91ed668618d6ec64a76d67cee73c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 22 19:23:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Do not depend on libnativehelper - toStringArray\n\nDirectly implement the single vector-\u003eString[] invocation.\n\nBug: 65522645\nTest: m test-art-host\nChange-Id: I019f1811d967b049355eef3dcf68835504f86113\n"
    },
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "753d613704b86d37e9e2286dde22ab3452908f66",
      "tree": "1de1336786add03acb4be78462bf5806395a7fb9",
      "parents": [
        "c73753f70ab4fc9a166637bee514b292f0fa0109"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 12:43:24 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 14:32:05 2017 +0100"
      },
      "message": "Update VMRuntime.preloadDexCaches() for hash-based arrays.\n\nDo not try to fill entries that already contain some\nresolved item to avoid unnecessary work. We do not know\nwhich of the conflicting items may be needed later.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boot.\nBug: 30627598\nBug: 63892794\nChange-Id: Ie52f4455da544c1a3d2a61660c14c13c488c3fd7\n"
    },
    {
      "commit": "331f4c4e287791611733120c1a1c2afd55ecdd65",
      "tree": "1fcf7810c6c8e2df8b6191bb14a69084f3c7cf11",
      "parents": [
        "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "message": "Merge \"ART: Change method lookup to be more consistent to JLS and the RI.\""
    },
    {
      "commit": "ba118827465d12177f3996e50133960087b1c916",
      "tree": "f39728cdafc7810004d51c0bef2728b98993daa9",
      "parents": [
        "64a102dde8c5daad83b991710decb418ce43aac5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:41:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 13:35:06 2017 +0100"
      },
      "message": "ART: Change method lookup to be more consistent to JLS and the RI.\n\nThe method lookup for different invoke types was previously\nwidely different and didn\u0027t work well with the dex cache\nmethod array where we have only a single slot for each\nMethodId. The new behavior is to perform the same lookup for\nall cases, distinguishing only between interface and\nnon-interface referencing class, and to further align the\nbehavior with the JLS and the RI. Where the JLS conflicts\nwith the RI, we follow the JLS semantics.\n\nThe new lookup for class methods first searches the methods\ndeclared in the superclass chain (ignoring \"copied\" methods)\nand only then looks in the \"copied\" methods. If the search\nin the superclass chain finds a method that has not been\ninherited (i.e. either a private method or a package-access\nmethod where one of the classes in the chain does not belong\nto the same package, see JLS 8.4.8), we still search the\n\"copied\" methods as there may actually be a method inherited\nfrom an interface. This follows the JLS semantics where\ninherited methods are included in the search (JLS 15.12.2.1)\nbut conflicts with the RI where the private or\npackage-access method takes precedence over methods\ninherited from interfaces.\n\nNote that this search can find an accessible method that is\nnot inherited by the qualifying type, either for a package\naccess method when the referrer is in the same package but\nthe qualifying type is in another package, or for a private\nmethod where the referrer is in the same class but the\nqualifying type is actually a subclass. For the moment we\nallow such calls and we shall consider whether to throw\nan IncompatibleClassChangeError in this situation in future\nto comply with JLS 15.12.4.3.\n\nThe new lookup for interface methods searches the interface\nclass, then all the superinterfaces and then the\njava.lang.Object class, see implicitly declared methods in\ninterfaces, JLS 9.2. The search for the maximally-specific\nnon-abstract superinterface method is not yet implemented,\nbut the difference should be difficult to observe as the\nusual subsequent call to FindVirtualMethodForInterface()\nshould yield the same result for any matching method.\n\nThe new test 162-method-idx-clash exposes several cases\nwhere we previously completely messed up due to the effects\nof the DexCache, or where we were out of line with the RI.\nIt also tests a case where the JLS and the RI disagree and\nwe follow the JLS.\n\nTest: art/test/run-test --host --jvm 162-method-resolution\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nBug: 62855082\nBug: 30627598\nChange-Id: If450c8cff2751369011d649c25d28a482a2c61a3\n"
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "87583b3de6e811e141f8c97c1f796eb516e8a751",
      "tree": "5b4688f306a2fda2f29bf319a8e1ff21309f93a3",
      "parents": [
        "854461a4cd5e4a38debe3616e12b52fe7f160782"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 25 11:22:18 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 08:24:12 2017 -0700"
      },
      "message": "ART: Move RegisterNatives helper\n\nMove the helper closer to the users.\n\nTest: m test-art-host\nChange-Id: Id05ce5f60af54d0c5aef0c7d8932706c4602fc94\n"
    },
    {
      "commit": "a14100ccf51cc63a5c472188d1e2d337627e49eb",
      "tree": "d659a038e35fdd790b642f51e3eddbc9b51d003a",
      "parents": [
        "1171deea4cb2f2db67a310ea8797d06206b2bdea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 15:09:56 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 16:10:27 2017 -0700"
      },
      "message": "ART: More header cleanup - jni_internal.h\n\nMove jni_macros.h to the clients (users of RegisterNativeMethods).\n\nTest: mmma art\nChange-Id: I052ac9f703ec69f0a2df1efcaf9f4a450eb7be1c\n"
    },
    {
      "commit": "c15a2f4f45661a7f5f542e406282c146ea1a968d",
      "tree": "50ad6104b0b8739f272782c35a7022cca64d2601",
      "parents": [
        "9ae527f615f61aec4aaca310c52f373e8c3d8d58"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 12:09:39 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 16:48:00 2017 -0700"
      },
      "message": "ART: Add object-readbarrier-inl.h\n\nMove some read-barrier code into a new header. This prunes the\ninclude tree for the concurrent-copying collector. Clean up other\nrelated includes.\n\nTest: mmma art\nChange-Id: I40ce4e74f2e5d4c692529ffb4df933230b6fd73e\n"
    },
    {
      "commit": "35b59a262f660adaf30db11bc0c3d14bb56ebf79",
      "tree": "d022eb3b0d944daa054e124165c8b8e988c9c9d8",
      "parents": [
        "36831abc29f76baee9a7673a2c18465f33df3f05"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 17 15:24:43 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 18 17:29:02 2017 +0000"
      },
      "message": "Differentiate between native alloc and normal background GC\n\nAdded a new GC cause kGcCauseForNativeAllocBackground.\n\nBug: 35872915\n\nTest: test-art-host\n\nChange-Id: I94e17f8bd53af29f2862b9910bd8abd2df97e229\n"
    },
    {
      "commit": "d66def32a2d7ee5e7c5225dce52b980b63bce91c",
      "tree": "e1f6db3a25115e85537fb35882179f3e6f7d6d62",
      "parents": [
        "8682fce2634c392510b98ab0b08544a7336143b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 04 10:09:05 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 04 10:09:05 2017 -0700"
      },
      "message": "ART: Fix preloaded dex cache expectations\n\nIn fallback mode, there may not be dex caches for all boot classpath\ndex files - there is no guarantee that a class from every dex file\nhas been loaded.\n\nBug: 36033084\nTest: m\nTest: m test-art-host\nTest: manual - fill the /data partition, reboot\nChange-Id: I3752b48d9d61947959e8056bd01db0e323724d37\n"
    },
    {
      "commit": "d7f0339f45537c55812dc458340eb6415406c100",
      "tree": "445143f4bf747f672a29f65b7f32fc376c10bb00",
      "parents": [
        "c700f00067aa9ed6d250478e530d653f22125814"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 29 14:47:49 2017 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 30 13:48:18 2017 -0700"
      },
      "message": "Lower daemons priority to 124 (art).\n\nTo avoid jank.\n\n(chery picked from commit 38a57ef702964b82836f89a1f996aff4d1453d94)\n\nBug: 36631902\nTest: boot marlin oc-dev and check priorities.\nTest: test-art-host\nChange-Id: I8f809fbf5ac9605f656884fcf68643c87f22d154\n"
    },
    {
      "commit": "f44d36c8423f81cbb5e9f55d8813e26ffa1a7f3b",
      "tree": "324b41485ce6c414c1a006c72cbcc5ed9f466138",
      "parents": [
        "8d6768d47b66a688d35399d524ad5a5450e9d9d4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 14:18:46 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 14 19:03:20 2017 +0000"
      },
      "message": "Revert^2 \"Hash-based DexCache field array.\"\n\nTest: testrunner.py --host --interpreter\nBug: 30627598\n\nThis reverts commit 6374c58f2ea403b3a05fb27376110fe4d0fc8e3f.\n\nChange-Id: I275508e288a85d3aa08f7405a1a4f362af43b775\n"
    },
    {
      "commit": "6374c58f2ea403b3a05fb27376110fe4d0fc8e3f",
      "tree": "0aacaaf1f193e96b55e0b203b678ae724c0fb6f5",
      "parents": [
        "8f323e09e692ff4f95f40300391fe41fb96a6c49"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:51:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Mar 13 14:52:17 2017 +0000"
      },
      "message": "Revert \"Hash-based DexCache field array.\"\n\nReverting to allow rebasing the revert\n    https://android-review.googlesource.com/351689\nwithout too many conflicts.\n\nBug: 30627598\n\nThis reverts commit 1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64.\n\nChange-Id: I4af65e9f41c8bad8106c028947eca7c5a9534c53\n"
    },
    {
      "commit": "1aea3510b8dd0c512cec61c91c5ef1f1e5d53d64",
      "tree": "94cbab7c3097ce7d3a1feb1a69f28406644af085",
      "parents": [
        "d1d4530ffa97729aa8944932a7ac2009ae51c7e3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 08 11:39:42 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Mar 10 12:59:37 2017 +0000"
      },
      "message": "Hash-based DexCache field array.\n\nTest: m test-art-host, both AOT and interpreter\nTest: m test-art-target, both AOT and interpreter\nTest: m valgrind-test-art-host\nBug: 30627598\nChange-Id: If992f091aadd862d17b09928d21659573dd285a0\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": "3b6f440dbd066f03a737da6d292074f47b3fbc29",
      "tree": "af0da4bdea7ff689929c8e23e1eaf6361dfc3ee8",
      "parents": [
        "5c19b373ae45ec6d67b41917af63cac8c3ebbe89"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 16 16:13:17 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 21 11:40:51 2017 -0800"
      },
      "message": "jni: Switch to @FastNative for all JNI functions. Deprecate !bang JNI.\n\nSwitches all (248) methods that previously used !bang JNI in art/libcore\nto all use @FastNative.\n\nAlso deprecate !bang JNI since nothing in Android seems to (or should\nbe) using it anymore.\n\nThis measures to be a 3% startup time improvement in system_server.\n\nTest: make test-art-host\nBug: 34955272\nChange-Id: I0881f401c7660c79f275235362777bfa58241deb\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": "cd556b003adbb53739d4b3f43135e6a0ae69509a",
      "tree": "a30c9f03071d87e1f75a0d0b8c2961d113ea767d",
      "parents": [
        "357dcb73934356239292c46d6fbedba734da5e00"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Feb 03 11:47:34 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Feb 09 10:10:29 2017 +0000"
      },
      "message": "Fix dex cache resolved types and class table mismatch.\n\nRecord class table in ClassLinker::DexCacheData and use\nit in DexCache.setResolvedType() to store the type also\nin the initiating loader\u0027s class table if the dex file\nhas been registered.\n\nAlso throw InternalError when trying to register the\nsame DexFile with multiple class loaders. (Different\nDexFile instances referencing the same file are OK.)\n\nTest: 155-java-set-resolved-type\nTest: m test-art-host\nBug: 30627598\nBug: 34193123\nBug: 34839984\nChange-Id: Ia48acb300337c45880ea1459d2d32789546d67f4\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": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "34ee6842a283afe107f0c1df941393f955323b52",
      "tree": "63614db22d589a42f843f1b96e2332e8c89d4860",
      "parents": [
        "5b6fbd02f03fd41829c7dd4bfce97a62346be854"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 02 15:43:52 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 25 11:18:05 2016 -0700"
      },
      "message": "ART: Refactor class-linker methods\n\nHide the LookupClass with hash version. Clients should not have to\nknow about that performance detail.\n\nHide FindClassInPathClassLoader. This is an implementation detail.\n\nTest: m test-art-host\nChange-Id: I2378c6fed8d7d1fb1ead8e042b4cf07228adf25c\n"
    },
    {
      "commit": "28357fab628bd9b91749988b554977398caf9963",
      "tree": "957fac3c1003713c349e0e216762836138c596a7",
      "parents": [
        "c89f9776a107ca20d0146c16fa881db91c4f8266"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 18 16:27:40 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 19 10:04:37 2016 -0700"
      },
      "message": "Move most of class linker to ObjPtr\n\nReturn values are still mirror pointer. Fix some failing asserts in\ncompiler driver and tests.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4450bf9dfb2541749496b8388616e8aae8488919\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": "bc5a795c0d486c84913d987cad5846ded840cea6",
      "tree": "90db29a97a21fa15f4cbc5ffbc1f6dd191add49c",
      "parents": [
        "38a4223fcc0493553d9ad324a1dc145869eb663a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 15:46:31 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 16:16:50 2016 -0700"
      },
      "message": "Move art/native to ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I67eb89cf042c762c6dcd5eb8b008b9a28e9b3319\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\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": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "bb268b14da040c5df27a413426aa2baab602ed15",
      "tree": "04e2fbfa54bc278170d361f97781b066b4abe46a",
      "parents": [
        "d80c5d2368b4455c452e8b4fe2d8511fe1c0430c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jun 30 15:52:56 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jul 04 17:44:17 2016 +0100"
      },
      "message": "Clean up Class::FindStaticField().\n\nPreviously we have wrapped the class pointer in a Handle\nfor the GetDirectInterface() call but we didn\u0027t wrap the\nDexCache pointer. Since GetDirectInferface() call from\nthis function cannot cause thread suspension anyway, fix\nthe inconsistency by using raw pointers where possible\nand asserting that no thread suspension takes place.\n\nTest: Run standard ART test suite in gcstress mode.\nChange-Id: Ie4c6101aabd6fa68733e4920db277f835793d943\n"
    }
  ],
  "next": "f284d448e3edd428b6ade473d0993028638b2064"
}
