)]}'
{
  "log": [
    {
      "commit": "1ff3c98775a4577cf053dba9a0c2d5c21c07b298",
      "tree": "2d09c27c69678b53b4c9dc486024f3547efd4bca",
      "parents": [
        "99c251bbd225dd97d0deece29559a430b12a0b66"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 02:30:58 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 16:08:05 2014 -0700"
      },
      "message": "Avoid use of std::string where we have const char*.\n\nRemoving the ClassHelper caused std::string creation for all calls to\nClass::GetDescriptor and a significant performance regression. Make the\nstd::string an out argument so the caller can maintain it and its life time\nwhile allowing GetDescriptor to return the common const char* case.\n\nDon\u0027t generate GC maps when compilation is disabled.\n\nRemove other uses of std::string that are occuring on critical paths.\nUse the cheaper SkipClass in CompileMethod in CompilerDriver.\nSpecialize the utf8 as utf16 comparison code for the common shorter byte\nencoding.\nForce a bit of inlining, remove some UNLIKELYs (they are prone to pessimizing\ncode), add some LIKELYs.\n\nx86-64 host 1-thread interpret-only of 57 apks:\nBefore: 29.539s\nAfter: 23.467s\n\nRegular compile:\nBefore: 1m35.347s\nAfter: 1m20.056s\n\nBug: 16853450\nChange-Id: Ic705ea24784bee24ab80084d06174cbf87d557ad\n"
    },
    {
      "commit": "a59dd80f9f48cb750d329d4d4af2d99d72b484d1",
      "tree": "36958b15842205addaf6d2a13e40823eab47c8bc",
      "parents": [
        "84568fdf08f8f476292996ad653b4453d2894d23"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jul 02 16:28:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 22 08:24:14 2014 -0700"
      },
      "message": "Runtime can now be set to require relocation\n\nAdd a pair of runtime flags -Xrelocate and -Xnorelocate that can force\nthe runtime to require that all files that are run are relocated, to\nprevent attacks based on the known art base address.\n\nAdd support for running patchoat on oat files compiled without an image.\n\nChange run-test to have new --prebuild and --relocate flags.\n\nBug: 15358152\n\nChange-Id: I91166c62dd1ab80e5cbcb7883a2cd0d56afca32d\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": "e63db27db913f1a88e2095a1ee8239b2bb9124e8",
      "tree": "893dee6783bca6717259321a6e4ba029c9c123e2",
      "parents": [
        "07b8441303ea82fca3cb85d71ecf8752d73cedd7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 15:36:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 17:07:49 2014 -0700"
      },
      "message": "Break apart header files.\n\nCreate libart-gtest for common runtime and compiler gtest routines.\nRename CompilerCallbacksImpl that is quick compiler specific.\nRename trace clock source constants to not use the overloaded profiler term.\n\nChange-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933\n"
    },
    {
      "commit": "0ee33c32388f49853b7f7003047047d7f9e9cb75",
      "tree": "8113de95a8ccdbc6fb854edd0cadef8f852c7dee",
      "parents": [
        "8c4728186f038e2ae09e74cbdcef5e5ca598ba64",
        "22f8e5c82d12951be38cd893426e13bee33fd69d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jul 12 03:08:24 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 11 21:38:38 2014 +0000"
      },
      "message": "Merge \"Revert \"Revert \"ART: Key-Value Store in Oat header\"\"\""
    },
    {
      "commit": "22f8e5c82d12951be38cd893426e13bee33fd69d",
      "tree": "f575655ba55315205b7a73f1e02773497913b157",
      "parents": [
        "946a55fa7aec5058d357b601ac3554e242cd1afa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 09 11:38:21 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 11 15:53:27 2014 -0700"
      },
      "message": "Revert \"Revert \"ART: Key-Value Store in Oat header\"\"\n\nThis reverts commit 452bee5da9811f62123978e142bd67b385e9ff82.\n\nHeap-allocate a couple of objects in dex2oat to avoid large frame\nsize.\n\nIncludes fixes originally in 100596 and 100605.\n\nChange-Id: Id51a44198c973c91f0a3f87b9d992a5dc110c6f8\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": "452bee5da9811f62123978e142bd67b385e9ff82",
      "tree": "3da88d3fb1bd2a03897aaac8bb015c12796d2cdf",
      "parents": [
        "c87d27b25994da8670d82a8f7bad6327b693bfff"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 09 07:58:10 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 09 07:58:10 2014 +0000"
      },
      "message": "Revert \"ART: Key-Value Store in Oat header\"\n\nBroke arm64 build.\n\nThis reverts commit c87d27b25994da8670d82a8f7bad6327b693bfff.\n\nChange-Id: I4c2ade295d2b5aa77fc3ad810e0e859629a5bf09\n"
    },
    {
      "commit": "c87d27b25994da8670d82a8f7bad6327b693bfff",
      "tree": "e8ad0fa224f050c5c3e3e30ccdc0912f28650f42",
      "parents": [
        "e8a30f37bf1530a80a7df17692dbe7a68764ac30"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 26 16:11:07 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 08 12:14:38 2014 -0700"
      },
      "message": "ART: Key-Value Store in Oat header\n\nAllows the storage of string-string pairs in the oat header. The\nfirst significant use of this is storing the implicit-check flags,\nso that an oat file can be rejected if it doesn\u0027t agree with the\ncurrent runtime.\n\nBump the oat version as the header structure changes.\n\nChange-Id: I15a1c16886e6b8fa7b881c918c19c1efa5c7c00f\n"
    },
    {
      "commit": "afd9acc30bdd11cdd12d8209eb994cb371c65e33",
      "tree": "10ebfa28d992a96422fcf81eb28c98393719e9a6",
      "parents": [
        "ba778fae99ec3b38d4f98262e6b7072bab0e9de4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 17 08:21:54 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 24 16:47:31 2014 -0700"
      },
      "message": "Multilib ART host.\n\nBuild ART for the host as a multilib project with dalvikvm32 and dalvikvm64\nrunning as 32 or 64-bit repsectfully. Note, currently multilib host builds\nare not the default, you make the so by setting BUILD_HOST_64bit\u003d1.\nExtend tests to execute in both 32 and 64-bit modes. By default both 32 and\n64-bit tests are run, add 32 or 64 to the end of a test name to run it in\npurely that flavor.\nGiven the extra spam, modify oat tests to only generate console output when\nthe test fails.\nChange the test harness so that common commands are run when a test should be\nskipped, when it passes or when it fails. Use these commands to generate a\nsummary of passing, skipped and failing tests. Tests will be skipped if they\nare known to be broken or if a test has already failed. Setting the variable\nTEST_ART_KEEP_GOING\u003dtrue will force working tests not to be skipped.\nIn this change all tests running on the optimizing compiler are marked broken\ndue to breakages running them in a multilib environment.\nBreak apart Android.common.mk into its constituent parts, along with other\npieces of reorganization.\n\nStylistic nit, we refer to make rule targets as targets thereby overloading\nthe term target. While consistent with make\u0027s terminology, its confusing with\nthe Android notion of target. I\u0027ve switched to just calling targets rules to\navoid confusion in host tests.\n\nChange-Id: I5190fc3de46800a949fbb06b3f4c258ca89ccde9\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": "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe",
      "tree": "3d3f667c8232a9c1bb6fe9daea0d364f9ae01d8c",
      "parents": [
        "2e1ca953c7fb165da36cc26ea74d3045d7e272c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 21 17:43:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 09 12:46:32 2014 -0700"
      },
      "message": "Change MethodHelper to use a Handle.\n\nAdded ConstHandle to help prevent errors where you modify the value\nstored in the handle of the caller. Also fixed compaction bugs\nrelated to not knowing MethodHelper::GetReturnType can resolve types.\nThis bug was present in interpreter RETURN_OBJECT.\n\nBug: 13077697\n\nChange-Id: I71f964d4d810ab4debda1a09bc968af8f3c874a3\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": "a8b41aaa08283390606e6515d178ca3cc4c6ca41",
      "tree": "a745fd31b87dba2b5908aef81fe25ce4aa68b402",
      "parents": [
        "7fb59192f0d773bc0025e5023b32c8f58a25f799"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 04 22:42:28 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 04 22:42:28 2014 -0700"
      },
      "message": "ART: Allocate ostreams on the heap in Oatdump::DumpOatMethod\n\nThe stack frame size for this method is above our limits. Allocate\nostreams on the heap instead of on the stack.\n\nBug: 15278350\nChange-Id: Ia94a1f7190b7c2ac096e100682e747334f1bf6cc\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": "46960fe5dcc1be07b39a55114338423a73554449",
      "tree": "fb31a1fc7dc07abe3d87a26f8fd394e9f7193304",
      "parents": [
        "567e9dbc65ee183cda2a052dbf224c8c4a8f9423"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 23 10:43:43 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 23 10:43:43 2014 -0700"
      },
      "message": "Make the specification of when we need precise constants more precise.\n\nMeans that oatdump output showing values for deoptimization actually reflects\nwhat we see at runtime.\nAlso, doesn\u0027t do precise in the case of determining methods and fields for the\nquickened case, which may be an occasional performance win.\n\nChange-Id: I62c7fb244f7996ba9d52e7a7ce75c046b663fa17\n"
    },
    {
      "commit": "0f5baa079eea76758aee32d7f87cb175deab8308",
      "tree": "2ddb1666c366d5cbd95e3d652f2b2ea69ef78205",
      "parents": [
        "b8033db2a8dc6f7c7e29b1552177542964f56e44"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 22 11:54:18 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 22 11:54:22 2014 -0700"
      },
      "message": "Update dump-oat-* and oatdump for new image file layout\n\nBug: 11997009\nChange-Id: I30c356f3ea62b1850d17b5c6bf4af4080a466858\n"
    },
    {
      "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": "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": "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": "b9beb2e2efb6a204a69ca660d478b45f851e8f09",
      "tree": "168765e73d342712800566b562fb5276f63e49ef",
      "parents": [
        "6393eb7043517c5744935c48e3fd45a482915c2b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 09 16:57:40 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 12 15:18:23 2014 -0700"
      },
      "message": "Place ISA into boot image name.\n\nDepends upon:\nhttps://android-review.googlesource.com/94078\n\nChange-Id: I22c18b03b2c0db7a3f792920064e7710363b58b4\n"
    },
    {
      "commit": "42fcd9838a87abaf7a2ef86853a5287f86dbe391",
      "tree": "d8ffcfcb9c1997c06c6ef93b551abaa900ebcf8e",
      "parents": [
        "608168b380b741e2c7e1a2b0b568c0738986166b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 22 11:03:52 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 02 10:44:52 2014 +0100"
      },
      "message": "Revert \"Revert \"64bit changes to the stack walker for the Quick ABI.\"\"\n\nThis reverts commit 8d5ead52a92675c258113d3dfa71bf8fceba5d9f.\n\nChange-Id: I6b4774a9bd180de33551975e106322ba1192e6ab\n"
    },
    {
      "commit": "8a630577ed2d9e9571c3434c505e5de223b23c07",
      "tree": "106367100c639011f0abb72b3b0e227c0764e8e0",
      "parents": [
        "96c6ab93336b972a38bd2448bcccf19188b8389b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Apr 09 18:45:35 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 25 12:24:46 2014 +0100"
      },
      "message": "Move mapping table and vmap table offsets to OatMethodHeader.\n\nThis change has a libcore/ companion CL\n  \"Remove ArtMethod\u0027s quick fields mapping table and vmap table.\"\n  https://android-review.googlesource.com/91254\n\nBug: 11767815\nChange-Id: I46ce2067e1ecd915da3890606498e31ffc332813\n"
    },
    {
      "commit": "82b1a81890970a8b07f9132aeae537a6c43df6b0",
      "tree": "43ac558ccae56799d093e58c128af83511889f5f",
      "parents": [
        "618a87009202dc959c935ed8f237ae32bdec57d0",
        "d3c5bebcb52a67cb06e7ab303eaf45f230c08b60"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Apr 22 13:25:20 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 22 13:25:20 2014 +0000"
      },
      "message": "Merge \"Avoid allocating OatFile::OatClass on the heap.\""
    },
    {
      "commit": "bbd695c71e0bf518f582e84524e1cdeb3de3896c",
      "tree": "6fe6a128b629abc6a396a192b2e8da1180afeded",
      "parents": [
        "a092ee404ababbf8fc945111dc4a571284c9f02f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 16 09:48:48 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 17 19:01:34 2014 -0700"
      },
      "message": "Replace ObjectSet with LargeObjectBitmap.\n\nSpeeds up large object marking since large objects no longer required\na lock. Changed the GCs to use the heap bitmap for marking objects\nwhich aren\u0027t in the fast path. This eliminates the need for a\nMarkLargeObject function.\n\nMaps before (10 GC iterations):\nMean partial time: 180ms\nMean sticky time: 151ms\n\nMaps after:\nMean partial time: 161ms\nMean sticky time: 101ms\n\nNote: the GC durations are long due to recent ergonomic changes and\nbecause the fast bulk free hasn\u0027t yet been enabled. Over 50% of the\nGC time is spent in RosAllocSpace::FreeList.\n\nBug: 13571028\n\nChange-Id: Id8f94718aeaa13052672ccbae1e8edf77d653f62\n"
    },
    {
      "commit": "d3c5bebcb52a67cb06e7ab303eaf45f230c08b60",
      "tree": "85df477ba745b1e2c85ab1d167b0297236060f2f",
      "parents": [
        "043a7a6182870964021476484b1534106ff20600"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 11 16:32:51 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 14 18:03:41 2014 +0100"
      },
      "message": "Avoid allocating OatFile::OatClass on the heap.\n\nAvoid allocating a BitVector for OatFile::OatClass::bitmap_\nwith kOatClassSomeCompiled methods. That makes the OatClass\ncopy-constructible as it doesn\u0027t own any memory. We use that\nin OatFile::OatDexFile::GetOatClass() to return the result\nby value thus avoiding one or two heap allocations per call.\n\nChange-Id: Ic7098109028a5b49e39ef626f877de86e732ed18\n"
    },
    {
      "commit": "c0a1b18ac71ec0ff3ec0cca3cc8db9eb74e50690",
      "tree": "b587b9b0df1969ab4e9d49c0a57c83cbf2c35feb",
      "parents": [
        "c84d2f1d3feb6271ea260947e2a1eb43d64a099b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 23:19:06 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 23:34:23 2014 -0800"
      },
      "message": "Reuse NoopCompilerCallbacks in oatdump\n\nChange-Id: Icb4d3941196c1a236f0184fe4d0b7f5838bc13bd\n"
    },
    {
      "commit": "2ec6520d57479d393bffa05defa1479b25ca8382",
      "tree": "6f5266b53e335c7bf74b52905f64435dd114a18f",
      "parents": [
        "e6031e6fefc8f439b44e284b8563c790ef764c68"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 03 15:16:37 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 16:53:15 2014 -0800"
      },
      "message": "Support compiler filters for boot classpath\n\nimage_writer.cc\n  Remove assumption that all methods in the boot classpath are compiled\n\noat_writer.cc\n  Don\u0027t skip writing ArtMethod::quick_code_offset_ for methods that need resolution, leave that to ImageWriter\n\ndex2oat.cc\n  Allow dex2dex compilation of image dex files by making the in memory pages writable in all cases, not just app case.\n\noatdump.cc\n  dump new OatHeader fields\n  use ImageSpace.GetImageFilename, not command line image filename, since location may be in dalvik-cache\n  remove inaccurate check about non-null GC map\n\nquick_trampoline_entrypoints.cc\n  add and improve some DCHECKS that were useful while debugging\n\nclass_linker.cc\nimage_space.cc\n  fix double facepalm\n\nparsed_options.cc\n  fix zygote logging to not skip values to two part options like -classpath \u003cfoo\u003e\n\nruntime.cc\n  wireup parsed compiler options to runtime\n\nChange-Id: Iad314df0b80623c0663d61713d5098297ab9ac87\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": "c22c59ef8513b4cbbfd25073d1afbf58196b522a",
      "tree": "416fd01407baa5f4ee5f0f64ea8c1b328965a7b5",
      "parents": [
        "661425e1f90d4f4ed44c66f5e74f48b92a3798df"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 24 15:16:06 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 25 11:10:31 2014 -0800"
      },
      "message": "Remove started runtime check in RevokeAllThreadLocalAllocationStacks\n\nThis check occasionally caused some thread local allocation stacks\nto incorrectly not get revoked when multiple threads were allocating\nwithout a started runtime. This showed up in image_test with\ncompaction enabled when we were initializing classes in the compiler\ndriver.\n\nChange-Id: I7f28d072feea333c2503e35265ba25c51a6308fe\n"
    },
    {
      "commit": "404f59f4125ec9935ad8cffac56ab99d6320b17b",
      "tree": "8a6bd62cb07ace7ff3a9d3e84aa6b1ebb4a91034",
      "parents": [
        "553e30c53423459bef6840a3e358199b1ae2db58"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon Feb 24 11:10:01 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon Feb 24 11:23:46 2014 -0800"
      },
      "message": "Adds 2 new option args to oatdump:\n\n--dump:raw_mapping_table\n--dump:raw_gc_map\nChange-Id: Ic4af5ae5714329da616240abbe64b137ed67d221\n"
    },
    {
      "commit": "90d706849a09590f150748ff97256ef718aca441",
      "tree": "0126eac69b82895b17cffd1ce5b893c268aa6a5f",
      "parents": [
        "c4a2ee4958c1abe17973233b154874ade01d0a99"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Feb 20 16:17:30 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Feb 20 16:17:30 2014 -0800"
      },
      "message": "Fix oatdumpd.\n\nBug: 13063529\nChange-Id: I777cd7621ed522b8ab84c5bb1a9d2e5583817a08\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    },
    {
      "commit": "5115473c81ec855a5646a5f755afb26aa7f2b1e9",
      "tree": "5c2093baffdac8ecd62d08412202a7319689df89",
      "parents": [
        "a72a4b4d7d1d32913f44f07db7c5744905f81f54"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 02 09:44:23 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 02 16:44:08 2014 +0000"
      },
      "message": "Fix oatdump \"compilercallbacks\" option for runtime.\n\nThe \"compilercallbacks\" runtime option replaced \"compiler\"\nin I708ca13227c809e07917ff3879a89722017e83a9 .\n\nFix a comment in codegen_util.cc .\n\nChange-Id: I2c5ebd56dd96f0ee8e62b602bfe45357565471ff\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "56dafdd47cdcde1ba76d6770c506322ffb55b2b3",
      "tree": "f2ff7c9ff3d1e23e574b0afeb35c174fe584e934",
      "parents": [
        "82a9539625f553107b35907f25fb5804a1289936",
        "fa82427c68b09f4aedbee319dc71579afbfc66f5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 06 20:16:53 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Nov 06 20:16:53 2013 +0000"
      },
      "message": "Merge \"Fix oatdump and valgrind.\" into dalvik-dev"
    },
    {
      "commit": "fa82427c68b09f4aedbee319dc71579afbfc66f5",
      "tree": "b8ae1c7be4a00dce290887ee857be5e466a0902b",
      "parents": [
        "6b98c91275d4361d1b74effad36995cc2d687a55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 05 16:12:57 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 06 12:00:14 2013 -0800"
      },
      "message": "Fix oatdump and valgrind.\n\nBug: 11531382\nMove allocation instrumentation out of runtime into instrumentation. Don\u0027t\nattempt to suspend threads in unstarted runtimes.\nMake indentation support sputc returning eof, on which it will sync and try\nagain. A further failure likely means the disk is full.\nMove the dump-oat output directory to be art as now there\u0027s too much output to\nfit all the dump-oat data in our standard /tmp.\n\nChange-Id: I8ea848ace318552c180e2efa46570288ff1ca62c\n"
    },
    {
      "commit": "7020278bce98a0735dc6abcbd33bdf1ed2634f1d",
      "tree": "533cf9a77046a49525d916043a58949e59319f2d",
      "parents": [
        "67f128a4023bbbe55827dd2c11ed0538ee387233"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Oct 22 17:52:19 2013 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Nov 05 16:48:53 2013 -0800"
      },
      "message": "Support hardware divide instruction\n\nBug: 11299025\n\nUses sdiv for division and a combo of sdiv, mul and sub for modulus.\nOnly does this on processors that are capable of the sdiv instruction, as determined\nby the build system.\n\nAlso provides a command line arg --instruction-set-features\u003d to allow cross compilation.\nMakefile adds the --instruction-set-features\u003d arg to build-time dex2oat runs and defaults\nit to something obtained from the target architecture.\n\nProvides a GetInstructionSetFeatures() function on CompilerDriver that can be\nqueried for various features.  The only feature supported right now is hasDivideInstruction().\n\nAlso adds a few more instructions to the ARM disassembler\n\nb/11535253 is an addition to this CL to be done later.\n\nChange-Id: Ia8aaf801fd94bc71e476902749cf20f74eba9f68\n"
    },
    {
      "commit": "88474b416eb257078e590bf9bc7957cee604a186",
      "tree": "7c59aa370bec9b0f2d37cb7a96d3b2effb3d92ce",
      "parents": [
        "9780099e445884d8bc9444c8c1261b02d80a26c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 23 16:24:40 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 29 12:01:28 2013 -0700"
      },
      "message": "Implement Interface Method Tables (IMT).\n\nChange-Id: Idf7fe85e1293453a8ad862ff2380dcd5db4e3a39\n"
    },
    {
      "commit": "ba150c37d582eeeb8c11ba5245edc281cf31793c",
      "tree": "ca12cf82602e4b78b2a6ca463e9d0e35fc5e3ff6",
      "parents": [
        "3c2a6e2468e3e519ade6c3cfcaad7cd34243cdf1"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 27 17:31:03 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 28 00:06:03 2013 -0700"
      },
      "message": "Omit OatMethodOffsets for classes without compiled code\n\nChange-Id: If0d290f4aebc778ff12d8fed017c270ad2ac3220\n"
    },
    {
      "commit": "8d31bbd3d6536de12bc20e3d29cfe03fe848f9da",
      "tree": "2373ae08ddddaf1034623df85d647ecf9ac6c831",
      "parents": [
        "57e6d8a99058e5c74d5244b68a5f4d53526fa108"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 13 10:44:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 21 17:01:11 2013 -0700"
      },
      "message": "Throw IOException at source of failing to open a dex file.\n\nBefore is:\njava.lang.ClassNotFoundException: Didn\u0027t find class \"GCBench\" on path: DexPathList[[zip file \"/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar\"],nativeLibraryDirectories\u003d[/disk2/dalvik-dev/out/host/linux-x86/lib]]\n        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)\n        Suppressed: java.lang.ClassNotFoundException: GCBench\n                at java.lang.Class.classForName(Native Method)\n                at java.lang.BootClassLoader.findClass(ClassLoader.java:781)\n                at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)\n                at java.lang.ClassLoader.loadClass(ClassLoader.java:504)\n                ... 1 more\n        Caused by: java.lang.NoClassDefFoundError: Class \"LGCBench;\" not found\n                ... 5 more\nAnd after is:\njava.lang.ClassNotFoundException: Didn\u0027t find class \"GCBench\" on path: DexPathList[[zip file \"/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar\"],nativeLibraryDirectories\u003d[/disk2/dalvik-dev/out/host/linux-x86/lib]]\n        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)\n        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)\n        Suppressed: java.io.IOException: Zip archive \u0027/disk2/dalvik-dev/out/host/linux-x86/framework/GCBench.jar\u0027 doesn\u0027t contain classes.dex\n                at dalvik.system.DexFile.openDexFile(Native Method)\n                at dalvik.system.DexFile.\u003cinit\u003e(DexFile.java:80)\n                at dalvik.system.DexFile.\u003cinit\u003e(DexFile.java:59)\n                at dalvik.system.DexPathList.loadDexFile(DexPathList.java:268)\n                at dalvik.system.DexPathList.makeDexElements(DexPathList.java:235)\n                at dalvik.system.DexPathList.\u003cinit\u003e(DexPathList.java:113)\n                at dalvik.system.BaseDexClassLoader.\u003cinit\u003e(BaseDexClassLoader.java:48)\n                at dalvik.system.PathClassLoader.\u003cinit\u003e(PathClassLoader.java:38)\n                at java.lang.ClassLoader.createSystemClassLoader(ClassLoader.java:128)\n                at java.lang.ClassLoader.access$000(ClassLoader.java:65)\n                at java.lang.ClassLoader$SystemClassLoader.\u003cclinit\u003e(ClassLoader.java:81)\n                at java.lang.ClassLoader.getSystemClassLoader(ClassLoader.java:137)\n        Suppressed: java.lang.ClassNotFoundException: GCBench\n                at java.lang.Class.classForName(Native Method)\n                at java.lang.BootClassLoader.findClass(ClassLoader.java:781)\n                at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)\n                at java.lang.ClassLoader.loadClass(ClassLoader.java:504)\n                ... 1 more\n        Caused by: java.lang.NoClassDefFoundError: Class \"LGCBench;\" not found\n                ... 5 more\n\nAlso, move dex file verifier messages out of logs.\nIn the process the ClassLinker::dex_lock_ needed tidying to cover a smaller\nscope. Bug 11301553.\n\nChange-Id: I80058652e11e7ea63457cc01a0cb48afe1c15543\n"
    },
    {
      "commit": "657d498c3e644cfae4ee25d8e04749840f137249",
      "tree": "76a56ad873dab4890f9c6963517c7ac731aa7658",
      "parents": [
        "fe29f369ea6dca8999cf61912c65193d60c203e6",
        "ed51dca05ca81dc753d86f26c3b372a6a87f5260"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 10 14:20:53 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 10 14:20:53 2013 -0700"
      },
      "message": "am ed51dca0: am 9fbe6cbd: am 8e3fb146: Revert \"Add Jack modifier.\"\n\n* commit \u0027ed51dca05ca81dc753d86f26c3b372a6a87f5260\u0027:\n  Revert \"Add Jack modifier.\"\n"
    },
    {
      "commit": "8e3fb14615f20677da8421ada131b5f2fcd8eb56",
      "tree": "a06c3cbc6d8ea544fd221765af770921fd340d77",
      "parents": [
        "31c9763a1b5f45ee51cef272244a58fb1115945a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 09 21:00:27 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 09 21:00:27 2013 -0700"
      },
      "message": "Revert \"Add Jack modifier.\"\n\nThis reverts commit 6ffd0967027c092a62d7100ca42ceded369c8ca1.\n\nChange-Id: Ia69241a5100e8f740379e2ed944279de4daaf9ed\n"
    },
    {
      "commit": "e8acf91ebd0ebf76535c157500c22d3dfc7a14f3",
      "tree": "099b8261aa8f6f98732bf7fbc561296b948e9b5b",
      "parents": [
        "c68fb2094b562186a571f496fc46ad2b85b02a39",
        "334d017c2c66731e545a416a76db7fcd621461e3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 02 10:01:17 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 02 10:01:17 2013 -0700"
      },
      "message": "am 334d017c: am a968219b: am 6f277751: Make oatdump support image file generated on device\n\n* commit \u0027334d017c2c66731e545a416a76db7fcd621461e3\u0027:\n  Make oatdump support image file generated on device\n"
    },
    {
      "commit": "6f277751ec5bfc0d7469b2cc7f7134e9032593f1",
      "tree": "46e76b5a0c7e9fe1a3ac5602d8e37b11aac00d92",
      "parents": [
        "eb1efc4575e93543ed459c7ee5c6c36109e69b5f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 30 17:56:45 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 30 18:16:16 2013 -0700"
      },
      "message": "Make oatdump support image file generated on device\n\nBug: 11012947\nChange-Id: Ic7bce4cbf1c00e219c2d312e85b27b980b1396f2\n"
    },
    {
      "commit": "fc0e94bed3f88ed7e50854fd8dfaf5dcb345250f",
      "tree": "5cfbe05084351576e9659cb8f7b66dcb6163a37b",
      "parents": [
        "576fe9d4181c749aa510e32d2521ed4192bdfda0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 23 23:51:32 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 24 17:07:24 2013 -0700"
      },
      "message": "StringPiece clean up.\n\nProfile guided clean up.\nTry to avoid creating StringPieces with the contents of a dex file where\nthe length is known.\nTry to avoid RegTypeCache::FromDescriptor when there\u0027s a class available.\nMake ConstantType::ConstantValue inlinable.\nSaving of about 50ms from a 2 threaded ThinkFree compile on host.\n\nChange-Id: I47a12c3c76f46e2c9805be1c3a3e3870fe1f5d85\n"
    },
    {
      "commit": "ee39a10e45a6a0880e8b829525c40d6055818560",
      "tree": "88cf2b0765ffc8cc96aa2f895254fbf799d0eb40",
      "parents": [
        "7d690ba929a2a02e2b6344749561d49e2c0d55d2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 02:56:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 21 22:00:10 2013 -0700"
      },
      "message": "Use class def index from java.lang.Class.\n\nBug: 10244719\nThis removes the computation of the dex file index, when necessary this is\ncomputed by searching the dex file. Its only necessary in\ndalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the\nlatter not showing up significantly in profiling with this change.\n\n(cherry-picked from 8b2c0b9abc3f520495f4387ea040132ba85cae69)\nChange-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c\n"
    },
    {
      "commit": "8b2c0b9abc3f520495f4387ea040132ba85cae69",
      "tree": "13ea7e5c4e3d1804ec8d420d36f7ea5ab18f6ac0",
      "parents": [
        "5712d5d04640925970db9c98938ffaf806b3962c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 02:56:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 15:17:12 2013 -0700"
      },
      "message": "Use class def index from java.lang.Class.\n\nBug: 10244719\nDepends on:\nhttps://googleplex-android-review.git.corp.google.com/362363\nThis removes the computation of the dex file index, when necessary this is\ncomputed by searching the dex file. Its only necessary in\ndalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the\nlatter not showing up significantly in profiling with this change.\n\nChange-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c\n"
    },
    {
      "commit": "02ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4",
      "tree": "fd568452f4ae81868087e9a5f6c04a9051d0ef83",
      "parents": [
        "28c2300d9a85f4e7288fb5d94280332f923b4df3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 06 13:10:04 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 09 08:33:36 2013 -0700"
      },
      "message": "Move disassembler out of runtime.\n\nBug: 9877500.\nChange-Id: Ica6d9f5ecfd20c86e5230a2213827bd78cd29a29\n"
    },
    {
      "commit": "32327098e300ab66671b891a18bf669576fc896a",
      "tree": "cc7b93b256a6890534f3f5929b2609f40ab71033",
      "parents": [
        "70814f7746793934a29e010211ef6e652ad75cd2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 30 14:04:08 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 30 14:13:41 2013 -0700"
      },
      "message": "Fix oatdump to take bitmap bytes into its accounting.\n\nBug: 10567842\n\nChange-Id: I14d921343bc54598a83cfcf8d7185dca702c2739\n"
    },
    {
      "commit": "01e9779ad3860a44bc356d4734957bbbd6b77e48",
      "tree": "538153ce2f96145735afab38e0413028e6a22e8f",
      "parents": [
        "4bf1c8d4f2127caf769573d7c762a5d460a2781f",
        "31e8925781c2302f1d1a9b39e216ba415bfe0d7e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 29 22:56:21 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Aug 29 22:56:21 2013 +0000"
      },
      "message": "Merge \"Write out image bitmap inside of image file.\" into klp-dev"
    },
    {
      "commit": "31e8925781c2302f1d1a9b39e216ba415bfe0d7e",
      "tree": "12a9173c7134bc08712e46f11ee897072b7afb61",
      "parents": [
        "c6dfdacea2fd9e268f70328805b0366cdd6b7b9e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 28 11:29:12 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 29 15:52:42 2013 -0700"
      },
      "message": "Write out image bitmap inside of image file.\n\nWe now create the image bitmap when we generate the image. The image\nbitmap is written after the image inside of the image file. This\nspeeds up dex2oat by making walking the image during heap creation\nunnecessary. This should also help memory pressure by enabling the\nimage bitmap to be swappable.\n\nBug: 10432288\n\nChange-Id: Idebf459ed15edbb41a7d9b9b353934155bce2f19\n"
    },
    {
      "commit": "4b8c13ee44c4c959d7b8de9adff7ce6df48c31d0",
      "tree": "b7638f8ac891fc09cbe7dd8a98b8af24ddd7acfa",
      "parents": [
        "a7e885013753df3f07bf038a8c4a187fb97c78e1"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 23 18:10:32 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 23 18:10:32 2013 -0700"
      },
      "message": "Fix sort order to make register promotion stable\n\nAlso some minor oatdump fixes\n\nChange-Id: I5679835bf684b98d130b77ecf00bda5f6547d383\n"
    },
    {
      "commit": "02e25119b15a6f619f17db99f5d05124a5807ff3",
      "tree": "7be4cbbf28033e5ee0621565b410fe5d8170a8fb",
      "parents": [
        "7d70a7932f0ba09eb01a93caab060aef1403d4e6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 14 16:14:24 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 16 13:15:37 2013 -0700"
      },
      "message": "Fix up TODO: c++0x, update cpplint.\n\nNeeded to update cpplint to handle const auto.\n\nFixed a few cpplint errors that were being missed before.\n\nReplaced most of the TODO c++0x with ranged based loops. Loops which\ndo not have a descriptive container name have a concrete type instead\nof auto.\n\nChange-Id: Id7cc0f27030f56057c544e94277300b3f298c9c5\n"
    },
    {
      "commit": "7571e8b761ebc2c923525e12ea9fcf07e62cb33e",
      "tree": "5d90ecf4d0ba1a72b040a376f227df1ba9278889",
      "parents": [
        "2e250c826b3c405d675017efe79e5db3651c9ee6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 12 17:04:14 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 15 10:33:53 2013 -0700"
      },
      "message": "Add flock(2)ing on dex-cache files to prevent races\n\nBug: 9071417\nChange-Id: I1ee9ff281867f90fba7a8ed8bbf06b33ac29d511\n"
    },
    {
      "commit": "ea46f950e7a51585db293cd7f047de190a482414",
      "tree": "9dddc8073547a2dcb58a19e1728932a89cb149c3",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 30 01:26:50 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 18:09:46 2013 -0700"
      },
      "message": "Refactor java.lang.reflect implementation\n\nCherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.\n\nMove to ArtMethod/Field instead of AbstractMethod/Field and have\njava.lang.reflect APIs delegate to ArtMethod/ArtField.\n\nBug: 10014286.\n\nChange-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7\n"
    },
    {
      "commit": "7b67bee4f6ca4e634f35f63d1e08e1b05f138e01",
      "tree": "8135032a8ecd634a7cb8e921b9416a9f63c279a1",
      "parents": [
        "0a564f3ef661a98b46c0a36472b48a52a5c735cc",
        "b3733086ab415088b97fac20b3eea24433a7d2c5"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Aug 13 21:01:23 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Aug 13 21:01:23 2013 +0000"
      },
      "message": "Merge \"Add a systrace support for lock contention logging.\" into dalvik-dev"
    },
    {
      "commit": "b3733086ab415088b97fac20b3eea24433a7d2c5",
      "tree": "ad853d385e5c113e5d6248d0f7d198d7d9136865",
      "parents": [
        "4baa8083ae0820f71cf0f03b94fd7f8d3b9bfa46"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Aug 12 17:28:49 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Aug 13 13:53:12 2013 -0700"
      },
      "message": "Add a systrace support for lock contention logging.\n\n- Now several ART executables like oatdump need to link with libcutils\n  as the mutex code is shared among them.\n- The blocking thread ID and lock owner thread ID are passed to\n  ScopedContentionRecorder in the correct order.\n\nBug: 9986464\nChange-Id: Id766de23fbc4af1d8ba2de051595e365b04f5ae7\n"
    },
    {
      "commit": "08bf1967611965b65ffd5de1aa603b60e7b2d6a8",
      "tree": "a9272c3a767cee878fdad81207bd8037f08dd830",
      "parents": [
        "73a79074c06d8b0a8c14946438c59c3821d88fe7"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Mon Aug 12 08:53:04 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Aug 13 10:09:48 2013 -0700"
      },
      "message": "Work on SMALL_ART and PORTABLE working at the same time.\n\nChange-Id: Iddedf63b6f9d908717a4d30f963e9b81a9604d49\n"
    },
    {
      "commit": "1809a72a66d245ae598582d658b93a24ac3bf01e",
      "tree": "f864ff869185b2873637ca70584c66fd6a1e899d",
      "parents": [
        "a9a50926963b5093fb851ed966d201f3e95f72d3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 09 22:05:32 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 09 22:23:50 2013 -0700"
      },
      "message": "Uleb128 compression of vmap and mapping table.\n\nBug 9437697.\n\nChange-Id: I30bcb97d12cd8b46d3b2cdcbdd358f08fbb9947a\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\n"
    },
    {
      "commit": "8a7bc17da633d3577eda040ac490cbd8351dc6b9",
      "tree": "39054b0494486aa68d3852e5125c855af3e01952",
      "parents": [
        "3489af22a126e135acfc3c93beec9c31999c0ce6",
        "55c0ac8528fb07c9f0900013b828ee8c60120860"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 23 14:21:45 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 23 14:21:45 2013 -0700"
      },
      "message": "am 55c0ac85: Merge \"Enable darwin target build for art.\"\n\n* commit \u002755c0ac8528fb07c9f0900013b828ee8c60120860\u0027:\n  Enable darwin target build for art.\n"
    },
    {
      "commit": "19e776ceb178397661b0323a9a982f6db249a56d",
      "tree": "f1e7911e08077dba585b61514d151f2854763f7c",
      "parents": [
        "4560248d4c85cade7f4fc7b30c3fb41b95a04a7f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 23 12:16:44 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 23 12:16:44 2013 -0700"
      },
      "message": "Enable darwin target build for art.\n\nChange-Id: I8fc04258360d663d2fcd07c307fdfdd2981cdd19\n"
    },
    {
      "commit": "6c87180aef7d3127c0f25fcbc76e71f4a4f2b9fa",
      "tree": "ce51b8cef951209b3c3652e588e9caa208f85c92",
      "parents": [
        "08524597899d0bb021c9165218deff51dc88da50"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 14:25:35 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 01:46:37 2013 -0700"
      },
      "message": "Fix oatdump to work after selinux OatFile installd change\n\nChange-Id: I993eceef726fca37fd4c79bc0872fb28899ae2f6\n"
    },
    {
      "commit": "f1d3455064792ac1c486a4a9c24279a37b4af473",
      "tree": "ac3020b447d6929def1f3322b5165bef6a66a4cd",
      "parents": [
        "7940e44f4517de5e2634a7e07d58d0fb26160513"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 20:22:23 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 20:45:54 2013 -0700"
      },
      "message": "Do not mark pages executable unnecessarily to play nice with selinux\n\nChange-Id: Ief4a5da38ac7c2cf7bf6f7a640cb63c5e8ed03bd\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    }
  ]
}
