)]}'
{
  "log": [
    {
      "commit": "350b626eb1cfbaee7619e9453a4c018c07aed003",
      "tree": "f2994cca6435c728c9f041dc9e9a7ec64f106398",
      "parents": [
        "e2f654a463976f811c5358fc0de68c0492601274"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 16 17:55:55 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jul 25 14:52:47 2014 +0100"
      },
      "message": "Rename openDexFileNative to openDexFile.\n\nWe no longer need two distinct methods.\n\nBug: 15563230\n\n(cherry picked from commit 8edcb9c8bc62fcbd181e136c32086f2b970306a4)\n\nChange-Id: Ib95098af0dd26733b5946d8e24ae4dfbcdbec3ba\n"
    },
    {
      "commit": "cb8f9e8a2941971c049b26745ea713c859342d9b",
      "tree": "c1600a19f134f45ecb8f4feea8c543df751f348f",
      "parents": [
        "80b3f96ec1e408f34b8e7b76b14774794fa1abd8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 24 15:35:50 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 24 15:35:50 2014 -0700"
      },
      "message": "ART: Account for multidex location strings in VMClassLoader\n\nTo look up resources, look in the unadorned location.\n\nBug: 16530747\nChange-Id: Ia97e39366444f6666a78ade7298d3c22b4b79f8a\n"
    },
    {
      "commit": "c114b5fbc91e6d19ef430d9bc3468386ca61b324",
      "tree": "209973deaf02fdcccabc6e2c52a6db5df512aed9",
      "parents": [
        "a6d4bc19b0f68286862ce315377aaeb1e26a726b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 21 08:55:01 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 21 08:55:01 2014 -0700"
      },
      "message": "Fix erroneous behaviors with OOME present.\n\nBug: 16454510\nChange-Id: I757088a7b82ff73f58aba8d357080028b56442e6\n"
    },
    {
      "commit": "f3d874c60ee3ada19ce26a5c4e532312b6f3a9e9",
      "tree": "de14ab8b610f43a2c2c4c02f4ac67d614919fde2",
      "parents": [
        "031ddea20cb311dfdb3bd16a13750f9cb426b299"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 18:52:42 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 18:59:40 2014 -0700"
      },
      "message": "Avoid race in single thread suspension.\n\nDon\u0027t allow more than one concurrent single thread suspension to avoid\npotential cycles and deadlocks where threads try to suspend each other.\nBug: 16364458, 16354227\n\nChange-Id: I907f1d5591a6aa5c241d37d6b4a34f968f98df77\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "9531f62ef260cbd0d0512e4c96f5d5dd2f4fdbb2",
      "tree": "709512d91bb357131ec9d0881826b7b43d08e95e",
      "parents": [
        "f08f0ca4b9538bff516f354532ced57cf077da66",
        "d8434439dc64add41cdfa69ddf96b960af9050de"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Sat Jul 12 01:07:25 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 11 23:26:34 2014 +0000"
      },
      "message": "Merge \"Call strong CAS from unsafe. Add more CAS versions.\""
    },
    {
      "commit": "d8434439dc64add41cdfa69ddf96b960af9050de",
      "tree": "f1d90394dc3b11fd80397ff702413c8710cf1a65",
      "parents": [
        "3d71f321f4b87ba13113dc0457fd9c3470a2b380"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 11 09:56:07 2014 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 11 16:50:37 2014 -0700"
      },
      "message": "Call strong CAS from unsafe. Add more CAS versions.\n\nAdds a number of additional CAS versions.  Calls the correct\none from sun.misc.unsafe, fixing a recently introduced bug.\nAvoid unnecessary ordering constraint when installing hash code.\n\nChange-Id: I7c09d0c95ceb2a549ec28ee34084198ab3107946\n"
    },
    {
      "commit": "98d1cc8033251c93786e2fa8c59a2e555a9493be",
      "tree": "f0a76b8fff060ee484af09028da65a8339d57057",
      "parents": [
        "aebf3cda094f34cf846d19a7724bdc8005267c95"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 15 17:02:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 11 17:17:10 2014 -0700"
      },
      "message": "Improve performance of invokevirtual/invokeinterface with embedded imt/vtable\n\nAdd an embedded version of imt/vtable into class object. Both tables start at\nfixed offset within class object so method/entry point can be loaded directly\nfrom class object for invokeinterface/invokevirtual.\n\nBug: 8142917\nChange-Id: I4240d58cfbe9250107c95c0708c036854c455968\n"
    },
    {
      "commit": "228602f562f1d130d06e60a98752d99c2d467d6a",
      "tree": "ee5b543695843ce48ebec4ffc88514ff679f4e93",
      "parents": [
        "be2a1df15a31a5223ee9af3015a00c31d2ad2e10"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 02:07:54 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 02:07:54 2014 -0700"
      },
      "message": "Make CAS operations in Object use art::Atomic.\n\nMake naming consistent with art::Atomic.\n\nChange-Id: If3abdb019ef8b53bd809e3fef3fd5248aeb27e9a\n"
    },
    {
      "commit": "0f635b103c1fff6439d47bdae363afeffe7327fd",
      "tree": "afa160b8c3b850e5189a1bfa06065faee54eccaf",
      "parents": [
        "32710dd4a0232149002a5ae7bde1c640cdffd564",
        "bae182cbc6adc8796154162a87fc54ae804e0469"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 09 18:52:43 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 09 14:50:30 2014 +0000"
      },
      "message": "Merge \"Fix method tracing from command-line\""
    },
    {
      "commit": "bae182cbc6adc8796154162a87fc54ae804e0469",
      "tree": "d5c1fdb048edab194e948e4e90bff66703c5f55e",
      "parents": [
        "0c1734665c38b3116e38a90ad06c3f152d9316c5"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Dec 17 10:42:03 2013 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jul 09 16:10:45 2014 +0200"
      },
      "message": "Fix method tracing from command-line\n\nTransitions current thread to the new kWaitingForMethodTracingStart thread\nstate when starting method tracing.\n\nEnsures there is a current thread when method tracing is stopped due to runtime\nshutdown. If the current thread has been detached, we now re-attach it.\nNote: we only do this if method tracing has been activated from command-line.\n\nFixes instrumentation when forcing interpreter mode (-Xint) with method tracing\nenabled.\n\nRemoves unused parameter from UnsafeLogFatalForThreadSuspendAllTimeout.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d72094\nBug: 11683397\nChange-Id: I70f000fb46ddd95d6ad51ea0a8eee77697a045e9\n"
    },
    {
      "commit": "b2c369f74f5e4b3bae1cd4b0e251e17e26254f86",
      "tree": "ba285229997e04d47eeb7612e5de9bcf579e8cb3",
      "parents": [
        "fee5586dac3bf22a31dbbffe7b4ca7e978e53185",
        "d735fe4988f93ceb1c3e4b33de5b4b92fdd66385"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Jun 26 20:27:27 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 26 18:02:05 2014 +0000"
      },
      "message": "Merge \"Expanded native code to use arraycopy for specific data types.\""
    },
    {
      "commit": "833a48501d560c9fa7fc78ef619888138c2d374f",
      "tree": "add308298a5486d44caddea120cc9200dd70c38a",
      "parents": [
        "b849f6dd638fd1246724160cd5c01ab1a5ff33bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 21 18:46:59 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 25 19:34:58 2014 -0700"
      },
      "message": "ART: Native support for multidex\n\nNative support for zip files with multiple classesX.dex.\n\nWorks by explicitly looking for those files in ascending order. As\nthese files have no file system representation for themselves,\nintroduce synthetic dex locations: the name of the originating file\nplus a colon plus the name of the dex file, e.g., test.jar:classes2.dex.\n\nOpening a zip dex file will return all dex files in this way. This\nkeeps the changes to dex2oat minimal.\n\nTo hide multidex/synthetic names from the Java layer, let the handle\nof dalvik.system.DexFile refer to a vector of DexFile objects. When\nopening a location, test possible synthetic names and add them to the\nvector. Thus, the original multidex jar in the classpath will be\nassociated with all embedded dex files.\n\nChange-Id: I0de107e1369cbc94416c544aca3b17525c9eac8b\n"
    },
    {
      "commit": "d735fe4988f93ceb1c3e4b33de5b4b92fdd66385",
      "tree": "51ac0f2fecc4d79d8dcddddadfcaca6d1883e761",
      "parents": [
        "0cfcd2e480e92104657c36b2f0075e56ecd697fb"
      ],
      "author": {
        "name": "Emma Meersman",
        "email": "emeersman@google.com",
        "time": "Wed Jun 18 11:50:59 2014 -0700"
      },
      "committer": {
        "name": "Emma Meersman",
        "email": "emeersman@google.com",
        "time": "Fri Jun 20 11:45:40 2014 -0700"
      },
      "message": "Expanded native code to use arraycopy for specific data types.\n\nBug: 7103825\nChange-Id: I09a78701c966064f592948d83dedd2f58214bed8\n"
    },
    {
      "commit": "7bfa86ddf31a961a61e2994fe771345acd1717b4",
      "tree": "8799c7a20c34c311706b3db5978b3d77cc913994",
      "parents": [
        "3a7a8d18a01c6930b9bcf3897762af301b25e8ca"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 11 18:29:07 2014 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Jun 11 18:29:07 2014 -0700"
      },
      "message": "consolidate profiles and profile-cache\n\nOwnership problems originally prevented using the same directory\nfor /data/dalvik-cache/profiles and /data/dalvik-cache/profile-cache.\nNow that ownership is assigned via init.rc, we can consolidate these\ntwo directories.\n\nOld profile files are stored in /data/dalvik-cache/profiles/ with\nthe \"@old\" extension. We use \"@\" instead of \".\" to avoid conflicts\nshould someone create a package ending in \".old\".\n\nChange-Id: Ic1b44009faa30d704855e97631006c4b990a4ad3\n"
    },
    {
      "commit": "c5f17732d8144491c642776b6b48c85dfadf4b52",
      "tree": "811daa488ae5ee5dfd9b3b73bd210bc1506e5ca1",
      "parents": [
        "08654d40cdd256f6a6c8619bf06d04d4c819714a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 05 20:48:42 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 10 23:19:29 2014 -0700"
      },
      "message": "Remove deprecated WITH_HOST_DALVIK.\n\nBug: 13751317\nFix the Mac build:\n - disable x86 selector removal that causes OS/X 10.9 kernel panics,\n - madvise don\u0027t need does zero memory on the Mac, factor into MemMap\n   routine,\n - switch to the elf.h in elfutils to avoid Linux kernel dependencies,\n - we can\u0027t rely on exclusive_owner_ being available from other pthread\n   libraries so maintain our own when futexes aren\u0027t available (we\n   can\u0027t rely on the OS/X 10.8 hack any more),\n - fix symbol naming in assembly code,\n - work around C library differences,\n - disable backtrace in DumpNativeStack to avoid a broken libbacktrace\n   dependency,\n - disable main thread signal handling logic,\n - align the stack in stub_test,\n - use $(HOST_SHLIB_SUFFIX) rather than .so in host make file variables.\n\nNot all host tests are passing on the Mac with this change. dex2oat\nworks as does running HelloWorld.\nChange-Id: I5a232aedfb2028524d49daa6397a8e60f3ee40d3\n"
    },
    {
      "commit": "c2bb441a65c5d1dd0b73d04489514ab09bd53c8a",
      "tree": "a19fbf8372a40441812facb27ec0f661bf395f7c",
      "parents": [
        "4479ba35389b03ccc9eabd17fba6168f9505517a",
        "3035961cb41865b80b927546be0c708b6389cec6"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jun 06 23:45:51 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 06 23:45:52 2014 +0000"
      },
      "message": "Merge \"Clean up and augment Atomic class.  Replace QuasiAtomic MemBars.\""
    },
    {
      "commit": "4479ba35389b03ccc9eabd17fba6168f9505517a",
      "tree": "fb8091b4637b27d8a9d3d4f390b79263a12d9881",
      "parents": [
        "081203e06534e4aa27a942e47084289eecab29ed",
        "61c5ebc6aee2cac1c363de6fbdac25ada1697fdb"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 23:37:27 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 06 23:37:27 2014 +0000"
      },
      "message": "Merge \"Change FieldHelper to use a handle.\""
    },
    {
      "commit": "3035961cb41865b80b927546be0c708b6389cec6",
      "tree": "27ed39f92c013381d08c7ad51d311cb29be230dc",
      "parents": [
        "e21bf0099117b82963cdf7f95a1b8dabfcf29397"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed May 21 17:46:23 2014 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jun 06 16:13:42 2014 -0700"
      },
      "message": "Clean up and augment Atomic class.  Replace QuasiAtomic MemBars.\n\nAdd a number of missing C++11 operations to Atomic class.\nInvoke the 64 bit routines in QuasiAtomic when necessary.\nReplace QuasiAtomic membars with fences that correspond to C++11 fences.\n\nQuasiAtomic was moved to the top of the file.  Only fence implementations\nactually changed.\n\nThis replaces some buggy uses of MembarStoreStore, as reported\nin b/14685856 .\n\nAvoid some redundant fences for long volatile operations.\n\nIncompletely converts low-level memory access operations to Atomic.\n\nChange-Id: Iea828431a0cea46540eb74fcaa02071cab6fdcda\n"
    },
    {
      "commit": "61c5ebc6aee2cac1c363de6fbdac25ada1697fdb",
      "tree": "444936c3e3718b692ba7f1981b863190f26b4ed7",
      "parents": [
        "25c4f6a25b3de9b9d7ca5162f1629753a0b7f003"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 05 17:42:53 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 06 13:12:17 2014 -0700"
      },
      "message": "Change FieldHelper to use a handle.\n\nFixed compaction bugs related to FieldHelper::GetType in:\nartSet32InstanceFromCode\nSetFieldValueImpl\nCheckReceiver\nField_set\ninterpreter::DoFieldPut\nMethodVerifier::VerifyISGet\nMethodVerifier::VerifyISPut\nMethodVerifier::VerifyIGetQuick\n\nBug: 13077697\n\nChange-Id: I7de9ded2893b5568d43e4daa86fd135bf5508b72\n"
    },
    {
      "commit": "20aa7cbe93d782e0e756a36e70d610fe84b4bbb4",
      "tree": "cfaaa9770d5ddbc1034b2c9770a12e6ff4d19b7b",
      "parents": [
        "eab52e3318dd0ab0f357a8420f0a8ccea69d61f1",
        "c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 06 11:15:25 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 06 11:15:25 2014 +0000"
      },
      "message": "Merge \"Fixed and refactored profiler options handling\""
    },
    {
      "commit": "c1b643cc6ac45dbd0eabdcd7425c7e86006c27d6",
      "tree": "250455427da979409a075a2b3197bd43ccd40fe1",
      "parents": [
        "bb0b53f58f11c628f077603b56077dfed1a18f11"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 30 23:44:11 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 06 12:14:01 2014 +0100"
      },
      "message": "Fixed and refactored profiler options handling\n\n- extracted profiler options in a separate class\n- switched from system property reading to command line arguments\n- added profile based compilation options to CompilerOptions\n- removed no longer used kProfile compilation filter\n- optimize dex files only if the profiler is enabled\n- clean up unused arguments\n\nBug: 12877748\nBug: 15275634\nChange-Id: I37ff68e7694370950ce8db2360562e9058ecebb7\n"
    },
    {
      "commit": "eab52e3318dd0ab0f357a8420f0a8ccea69d61f1",
      "tree": "c6ab37ecf7f7500d742a390a4d70900f2a3ccb95",
      "parents": [
        "7a6b77f9a694ea4569fbf44493fdcaeea237a8be",
        "bb0b53f58f11c628f077603b56077dfed1a18f11"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 06 10:58:10 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 06 10:58:11 2014 +0000"
      },
      "message": "Merge \"Clean up the sampling profiler\""
    },
    {
      "commit": "bb0b53f58f11c628f077603b56077dfed1a18f11",
      "tree": "013482db95e8f2dcb7c7be85fc8f35df2c7f1361",
      "parents": [
        "e4283be97047a26d3476acd3863dcc386498be17"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri May 23 17:33:29 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Jun 06 11:53:28 2014 +0100"
      },
      "message": "Clean up the sampling profiler\n\n- rename variables/fields names to match the code style (use\n_underscore_names_)\n- extract common property parsing in utils.cc\n- fail to load profile file if any line is malformed\n- added ProfileFile to manage the profile data generate in the previous\nruns (replaces ProfileHelper and nests ProfileData)\n\nBug: 12877748\nChange-Id: Ie7bda30bfdeb7e78534c986615b0649eac12a97b\n"
    },
    {
      "commit": "eb757eeb244301b8a312cd2b975652341820f42e",
      "tree": "c20fc88f4ac2f45e2ea974cc411bf01b9be19528",
      "parents": [
        "32640daf36acda331719766956b25661647e2461",
        "5221410e960d9af0edcba4206cc48ebdfbfe6be0"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 04 17:37:43 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 04 17:37:43 2014 +0000"
      },
      "message": "Merge \"Use sendfile when copying profile file.\""
    },
    {
      "commit": "5221410e960d9af0edcba4206cc48ebdfbfe6be0",
      "tree": "4224b3925826c35f0c52fac0867bf7175f1adae4",
      "parents": [
        "177b429a54a57adbe922037b1210e596d8348d2a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 04 12:01:50 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 04 16:25:28 2014 +0100"
      },
      "message": "Use sendfile when copying profile file.\n\nThis removes the 4k stack allocation and allow to activate\n-Wframe-larger-than\u003d1728 compiler opion.\n\nBug: 15278350\nChange-Id: I389ffe06feb3c1c1bf620e20164cca04a0594788\n"
    },
    {
      "commit": "86bd038a3242bb645b2625f64941a642d9414b91",
      "tree": "14950c23f707a432e03cc2af39390cdd873cccb6",
      "parents": [
        "57795db7d44bcd6d106481fa192691400b2358c8",
        "177b429a54a57adbe922037b1210e596d8348d2a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 04 12:27:44 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 04 12:27:44 2014 +0000"
      },
      "message": "Merge \"Fix a possible file descriptor leakage\""
    },
    {
      "commit": "177b429a54a57adbe922037b1210e596d8348d2a",
      "tree": "252bffe6c276fa528b0f66d471d726aa94f3552f",
      "parents": [
        "e4283be97047a26d3476acd3863dcc386498be17"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jun 03 16:30:39 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jun 04 11:37:30 2014 +0100"
      },
      "message": "Fix a possible file descriptor leakage\n\nBug: 15279918\nChange-Id: I7909a53f9028d2f445fb97a0a4293f36b3c012dd\n"
    },
    {
      "commit": "f00571c4e1ae202b3b4acb6b47cbe23a65178f7f",
      "tree": "484d129a8265d03eff56c796e92e302e23ad5e16",
      "parents": [
        "f6b5378ba182c5c26c556ae34638afc38adef519"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu May 29 17:29:47 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 02 09:59:22 2014 -0700"
      },
      "message": "Added workaround passing empty arg array for proxy invocation.\n\nThis recreates old Dalvik behavior for older target sdk versions,\nbut will still pass null for newer ones.\n\nBug: 13247236\n\n(cherry picked from commit 01d5a146e20660bd06f026c16f19ec080f8fdd7b)\n\nChange-Id: I911889cf559ad8d9f37ea9be3929387c86446851\n"
    },
    {
      "commit": "b379e8d107b9131d9b6c7b48aea01f9866e4047b",
      "tree": "1eed73cb1dd37de984e8f74b1870e3cf44c24404",
      "parents": [
        "e4e04bbd86d1131b9f380a52a46b1a3b83335d5f",
        "b74cd29802f364b4cec88f4913fa38ade26b8fab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 30 21:15:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 30 21:15:32 2014 +0000"
      },
      "message": "Merge \"Compaction cleanup for FindArrayClass.\""
    },
    {
      "commit": "b74cd29802f364b4cec88f4913fa38ade26b8fab",
      "tree": "73ccdce1c5a6e57d5763cae1f889e53dca2b5e24",
      "parents": [
        "11138c73e0c5f8a90d1eeed3c48a2b63b310671c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 29 14:31:33 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 30 13:58:22 2014 -0700"
      },
      "message": "Compaction cleanup for FindArrayClass.\n\nWe now pass double pointer in to signify that it can cause thread\nsuspension, this double pointer gets wrapped by a handle if don\u0027t\nfind the array class in the cache.\n\nChange-Id: I43436b6c35597c7252b65d1180baddb5ac4caabb\n"
    },
    {
      "commit": "cf4035a4c41ccfcc3e89a0cee25f5218a11b0705",
      "tree": "323d9e98e6129c67e464a3e6857ee02593a2f2c2",
      "parents": [
        "29b53d3d715b1ec19349e8cbf7c5e4ff529bd5fe"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 28 22:43:01 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 29 20:50:49 2014 -0700"
      },
      "message": "ART: Use StackReference in Quick Stack Frame\n\nThe method reference at the bottom of a quick frame is a stack\nreference and not a native pointer. This is important for 64b\narchitectures, where the notions do not coincide.\n\nChange key methods to have StackReference\u003cmirror::ArtMethod\u003e*\nparameter instead of mirror::ArtMethod**. Make changes to\ninvoke stubs for 64b archs, change the frame setup for JNI code\n(both generic JNI and compilers), tie up loose ends.\n\nTested on x86 and x86-64 with host tests. On x86-64, tests succeed\nwith jni compiler activated. x86-64 QCG was not tested.\n\nTested on ARM32 with device tests.\n\nFix ARM64 not saving x19 (used for wSUSPEND) on upcalls.\n\nTested on ARM64 in interpreter-only + generic-jni mode.\n\nFix ARM64 JNI Compiler to work with the CL.\n\nTested on ARM64 in interpreter-only + jni compiler.\n\nChange-Id: I77931a0cbadd04d163b3eb8d6f6a6f8740578f13\n"
    },
    {
      "commit": "cf790bb92d8e0dcc7b38da6873d982b9e9881682",
      "tree": "42192286d73aa4ae815279b97977ce63e0ad1485",
      "parents": [
        "6d25996baef5037d0aa8beb2f517755f2fb7b91f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 28 11:09:10 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 28 13:05:55 2014 -0700"
      },
      "message": "Fix DexFile.entries to return class names, not class descriptors\n\nBug: 15141726\n\n(cherry picked from commit f2f9daf9ba33b15abddfc8f8d03a708a7908b765)\n\nChange-Id: I28ce8aae1713a9826a3373e1eb60e0edf267f64c\n"
    },
    {
      "commit": "66b68faa42cd36eb368f96c206b29c940ddda129",
      "tree": "ec8d7be0ffd659c3369c3a4f45d319b8be3c4892",
      "parents": [
        "52925af1e3136bcf68bc5754fbfa407950235217",
        "0cd81352a7c06e381951cea1b104fd73516f4341"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 21:10:42 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 23 21:10:42 2014 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\""
    },
    {
      "commit": "0cd81352a7c06e381951cea1b104fd73516f4341",
      "tree": "fcc8ff9cdeb608d0913097aa1fb64d1879f11ffa",
      "parents": [
        "dfd301f19800a4f168283cf2d0b15b2c09071955"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 16:48:55 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 12:55:45 2014 -0700"
      },
      "message": "Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\n\nFixed the generic trampoline to not use ToJObject when unnecessary.\n\nBug: 15167269\n\nThis reverts commit 3bdb873122964da7937eb070cbcf2ef638a8e459.\n\nChange-Id: I0525d0e0f3afb753c770e1572070a0fa22b02271\n"
    },
    {
      "commit": "48e50e8876379d38a561096415ac43ed765f65fc",
      "tree": "c5fb88b50393e3b035cef8f90856ef5ad838a4f4",
      "parents": [
        "2054b925a635642bedd912c6da37ffa9f1d21c6d",
        "14e81447ebaa1d80aae0c53312d4ff238d3fd98a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 23 08:36:20 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 23 08:36:20 2014 +0000"
      },
      "message": "Merge \"Add a check for null thread before trying to suspend\""
    },
    {
      "commit": "3bdb873122964da7937eb070cbcf2ef638a8e459",
      "tree": "3d29123f33853e11adb67bdd6ac56f19ee798a1f",
      "parents": [
        "e09ae0920be57760fb390b6944bce420fa0b5582"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "message": "Revert \"Fix an outstanding compaction bug in interpreter.\"\n\nThis reverts commit e09ae0920be57760fb390b6944bce420fa0b5582.\n\nChange-Id: I48036306130d5ccfec683d0dc3e9a642a02ee9c1\n"
    },
    {
      "commit": "14e81447ebaa1d80aae0c53312d4ff238d3fd98a",
      "tree": "9b3651a64e67f64055d351579e83a1a2794978ff",
      "parents": [
        "3ba5511665ffd31cc766fe7774a94eb18696a845"
      ],
      "author": {
        "name": "Johnnie Birch",
        "email": "johnnie.l.birch.jr@intel.com",
        "time": "Thu May 15 11:31:14 2014 -0700"
      },
      "committer": {
        "name": "Johnnie Birch",
        "email": "johnnie.l.birch.jr@intel.com",
        "time": "Thu May 22 11:33:21 2014 -0700"
      },
      "message": "Add a check for null thread before trying to suspend\n\nThe patch fixes a jpda test failure due to a failed\nassertion in SuspendThreadByThreadId. There should be\na check for a null thread before the assertion check.\nThis was the behavior of previous code (4.4.2) where\nthis test passes, but this check was removed during\nsome refactoring of the code.\n\nChange-Id: Ia63de5f159ce1e51110bf9dc604011d07b2f048e\nSigned-off-by: Johnnie Birch \u003cjohnnie.l.birch.jr@intel.com\u003e\n"
    },
    {
      "commit": "e09ae0920be57760fb390b6944bce420fa0b5582",
      "tree": "acc40266093df4289ffb6728c979cafd6b5114d2",
      "parents": [
        "b8033db2a8dc6f7c7e29b1552177542964f56e44"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 15 12:39:19 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 10:47:44 2014 -0700"
      },
      "message": "Fix an outstanding compaction bug in interpreter.\n\nFixed a bug in DoFieldPut where the FieldHelper GetType could cause\nthread suspension which would result in a stale obj.\n\nAdded more handles in the class linker to facilitate moving fiels\nand methods in the future.\n\nRemoved un-necessarly passing handle references since these are value\ntypes and don\u0027t need to be passed by reference.\n\nAdded a special NullHandle type which allows null handles without a\nhandle scope.\n\nChange-Id: I1b51723920a2e4f4f8b2907066f578a3e879fd5b\n"
    },
    {
      "commit": "b8033db2a8dc6f7c7e29b1552177542964f56e44",
      "tree": "3d29123f33853e11adb67bdd6ac56f19ee798a1f",
      "parents": [
        "8b4b4f0ffa161ec06a2d947b832cab4b0f82ad84",
        "a705376e3355fd307bfbf7bf72d6944c63a9f2f7"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 22 14:47:06 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 22 14:47:07 2014 +0000"
      },
      "message": "Merge \"Support new VMRuntime native methods\""
    },
    {
      "commit": "a705376e3355fd307bfbf7bf72d6944c63a9f2f7",
      "tree": "9973ff31bd7d51ea1922a874725e62f4b15f739d",
      "parents": [
        "bf17a08fb48fa296acb09904d4c10ba42f63f55d"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 16 16:56:45 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 22 10:29:16 2014 +0200"
      },
      "message": "Support new VMRuntime native methods\n\nImplements vmInstructionSet, is64Bit and isCheckJniEnabled methods.\n\nBug: 14888999\nBug: 14888124\nChange-Id: I8a2d3f22f84a093be2fbc74464af6aa7b2a2bebb\n"
    },
    {
      "commit": "e1ff199b3bbcf58ed9462e1b7aa47027294f4e4b",
      "tree": "aedae043e5852886c92e38175ceedf0206f42165",
      "parents": [
        "422b2e538fbcd8111ea34960804f0f9793e5653a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun May 18 22:37:51 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon May 19 23:18:35 2014 -0700"
      },
      "message": "Up-to-date odex files should take precedence over profile checks\n\nChange-Id: I70b1e2537dc7c45334a70a4b9ec75329221090bc\n"
    },
    {
      "commit": "46889ea4c43f1e3238851d1120c5f16a7212f4b6",
      "tree": "3db807e58cc15a482f5d17b9fda9f73bb2fe8eff",
      "parents": [
        "607fa7b07233a7233ebe21bba8f3e7c1925ae0f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:31:22 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:31:55 2014 -0700"
      },
      "message": "Fix DexFile.getClassNameList.\n\nBug: 15086891\nChange-Id: I8eaf0d19a56ecaea236e93e84131f5e4ff0843f6\n"
    },
    {
      "commit": "607fa7b07233a7233ebe21bba8f3e7c1925ae0f2",
      "tree": "a04f1074331ac82ad077044e3f373312f61e5901",
      "parents": [
        "1dc387152a84193937bd1f88e9e10fff6449d695",
        "700a402244a1a423da4f3ba8032459f4b65fa18f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 20 05:29:04 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 20 05:29:04 2014 +0000"
      },
      "message": "Merge \"Now we have a proper C++ library, use std::unique_ptr.\""
    },
    {
      "commit": "700a402244a1a423da4f3ba8032459f4b65fa18f",
      "tree": "4c22fcda04d271bd55a37aff30650214af17a90c",
      "parents": [
        "047c11adcbcbc0bcf210defdfcbada763961ffee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 16:49:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:27:39 2014 -0700"
      },
      "message": "Now we have a proper C++ library, use std::unique_ptr.\n\nAlso remove the Android.libcxx.mk and other bits of stlport compatibility\nmechanics.\n\nChange-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61\n"
    },
    {
      "commit": "2b7c4d196c8abe32f4ca633534917da9de53c359",
      "tree": "f14dc45f53d5681a5c0e57b8a8cc6b35eee6e896",
      "parents": [
        "84e524207b23d58a1b1e5f4443000ccac97c4184"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 19 10:52:16 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 19 15:19:28 2014 -0700"
      },
      "message": "Don\u0027t get and restore thread state for ScopedFastNativeObjectAccess.\n\nBefore we would ensure that we were runnable for fast native object\naccess. However, these are done when you are already runnable.\n\nChange-Id: Ia4c6e4c83d146fe2a988b37b3133ca46b0f0fa42\n"
    },
    {
      "commit": "84e524207b23d58a1b1e5f4443000ccac97c4184",
      "tree": "6eb6204994d342a653fba4eea275a536a720b036",
      "parents": [
        "f04544ffdb801946d087ae1322c890e34e185156",
        "0e12bdc49744eb6d5c29b9611a8dbe10bac4cd53"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon May 19 16:50:20 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon May 19 16:50:21 2014 +0000"
      },
      "message": "Merge \"Add ISA directory to image and odex pathnames.\""
    },
    {
      "commit": "f832284dd847ff077577bb5712225430bbbb3b67",
      "tree": "44f6b91098639c6ebc438b4ec998d0dc128cef9a",
      "parents": [
        "8f0776768712b2021aa8fb649b51017b9f0fc7a9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 16 10:59:25 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 18 12:50:33 2014 -0700"
      },
      "message": "Delete ClassHelper and fix compaction bug in GetDirectInterface\n\nCleanup helps to prevent compaction bugs. Fixed a fairly serious\ncompaction error caused by calling ClassHelper::GetDirectInterface\nwithout handling the case where it causes thread suspension due to\nResolveType.\n\nBug: 8981901\n\nChange-Id: I82b3bb6dd48d21eb6ece7aae0733c4a23c2bc408\n"
    },
    {
      "commit": "0e12bdc49744eb6d5c29b9611a8dbe10bac4cd53",
      "tree": "aba31f1d671b4816fb63fca00b985ab0d2b6a12b",
      "parents": [
        "de1129a26e0474ea8bb9112938ebb867163969fd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed May 14 17:44:28 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 16 16:14:50 2014 -0700"
      },
      "message": "Add ISA directory to image and odex pathnames.\n\nBug: 14882223\nBug: 14694978\nChange-Id: Ic1b5ae836b8e91ea461dcd4f3da8e38dc3bec00f\n"
    },
    {
      "commit": "dd157d732b557a854b3689faf8a24170fb47c270",
      "tree": "09b1761180ce511273b6bd5782baadaabf43526d",
      "parents": [
        "3b2bcbf9daf39f4cece7fde1186f3fa494000ed9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 14:47:50 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 14:47:50 2014 -0700"
      },
      "message": "Avoid some unnecessary use of stl types.\n\nMay be a minor performance win but really done for libc++ as this removes a\ndependency on a library function whose prototype includes a std::string.\n\nChange-Id: Ifc07a9caef1206caf2a69a6e1b0bfc0ba56c8c62\n"
    },
    {
      "commit": "cbfb8b2f30de46632d3499a838661765451845c5",
      "tree": "1c1e2bacb0dd16a7bb22cf26cbd7ad84d6a7f370",
      "parents": [
        "6099df8c0695a81a8f25c47ff801998b12d09d1b",
        "2d10b206f9d0b97396b7dadb9a6415cd39efd341"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 14 19:09:45 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 14 19:09:45 2014 +0000"
      },
      "message": "Merge \"Ensure JNI primitive array type is appropriate.\""
    },
    {
      "commit": "2d10b206f9d0b97396b7dadb9a6415cd39efd341",
      "tree": "032625cf6175d1749739bca3c9d673b027ba92c1",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 12 19:15:18 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 14 12:03:16 2014 -0700"
      },
      "message": "Ensure JNI primitive array type is appropriate.\n\nCheck the primitive array type for GetPrimitiveArray, ReleasePrimitiveArray,\nGetPrimitiveArrayRegion and SetPrimitiveArrayRegion matches the given array\ntype. Check the GetPrimitiveArrayCritical and ReleasePrimitiveArrayCritical are\ngiven a primitive array.\nAdd unit tests that null parameters lead to fatal errors, not crashes. Fix\nissues where CheckJNI assumed non-null arguments.\nTidy testing code via the use of nullptr. Add a few extra checks.\nEnsure arrays of void are not able to be created, use RI compatible\nNoClassDefError.\n\nBug: 14817823\n\nChange-Id: I9903bcd800d0da1988ced07f61fb97b783c5deab\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "966ce11364ae08c95ea1ad5b8077c98949917055",
      "tree": "6459810777392127a3757136fa76fd36254b2d47",
      "parents": [
        "f92a45609352fb1dc3460a07d83284b353270221"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon May 12 17:30:36 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon May 12 17:30:36 2014 -0700"
      },
      "message": "Restore \"Late-enable\" logging\n\nIt is referenced from \"Debugging Android JNI with CheckJNI\"\n\nChange-Id: I155138df4a894b33f0a1ae03344442a144a5fced\n"
    },
    {
      "commit": "4d466a8e4587422c989705dce3b2a19e7f0137f5",
      "tree": "bd8f0f45db9a7d5888b14a070690f59fb599bd68",
      "parents": [
        "f1c036fc8fa97617cc42bda44a0adbc7b856d6cd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 08 19:05:29 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 09 12:23:00 2014 -0700"
      },
      "message": "Remove all LOG(DEBUG) which is not intended to be checked in\n\nBug: 14632493\nChange-Id: Id9da8b87798af0a1b2bd2c178133e5f1ba47d43d\n"
    },
    {
      "commit": "78f7b4c04ab6e8b5581921bc95b67a9beee1c246",
      "tree": "78b93c72007478b5bfc3b88ab413fa3d772da723",
      "parents": [
        "052a647973b590c9d5007a2e16f313f4e32a70bd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 06 10:57:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:28:35 2014 -0700"
      },
      "message": "Add concurrent reference processing.\n\nConcurrent reference processing currently works by going into native\ncode from java.lang.ref.Reference.get(). From there, we have a fast\npath if the references aren\u0027t being processed which returns the\nreferent without needing to access any locks. In the slow path we\nblock until reference processing is complete. It may be possible to\nimprove the slow path if the referent is blackened.\n\nTODO: Investigate doing the fast path in java code by using racy reads\nof a static volatile boolean. This will work as long as there are no\nsuspend points inbetween the boolean read and referent read.\n\nBug: 14381653\n\nChange-Id: I1546b55be4691fe4ff4aa6d857b234cce7187d87\n"
    },
    {
      "commit": "52f84884433f3875f4b1bc5595b8d5a2d6fb3d99",
      "tree": "e9d5008b7288d200872447cc93354b5248beceaf",
      "parents": [
        "dee6812d90c78daa09a3870ba5ffcead57a63d1a"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri May 02 10:10:39 2014 +0100"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 02 18:28:47 2014 -0700"
      },
      "message": "Prevent spurious dexopts in 32-64 builds.\n\nWhen we\u0027re checking if a file needs to be dexopted, we\nneed to compare oat file checksums with the image checksum\nfor the oat file\u0027s target instruction set and not the current\nruntime\u0027s target instruction set.\n\nbug:14475807\n\nChange-Id: Ib44d8e3c6cdf3a37fce6332c694a6602c658e925\n"
    },
    {
      "commit": "11d9f06a96a6909905c248ed684366190140095c",
      "tree": "27b02ab216b98ba1656d66072fd46c5adec61242",
      "parents": [
        "b3016551e5f264264dbb633a1ddf03ac97f9c66c"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 23 20:24:57 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu May 01 11:25:07 2014 +0100"
      },
      "message": "Use instruction specific dalvik cache dirs.\n\n- All oat \u0026 art files are now placed under /data/dalvik-cache/\u003cisa\u003e/.\n- GetDalvikCacheOrDie now requires a mandatory subdirectory argument,\n  and is implicitly rooted under /data/.\n- Added helper methods to convert InstructionSet enums into strings\n  and vice versa.\n\n(cherry picked from commit 2974bc3d8a5d161d449dd66826d668d87bdc3cbe)\n\nChange-Id: Ic7986938e6a7091a2af675ebafec768f7b5fb8cd\n"
    },
    {
      "commit": "b0fa5dc7769c1e054032f39de0a3f6d6dd06f8cf",
      "tree": "839d13ebfa7170967dd9b4abd434b7abda53da99",
      "parents": [
        "948740c1938860df055ddc801f20fd1707331e38"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 28 16:47:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 29 14:36:28 2014 -0700"
      },
      "message": "Force inlining on trivial accessors.\n\nMake volatility for GetFieldObject a template parameter.\nMove some trivial mirror::String routines to a -inl.h.\n\nBug: 14285442\n\nChange-Id: Ie23b11d4f18cb15a62c3bbb42837a8aaf6b68f92\n"
    },
    {
      "commit": "09881a85579cab1779ddf6ba9a91eed861a13cb2",
      "tree": "fae410053b1cc8f0497abb744e820c124015d7b1",
      "parents": [
        "011005100214eb40c2aaad3f8fe9c3dc9465bcec"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Apr 18 17:44:01 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Apr 25 15:40:04 2014 -0700"
      },
      "message": "Do not require dexopt when previous profile does not exist\n\nAlso turn down some dex2oat related noise\n\nBug: 14184659\nChange-Id: I134890f2c452d7f85ca4b736b5724f42533c2a7f\n"
    },
    {
      "commit": "4af159bfcc66c6e90a2aee4a2035a996a399e7ed",
      "tree": "9bc7f4ac4f6ce93be0e9f2bc8db6ccdb9d972c36",
      "parents": [
        "d299898a55f41ccf78b865e153ae91321229353b",
        "987560fee798e48fb725c44b796d8ca7a5872ad6"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 22 23:03:01 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 22 23:03:01 2014 +0000"
      },
      "message": "Merge \"Remove support for app JNI workarounds.\""
    },
    {
      "commit": "987560fee798e48fb725c44b796d8ca7a5872ad6",
      "tree": "d61f35a129847f3f5fbed1436649e75acd940b3f",
      "parents": [
        "44b0053fdb7ad8a30138d29f714172a7dc69efb8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 22 11:42:59 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 22 14:52:19 2014 -0700"
      },
      "message": "Remove support for app JNI workarounds.\n\nChange-Id: I4396df7e93fcace4b5b19c2c387e5c30089182a6\n"
    },
    {
      "commit": "0ec77d6df72ad9c352e23d8a2257530328f64a4b",
      "tree": "f0bdb4900548189c09f3e1010198eb327a648f44",
      "parents": [
        "82b1a81890970a8b07f9132aeae537a6c43df6b0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 22 10:51:17 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 22 10:51:17 2014 -0700"
      },
      "message": "Warn when thread state lookup fails.\n\nChange-Id: I06781caddcade26148921bc225f28db8b3a63a35\n"
    },
    {
      "commit": "329d18806792771dfee064203fe27875d79cd53a",
      "tree": "56f2b3105a6451d2b6f2b39941fb38bbd9af33d6",
      "parents": [
        "a6b20c3cb43676c3294865af521c19db77988633"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 08 10:32:19 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 08 12:21:36 2014 -0700"
      },
      "message": "Better error reporting when loading dex files\n\nCollect all partial error messages and return them as cause\nexceptions for the top-level exception returned.\n\nChange-Id: I9661b8aed2a571dc88bf0f06d447108eeaed1409\n"
    },
    {
      "commit": "0833af65c87b9f1c900e70a41c04d2dcdbd0c9c7",
      "tree": "ceaa71331ac753df13d26e0545bfef935cf92844",
      "parents": [
        "a704644079945c700bef37803b3b7bcd70a10cb4",
        "9dae5b4b952824da45e9fd9c12cfcde9858f0974"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 08 13:37:43 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 08 13:37:43 2014 +0000"
      },
      "message": "Merge \"Tweaked profile significant_difference.\""
    },
    {
      "commit": "9dae5b4b952824da45e9fd9c12cfcde9858f0974",
      "tree": "5d39d9d8641c46333e3543a3fd714feae6e308ec",
      "parents": [
        "5cc2d076cb7854ec2327895e5586f4cbe5e3ee70"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 07 16:36:21 2014 +0300"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Apr 07 16:36:21 2014 +0300"
      },
      "message": "Tweaked profile significant_difference.\n\n- renamed to \u0027change_thr\u0027\n- now it represents how much the top K leading samples need to change\n(in percents) in order to trigger compilation.\n- extracted ProfileData \u0026 file parsing in profiler.h\n\nBug: 12877748\nChange-Id: I10f66120dd5e68b8a690bfa0e9914c07f63c50d5\n"
    },
    {
      "commit": "3de95a7b0a2d30cde6dc92b72c35df3a61002124",
      "tree": "56ad920ea31bf3b64595fe56345649db4c679156",
      "parents": [
        "ad4b0d2c671a5aa5f11e731eb51a905eb513a266"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 12:54:23 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 12:54:23 2014 +0100"
      },
      "message": "Runtime::PreZygoteFork returns void, not boolean.\n\nThis method aborts on failure (as it should) and unconditionally\nreturns true, so making it return void simplifies callers.\n\nChange-Id: Iae39bd327f20311579ece47efa8afd1be7defce9\n"
    },
    {
      "commit": "ad4b0d2c671a5aa5f11e731eb51a905eb513a266",
      "tree": "366c24aed164c1ca16cbef1b026d5554c85fedb7",
      "parents": [
        "2dc2bf9ad867dfc71bf209dead1315615659e8f9"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 12:06:02 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 12:07:32 2014 +0100"
      },
      "message": "Include \u003csys/resource.h\u003e for rlimit.\n\nChange-Id: I0e487f8191e284052d8b82eb942d723147d780a1\n"
    },
    {
      "commit": "8e157dc9e2938aa7eeadaf4ea34e8d3e727136bc",
      "tree": "295c380a2a9b2c57851fb60576abf5661ecad237",
      "parents": [
        "5120686d956cdea3f4b662941f361e0867a4bbad",
        "8b2c8b9642d5fe037f93ab0cb6a5065e2a192e40"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 10:29:49 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 02 10:29:50 2014 +0000"
      },
      "message": "Merge \"Move most zygote related code to frameworks/base.\""
    },
    {
      "commit": "1246d689dc3150bbee6c5e5628747a94fba5081e",
      "tree": "24fb2b8271cdc524855f52bbc94361dbf5f8c2f0",
      "parents": [
        "f689b93e904e062d83a7ae7e8cacce0b52af3323",
        "ee1d79a603c77c0667b27c075a983579d5c51f7e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 02 07:45:51 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 02 07:45:52 2014 +0000"
      },
      "message": "Merge \"Cleanup transaction support\""
    },
    {
      "commit": "ee1d79a603c77c0667b27c075a983579d5c51f7e",
      "tree": "7b23516402105319ab4736cd179a1de9101eeb46",
      "parents": [
        "78bd9b2198f0ccc48036c1517b2d9a9023157dfb"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Feb 21 15:46:30 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 02 09:21:12 2014 +0200"
      },
      "message": "Cleanup transaction support\n\nUpdates Thread::CreateInternalStackTrace to support both transactional and\nnon-transactional modes using template.\n\nGeneralizes non-transactional mode for invariant fields (which are set only\nonce).\n\nRemoves ArrayLog::VisitRoots as we never create Array logs of ObjectArray. As\nObjectArray elements are set using Object::SetFieldObject, they are already\nrecorded in the object logs: the object is the array itself and the offset\ncorresponds to the element index in this array. And also checks we never log\nObjectArray in array logs.\n\nFixes location of thrown exception when calling native method during class\ninitialization.\n\nChange-Id: Idbc368d3b8292b85ff40bc8a7c559e085477bf89\n"
    },
    {
      "commit": "8b2c8b9642d5fe037f93ab0cb6a5065e2a192e40",
      "tree": "7c831f43cff569af934ca013447b7cfc5716fef9",
      "parents": [
        "7414375acad6170606903013d331f653173c299f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 16:44:54 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Apr 01 16:43:02 2014 +0100"
      },
      "message": "Move most zygote related code to frameworks/base.\n\nAvoids code duplication across art/dalvik. Also, most of\nthis code is not directly related to the runtime (mounting external\nstorage, multi user etc.) and therefore belongs in the frameworks.\n\nChange-Id: Icf4723dd0ec4521ef6b1f785c99d50aebca7779a\n"
    },
    {
      "commit": "dd7624d2b9e599d57762d12031b10b89defc9807",
      "tree": "c972296737f992a84b1552561f823991d28403f0",
      "parents": [
        "8464a64a50190c06e95015a932eda9511fa6473d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 17:43:00 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 01 08:24:16 2014 -0700"
      },
      "message": "Allow mixing of thread offsets between 32 and 64bit architectures.\n\nBegin a more full implementation x86-64 REX prefixes.\nDoesn\u0027t implement 64bit thread offset support for the JNI compiler.\n\nChange-Id: If9af2f08a1833c21ddb4b4077f9b03add1a05147\n"
    },
    {
      "commit": "cb4581aa13d6f43f705535818a4d0893d551be3a",
      "tree": "903cbcb3852650c7e3105c0c1819e6e480091cd4",
      "parents": [
        "e759c9f01b558093466fc78f01900042120cd832"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 28 15:43:37 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 28 15:43:37 2014 -0700"
      },
      "message": "Some fixes for comments and implied conversions.\n\nAddresses comments in:\nhttps://android-review.googlesource.com/#/c/89148/3\n\nChange-Id: If21cfaa541210c8702371efd1e6d4f071a7b9ec3\n"
    },
    {
      "commit": "11d5d8fffe41cc7daadbfa2ca98ecb978f3029af",
      "tree": "fae2cf974b502420a942043d135d301aa75967e7",
      "parents": [
        "a708e32a9f764a48175e705ec4bcd2201c84f492"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 26 15:08:20 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 28 14:27:55 2014 -0700"
      },
      "message": "Add access checks to Method and Field reflection.\n\nArt side of this change. Has a corresponding libcore change.\n\nBug: 13620925\nChange-Id: Ie67f802a2a400e8212b489b9a261b7028422d8ba\n"
    },
    {
      "commit": "549cc8b76582c7fb8256d79639c227ade69928d1",
      "tree": "1db1eeb82bcd4644ef3b15787161e8ba2112ffee",
      "parents": [
        "41ec12c09573d6a18ce7bc095996567dcbf88d5a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 27 14:27:09 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 27 14:27:09 2014 -0700"
      },
      "message": "Remove bogus DCHECK.\n\nBug: 13637540\nChange-Id: I39f19443156cf5bdc26e3eeb0bb501a850d40dca\n"
    },
    {
      "commit": "e62ff670e2f57a26e33e22dfb0d3efcb34be8363",
      "tree": "b002bec054e75d62eb915103e422b0d77791a929",
      "parents": [
        "6a64e2230610d7d49ba575ef5a72cf862e1262b4",
        "84956ff6c0ff150d86a08157216ded79217d860a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 27 15:00:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 27 15:00:08 2014 +0000"
      },
      "message": "Merge \"Reflection tidying.\""
    },
    {
      "commit": "03fd6e179d3bcd7f1a67a0b5de71b756f1637ec6",
      "tree": "7be13a7faafea92558f00267f1b8d78c17132a1f",
      "parents": [
        "175cac4c1778474d674204f928ccc64c21c165cd",
        "970c10e175b903c13fa3aea0231ce87834c4ca65"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 27 07:42:07 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 27 07:42:08 2014 +0000"
      },
      "message": "Merge \"Do not suspend current thread to build stacktrace from DDMS\""
    },
    {
      "commit": "970c10e175b903c13fa3aea0231ce87834c4ca65",
      "tree": "51024460ff6da75eb016dbe62cb5d4f5e9c9a6c4",
      "parents": [
        "e1f77fde4e6f481dcf97512530a352e8d527033b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Mar 25 17:53:48 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Mar 27 08:40:36 2014 +0100"
      },
      "message": "Do not suspend current thread to build stacktrace from DDMS\n\nAvoids a failing CHECK in ThreadList::SuspendThreadByThreadId in the case we\ntry to suspend the current thread.\n\nBug: 12985512\nChange-Id: I9434400a3625319855dd3841d8889117e57784e5\n"
    },
    {
      "commit": "84956ff6c0ff150d86a08157216ded79217d860a",
      "tree": "04177625872b89f27f00a53b574085416617ee0d",
      "parents": [
        "636583c586b78e188168e510452cef0645578f8d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 26 23:52:41 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 26 23:56:58 2014 -0700"
      },
      "message": "Reflection tidying.\n\nMove out arguments to the right and make pointer not reference types.\nRemove unused unbox for argument routine.\nSimplify convert primitive routine for the case of identical types.\n\nChange-Id: I6456331b0f3f3e5f0b2c361a9f50b4ed1c9462a3\n"
    },
    {
      "commit": "62f0512bf6d9bc6141358bf22e93afa70dc58b1a",
      "tree": "7fdc0b9be0df2da5ff2575862a24db5c10eae9dc",
      "parents": [
        "215f3e60cd97471c0843eae22a041c335e89071c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 21 11:21:29 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 21 11:25:56 2014 -0700"
      },
      "message": "Improvements to Field.get/set.\n\nAvoid unnecessary repeated computation in Field.get/set.\nRefactor FromReflectedField and FromReflectedMethod into common helpers in\nmirror::ArtField and mirror::ArtMethod, and make use of thereby avoiding\ntransitions through JNI.\nAvoid JNI use from within FromReflectedField and FromReflectedMethod.\nTidy up Field.get/set wrt moving collector support.\nBug: 12189533\n\nChange-Id: I643ab3474bade4abac3a3ae2b6e373b2bb0891c8\n"
    },
    {
      "commit": "420fd041cc3502cd9d2c1158b858d0189c0c481f",
      "tree": "8dcf7638a22778becee2a8962185b3a6b3e42f72",
      "parents": [
        "fb5b21d1d598b6b42e5d5ca1dac4a040832558fb"
      ],
      "author": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Fri Mar 14 13:48:45 2014 -0400"
      },
      "committer": {
        "name": "Robert Craig",
        "email": "rpcraig@tycho.ncsc.mil",
        "time": "Fri Mar 14 20:54:31 2014 +0000"
      },
      "message": "Fix build.\n\nPatch helps fix the following build breakage.\n\nart/runtime/native/dalvik_system_Zygote.cc:173:3: error: unknown type name \u0027rlimit\u0027\n  rlimit rlim;\n\nChange-Id: I5f6fb29ae71e8819dcdb42eee986f896d856f712\nSigned-off-by: rpcraig \u003crpcraig@tycho.ncsc.mil\u003e\n"
    },
    {
      "commit": "53b8b09fc80329539585dcf43657bc5f4ecefdff",
      "tree": "cac0f82fbb89bd907104e3fed6c36203e11a3de0",
      "parents": [
        "0dea9872082bc3e576ed6cefed86b0d6c0c45ffd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 23:45:53 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 11:28:10 2014 -0700"
      },
      "message": "Refactor reflective method invocation.\n\nMove invocation code out of JNI internal into reflection, including ArgArray\ncode. Make reflective invocation use the ArgArray to build arguments rather\nthan allocating a jvalue[] and unboxing arguments into that.\nMove reflection part of jni_internal_test into reflection_test.\nMake greater use of fast JNI.\n\nChange-Id: Ib381372df5f9a83679e30e7275de24fa0e6b1057\n"
    },
    {
      "commit": "0f6784737882199197796b67b99e5f1ded383bee",
      "tree": "139888bdfad743c50e800ad46b9aec97ae3415d3",
      "parents": [
        "73a471336a9515fa7fdc5859e3c481ec451237a5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 10 16:18:37 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 10 18:02:07 2014 -0700"
      },
      "message": "Unify 64bit int constant definitions.\n\nLL and ULL prefixes are word size dependent, use the INT64_C and UINT64_C\nmacros instead.\n\nChange-Id: I5b70027651898814fc0b3e9e22a18a1047e76cb9\n"
    },
    {
      "commit": "f4b97628bc78b928934b8b0876ccad2f2f8960a3",
      "tree": "24b9572abf3952ccb848441b30dc50ee909aae29",
      "parents": [
        "e2d080ca23ee6146bc28c2caa6c856bd5af41043"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 10 13:26:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 10 13:28:38 2014 -0700"
      },
      "message": "Don\u0027t always allocate constructor newInstance as non movable.\n\nWe now only allocate these objects as non movable if the class is a\nnon movable class (currently fields or methods).\n\nChange-Id: I26700272fceb277e00f25ff3078cef6951296b9d\n"
    },
    {
      "commit": "39c3bfbd03d85c63cfbe69f17ce5800ccc7d6c13",
      "tree": "fa777039b3f7c34f3dd322d04307766246526080",
      "parents": [
        "0918614b7434783477e8668df7850a7aaf8d5611"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Jan 28 18:33:52 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri Mar 07 13:42:48 2014 -0800"
      },
      "message": "Make use of profiling information for dex2oat\n\nIf the profile file exists, the compiler driver will read it\nand store the data in an internal map.  Then, when we want to work\nout whether to compile a method or not, the map is consulted and if\nthe method shows up with a high enough percentage of use we compile it.\n\nThe profile file itself is created by installd and is writeable by the\napp.  The file is in /data/dalvik-cache/profiles and is named by\nthe package name.\n\nThis also modifies the profiler itself to:\n\n1. Only count runnable threads (not suspended threads) in the profile\n2. Use system properties to allow tuning of the profile parameters\n3. Merge profiles from multiple processes using file locking.\n\nBug: 12877748\nChange-Id: Iab2f3a327a2860db2a80d5724277d6c626227f2b\n\nConflicts:\n\tcompiler/dex/frontend.cc\n\tcompiler/dex/mir_analysis.cc\n\tcompiler/dex/verification_results.cc\n\tcompiler/driver/compiler_driver.cc\n\tdex2oat/dex2oat.cc\n\truntime/class_linker.cc\n\truntime/runtime.cc\n\truntime/runtime.h\n"
    },
    {
      "commit": "c645f1ddb7c40bea6a38eda4b3f83f6b6dec405b",
      "tree": "de6141864c1c011216c19dd99a2c1e2bc442dd6d",
      "parents": [
        "a9d7be62735e3356cef7e8ed797c519134a17061"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 18:11:53 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 12:09:04 2014 -0800"
      },
      "message": "Add more VerifyObject calls.\n\nAdded verify object calls to SirtRef, IndirectReferenceTable,\nReferenceTable.\n\nRemoved un-needed verify object in ScopedObjectAccess / DecodeJObject\nsince object sources are handled.\n\nBug: 12934910\nChange-Id: I55a46a8ea61fed2a77526eda27fd2cce97a9b125\n"
    },
    {
      "commit": "a5f9de040a7a740b7b4979bc8d47f95eb05718ae",
      "tree": "a06560b27a6e2ec1e7c90b3b8f0f1f6344f09c81",
      "parents": [
        "c7a8981098646b4e255d9ede1f3798023bac6e84"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 28 16:48:42 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 15:38:06 2014 -0800"
      },
      "message": "Defer heap transitions to heap trimming daemon.\n\nThis fixes the case where quick back and forth process state changes\nwould cause a lot of heap transitions.\n\nChange-Id: Ia5be792edcf26079b2aa23b9c115f6b0a9a39a1c\n"
    },
    {
      "commit": "6dda898d47b3e8931e4404330e81b7110108e34f",
      "tree": "d8a0a20b8ac1ce3cd44273cf5c748d09980bd800",
      "parents": [
        "8785d615122d4abbd22db702139584e8c472f502"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 11:11:48 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 11:43:06 2014 -0800"
      },
      "message": "Disable compaction for jni workarounds.\n\nCompaction can\u0027t work when jni workarounds is enabled. Also some\nother refactoring.\n\nChange-Id: Ia7b0f2b39c79f5a0a5f50874d823b950ab02a0c3\n"
    },
    {
      "commit": "893263b7d5bc2ca43a91ecb8071867f5134fc60a",
      "tree": "a99238843a9caad00122c8f7d13e031f5d81bc38",
      "parents": [
        "2fece5941f12395a94e742313e7059a9e419994d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 04 11:07:42 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 04 14:21:58 2014 -0800"
      },
      "message": "Avoid marking old class linker and intern table roots during pause.\n\nThe new root visiting logic has a concept of a root log which holds\nnew roots which were added since the start of the GC. This is an\noptimization since it lets us only mark these newly added roots\nduring the pause (or pre-cleaning) since the other roots intern table\nand class linker roots were marked concurrently at the start of the\nGC.\n\nBefore (EvaluateAndApplyChanges):\nMarkConcurrentRoots:\tSum: 605.193ms\nAfter:\nMarkConcurrentRoots:\tSum: 271.858ms\n\nThis should also reduce pathological GC pauses which used to be able\nto happen when the intern table or class linker became \"dirty\"\nduring the concurrent GC.\n\nChange-Id: I433fab021f2c339d50c35aaae7161a50a0901dec\n"
    },
    {
      "commit": "9583fbcf597eff6d0b3c5359b8e8d5f70ed82c40",
      "tree": "847912709f811adda0fa63e89e4bf8af27769f2e",
      "parents": [
        "093aad184b4451639951a7e012d9b55cbf8c8a07"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 28 15:21:07 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 04 16:30:48 2014 +0000"
      },
      "message": "Remove oat file location in the image.\n\nThe oat file is now always in the same directory, and has the\nsame name as the image file. Only difference is the extension.\n\nThis also removes the need for host-prefix.\n\nChange-Id: I16d1f7aeb1d58372d41921694664e9c321afc1ad\n"
    },
    {
      "commit": "491ca9e75fad381468dd7f5fdbff56d1a9738dd7",
      "tree": "4a88d05188aebbcbe868a27b58fc1a932f914ce2",
      "parents": [
        "82e3a8ef9cd776d7026b45fe7fb6c72bcfd61394"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 02 18:24:38 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 03 13:31:40 2014 -0800"
      },
      "message": "Add ART -help and -showversion\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d62149\nChange-Id: I5c21c0433f5f341f94e7d977e8d2d69cc46d6fe3\n"
    },
    {
      "commit": "f9c612f2e657adb0764285256b228622e0789254",
      "tree": "c4a94053d07fc089703694ba1406a295333fecad",
      "parents": [
        "95c2e440582f31f77a047797a5e2be4af53a8bfa"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 27 10:58:17 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 17:13:09 2014 -0800"
      },
      "message": "Support in VMRuntime for allocating \"unpadded\" arrays.\n\nBug: 13028925.\n\nChange-Id: I0a53645f0468aaf44d38aabe016cb610fcfefaf7\n"
    },
    {
      "commit": "6fac447555dc94a935b78198479cce645c837b89",
      "tree": "bcf1449999084b1e1dec3dac287f6f3670d7eda0",
      "parents": [
        "7f0ff7e7fff82566bca5f9353eaa2c4f81f0671a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 25 17:01:10 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 26 16:38:22 2014 -0800"
      },
      "message": "Make allocations report usable size.\n\nWork-in-progress to allow arrays to fill usable size. Bug: 13028925.\nUse C++11\u0027s override keyword on GCC \u003e\u003d 2.7 to ensure that we override GC and\nallocator methods.\nMove initial mirror::Class set up into a Functor so that all allocated objects\nhave non-zero sizes. Use this property to assert that all objects are never\nlarger than their usable size.\nOther bits of GC related clean-up, missing initialization, missing use of\nconst, hot methods in .cc files, \"unimplemented\" functions that fail at\nruntime in header files, reducing header file includes, move valgrind\u0027s space\ninto its own files, reduce number of array allocation routines.\n\nChange-Id: Id5760041a2d7f94dcaf17ec760f6095ec75dadaa\n"
    },
    {
      "commit": "9837939678bb5dcba178e5fb00ed59b5d14c8d9b",
      "tree": "00f0e6b54d7c4cac78a02752e268724157e50b6e",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 16:53:16 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 18:47:23 2014 -0800"
      },
      "message": "Avoid std::string allocations for finding an array class.\n\nIntroduce ClassLinker::FindArrayClass which performs an array class lookup\ngiven the element/component class. This has a 16 element cache of recently\nlooked up arrays.\nPass the current thread to ClassLinker Find .. Class routines to avoid calls\nto Thread::Current().\nAvoid some uses of FindClass in the debugger where WellKnownClasses is a\nfaster and more compacting GC friendly alternative.\n\nChange-Id: I60e231820b349543a7edb3ceb9cf1ce92db3c843\n"
    },
    {
      "commit": "4e30541a92381fb280cd0be9a1763b713ee4d64c",
      "tree": "84093651bbf0ad95b66b846c4f4cf4101994037b",
      "parents": [
        "e266ba9935bd12d685d83f73cd8d759e46c3014d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 19 10:54:44 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 21 15:24:04 2014 -0800"
      },
      "message": "Fix and optimize verify object.\n\nVerifyObject no longer resides in heap. You can now enable\nVerifyObject for non-debug builds. VerifyStack is still slow, so it\nis now guarded by its own flag.\n\nFixed the image writer to not use verification at places where\nverification fails due to invalid reads.\n\nFixed RosAlloc to use SizeOf which doesn\u0027t call verify object.\n\nAdded a flag paremeter to some of the mirror getters / setters to\nbe able to selectively disable VerifyObject on certain calls.\n\nOptimized the GC to not verify each object multiple times during\nobject scanning if verify object is enabled.\n\nAdded 3 verification options: verify reads, verify this, and verify\nwrites so that you can select how much verification you want for\nmirror getters and setters.\n\nRemoved some useless DCHECKs which would slow debug builds without\nproviding any benefits.\n\nTODO: RosAlloc verification doesn\u0027t currently work with verify\nobjects.\n\nBug: 12934910\nBug: 12879358\n\nChange-Id: Ic61033104dfc334543f89b0fc0ad8cd4f4015d69\n"
    },
    {
      "commit": "6b8d4146678239053f024357f44bafc17481785b",
      "tree": "9044476ef8c97a843e8738a4349ba7f15f313866",
      "parents": [
        "9a509efcd68644616817f59ed7d442ed6f024ff9"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 21 12:18:26 2014 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Feb 21 12:18:26 2014 -0800"
      },
      "message": "Zygote: remove CAP_NET_RAW exception\n\nAs of system/core commit fe8135739c5a9195e74786205c077964ba4f9c44\nand be341cc348257a07c68bcbfdc526835d49283329, ping no longer\nneeds special privileges. We don\u0027t need to special case it.\n\nChange-Id: I533888dda964688eab6b562b60a99b5623174426\n"
    },
    {
      "commit": "815873ecc312b1d231acce71e1a16f42cdaf09f2",
      "tree": "18ba2fa951775e60b240271bfe975e6e2cfc654c",
      "parents": [
        "2befd09cf4fe89a18a655f3e1dd310831bfa769f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 13 18:02:13 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 18 10:45:12 2014 -0800"
      },
      "message": "Change root visitor to use Object**.\n\nSimplifies code and improves the performance of root visiting since\nwe usually don\u0027t need to check to see if the object moved.\n\nChange-Id: Iba998f5a15ae1fa1b53ca5226dd2168a411196cf\n"
    },
    {
      "commit": "d2fe10a3a34af171bf1631219cd2d6ff6b7778b5",
      "tree": "b6b7eb8eba23a5c2723518da99c03bf47b97f58a",
      "parents": [
        "5a3f55ad9519e87c0d3bbddaf3d8a186a887a79b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jan 15 10:20:56 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 17 11:32:15 2014 +0100"
      },
      "message": "Remove blacklist\n\nRemoves the class initialization blacklist and use transaction to detect and\nrevert class initialization attempting to invoke native method. This only\nconcerns class initialization happening at compilation time when generating an\nimage (like boot.art for the system).\n\nIn transactional mode, we log every object\u0027s field assignment and array update.\nTherefore we\u0027re able to abort a transaction to restore values of fields and\narray as they were before the transaction starts. We also log changes to the\nintern string table so we can restore its state prior to transaction start.\n\nSince transactional mode only happens at compilation time, we don\u0027t need to log\nall these changes at runtime. In order to reduce the overhead of testing if\ntransactional mode is on/off, we templatize interfaces of mirror::Object and\nmirror::Array, respectively responsible for setting a field and setting an\narray element.\n\nFor various reasons, we skip some specific fields from transaction:\n- Object\u0027s class and array\u0027s length must remain unchanged so garbage collector\ncan compute object\u0027s size.\n- Immutable fields only set during class loading: list of fields, method,\ndex caches, vtables, ... as all classes have been loaded and verified before a\ntransaction occurs.\n- Object\u0027s monitor for performance reason.\n\nBefore generating the image, we browse the heap to collect objects that need to\nbe written into it. Since the heap may still holds references to unreachable\nobjects due to aborted transactions, we trigger one collection at the end of\nthe class preinitialization phase.\n\nSince the transaction is held by the runtime and all compilation threads share\nthe same runtime, we need to ensure only one compilation thread has exclusive\naccess to the runtime. To workaround this issue, we force class initialization\nphase to run with only one thread. Note this is only done when generating image\nso application compilation is not impacted. This issue will be addressed in a\nseparate CL.\n\nBug: 9676614\nChange-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9\n"
    },
    {
      "commit": "874d2524d4e2fcf5a8a5194b1813fd64bf0c3ee5",
      "tree": "68ed7f9acbaa45bef6e630fdfb2c660ae9915647",
      "parents": [
        "68bb649b128cd8760732524bd7ba58b49780d9d3"
      ],
      "author": {
        "name": "Dave Platt",
        "email": "dplatt@google.com",
        "time": "Thu Feb 13 13:33:36 2014 -0800"
      },
      "committer": {
        "name": "Dave Platt",
        "email": "dplatt@google.com",
        "time": "Thu Feb 13 13:33:36 2014 -0800"
      },
      "message": "Remove old fork-and-specialize API\n\nAs promised, this is the cleanup patch-set which removes the\nold native \"fork and specialize\" API, which has been replaced\nby a slightly-enhanced one which can close the Zygote socket\ndescriptors in the Zygote child.\n\nChange-Id: I096f058e851aa079e342ecc718ff5757db68c8cd\n"
    }
  ],
  "next": "8b8adace3511e6fd68c6ae0eb80046d68186f8eb"
}
