)]}'
{
  "log": [
    {
      "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": "6bd621aa31aa94ed42a2a35256d219630bf0b687",
      "tree": "1c0991988a0891817c60969ec197bf55fa75ce83",
      "parents": [
        "de1129a26e0474ea8bb9112938ebb867163969fd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 16 17:28:58 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 16 17:43:23 2014 -0700"
      },
      "message": "ART: Move start of linear mmap_scan out of reserved space\n\nThe first 64KB are protected by SELinux, and we will never be\nable to acquire them.\n\nBug: 15024270\nChange-Id: I186a0d5262d396a089d4028a8527a9c56f96dc49\n"
    },
    {
      "commit": "507dfdd147c97bfbadebfd63584d094b6a4e7b47",
      "tree": "cce43931b6dcd088cb2932c2491f86116353a27f",
      "parents": [
        "922ddb30982d2597eab634d8b8598bec0eb7d3b7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:42:40 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:50:51 2014 -0700"
      },
      "message": "Compatibility layer to transition from UniquePtr to std::unique_ptr.\n\nUse ART_WITH_STLPORT (enabled for the target) to cause the use of UniquePtr,\nfor the host switch to std::unique_ptr. For now the type remains called\nUniquePtr.\nMake dalvik compile with clang on the host, move its build to C++11.\n\nChange-Id: I5ba8d2757904bc089ed62047ea03de3c0853fb12\n"
    },
    {
      "commit": "84d49ccd79088eb9a9f423c0a96e3905468cfe7d",
      "tree": "30502e3c3f73000b2e49124cbd2da86d429036d8",
      "parents": [
        "23d2b95b1d1c92898336a4ebf5c0281f79fb7581"
      ],
      "author": {
        "name": "Qiming Shi",
        "email": "qiming.shi@intel.com",
        "time": "Thu Apr 24 15:38:41 2014 +0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 14 19:38:09 2014 -0700"
      },
      "message": "ART: Resolve MAP_32BIT limitation in x86_64\n\nAdd checks that ensure when low4gb is set and an expected pointer\nis given the requested memory fits into 4GB.\n\nOn x86_64, only use MAP_32BIT when there is no expected pointer.\nThis avoids a limitation in mmap (only 2GB visible).\n\nAdd tests to check behavior.\n\nOriginal Author: Qiming Shi \u003cqiming.shi@intel.com\u003e\nChange-Id: Ia2e3e0a46764ef70126b0c264f1fae681622d3cb\n"
    },
    {
      "commit": "4d3e8b019c86abfdb761a14e442fc058882a4d91",
      "tree": "cfc692649b042a5471ed45a300cc17824d1ac16a",
      "parents": [
        "d11fcd3d2882c90efe7a92875072bd4eec4aad0c",
        "9de65ff3a9c49b91d80be292020f012f3d0a24ef"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 24 18:53:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 24 18:53:17 2014 +0000"
      },
      "message": "Merge \"Fixes to mem_map wraparound and ARM64 quick_invoke assembly\""
    },
    {
      "commit": "aa94cf3e77035bf204a21d0341d8f8513a19885c",
      "tree": "56c35c05e73a874e283701207d3b5afa1c781509",
      "parents": [
        "6a3fe330227f2192f6ce97915d62f46247f89378"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 23 23:47:25 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 24 11:02:32 2014 -0700"
      },
      "message": "Avoid strerror until we are sure there is an error\n\nChange-Id: I8f0c5a9cb1b07bfffd5ce9f9ca33f53c8834e9f5\n"
    },
    {
      "commit": "9de65ff3a9c49b91d80be292020f012f3d0a24ef",
      "tree": "bf19a3f908d438e81bd549b895ba84f5d3dd4536",
      "parents": [
        "6a3fe330227f2192f6ce97915d62f46247f89378"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 21 17:25:57 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 21 17:25:57 2014 -0700"
      },
      "message": "Fixes to mem_map wraparound and ARM64 quick_invoke assembly\n\nThere are only 6 free GPRs for passing in a non-static invoke. This\ncorrupted one register for long-signature methods.\n\nThe wrap-around did not actually wrap around correctly.\n\nChange-Id: I62658dadeb83bb22960b9455e211d26ffaa20f6f\n"
    },
    {
      "commit": "7104cbf9c594563c6daae592b8f38f49a423d12e",
      "tree": "71cd3aa726d7ad946f314e41e465b39cb6b8b8c0",
      "parents": [
        "faa93b3ab455492dad1a9d3fb630e3936d389c85"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 21 11:44:43 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 21 11:47:17 2014 -0700"
      },
      "message": "Fix sign problem, implement low-mem mmap wraparound\n\nA signed value comparison meant that on 64b systems comparisons\nwere false when pointers \u003e 2GB were in use (as happens in long-running\ntests). Fix this to be uint.\n\nImplement a simple wrap-around in the MAP_32BIT emulation code.\n\nChange-Id: I09870b4755f2dca676e42e701fbb6f6eb4bb95d0\n"
    },
    {
      "commit": "71a3ebabb2a6b4921071d115aa176d8222aeb803",
      "tree": "ffc2f1125fd81bdd8afe063843a95db84b69c04d",
      "parents": [
        "4eccb97426f5f4233335504256246744c76556aa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 17 12:57:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 17 12:57:08 2014 -0700"
      },
      "message": "Quick typo fix in the 4GB lowmem code\n\nChange-Id: I3371776b0468cd8690e3811c7a1e57f5444e9d8f\n"
    },
    {
      "commit": "8dba5aaaffc0bc2b2580bf02f0d9095c00d26a17",
      "tree": "29b849a3fdffb802f8720f755a9ed0324b8e5b3f",
      "parents": [
        "01d6f6a4adea984b95af38611bc1b50268f77d03"
      ],
      "author": {
        "name": "Stuart Monteith",
        "email": "stuart.monteith@arm.com",
        "time": "Wed Mar 12 12:44:01 2014 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 17 11:32:37 2014 -0700"
      },
      "message": "AArch64: Add memory allocation in low 4GB\n\nMAP_32BIT is implemented for only x86_64. Other 64bit platforms\ndon\u0027t have an equivalent.\n\nThis is a unsophisticated implemention of a scheme using msync and\nMAP_FIXED to reproduce the functionality of MAP_32BIT.\n\nAdds MAP_FIXED to RemapAtEnd, as the address used for the new mmap\ndoesn\u0027t get located correctly without it on aarch64.\n\nAdd MemMap::next_mem_pos_ to store last position. Add a safety assert.\n\nChange-Id: I61871ff7fc327554c43e1d7f448c3d376490f1ea\n"
    },
    {
      "commit": "4fb5df8453367aa3f160ac230c03a7a98a28e562",
      "tree": "069df39819c0f7e8f6f0d4af8569d8a06dafdaf9",
      "parents": [
        "b6825e67ea7b85a910258713910a443cfec747e4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 13 15:10:27 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Mar 14 15:17:32 2014 -0700"
      },
      "message": "Make MemMap::MapAnonymous() fail if the requested address is not available.\n\nChange MapAnonymous() so that a requested address vs. actual map\naddress mismatch will cause a failure. The existing MapAnonymous()\ncall sites do not check this. This should prevent potential rare case\nbugs where mmap does not happen to map a region at an specified\naddress.\n\nThere\u0027s a potential bug that if MapAnonymous() does not guarantee the\nrequested address (and there\u0027s a gap between the image/oat files and\nthe zygote/malloc space), then GC could in theory allocate a large\nobject space in the gap. This would break the GC notion of the immune\nspace. This change will prevent this by causing all non-moving spaces\nto be (really) adjacent, with no gaps in between, which CL 87711\nmissed.\n\nChange-Id: Id4adb0e30adbad497334d7e00def4c0c66b15719\n"
    },
    {
      "commit": "c7cb1901b776129044a4ad3886fd6450e83df681",
      "tree": "611c648c250ac7e84ac7079fe000b7ce76d50685",
      "parents": [
        "c8554361e89970ab92a94d1f719553a30d45b86c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 05 14:41:03 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 05 15:02:18 2014 -0800"
      },
      "message": "Print error message if ImageSpace::Init fails.\n\nAlso changed some of the args in mem_map.cc to print as hex.\n\nBug: 13323732\n\nChange-Id: I02cd81300793515d143e94473f48fc701e401b38\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": "0d6adac2550113da33d42e88f0d87a57b25c5a60",
      "tree": "0a912efc0b1147a1a2ac908d89b05aad4b819a8a",
      "parents": [
        "1dcff62155e8477eb114c8a86eb1beb0797ffc11"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 05 17:39:16 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Feb 06 09:49:26 2014 -0800"
      },
      "message": "Fix apps with more than one dex file with the same name\n\nReverts most of 60836d5a9bcf8b30984aae4279a4f6233b0bf622 which I\nbelieve was an incorrect attempt to address issue introduced in\n8d31bbd3d6536de12bc20e3d29cfe03fe848f9da, which is also reverted here.\n\nAlso adds some debugging aids include operator\u003c\u003c for DexFile and\nMemMap and checksum information to OatFile logging.\n\nBug: 12802375\nChange-Id: Idd6f7dd487f6e01e9479cd15cd4b61580160e8a3\n"
    },
    {
      "commit": "caf22aca3482e2fcc8bf443f911718a5021da1c9",
      "tree": "c4954179726eee89fa5504c1ee51dcb37a39ba8c",
      "parents": [
        "7ea5dafc81b2bba7cabad26130bb75dc8f709803"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 27 18:32:14 2014 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 27 18:32:14 2014 -0800"
      },
      "message": "Modify to use new BacktraceMap creation function.\n\nChange-Id: I703ef4a26917678236b931d81b7e4c758754742b\n"
    },
    {
      "commit": "3cab422021b121cad7a4592114f1b28f636b599d",
      "tree": "1f3b452fe5324a6695feea882f67ad2cc4d34a95",
      "parents": [
        "c666ee8c75118d072bfd2a2b81b80915f6040593"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 23 18:15:19 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 23 18:15:19 2014 -0800"
      },
      "message": "Move __STDC_FORMAT_MACROS to a cflag.\n\nCurrent inttypes.h don\u0027t define stdint printf formatting characters for C++ but\nin the future this will change. Rather than #define __STDC_FORMAT_MACROS at the\npoint of inclusion (conventional) pass it as a cflag so there is a single place\nto remove the #define when conventions change.\n\nChange-Id: Ice2fb07e19d8fc06ebc534c903a2d02497c31b3d\n"
    },
    {
      "commit": "debeb3aaaa4257684029f15733dc30af5dcb8aab",
      "tree": "496b989f3d71a2506647ba0172def9db30c2c71f",
      "parents": [
        "2f7130b2db84a730d32e5b7b99a161ff3cf6326b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 23 16:54:52 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 23 16:55:20 2014 -0800"
      },
      "message": "64bit friendly printf modifiers in mem map errors.\n\nChange-Id: I197c6cf08053b9c833e50156a92965b3b66698eb\n"
    },
    {
      "commit": "943af7dab1454517c5bd11a31ab99f260afb22d1",
      "tree": "0c8101f7d24eee3ff02ed324e34333a83853194f",
      "parents": [
        "00e7f2e935d98f0eb14f5ef1d376604d0054bf5e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 16 12:41:46 2014 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 16 17:42:55 2014 -0800"
      },
      "message": "Change to support new BacktraceMap.\n\nChange-Id: I291313583dca2c8e1e946504c442f5810f0fb477\n"
    },
    {
      "commit": "3b6f0fae76fddf81930a263a075dc87b6039b7fc",
      "tree": "aafa3fa3bfa31a2d5f1f3b407e59b704a4180a77",
      "parents": [
        "34e82934546bd470283346907bd7b74990797c56"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 13 13:26:07 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 13 13:32:42 2013 -0800"
      },
      "message": "Add more logging when mmap fails.\n\nWe now print the reason that the mmap failed.\n\nChange-Id: Ie515e4bba117c9ea1f4297abb826d32172bea962\n"
    },
    {
      "commit": "6b98c91275d4361d1b74effad36995cc2d687a55",
      "tree": "b96cc0d6d15cc60adf0939252b93bb47cb210448",
      "parents": [
        "610e49f5adc8b5e4a37696aa20fc029dab6b1e40",
        "7b5f0cf08f74ff36760a813888779d28a175982d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 05 07:04:12 2013 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 05 07:04:12 2013 -0800"
      },
      "message": "am 7b5f0cf0: Use libbacktrace instead of libcorkscrew.\n\n* commit \u00277b5f0cf08f74ff36760a813888779d28a175982d\u0027:\n  Use libbacktrace instead of libcorkscrew.\n"
    },
    {
      "commit": "7b5f0cf08f74ff36760a813888779d28a175982d",
      "tree": "45d77050651a3423deabe7de7c51d8169f6cfd38",
      "parents": [
        "e2946917852af9d2ec643c7c987d2bb66cf2f086"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Nov 01 15:18:45 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 04 13:46:11 2013 -0800"
      },
      "message": "Use libbacktrace instead of libcorkscrew.\n\nAlso, removed the ignore frames of 2, this was causing threads to chop\nthe lower two frames. The original code assumed that the calls to decode\nthe frame were in the unwind trace, but that\u0027s not the case.\n\nChange-Id: Ifc0da0227f9114a5b462ef88e038439d58f951e9\n"
    },
    {
      "commit": "fd7e7f1253927c8d7f17e7cbc259daaf51868bd3",
      "tree": "2bc3e24751d34e561ae94b6763215e6e209e4dbb",
      "parents": [
        "8584a68279efc0f9a409a3555ae5ebf3ec2cc4ac"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Oct 22 14:17:48 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Oct 25 11:39:50 2013 -0700"
      },
      "message": "Fix a double unmap issue in MemMap::UnMapAtEnd().\n\nMemMap::UnMapAtEnd() unmaps the unused tail of the alloc space during\na zygote fork. But it can cause the same tail region of the memory to\nbe unmapped twice (once in UnMapAtEnd() and once more in ~MemMap()\nduring a shutdown.)\n\nI encountered a crash because of this issue in SpaceTest.ZygoteTest\n(which happens to happen only on a device in a branch with the\nrosalloc change probably due to some randomness in mmap address\nchoice, etc.)\n\nHere\u0027s what happens:\n\n1) CreateZygoteSpace() will call UnMapAtEnd() and unmap the unused\ntail of the alloc space.\n\n2) In the same function, after UnMapAtEnd(), several libc new/malloc\nallocations, including a new DlMallocSpace object, happen. This\nhappens to cause libc to map a new memory region that overlaps with\nthe memory region that has just been unmapped in 1) and use it to\nallocate those allocations (that is, the new DlMallocSpace object is\nallocated in that memory region.) This is a second DlMallocSpace that\nbecomes the new alloc space after zygote fork. The first DlMallocSpace\nbecomes the zygote space. Note that that libc maps that memory region\nbefore the underlying memory of the second DlMallocSpace is mapped.\n\n3) During a Runtime shutdown (which happens once for a normal VM\nshutdown or at the end of each test run) all the spaces get destructed\nincluding the the two DlMallocSpaces one by one. When the first\nDlMallocSpace gets destructed (note the space list is sorted by\naddress,) its super destructor ~MemMap() unmaps the original memory\nregion that\u0027s already partially unmapped in 2). Now this memory region\nincludes the libc memory region that includes the second DlMallocSpace\nobject.\n\n4) When the second DlMallocSpace object gets attempted to be\ndestructed, the memory in which the object resides is already unmapped\nin 3) and causes a SIGSEGV.\n\nThis change replaces UnMapAtEnd() with a new function RemapAtEnd()\nwhich combines the unmapping of the tail region and remapping of it to\nachieve the following two things:\n\n1) Fixes this double unmap issue by updating the base_size_ member\nvariable to exclude the already-unmapped tail region so that ~MemMap()\nwill not unmap the tail region again.\n\n2) Improves on the non-atomicity issue in the unmap/map sequence in\nCreateZygoteSpace(). That is, once the unused tail portion of the\nmemory region of the origina alloc space is unmapped, something like\nlibc could come along and take that memory region, before the memory\nregion is mapped again for the new alloc space. This, as a result,\nwould make a hole between the old alloc (new zygote) space and the new\nalloc space and cause the two spaces to be\nnon-contiguous. RemapAtEnd() eliminates new/malloc allocations between\nthe unmap and the map calls. But note this still isn\u0027t perfect as\nother threads could in theory take the memory region between the\nmunmap and the mmap calls.\n\nAdded tests.\n\nChange-Id: I43bc3a33a2cbfc7a092890312e34aa5285384589\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": "e0948e13d5a4552e6a2728087573c07961e4a4f9",
      "tree": "6162dd8b5e4f05c00f5414e10d1b1ab6fba61a0d",
      "parents": [
        "a7d56cf5e0fe6da41969f6dd841aef0d73f09d93"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 29 09:36:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 29 09:45:43 2013 -0700"
      },
      "message": "Make DexFiles opened from files readonly by default, but writable during dex2oat\n\nBug: 9618388\nChange-Id: I83f2e16ee8446a79a94a84971146d807bb0c9ee0\n"
    },
    {
      "commit": "9004cb6591781d1e6c5ec6d7bc6dc99d9ecee124",
      "tree": "000dd4df72a86f516774945a58b754327c758d24",
      "parents": [
        "9dcd45c60c691524bd8ef7d6f65075d9ee3e5554"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 15:48:31 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jul 29 18:15:36 2013 -0700"
      },
      "message": "Allow MemMap to support empty map requests\n\nDiscovered trying to use ZipEntry::ExtractToMemMap on an empty preloaded-classes.\n\nBug: 8659045\nChange-Id: Icfbbe6b313e2d1ee708b44a8d8d354d6203fd669\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": "2d88862f0752a7a0e65145b088f49dabd49d4284",
      "tree": "3fac6bbd9a0ff3836f361e46579151c8a93420b6",
      "parents": [
        "751d4ed43e8118f145edf18db4d987daf7dabbae"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 17:02:00 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 17:02:52 2013 -0700"
      },
      "message": "Fixing cpplint readability/casting issues\n\nChange-Id: I6821da0e23737995a9b884a04e9b63fac640cd05\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"
    },
    {
      "commit": "2d6ba5158d7fd459db2870df47300b517dc4d08c",
      "tree": "51e306969d4d707aee7a6bc36481390721e0f81f",
      "parents": [
        "1e2ee7de9dff66f7ca2bdf83a7262e21d75b37d1"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 11:31:37 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 24 15:29:06 2013 +0200"
      },
      "message": "Quickening support.\n\nThis CL adds quickening support for methods which are interpreted at runtime.\n\nThis CL introduces a DEX-to-DEX compiler. A method is now compiled in one of\nthe two following modes:\n- Native compilation: the method is compiled by the Quick or Portable backends.\nAt runtime, the generated native target-dependent code is executed.\n- DEX-to-DEX compilation: the method is executed by the interpreter at runtime.\nIts DEX code is compiled so some instructions can be replaced by special\ninstructions only valid at runtime. No native code is generated.\n\nThe quickening adds special instructions to improve runtime performance. They\nare \"-quick\" versions of the following instructions:\n- iget/iput\n- iget-wide/iput-wide\n- iget-object/iput-object\n- invoke-virtual/range.\n\nThese special instructions cannot be treated by the verifier since they lose\nthe field/method index referencing the field/method being accessed/invoked.\nTo prevent this, the DEX-to-DEX compiler is run only on methods of preverified\nclasses (without verification error at compilation time).\n\nThe DEX-to-DEX compiler implements quickening support using the CompilerDriver\ninterface like the native compiler does (Quick or Portable backends).\nTo replace instructions, the DEX-to-DEX compiler must be able to modify the\nmmapped DEX file. Since it can be read-only protected, the DEX-to-DEX compiler\nmust be able to temporarily change its protection to read-write mmapped file.\nTo achieve this, this CL adds support for changing DEX file protection with\nDexFile::EnableWrite and DexFile::DisableWrite methods. Besides, it also adds\na dedicated lock (DexFile::modification_lock) to ensure thread-safety and avoid\nconcurrent DEX file protection change (from a parallel DEX-to-DEX compiler on\nthe same DEX file).\n\nChange-Id: Iaafd103b9766810d7fc94a2c424a8fafba66e26a\n"
    },
    {
      "commit": "f8adc60455b90c95a6a3c8f87830e4e88b2644e1",
      "tree": "da454c5488560a4abca669598ed2f29a22930e57",
      "parents": [
        "dbbc99d2a197592aee8fdaf01253e426c9dff1d8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 17:06:19 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 17:27:31 2013 -0700"
      },
      "message": "Mem map bug fix and documentation.\n\nAddresses issue where valgrind treats a non-null \u0027addr\u0027 as meaning MAP_FIXED.\n\nChange-Id: Ibfd2360cd5bd226f9699022e07b918db612c2f7c\n"
    },
    {
      "commit": "a40307e8562c20d9b9ce46e773864d07d95512a1",
      "tree": "ed4e85f5a7cd52458326a8dcb6ad4f89efa9131b",
      "parents": [
        "5fe2c162a422426687ba3570df1dc68864386764"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 22 11:32:44 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 22 23:26:22 2013 -0800"
      },
      "message": "Ensure VM\u0027s heap is accounted correctly.\n\nThe meminfo dumping assumes that dalvik heap is created using ashmem and has a\nprefix of \"dalvik-\". Ensure ART\u0027s anonymous mmaps fit this pattern. Tidy up\nanonymous mmaps so naming is more consistent.\n\nChange-Id: I9c62a9d1da21da6a048effb0399a1f85865cb12d\n"
    },
    {
      "commit": "700c8d31733534a3d978b75a03f6f7e177dc7e81",
      "tree": "6b9d8d93a70e31dba3b0a880f886ce408776314c",
      "parents": [
        "9adbff5b85fcae2b3e2443344415f6c17ea3ba0a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Nov 05 10:42:02 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jan 25 14:28:43 2013 -0800"
      },
      "message": "Move .oat files to ELF format\n\nGenerates .oat in ELF file format using MCLinker\n- Uses MCLinker IRBuilder to create a synthetic .o from OatWriter output.\n- Uses new ElfFile for prelinking to support art image optimizations.\n\nAdapted OatFile to load using dlopen, ElfFile, or memory, removing raw MemMap mechanism.\n\nChanged image code to not assume oat data will be immediately after\nimage to allow space for ELF headers.\n\nPasses test-art and works with installd.\n\nChange-Id: Idc026eddb5de93f4b97490c405f3ed7b39589749\n"
    },
    {
      "commit": "10c5b78436bf9e603d817b40d1b98961919362b1",
      "tree": "bd683a021c799046d6a470298df6f3d79a39822b",
      "parents": [
        "9e0c175a0cea5c8c88a6927e6375554118f74a82"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 10 10:40:53 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 10 12:02:02 2013 -0800"
      },
      "message": "Fixes for gtests on gPrecise.\n\nAlso make a similar reservation in heap.cc use PROT_NONE rather than\nPROT_READ which should be more efficient.\n\nChange-Id: I648ef5b1bf2906094e92253b30d0a5a7554d1af6\n"
    },
    {
      "commit": "e222ee0b794f941af4fb1b32fb8224e32942ea7b",
      "tree": "0b9f5fe6398663c9d871881cf7de28eca8bdfc6f",
      "parents": [
        "1aa246dec5abe212f699de1413a0c4a191ca364a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 14:41:43 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 15:24:45 2012 -0800"
      },
      "message": "Move stringpiece.h and stringprintf.h to base/.\n\nChange-Id: I7f71b4a12f99c5f81771146c66629ae5a947b229\n"
    },
    {
      "commit": "8161c0336b97e11e02c000af357f8f40de2e23e4",
      "tree": "cc5dafd36fefd9ec71ced5b2af36955053b450f3",
      "parents": [
        "72891f319f83eca0680a9aeb1445dddd40dec99b"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 31 15:50:00 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 31 16:24:36 2012 -0700"
      },
      "message": "More MIPS fixes. The vm-tests and oat tests all work on the emulator.\n\n- Changed the base address of the art image for MIPS to allow enough\n  space for CTS to run on the target.\n- Fixed exception delivery to jump without linking, and to preserve the\n  value of $gp.\n- Added dumping of /proc/self/maps whenever mmap fails, and cleaned up\n  other debugging output (not MIPS related).\n\nChange-Id: I4e92e992ee6a6167e901db8ad90a6062bbc5168a\n"
    },
    {
      "commit": "1c23e1edb7361bbaec6e57fca86d8d3797960ad2",
      "tree": "af8aa791777271fc5105f19a70aa972768493856",
      "parents": [
        "ed6d5ed3494648780b9e91422c90d6bc22c16b79"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 14:14:11 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 17:34:08 2012 -0700"
      },
      "message": "More space refactoring.\n\nAdd common interface, AllocSpace.\n\nRenamed the old AllocSpace to DLMallocSpace.\n\nAdded an new option enforce_target_size_, which when enabled, doesn\u0027t let\nthe heap grow past ideal heap size calculated during last Gc.\n\nRemoved redundant AllocationSize calls.\n\nMoved large object space to its own file instead of being in space.h/cc.\n\nChange-Id: I15e60531114bf213800599737cbd66ef44b46b15\n"
    },
    {
      "commit": "cc236d74772dda5a4161d9bc5f497fd3d956eb87",
      "tree": "2cd44e980357edc5b1a477fb261adb590d34c7c7",
      "parents": [
        "f1ea6b072b8b473eabf91d1d582fb5966ffea4ba"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 20 10:29:05 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jul 27 14:30:51 2012 -0700"
      },
      "message": "Zygote space / partial collection support.\n\nThe zygote space is now created right before zygote fork. This space has new allocations into it disabled, this reduces memory usage since we have more shared pages.\n\nPartial collection works by marking all the zygote space -\u003e alloc space references by using a mod-union table and then recursively marking only over the alloc space.\n\nApproximate improvements;\n\nDeltablue time goes down ~0.5 seconds.\n\nCaffeinemark score goes up ~300.\n\nSystem memory usage goes down ~7MB.\n\nChange-Id: I198389371d23deacd9b4534f39727eb641786b34\n"
    },
    {
      "commit": "1c849e5badc85b6753dee0c0487729b2c0529f51",
      "tree": "5f5c602d60404f66d363fe1b4f619d89087fef33",
      "parents": [
        "78a5e15629e6591090582cd83b1ec1380a50a840"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 28 14:00:33 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 28 14:00:33 2012 -0700"
      },
      "message": "Clean up kAccWritable in the verifier.\n\nkAccVerifier was deprecated, instead memory permissions were used in its\nstead.\n\nMove dead code scanning in the verifier to be enabled when the results\nwill be logged.\n\nChange-Id: Id20e62eefe958bd577b86bd7396a439d7a01c1b3\n"
    },
    {
      "commit": "a168c83a1d247094e9efb1244b0f73a5f1e1ed97",
      "tree": "d0fb5a91a00227eda6b430fd64f2a1bff5271723",
      "parents": [
        "289be85116aaf7c48413858b5d0448868b4e61f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 15:34:20 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 15:34:20 2012 -0700"
      },
      "message": "Convince tsan that the card table isn\u0027t a problem.\n\nAlso move the #include \u003csys/mman.h\u003e into \"mem_map.h\", since it\u0027s\ncurrently not possible to make any use of the latter without the\nformer. If we care about the pollution, we should offer our own\nconstants as part of our API.\n\nChange-Id: I01ec451d23c1d8afb8cb8a6660af8d9723faf5f5\n"
    },
    {
      "commit": "7bda15835732b2ce874a093c136ca406d4f20e00",
      "tree": "a29f7656d44ed72b2304147801219a6fcaaef563",
      "parents": [
        "ecd3a6fc6e29d7dc4cb825c5282a8054ac52b8cf"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 07 11:00:54 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 07 11:00:54 2012 -0700"
      },
      "message": "Fix the Mac build.\n\nChange-Id: Id46f542ddf6198dc5268bc1109b253308fab5244\n"
    },
    {
      "commit": "ecd3a6fc6e29d7dc4cb825c5282a8054ac52b8cf",
      "tree": "f684b381860df24cfea1414d01bff9a37c054023",
      "parents": [
        "a060ed959efb8d57419edc3c5c1fa48372cc6588"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 18:16:37 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 07 10:07:12 2012 -0700"
      },
      "message": "Use libcorkscrew to detect map collisions.\n\nI taught libcorkscrew about Mac OS map info, so we don\u0027t need another\ncopy of the multi-platform map-parsing code.\n\nChange-Id: Iebb4559804d9d8210d00311987171079a7ee0919\n"
    },
    {
      "commit": "a060ed959efb8d57419edc3c5c1fa48372cc6588",
      "tree": "5d40e49f8f9f7cbcf2a1a5be1d800b8ab03d8f21",
      "parents": [
        "b65c9244ff8999fd62aecd86494886c61a50a60c"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Jun 07 09:25:28 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Jun 07 09:32:37 2012 -0700"
      },
      "message": "Fix error meessages in DexFile::ChangePermissions() and mem_map.cc.\n\nChange-Id: I9be999b61b0fca1ab9cad7521346681d2370f1c4\n"
    },
    {
      "commit": "d88fa26892ad5ddebb7ab3407cdc574c54ed8258",
      "tree": "0c99e8b69ed93347908505d4c56b6bf48e4b3e28",
      "parents": [
        "07a062cc9770d0fa8c73f116db4cb15bfba8b7b3"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Jun 06 15:23:32 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 06 21:01:17 2012 -0700"
      },
      "message": "Add mprotect helper function to MemMap class.\n\nChange-Id: I3967b76301d339de987fb8e094adbde4ef18573d\n"
    },
    {
      "commit": "5ea8d4b0912a5bc139be21fc901f982a6b023675",
      "tree": "4f13619e78557bc77e941630ef8a67430e489e03",
      "parents": [
        "b5c4922f3c0f56eec5064536c4bb780c4f58f3fb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 30 15:21:36 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 30 15:21:36 2012 -0700"
      },
      "message": "Better diagnostics when an anonymous mmap fails.\n\nChange-Id: I0657950077c58c28b4f63990e42df6396215c07c\n"
    },
    {
      "commit": "8d524a1bd3cbbe701572b232cf2e690835c95346",
      "tree": "9c3a9c53b9ebb56485a9a7c4d648020dc56dd719",
      "parents": [
        "cf7d3a3b813b8bf08e127abeab67a425c9752f63"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 17:20:10 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 17:20:10 2012 -0700"
      },
      "message": "Keep trying to guess the 10.5 vmmap(1) syntax...\n\nChange-Id: I960e33e0b97e9f7f52b815af3fbed4e2557a5225\n"
    },
    {
      "commit": "273cf36d199cf73de3cf61a559ad27c9d23f9825",
      "tree": "351cced4f439a1151a2d07dcc197960abcd9fb23",
      "parents": [
        "ba7a3ecc0c7342a19951f076474c41d43168f68e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:31:04 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:31:04 2012 -0700"
      },
      "message": "Keep fighting Mac OS 10.5 because the build servers are obsolete.\n\nChange-Id: I01b51a7dba147327e839c801109ffcc636ae8a4f\n"
    },
    {
      "commit": "ba7a3ecc0c7342a19951f076474c41d43168f68e",
      "tree": "e62902f63d5dee9224d354f69491c060c2100cde",
      "parents": [
        "0a6d59a83a84dbd78b55a7a1a754b2873a1e7a6e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 12:23:49 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 12:23:49 2012 -0700"
      },
      "message": "Try to support obsolete Mac OS 10.5.\n\nvmmap(1)\u0027s -v option was new in 10.6.\n\nChange-Id: I92465e5f0b9d74f9435cc5600881b4f4bce19989\n"
    },
    {
      "commit": "448e93c728b352729afde3c8e95e902c08b1d929",
      "tree": "62f1748c09bf8b3e97cf941a3c2cc9afeeceb71b",
      "parents": [
        "f1498437b0d6beb9f4f91980b98cbeb0b5c773ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 28 22:30:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 28 22:30:06 2012 -0700"
      },
      "message": "Fix dex2oat on the Mac.\n\nWhat did we do before valgrind? _NSGetExecutablePath was responsible for the\nheap corruption. The vmmap(1) parsing was slightly off too.\n\nChange-Id: Id458d99c0f75e70a5c59cfbd785ea2efebfbdfce\n"
    },
    {
      "commit": "1bac54ffa933fbe9b92b62437577f2f4583eff1a",
      "tree": "a27134343ed3cd45a286c3a68b9a4469e70f13e7",
      "parents": [
        "96970cdab3e28511322ce37fa578f6eff8931d72"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "message": "Fix all our unused parameter warnings so we let GCC report them.\n\nThere were a couple of genuine bugs here (fixed), plus there\u0027s a missing\nfeature in trace.cc that I\u0027ve just added a TODO for.\n\nAlso note that I haven\u0027t touched the compilers; this warning is still\nexplicitly disabled for that code. I\u0027ll do that when there\u0027s less going\non in those directories.\n\nChange-Id: Ic3570bf82411a07c7530bfaf1995ac995b9fc00f\n"
    },
    {
      "commit": "96970cdab3e28511322ce37fa578f6eff8931d72",
      "tree": "ed684d4eef1274ec3ce89a43896ddec9a0380c80",
      "parents": [
        "0512f02dd6623c0870c11fbf3274d7462f732136"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 13 15:46:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:12:02 2012 -0700"
      },
      "message": "Implement CheckMapRequest for Mac OS.\n\n(cherry picked from commit d594adbd5126249950d42d3986ca86d066c3d912)\n\nChange-Id: I1e99aa15d8fd9bde47042469fc31a3032b69bdf0\n"
    },
    {
      "commit": "30fab40ee5a07af6b8c3b6b0e9438071695a57f4",
      "tree": "86514e3535c8b23cf52249a202076b59ac532021",
      "parents": [
        "f3778f66879fa038a7c9ebe46d5bc4167ddef7d8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 23 15:43:46 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 26 17:32:10 2012 -0800"
      },
      "message": "Upgrade to latest dlmalloc. Refactor Heap and related APIs to use STL like naming.\n\nWe fail assertions in the existing heap code, as does Dalvik. This refactoring\nis to clean the heap and space APIs and to reduce duplication of data\nand thereby solve a failing assertion in the card table.\n\nThis change also wires up clearing of soft references including before\nout-of-memory errors are reported.\n\nIn doing this change it was made clear that mspaces are buggy (and\nviolating invariants with the garbage collector). This\nchange upgrades to an un-Android molested version of dlmalloc-2.8.5 and\nimplements a version of the mspace morecore routine under ART control.\n\nrun-test 061-out-of-memory is updated for current heap sizes.\n\nChange-Id: I377e83ab2a8c78afb9b1881f03356929e2c9dc64\n"
    },
    {
      "commit": "ad6c9c3dbf7541340f22ccbb333f08556ad7e000",
      "tree": "dc11a1165c0f145cf3e6b5edc16bea8b57ba62fe",
      "parents": [
        "d1029981c8ec2341f76376c8d8e15d72dda4c45f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 19 17:39:12 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 20 14:04:02 2012 -0800"
      },
      "message": "Mac build fixes.\n\nThis gets us pretty close. There are a few problems with libraries we depend\non (system/core/liblog and external/icu4c) that I have workarounds for, and\na problem with gtest that I haven\u0027t yet worked around that prevents us from\nlinking any of the tests. But this at least gives us a Mac dex2oat binary.\n\nChange-Id: Iac39a6c2963c3d37ab2165d7d1a70e303ba22c45\n"
    },
    {
      "commit": "89521898b56f2ebc3fb68acfb6bc6dde9b6f5c38",
      "tree": "6811878efd4490f78ae099ec7e14c1a1ffe4d868",
      "parents": [
        "c74a6971fb9a65dbee337d51e7981a37be208a00"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Dec 07 22:05:07 2011 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 04 00:23:07 2012 -0800"
      },
      "message": "Merge art-cache dex files into oat files\n\nChange-Id: I5a327a4e0b678bd9dabb12de4e21ef05e3fefd0b\n"
    },
    {
      "commit": "955724179c6c739524f610023287f56b24dc31de",
      "tree": "64f751693e72173ae0d044d8c54989b01f1195af",
      "parents": [
        "b87f73ea7524f6eb9da6da1af931a3d3fbb833ff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 18:14:20 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 18:14:20 2011 -0800"
      },
      "message": "Don\u0027t default-construct std::strings and then assign them.\n\nChange-Id: I8c994d1e6a8d2ebe52eaa4f0132e0deb2ecfa5f3\n"
    },
    {
      "commit": "6c9c06dbb0b16714079afaedbebd3d548aa832b2",
      "tree": "9b0ae57d2eb1e977a07f2837ac81397e8b227571",
      "parents": [
        "fb85604748667491610e309c868f80de2b7865c1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 07 16:43:47 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Nov 07 17:02:46 2011 -0800"
      },
      "message": "Use ashmem to name our various anonymous regions.\n\nChange-Id: If64576b831a2fdcb83ffce40e6ec8ece8d902672\n"
    },
    {
      "commit": "cc607471d301e468ac0d84deacd1f60667331f67",
      "tree": "f2a8818b996e2cfca2f27863da797ad57ae98bd8",
      "parents": [
        "29405cfc691196c21325e80d9a9f3795026eff4e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 15:34:11 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 15:34:11 2011 -0700"
      },
      "message": "Use CHECK_OP instead of CHECK where possible.\n\nChange-Id: I2f12650e42bab057d0fd3b2978250306a6b264ab\n"
    },
    {
      "commit": "e24fa61603a60ade3797e4a0c8b3fccb346cb048",
      "tree": "9ec5ed942eb9ece6d4d261ffd21956c94f9968fe",
      "parents": [
        "06cbeb990e94f9c4576601e27145fe132e34a686"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 29 00:53:55 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 03 10:28:05 2011 -0700"
      },
      "message": "Separate oat from image\n\nChange-Id: If2abdb99826ead14e3465d90ba2acffd89709389\n"
    },
    {
      "commit": "27ec961a1da540ba7f16c07a682585ab167317ad",
      "tree": "0aa6cb8345e394fe0ebe608bc26aa2acbdac1393",
      "parents": [
        "03fa263ba90e9f6b11231576c6b9cc434e67141d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 19 20:20:38 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 21 10:36:24 2011 -0700"
      },
      "message": "Adding oat_process\n\n- Added oat_process, a version of app_process use to launch frameworks apps\n- Added liboat_runtime, a version of libandroid_runtime that uses art instead of dvm\n  This is just a special makefile, frameworks/base/core/jni code is used for source\n- Added support for build a boot.oat with the full BOOTCLASSPATH\n  The older smaller boat.oat is now core.oat\n- Added mem_map code for making sure a requested memory region is available\n  Moved mem_map code to cc file to make easier to debug with smaller rebuild\n- Moved oat base address to 0x6000000 as a work around to host addres conflict\n- Added -Xms and -Xmx options to dex2oat to allow build specific memory options\n- Fixed miranda method initialization problem found compiling full bootclasspath\n- Made compiler.cc tolerant of verification errors found compiling full bootclasspath\n- Bumped arena block alloc warning to avoid noise when compiling full bootclasspath\n- Marked implicit GC unimplemented to fail fast\n- Added --output argument to oatdump\n- Made many object asserts tolerate access in IsErroneous state\n  now that verifier is failing validation of some classes during compilation\n- Made runtime tolerate unknown access as short term solution for oat_process\n- Workaround SSA issue to restore full bootclasspath compilation\n- Added test-art-target-processs to excercise oat_process with \"am\"\n  \"am\" found bug where class_linker was using Method::GetClass and not ::GetDeclaringClass\n\nChange-Id: I1a645a142b163e06bab9e72eb094ae1f1dbfbd97\n"
    }
  ]
}
