)]}'
{
  "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": "ba0c51fd282c4f47b95230c5444e76f342900cfa",
      "tree": "19fc240937854b35e4dd93cb1e6d4c7a2168e87c",
      "parents": [
        "84e524207b23d58a1b1e5f4443000ccac97c4184"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 16 12:26:00 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Mon May 19 11:26:10 2014 -0700"
      },
      "message": "Switch ART to libc++.\n\nTODO: remove all vestiges of stlport.\n\nChange-Id: I95a3cb0b53d0898f0a5d388b606e79522f4d85e0\n"
    },
    {
      "commit": "c6585b7db95771782b2b0144efb8a18fa0f6906f",
      "tree": "7a919248c1e793bd733195e086686c637b249c67",
      "parents": [
        "245e536fbe303a114cf3f2535122fcb327a243b7"
      ],
      "author": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Wed Apr 23 18:19:44 2014 -0700"
      },
      "committer": {
        "name": "Ying Wang",
        "email": "wangying@google.com",
        "time": "Fri May 16 11:01:24 2014 -0700"
      },
      "message": "64-bit host multilib build.\n\nBug: 13751317\nChange-Id: I98c0d593e441add79d51ec1b690c4abd3489a8cf\n"
    },
    {
      "commit": "b14329f90f725af0f67c45dfcb94933a426d63ce",
      "tree": "eca2720bdc759d2e4b5058bc022f595303ebb971",
      "parents": [
        "30b65201aa9c953433dbde1288e9b1b883042cd1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 15 11:16:06 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 15 12:32:44 2014 -0700"
      },
      "message": "ART: Fix MonitorExit code on ARM\n\nWe do not emit barriers on non-SMP systems. But on ARM, we have\nplaces that need to conditionally execute, which is done through\nan IT instruction. The guide of said instruction thus changes\nbetween SMP and non-SMP systems.\n\nTo cleanly approach this, change the API so that GenMemBarrier\nreturns whether it generated an instruction. ARM will have to\nquery the result and update any dependent IT.\n\nThrow a build system error if TARGET_CPU_SMP is not set.\n\nFix runtime/Android.mk to work with new multilib host.\n\nBug: 14989275\nChange-Id: I9e611b770e8a1cd4ca19367d7dae0573ec08dc61\n"
    },
    {
      "commit": "78f7b4c04ab6e8b5581921bc95b67a9beee1c246",
      "tree": "78b93c72007478b5bfc3b88ab413fa3d772da723",
      "parents": [
        "052a647973b590c9d5007a2e16f313f4e32a70bd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 06 10:57:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:28:35 2014 -0700"
      },
      "message": "Add concurrent reference processing.\n\nConcurrent reference processing currently works by going into native\ncode from java.lang.ref.Reference.get(). From there, we have a fast\npath if the references aren\u0027t being processed which returns the\nreferent without needing to access any locks. In the slow path we\nblock until reference processing is complete. It may be possible to\nimprove the slow path if the referent is blackened.\n\nTODO: Investigate doing the fast path in java code by using racy reads\nof a static volatile boolean. This will work as long as there are no\nsuspend points inbetween the boolean read and referent read.\n\nBug: 14381653\n\nChange-Id: I1546b55be4691fe4ff4aa6d857b234cce7187d87\n"
    },
    {
      "commit": "fd3077e4b9ebadd281777310d26e64443858f653",
      "tree": "c63911af29580ab8c0fc8dd29171e626871449aa",
      "parents": [
        "a08ec9b372d4f5e918b3d68499fbd1731180cd98"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 23 10:32:43 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 25 10:36:05 2014 +0200"
      },
      "message": "Refactor exception handling for deoptimization\n\nThis CL refactors the exception handling (on the quick side) by isolating the\nsearch of catch handler and the preparation of deoptimization.\n\nWe rename the CatchFinder class to QuickExceptionHandler so it\u0027s less specific\nto catch handler search.\n\nFinding catch handler happens in QuickExceptionHandler::FindCatch. Since the\nCatchBlockStackVisitor resolves exception types, it may cause thread suspension\nand breaks the assertion current thread can\u0027t be suspended. Therefore, we place\nthe exception in a SirtRef (while it is detached from the current thread) and\nremove the thread suspension assertion.\n\nDeoptimization now happens in QuickExceptionHandler::DeoptimizeStack. It uses\nthe new DeoptimizeStackVisitor class to create shadow frames.\n\nWe also add the Thread::GetDeoptimizationException method to get the definition\nof the fake exception in only one place.\n\nChange-Id: I01b19fa72af64329b5c3b6c7f0c3339d2d724978\n"
    },
    {
      "commit": "bd5ea6a2f7c61c4cd7b66fead1bedd96e938369d",
      "tree": "1c1dde0d817303e669c413a919c192e2f3463bb0",
      "parents": [
        "5e17616b7386159cef8f2fb6ffe3cbc4fb1373e4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Apr 16 16:34:44 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Apr 16 16:35:44 2014 -0700"
      },
      "message": "Preparation for transition to libc++.\n\nMove the dependency on libc++ to its own makefile so that we can switch in a\nsingle place between libc++ and stlport.\n\nChange-Id: Ie61e7d054dcd049e36d5e7298c27d8a4abe6edf7\n"
    },
    {
      "commit": "5f3ded46a1da26f6a51cad16d421ca2fdc0f23ad",
      "tree": "e5d44213563093b8435dc1fc025b5114a93ab189",
      "parents": [
        "0537c5ea92a4fb60a04024cc2b7247f08a3d9096"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 03 15:25:30 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 03 16:34:46 2014 -0700"
      },
      "message": "Restore the args in the invoke trampoline slow paths.\n\nPreviously, there were errors caused by not restoring the args for\nthe slow path in artInvokeInterfaceTrampoline and artInvokeCommon. The\nslow path in artInvokeInterfaceTrampoline occurs when you attempt\nto do an interface dispatch of a method in another dex file. The slow\npath in artInvokeCommon occurs when the method in dex cache is not\nalready resolved.\n\nSince FindMethodFromCode may resolve a method, it can occasionally\ncause thread suspension/GC. If a moving GC occurred at this point it\nresulted in this_object being invalid after the trampoline returned\nthe code pointer. This caused a native crash in one of the money runs\nsince there was an unbundeled app which did a List.iterator call.\n\nBug: 12934910\nChange-Id: Ib454faad14bef0d7732a6d7f1ca5803472d502a6\n"
    },
    {
      "commit": "d0ab1223cc8c5181e502196a7765790ad2aba3c8",
      "tree": "0ff7b987cb3742c12a10cdb1cf95cba104c858d1",
      "parents": [
        "a7a49dd64b2cce5cd3918a01c9cd372931f90dd8",
        "d59b7b18d9c63a0a8902718d6d70154037489fef"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 02 23:51:59 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 02 23:52:00 2014 +0000"
      },
      "message": "Merge \"Keep the symbol table in the shared libraries.\""
    },
    {
      "commit": "8afeb85d3def12b559b7565fb6d3956f81b55132",
      "tree": "60ac7c63d7adba0dc117ac88dd98cc97a879e0ca",
      "parents": [
        "0807e7bbbafc4b4e8e7fb1d2d54fbcb011c05c82"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Apr 02 14:55:49 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Apr 02 14:55:49 2014 -0700"
      },
      "message": "Pass instruction-set from runtime through to spawned dex2oat.\n\nChange-Id: I1727af7beb9f710c29124d4d6bc9175e4856f3cc\n"
    },
    {
      "commit": "8e157dc9e2938aa7eeadaf4ea34e8d3e727136bc",
      "tree": "295c380a2a9b2c57851fb60576abf5661ecad237",
      "parents": [
        "5120686d956cdea3f4b662941f361e0867a4bbad",
        "8b2c8b9642d5fe037f93ab0cb6a5065e2a192e40"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Apr 02 10:29:49 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 02 10:29:50 2014 +0000"
      },
      "message": "Merge \"Move most zygote related code to frameworks/base.\""
    },
    {
      "commit": "d59b7b18d9c63a0a8902718d6d70154037489fef",
      "tree": "bff6e28ce760262b5114bee49be7e87e68bb606a",
      "parents": [
        "f689b93e904e062d83a7ae7e8cacce0b52af3323"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 01 12:29:09 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 01 20:55:59 2014 -0700"
      },
      "message": "Keep the symbol table in the shared libraries.\n\nIn order to allow the unwinder code to have meaningful names for\nart functions, leave the symbol table.\n\nHere are the size increases:\n\nPlatform    Size Increase\n--------    -------------\narm         ~631K\narm64       ~631K\nmips        ~424K\nx86         ~565K\nx86_64      ~565K\n\nBug: 12958251\nChange-Id: Ib8bf11bef648f8296f4d6544f7b2af0d7f969ad8\n"
    },
    {
      "commit": "8b2c8b9642d5fe037f93ab0cb6a5065e2a192e40",
      "tree": "7c831f43cff569af934ca013447b7cfc5716fef9",
      "parents": [
        "7414375acad6170606903013d331f653173c299f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Mar 31 16:44:54 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Apr 01 16:43:02 2014 +0100"
      },
      "message": "Move most zygote related code to frameworks/base.\n\nAvoids code duplication across art/dalvik. Also, most of\nthis code is not directly related to the runtime (mounting external\nstorage, multi user etc.) and therefore belongs in the frameworks.\n\nChange-Id: Icf4723dd0ec4521ef6b1f785c99d50aebca7779a\n"
    },
    {
      "commit": "dd7624d2b9e599d57762d12031b10b89defc9807",
      "tree": "c972296737f992a84b1552561f823991d28403f0",
      "parents": [
        "8464a64a50190c06e95015a932eda9511fa6473d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 17:43:00 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 01 08:24:16 2014 -0700"
      },
      "message": "Allow mixing of thread offsets between 32 and 64bit architectures.\n\nBegin a more full implementation x86-64 REX prefixes.\nDoesn\u0027t implement 64bit thread offset support for the JNI compiler.\n\nChange-Id: If9af2f08a1833c21ddb4b4077f9b03add1a05147\n"
    },
    {
      "commit": "d5307ec41c8344be0c32273ec4f574064036187d",
      "tree": "9c80a692e2b142b3149b6efb660065fc73170a58",
      "parents": [
        "0fd52d5d0cf01e5a109851098a43a79f5615dc0f"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 27 21:07:51 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Mar 27 21:07:51 2014 -0700"
      },
      "message": "An empty collector skeleton for a read barrier-based collector.\n\nBug: 12687968\n\nChange-Id: Ic2a3a7b9943ca64e7f60f4d6ed552a316ea4a6f3\n"
    },
    {
      "commit": "b95a5345ae4217b70ca36f0cced92f68dda7caf5",
      "tree": "d9c76db71eb8dd3a668643781eefe6152888fd1d",
      "parents": [
        "66e4c3e96dccdec7423d673ad6bbf7821a776651"
      ],
      "author": {
        "name": "Stuart Monteith",
        "email": "stuart.monteith@arm.com",
        "time": "Wed Mar 12 13:32:32 2014 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 19 17:17:55 2014 -0700"
      },
      "message": "AArch64: Add arm64 runtime support.\n\nAdds support for arm64 to ART. Assembler stubs are sufficient for\ndown calls into interpreter. JNI compiler and generics are not finished.\n\nBasic Generic JNI functionality.\n\nChange-Id: I4a07c79d1e037b9f5746673480e32cf456867b82\n"
    },
    {
      "commit": "38e68e9978236db87c9008bbe47db80525d2fa16",
      "tree": "d678fea32b91d148e33c71ff0e6a53a90f2585b8",
      "parents": [
        "fb5b21d1d598b6b42e5d5ca1dac4a040832558fb"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 07 13:59:08 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 14 17:45:08 2014 -0700"
      },
      "message": "Use the card table to speed up the GSS collector.\n\nScan only dirty cards, as opposed to the whole space, to find\nreferences from the non-moving spaces to the bump pointer spaces at\nbump pointer space only collections.\n\nWith this change, the Ritz MemAllocTest speeds up by 8-10% on host and\n2-3% on N4. The Ritz EvaluateFibonacci speeds up by 8% and its average\npause time is reduced by 43% on N4.\n\nBug: 11650816\nChange-Id: I1eefe75776bc37e24673b301ffa65a25f9bd4cde\n"
    },
    {
      "commit": "737d7c3638cf87cfe00488468b0ea5623c5880b5",
      "tree": "cdb3eb19e0fab826371adc6dc74bf0bcd6579138",
      "parents": [
        "4ee5bd67c7dd1ba42f8187e038cee3f96cc77839"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 13 20:27:42 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 13 20:27:42 2014 -0700"
      },
      "message": "Fix path for arch/mips/fault_handler_mips.cc\n\nChange-Id: I4af53b2d1f34641e2c5b68474f80f88613a51bbe\n"
    },
    {
      "commit": "b373e091eac39b1a79c11f2dcbd610af01e9e8a9",
      "tree": "034d820c4829e0dcf6161473cc39f7250123bfaa",
      "parents": [
        "9545a446e99b22248099fe66f5f9431530c20851"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Feb 20 16:06:36 2014 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Mar 13 12:21:15 2014 -0700"
      },
      "message": "Implicit null/suspend checks (oat version bump)\n\nThis adds the ability to use SEGV signals\nto throw NullPointerException exceptions from Java code rather\nthan having the compiler generate explicit comparisons and\nbranches.  It does this by using sigaction to trap SIGSEGV and when triggered\nmakes sure it\u0027s in compiled code and if so, sets the return\naddress to the entry point to throw the exception.\n\nIt also uses this signal mechanism to determine whether to check\nfor thread suspension.  Instead of the compiler generating calls\nto a function to check for threads being suspended, the compiler\nwill now load indirect via an address in the TLS area.  To trigger\na suspend, the contents of this address are changed from something\nvalid to 0.  A SIGSEGV will occur and the handler will check\nfor a valid instruction pattern before invoking the thread\nsuspension check code.\n\nIf a user program taps SIGSEGV it will prevent our signal handler\nworking.  This will cause a failure in the runtime.\n\nThere are two signal handlers at present.  You can control them\nindividually using the flags -implicit-checks: on the runtime\ncommand line.  This takes a string parameter, a comma\nseparated set of strings.  Each can be one of:\n\nnone        switch off\nnull        null pointer checks\nsuspend     suspend checks\nall         all checks\n\nSo to switch only suspend checks on, pass:\n-implicit-checks:suspend\n\nThere is also -explicit-checks to provide the reverse once\nwe change the default.\n\nFor dalvikvm, pass --runtime-arg -implicit-checks:foo,bar\n\nThe default is -implicit-checks:none\n\nThere is also a property \u0027dalvik.vm.implicit_checks\u0027 whose value is the same\nstring as the command option.  The default is \u0027none\u0027.  For example to switch on\nnull checks using the option:\n\nsetprop dalvik.vm.implicit_checks null\n\nIt only works for ARM right now.\n\nBumps OAT version number due to change to Thread offsets.\n\nBug: 13121132\nChange-Id: If743849138162f3c7c44a523247e413785677370\n"
    },
    {
      "commit": "0d64958d157ff6a30cbbe79df14ee4c723d14754",
      "tree": "7c64042b391af761e0e3976fe3c1ce93027fa97e",
      "parents": [
        "3314dcf81d116c3142520970286ffaede67ab522",
        "8d562103c3a3452fb15ef4b1c64df767b70507a4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 13 17:20:47 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 13 17:20:48 2014 +0000"
      },
      "message": "Merge \"Refactor immune region logic into its own file.\""
    },
    {
      "commit": "8d562103c3a3452fb15ef4b1c64df767b70507a4",
      "tree": "d9fe8cacae77f597d676beb5086c03086f54e262",
      "parents": [
        "ca46e2003360b44f4c043f6da87092592bc3d6d6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 12 17:42:10 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 13 10:06:28 2014 -0700"
      },
      "message": "Refactor immune region logic into its own file.\n\nAdded immune_region.cc/.h in the collector directory. Changed the\nfunctionality to no longer assume spaces are added to immune region\nin ascending order.\n\nChange-Id: Id1d643b3849ad2695e8a151dbbb74a5035644472\n"
    },
    {
      "commit": "e3e0260c23d8999b9433715ac7ee5296ee2fd633",
      "tree": "8f13f12f929e36d9366583934ebb4a20b4ce09b7",
      "parents": [
        "ca46e2003360b44f4c043f6da87092592bc3d6d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 12 15:42:41 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 12 17:59:23 2014 +0000"
      },
      "message": "Move inline method detection to runtime.\n\nThe debugger needs this for selective deoptimization.\n\nChange-Id: I8100000449b56e619288fb05d41ea6f02b53b334\n"
    },
    {
      "commit": "9719cd2b6ca766e9a6313793730b337c980643ff",
      "tree": "b8ef6cb7f2beb52a939c067c838d82fcbc327122",
      "parents": [
        "c74e46a70108c3ea60a6a937f836b0e3e5ccae1c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 09 14:05:04 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 09 15:09:34 2014 -0700"
      },
      "message": "Support WITHOUT_CLANG builds\n\n(cherry picked from commit c9f7723cdb39f9791775166ec1942e456086ad3c)\n\nChange-Id: I9443e73a07b81038452c694a2f138faecdeff500\n"
    },
    {
      "commit": "719d1a33f6569864f529e5a3fff59e7bca97aad0",
      "tree": "fcd84efd7b9806b93ec1a44e2317e6f882e7fe0e",
      "parents": [
        "5365eea9940269b662cfbe103caa348816ff1558"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 12:13:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 06 19:16:01 2014 -0800"
      },
      "message": "Enable annotalysis on clang ART builds.\n\nFix clang build errors aswell as restructure locking/mutex code for correct\nthread safety analysis support.\nReorder make dependencies so that host builds build first as they should\nprovide better compilation errors than target.\nRemove host\u0027s use of -fno-omit-frame-pointer as it has no value with correct\nuse of CFI, which we should have.\n\nChange-Id: I72cea8da9a3757b1a0b3acb4081feccb7c6cef90\n"
    },
    {
      "commit": "ed8dd492e43cbaaa435c4892447072c84dbaf2dc",
      "tree": "e93e3d1e7dd6770ec8e2a3ed7105a7305eb2bc4d",
      "parents": [
        "511472b9110d15cf30a205bb514eb98f6afce651"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@arm.com",
        "time": "Tue Feb 11 14:15:10 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 05 12:14:43 2014 -0800"
      },
      "message": "AArch64: Add ARM64 Assembler\n\nThis patch adds the ARM64 Assembler and ManagedRegister backend.\nThe implementation of the Arm64Assembler class is based on VIXL (a\nprogrammatic A64 Assembler - see external/vixl ).\n\nChange-Id: I842fd574637a953c19631eedf26f6c70d9ed7f9e\nSigned-off-by: Serban Constantinescu \u003cserban.constantinescu@arm.com\u003e\n"
    },
    {
      "commit": "d889178ec78930538d9d6a66c3df9ee9afaffbb4",
      "tree": "6fa250bdadcdfc1702f57500e618b51df6d46828",
      "parents": [
        "06c09f6d79e037ee00113d6289ef98226680797d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 02 13:28:37 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 03 17:08:30 2014 -0800"
      },
      "message": "Guard entrypoint changing by runtime shutdown lock.\n\nThere was a race when we changed the allocation entrypoints where a\nnew thread would be starting (Thread::Init) and initialize to the\nwrong entrypoints. Guarding allocation entrypoint changing\nwith the runtime shutdown lock fixes this race condition since\nThread::Init is only called with the runtime shutdown lock held.\n\nBug: 13250963\n\nChange-Id: I8eb209c124b6bf17020de874e1b0083f158b8200\n"
    },
    {
      "commit": "491ca9e75fad381468dd7f5fdbff56d1a9738dd7",
      "tree": "4a88d05188aebbcbe868a27b58fc1a932f914ce2",
      "parents": [
        "82e3a8ef9cd776d7026b45fe7fb6c72bcfd61394"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 02 18:24:38 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 03 13:31:40 2014 -0800"
      },
      "message": "Add ART -help and -showversion\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d62149\nChange-Id: I5c21c0433f5f341f94e7d977e8d2d69cc46d6fe3\n"
    },
    {
      "commit": "b48b9eb6d181a1f52e2e605cf26a21505f1d46ed",
      "tree": "117d99c16f201b2f14adfe0922e56b9ff433c133",
      "parents": [
        "3c506f9877b4a106d93169b6bb5610b24a84d61c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 16:20:21 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 19:03:57 2014 -0800"
      },
      "message": "Fix clang to compile and run host tests.\n\nDon\u0027t use the computed goto interpreter with clang 3.4 as it causes compilation\nto hang.\nAvoid inclusion of LLVM_(HOST|DEVICE)_BUILD_MK except for with portable as it\nsets clang incompatible cflags.\nMost fixes are self-evident, for the quick dex file method inliner the enums\nwere being used with ostreams, so fix the enums and operator out python script\nto allow this.\nNote this change effects portable but this is untestable as portable was broken\nby ELF file and mc linker changes.\n\nChange-Id: Ia54348f6b1bd3f76d3b71c6e8c5f97626386b903\n"
    },
    {
      "commit": "659d87d4a61f83f5582d816ee0bc94f00e19b46c",
      "tree": "547c08ad5dabfe64e0941bacf9a7ea7bd354aab7",
      "parents": [
        "4f2573b38f7b0bca027d8540c9b22abe8ba7b7bc"
      ],
      "author": {
        "name": "Dmitry Petrochenko",
        "email": "dmitry.petrochenko@intel.com",
        "time": "Thu Feb 27 14:23:11 2014 +0700"
      },
      "committer": {
        "name": "Dmitry Petrochenko",
        "email": "dmitry.petrochenko@intel.com",
        "time": "Thu Feb 27 14:31:38 2014 +0700"
      },
      "message": "art: Fix build errors for x86_64 target\n\nFixes build issues introduced by multilib, CompilerOptions and ElfFile patches.\n\nChange-Id: Ic05d149e3c7a1e644d0cb50cc7c3599025c90bdf\nSigned-off-by: Dmitry Petrochenko \u003cdmitry.petrochenko@intel.com\u003e\n"
    },
    {
      "commit": "c4a2ee4958c1abe17973233b154874ade01d0a99",
      "tree": "f23021e6aa1bd70eed02e7b8573df689cb6b615b",
      "parents": [
        "de853fec54442da15a7de5df1e6988cbbe68954a",
        "dc781a13ddb4dabf646bb45d0c53b65cab948e5b"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 19 20:25:19 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 19 20:25:19 2014 +0000"
      },
      "message": "Merge \"art: convert makefiles to support multilib build\""
    },
    {
      "commit": "dc781a13ddb4dabf646bb45d0c53b65cab948e5b",
      "tree": "b74e4a579747ce12297b5a66f04669f42dfffa6a",
      "parents": [
        "89925e948c49616689eb4959aaf0e4ff1de18161"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 04 16:22:03 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 18 17:22:15 2014 -0800"
      },
      "message": "art: convert makefiles to support multilib build\n\nConvert makefiles to allow for building two architectures at the\nsame time.  More changes may be necessary to get the tests to\nbuild.\n\nChange-Id: I02ba11706b7e5b5592d76e43c167bcbf0e665b93\n"
    },
    {
      "commit": "d2fe10a3a34af171bf1631219cd2d6ff6b7778b5",
      "tree": "b6b7eb8eba23a5c2723518da99c03bf47b97f58a",
      "parents": [
        "5a3f55ad9519e87c0d3bbddaf3d8a186a887a79b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jan 15 10:20:56 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 17 11:32:15 2014 +0100"
      },
      "message": "Remove blacklist\n\nRemoves the class initialization blacklist and use transaction to detect and\nrevert class initialization attempting to invoke native method. This only\nconcerns class initialization happening at compilation time when generating an\nimage (like boot.art for the system).\n\nIn transactional mode, we log every object\u0027s field assignment and array update.\nTherefore we\u0027re able to abort a transaction to restore values of fields and\narray as they were before the transaction starts. We also log changes to the\nintern string table so we can restore its state prior to transaction start.\n\nSince transactional mode only happens at compilation time, we don\u0027t need to log\nall these changes at runtime. In order to reduce the overhead of testing if\ntransactional mode is on/off, we templatize interfaces of mirror::Object and\nmirror::Array, respectively responsible for setting a field and setting an\narray element.\n\nFor various reasons, we skip some specific fields from transaction:\n- Object\u0027s class and array\u0027s length must remain unchanged so garbage collector\ncan compute object\u0027s size.\n- Immutable fields only set during class loading: list of fields, method,\ndex caches, vtables, ... as all classes have been loaded and verified before a\ntransaction occurs.\n- Object\u0027s monitor for performance reason.\n\nBefore generating the image, we browse the heap to collect objects that need to\nbe written into it. Since the heap may still holds references to unreachable\nobjects due to aborted transactions, we trigger one collection at the end of\nthe class preinitialization phase.\n\nSince the transaction is held by the runtime and all compilation threads share\nthe same runtime, we need to ensure only one compilation thread has exclusive\naccess to the runtime. To workaround this issue, we force class initialization\nphase to run with only one thread. Note this is only done when generating image\nso application compilation is not impacted. This issue will be addressed in a\nseparate CL.\n\nBug: 9676614\nChange-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9\n"
    },
    {
      "commit": "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": "3b878f99dd84807543b9ec7964256c7634471aaf",
      "tree": "1e74ff456d82ed46b5835bdfdc60ab656789176f",
      "parents": [
        "bcba51238943c69943357d48d6727d694f7d9265"
      ],
      "author": {
        "name": "Duane Sand",
        "email": "duane.sand@imgtec.com",
        "time": "Tue Jan 21 10:34:41 2014 -0800"
      },
      "committer": {
        "name": "Chris Dearman",
        "email": "chris.dearman@imgtec.com",
        "time": "Wed Feb 05 19:48:35 2014 -0800"
      },
      "message": "[MIPS64] Temporary placeholder build, to allow other projects to build\n\nThis needs to be reverted once proper mips64 port is available\n\nChange-Id: I64d1c7ebbdb4d8b9cc5306830954df351e67d813\n"
    },
    {
      "commit": "9aeeeac4ba0b136652f213d60a5a1990a333a629",
      "tree": "9ed565fec210c69dc136223edb882a9d858e0788",
      "parents": [
        "d65c39a050af53bef5f92221619b5416b1a8822e",
        "a1602f28c0e3127ad511712d4b08db89737ae901"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 31 18:55:35 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 31 18:55:35 2014 +0000"
      },
      "message": "Merge \"Add zygote space as its own space type.\""
    },
    {
      "commit": "a1602f28c0e3127ad511712d4b08db89737ae901",
      "tree": "44d7abfcaa57de85fd3c3c40d5bff3173cc60387",
      "parents": [
        "a0e4b01b6b1ef5c88e340e6b2c09f83e535777a1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 13 17:19:19 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 31 09:45:09 2014 -0800"
      },
      "message": "Add zygote space as its own space type.\n\nHelps prevent errors caused from doing invalid operations on the\nold alloc space.\n\nRemoved some duplicated code in mark_sweep.cc and semi_space.cc.\n\nChange-Id: I67a772cab30d698744c918aad581053f282a4a99\n"
    },
    {
      "commit": "43b2e0f9105848da6470458e7c04bf1fd7fcb25c",
      "tree": "65406c86398c27c934169251c3a4446e99c885f7",
      "parents": [
        "f7eedc939e9dc07b627b2f94eb132155be992883"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 30 16:58:39 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 30 16:58:39 2014 -0800"
      },
      "message": "Fix multi-line hex dumping and add unit test.\n\nChange-Id: I7657018fef5d9c17410a9a634db275555f180014\n"
    },
    {
      "commit": "81de680f77dcab50ea3c0ea5beca88ad75738c7c",
      "tree": "5d40f93b4abef74a69ae011ee14c0824195e4955",
      "parents": [
        "5f7b0005235538810bc4fd6d2f245b52c186618d"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Jan 21 19:53:00 2014 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jan 23 18:04:49 2014 -0800"
      },
      "message": "art: rename aarch64 target to arm64\n\nRename aarch64 build targets to arm64.  The gcc toolchain is still\naarch64.\n\nChange-Id: Ia92d8a50824e5329cf00fd6f4f92eae112b7f3a3\n"
    },
    {
      "commit": "4e3b284b2babf813c26ad9afb129f57e3d88f67d",
      "tree": "192dab3320cc06b43d8967983a755711f0287c12",
      "parents": [
        "ed31badc6de501320f49bec679dcdf9214ac07cc"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Jan 18 11:26:51 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Jan 18 22:56:17 2014 -0800"
      },
      "message": "Update ElfWriterMclinker for klp\n\n(cherry picked from commit a6263af9aea65c65744bdd845fed68c4814e9514)\n\nChange-Id: I3eb9fee8afb1ef12aae4c87770882afee637971d\n"
    },
    {
      "commit": "00e7f2e935d98f0eb14f5ef1d376604d0054bf5e",
      "tree": "d3d30fe131217a8e996c00a192509038fddb628c",
      "parents": [
        "dd13413cced7d0f064c0ba3f865161c8447400a9",
        "8c1d1acd24c861c9e0b6666fe6e748ba6c830a4a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 16 01:10:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 16 01:10:18 2014 +0000"
      },
      "message": "Merge \"AArch64: Temporary workaround to build art\""
    },
    {
      "commit": "6f4ffe41649f1e6381e8cda087ad3749206806e5",
      "tree": "9848617f37fbe418e59af21a5c204e7b2669a0cc",
      "parents": [
        "89b7ab4cc6e5372bb4dabcc06a907fc333eca3f6"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jan 13 12:30:44 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 14 13:34:59 2014 -0800"
      },
      "message": "Improve the generational mode.\n\n- Turn the compile-time flags for generational mode into a command\n  line flag.\n\n- In the generational mode, always collect the whole heap, as opposed\n  to the bump pointer space only, if a collection is an explicit,\n  native allocation-triggered or last attempt one.\n\nChange-Id: I7a14a707cc47e6e3aa4a3292db62533409f17563\n"
    },
    {
      "commit": "d45a1f5d1dd5bc9badfab3a8aee90c934d9f2227",
      "tree": "c4e92844452b5eabfbd936b8d83c54f58397475d",
      "parents": [
        "0adc680c388913a63666797e907f87c4c6b0b4ea"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jan 09 14:56:54 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jan 10 09:42:09 2014 +0100"
      },
      "message": "Avoid instrumentation stack corruption.\n\nWhile debugging a throwing exception, we may end up updating instrumentation\nstack frame after having already walked the native stack. This leads to not pop\ninstrumentation frames prior to catch handler (or upcall if exception is not\ncaught) and get it desynchronized with the native stack.\n\nTo solve this issue, we need to walk the stack again after having reporting the\nexception to the instrumentation listener (for example: the debugger) which\nmay push new instrumentation stack frames. However we do it only when we know\ninstrumentation is enabled to not slow down exception delivery when executing\ncode without instrumentation.\n\nHere are the main changes:\n- Creates InstrumentationStackVisitor to compute the number of instrumentation\nframes to pop (previously done in CatchBlockStackVisitor). We only count frames\nprior to catch handler (or upcall). Popping instrumentation frames is done\nafter having reported the exception to the instrumentation listener.\n- Updates the CatchBlockStackVisitor to remove instrumentation frame handling\nand focus only on finding the catch handler and prepare deoptimization.\n- Creates CatchFinder class to control both visitors and do the long jump.\n\nChange-Id: I29b3871403f297bfb8c087e27f1330b002f5d56d\n"
    },
    {
      "commit": "0aded089f565008ba5908e395e5914ca4f91f2de",
      "tree": "3b1238d956e0181d00243604c83c3a0be368437d",
      "parents": [
        "98ba6cebd22489c959d845884ee045dcbd958d41"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Nov 07 13:15:11 2013 -0800"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Jan 07 10:58:07 2014 -0800"
      },
      "message": "Add sampling profiler\n\nThis adds a sampling profiler thread that runs every so often, gathering\nprofiling data and writing the results to a file in /data/data (specific to\napp running).  The intention is to use these files as input to the compiler\nso that it can determine the best methods to compile.\n\nBug: 11539952\nChange-Id: I0bfbb4146fb7966673c792f017ffac8107b6272d\n"
    },
    {
      "commit": "8c1d1acd24c861c9e0b6666fe6e748ba6c830a4a",
      "tree": "bfaefa0756f2171693e3b2d434d0f86ccda15c79",
      "parents": [
        "0da9089a855fdbc96e3fc0ff0a881c0d25764262"
      ],
      "author": {
        "name": "Ashok Bhat",
        "email": "ashok.bhat@arm.com",
        "time": "Thu Dec 12 17:10:59 2013 +0000"
      },
      "committer": {
        "name": "David Butcher",
        "email": "david.butcher@arm.com",
        "time": "Thu Dec 19 16:08:01 2013 +0000"
      },
      "message": "AArch64: Temporary workaround to build art\n\nThis patch adds a temporary workaround to build art for\nAArch64, thus allowing building of other dependent projects.\n\nThis needs to be reverted once proper AArch64 port is available.\n\nChange-Id: Ib3d70b9d08ce774efbd4971ce319733dbdda86cc\nSigned-off-by: Ashok Bhat \u003cashok.bhat@arm.com\u003e\n"
    },
    {
      "commit": "9b14e047380f1ead673da5ba07c2f0d602a8e02d",
      "tree": "6fbd79b54f8629982a8b0945ac4ce3f4cb681801",
      "parents": [
        "03d7e9af6ccec24c12f63c0e6b777de412cbb8b1",
        "2ef411b95eec751e8a8f0f0629df0cdb7aec9546"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Dec 15 19:34:35 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Dec 15 19:34:36 2013 +0000"
      },
      "message": "Merge \"x86_64: Updating makefile to avoid early fail of other projects build\""
    },
    {
      "commit": "9e0668f2ef14838b3e5a07e23d581efca9d7b8a1",
      "tree": "f712bb0a81e58576cb23e8c854e356b0f29b92a4",
      "parents": [
        "543154a81625e2c724b6f794afc664cf9eddf65e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 11 15:32:30 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Dec 11 16:17:17 2013 +0000"
      },
      "message": "Add dependency on libutils for libziparchive\n\nChange-Id: I02d58ad0d2f29cc7b94bc4214ca69d988595c4e5\n"
    },
    {
      "commit": "92572be7f754c213e615a62955cc5f65ca8c0c0e",
      "tree": "5d9266c16a5b110bacf1ec6062a46a3e33e16bcb",
      "parents": [
        "1a7e7d6a885bded1ffcdc8ff2490632698dc5139"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Nov 28 14:06:24 2013 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Dec 09 10:19:24 2013 +0000"
      },
      "message": "Use libziparchive for art zip processing.\n\nThis is part of the effort to move all VM \u0026 framework\nzip parsing to a common implementation. This also has\nthe side effect of fixing various TODOs related to\ncrc32 checking.\n\nbug: 10193060\n\nChange-Id: I407f9ad5a94fc91d96ff43556adde00a00df1f14\n"
    },
    {
      "commit": "2ef411b95eec751e8a8f0f0629df0cdb7aec9546",
      "tree": "1d6751b1754474c24f3c4f10a59dec22101d37d1",
      "parents": [
        "315ab6c077c4db2031f1ffa40b78722d8269dc9b"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Wed Nov 27 13:31:37 2013 +0400"
      },
      "committer": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Wed Nov 27 13:31:37 2013 +0400"
      },
      "message": "x86_64: Updating makefile to avoid early fail of other projects build\n\nx86_64 porting should be done later\n\nChange-Id: I73b336b1c46cb2c95dfacfc33aec490be9e357a7\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "cbb2d20bea2861f244da2e2318d8c088300a3710",
      "tree": "9735d496716cf165ea0ee2d7e2f62d723ffc7734",
      "parents": [
        "d31fb9718a6180304cd951619dc36be8e090a641"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 14 17:45:16 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 20 11:14:11 2013 -0800"
      },
      "message": "Refactor allocation entrypoints.\n\nAdds support for switching entrypoints during runtime. Enables\naddition of new allocators with out requiring significant copy\npaste. Slight speedup on ritzperf probably due to more inlining.\n\nTODO: Ensuring that the entire allocation path is inlined so\nthat the switch statement in the allocation code is optimized\nout.\n\nRosalloc measurements:\n4583\n4453\n4439\n4434\n4751\n\nAfter change:\n4184\n4287\n4131\n4335\n4097\n\nChange-Id: I1352a3cbcdf6dae93921582726324d91312df5c9\n"
    },
    {
      "commit": "cf58d4adf461eb9b8e84baa8019054c88cd8acc6",
      "tree": "c49fa473b17e299bc649688076e7d69938741e4e",
      "parents": [
        "be56c9e63335ce99f1042e8660aeac4690b965a9"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 26 14:21:22 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Sat Nov 16 21:35:03 2013 -0800"
      },
      "message": "A custom \u0027runs-of-slots\u0027 memory allocator.\n\nBug: 9986565\nChange-Id: I0eb73b9458752113f519483616536d219d5f798b\n"
    },
    {
      "commit": "39e3261168e7761fea6d873494d7c5d191285791",
      "tree": "b0fe6e048631991cd8842a9b4a374c3d843c2e83",
      "parents": [
        "ad435ebd9d011eef66ef77e96b065024220c10ad"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 12 16:28:05 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 15 10:38:59 2013 -0800"
      },
      "message": "Refactor reference queues.\n\nRefactored the reference queue processing to reside in the heap code.\nThis removes significant code duplication in the semispace and\nmarksweep garbage collectors.\n\nChanged the soft reference behaviour to preserve all soft references\nunless the GC requires them to be cleared to avoid an out of memory\nerror. It may be worth investigating a better heuristic in the\nfuture to preserve soft references by LRU order.\n\nChange-Id: I1f3ff5bd4b3c5149271f4bb4fc94ba199e2f9bc2\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": "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": "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": "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": "8f8389e7d7ca5b005e0418640255c5a5eeda4a0a",
      "tree": "47b92d8a732f4aef23632aa504684235b4c838be",
      "parents": [
        "79b4f38dd35b83206e8166aaafb94bd75c3318b3",
        "59fe2a68b94daa4d215d69facec1b3079846df9e"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Oct 24 08:33:55 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Oct 24 08:33:55 2013 -0700"
      },
      "message": "am 59fe2a68: Add -Wl,--no-fatal-warnings to x86 build\n\n* commit \u002759fe2a68b94daa4d215d69facec1b3079846df9e\u0027:\n  Add -Wl,--no-fatal-warnings to x86 build\n"
    },
    {
      "commit": "59fe2a68b94daa4d215d69facec1b3079846df9e",
      "tree": "eabc638dc6affcabfe35f80eb17618fb9d9db14f",
      "parents": [
        "5d79c5deba3fa27825a2d5a399713b9490f5ca28"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Oct 23 17:21:05 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Wed Oct 23 17:24:11 2013 -0700"
      },
      "message": "Add -Wl,--no-fatal-warnings to x86 build\n\nlibart.so has text relocations. When -Wl,--fatal-warnings is added\nto the global LDFLAGS, these text relocations will become a compile\nerror.\n\nThis is a short term workaround until the text relocations can be\nfixed properly.\n\nBug: 11358761\nBug: 11353056\nChange-Id: I886d668a1bd6ed326f6552693d8c38c5d5a6b43d\n"
    },
    {
      "commit": "d9c4fc94fa618617f94e1de9af5f034549100753",
      "tree": "1305efbbc3d4bc306c0947bb6d4b01553667f98e",
      "parents": [
        "7ef126ce0593929bcf8fb73d8b1119ce3b95b3f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 01 19:45:43 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 02 09:31:55 2013 -0700"
      },
      "message": "Inflate contended lock word by suspending owner.\n\nBug 6961405.\nDon\u0027t inflate monitors for Notify and NotifyAll.\nTidy lock word, handle recursive lock case alongside unlocked case and move\nassembly out of line (except for ARM quick). Also handle null in out-of-line\nassembly as the test is quick and the enter/exit code is already a safepoint.\nTo gain ownership of a monitor on behalf of another thread, monitor contenders\nmust not hold the monitor_lock_, so they wait on a condition variable.\nReduce size of per mutex contention log.\nBe consistent in calling thin lock thread ids just thread ids.\nFix potential thread death races caused by the use of FindThreadByThreadId,\nmake it invariant that returned threads are either self or suspended now.\n\nCode size reduction on ARM boot.oat 0.2%.\nOld nexus 7 speedup 0.25%, new nexus 7 speedup 1.4%, nexus 10 speedup 2.24%,\nnexus 4 speedup 2.09% on DeltaBlue.\n\nChange-Id: Id52558b914f160d9c8578fdd7fc8199a9598576a\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": "7095c6546e03eba2076edcf628b947179c975cb3",
      "tree": "8c3b263d430a36f775634f203f63cfcb43651281",
      "parents": [
        "02ed4c04468ca5f5540c5b704ac3e2f30eb9e8f4",
        "8ece050d85fc244c72610244e440b0e00aa618fa"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 09 15:53:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 09 15:53:33 2013 +0000"
      },
      "message": "Merge \"Add an interpreter using computed goto table.\" into dalvik-dev"
    },
    {
      "commit": "8ece050d85fc244c72610244e440b0e00aa618fa",
      "tree": "6f9c9a909fc5c2cdf9cd4ba5c285381be39cc370",
      "parents": [
        "28c2300d9a85f4e7288fb5d94280332f923b4df3"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 07 11:26:41 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 09 17:40:11 2013 +0200"
      },
      "message": "Add an interpreter using computed goto table.\n\nThis CL adds a new implementation of the interpreter using computed goto table.\nIn order to keep the switch-based implementation, it reorders things as the\nfollowing:\n- Keep interpreter entrypoints into interpreter.h/.cc files.\n- Move common interpreter parts to interpreter_common.h/.cc files.\n- Separate both implementations to their own modules.\n\nThe interpreter implementation can be selected by changing the value of the\nkInterpreterImplKind global variable (see interpreter.cc file). The default one\nremains the switch-based implementation.\n\nAlso updates the exception handling (FindNextInstructionFollowingException) and\nSPARSE_SWITCH switch handling (DoSparseSwitch) routines to share code between both\nimplementations.\n\nFinally, adds a PACKED_SWITCH handling routine (DoPackedSwitch) so we are\nconsistent with SPARSE_SWITCH handling.\n\nThe computed goto implementation use two handlers table: one for normal\ninstruction handling and one for instrumentation handling. The current handlers\ntable to be used is updated on backward branch depending on whether there is\nlistener to DEX pc change.\n\nBug: 10602809\nChange-Id: Ibb53bcc68be75c473fe5440835e78fc9a74381b3\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": "193bad9b9cfd10642043fa2ebbfc68bd5f9ede4b",
      "tree": "0fc125adc74316df802b76889a780decd5b8236b",
      "parents": [
        "179486aee731f734207873244542993ed4bcff21"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 29 18:46:00 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 03 17:44:20 2013 -0700"
      },
      "message": "Multi threaded hashed deduplication during compilation.\n\nMoved deduplication to be in the compiler driver instead of oat\nwriter. This enables deduplication to be performed on multiple\nthreads. Also added a hash function to avoid excessive comparison\nof byte arrays.\n\nImprovements:\nBefore (alloats host):\nreal\t1m6.967s\nuser\t4m22.940s\nsys\t1m22.610s\n\nThinkfree.apk (target mako):\n0m23.74s real     0m50.95s user     0m9.50s system\n0m24.62s real     0m50.61s user     0m10.07s system\n0m24.22s real     0m51.44s user     0m10.09s system\n0m23.70s real     0m51.05s user     0m9.97s system\n0m23.50s real     0m50.74s user     0m10.63s system\n\nAfter (alloats host):\nreal\t1m5.705s\nuser\t4m44.030s\nsys\t1m29.990s\n\nThinkfree.apk (target mako):\n0m23.32s real     0m51.38s user     0m10.00s system\n0m23.49s real     0m51.20s user     0m9.80s system\n0m23.18s real     0m50.80s user     0m9.77s system\n0m23.52s real     0m51.22s user     0m10.02s system\n0m23.50s real     0m51.55s user     0m9.46s system\n\nBug: 10552630\n\nChange-Id: Ia6d06a747b86b0bfc4473b3cd68f8ce1a1c7eb22\n"
    },
    {
      "commit": "0e480cad5d2cf0904b98b7b56e90280e9b97ba30",
      "tree": "56e12c8d362e1c6aaef38e8d1f7e54ade1b3a21c",
      "parents": [
        "d2b0f33cf01601f040494f4f882e60f70b527930"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 16 14:36:13 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 16 14:57:10 2013 -0700"
      },
      "message": "Move output_stream files out of runtime.\n\nAlso move image_test and oat_test that are more writing tests.\n\nChange-Id: I6af1400d8e745bbf87f626ca87dae3e2d85b40f1\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": "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": "848871b4d8481229c32e0d048a9856e5a9a17ef9",
      "tree": "4be4602e3becc899f76a29a87618801458fe04b9",
      "parents": [
        "423fb4d70f2ac36bf9f630146b4150771a8e7e76"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 05 10:56:33 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 07 22:17:00 2013 -0700"
      },
      "message": "Entry point clean up.\n\nCreate set of entry points needed for image methods to avoid fix-up at load time:\n - interpreter - bridge to interpreter, bridge to compiled code\n - jni - dlsym lookup\n - quick - resolution and bridge to interpreter\n - portable - resolution and bridge to interpreter\n\nFix JNI work around to use JNI work around argument rewriting code that\u0027d been\naccidentally disabled.\nRemove abstact method error stub, use interpreter bridge instead.\nConsolidate trampoline (previously stub) generation in generic helper.\nSimplify trampolines to jump directly into assembly code, keeps stack crawlable.\nDex: replace use of int with ThreadOffset for values that are thread offsets.\nTidy entry point routines between interpreter, jni, quick and portable.\n\nChange-Id: I52a7c2bbb1b7e0ff8a3c3100b774212309d0828e\n"
    },
    {
      "commit": "f133479fa1d7e41bc9e63f50088dbcb8592d074c",
      "tree": "90466fb1941f08e63d565715901592131703b6e7",
      "parents": [
        "0b12b9318c29d7c32d5a605e0b1dc309872c8a37",
        "025218c7e4330a4942b14f9a8f1f68bd3390261c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 30 21:38:38 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jul 30 21:38:38 2013 -0700"
      },
      "message": "am 025218c7: Clean up stlport usage.\n\n* commit \u0027025218c7e4330a4942b14f9a8f1f68bd3390261c\u0027:\n  Clean up stlport usage.\n"
    },
    {
      "commit": "025218c7e4330a4942b14f9a8f1f68bd3390261c",
      "tree": "8bfc33d0dcc9d5687845cea2c8d24a5020b1aa3a",
      "parents": [
        "2724776ad521eebb1c7f0e4be56d6e6ab4764f86"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 30 17:13:06 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 30 17:13:06 2013 -0700"
      },
      "message": "Clean up stlport usage.\n\nChange-Id: I133cd88f1da37f6f801a9e07a78ae23b671cf4f1\n"
    },
    {
      "commit": "7655f29fabc0a12765de828914a18314382e5a35",
      "tree": "219f2df20cf7f053a73a345ae20e131a73759c79",
      "parents": [
        "1a8080d4c2e1772cfcc5e9d6587bc63bba3945d9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 11:07:13 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 30 16:00:24 2013 -0700"
      },
      "message": "Portable refactorings.\n\nSeparate quick from portable entrypoints.\nMove architectural dependencies into arch.\n\nChange-Id: I9adbc0a9782e2959fdc3308215f01e3107632b7c\n"
    },
    {
      "commit": "c95d6b1cb35b382804b9a310d32f66059eca65d9",
      "tree": "c1425fd0cb38efd47bfbc97fff839fbac922e02c",
      "parents": [
        "166db04e259ca51838c311891598664deeed85ad",
        "b07b8b7a1815fc22c0e7b3f0899406cc7eeebaca"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 18:20:01 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jul 29 18:20:01 2013 +0000"
      },
      "message": "Merge \"Move vector output stream to compiler.\" into dalvik-dev"
    },
    {
      "commit": "b07b8b7a1815fc22c0e7b3f0899406cc7eeebaca",
      "tree": "350bf8394b15497ad004deca1803aba1484b7fae",
      "parents": [
        "d41119e863a9f9c5809b7732d30870ffd237b60c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 11:12:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 11:12:14 2013 -0700"
      },
      "message": "Move vector output stream to compiler.\n\nChange-Id: Ia4c5edabb6be31a7d953c932b490ed2d89f941c1\n"
    },
    {
      "commit": "166db04e259ca51838c311891598664deeed85ad",
      "tree": "5ffa63c1b3bf58e92be2890c54f0ba6fdec2059e",
      "parents": [
        "d41119e863a9f9c5809b7732d30870ffd237b60c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 26 12:05:57 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 09:52:11 2013 -0700"
      },
      "message": "Move assembler out of runtime into compiler/utils.\n\nOther directory layout bits of clean up. There is still work to separate quick\nand portable in some files (e.g. argument visitor, proxy..).\n\nChange-Id: If8fecffda8ba5c4c47a035f0c622c538c6b58351\n"
    },
    {
      "commit": "0a9dc05e704bfd033bac2aa38a4fc6f6b8e6cf93",
      "tree": "ceee6b2676b4fbcee37d98bbb3b6e063bcbdd9b2",
      "parents": [
        "d792cc1569c3505d68352c11a72447419ee6eaaf"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 25 11:01:28 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 25 15:30:43 2013 -0700"
      },
      "message": "GC data structures allocation tracking\n\nAdds a new stl compatible allocator that is used in most GC data\nstructures. When the data structures allocate and free memory, it\nlets the heap know of how much memory was allocated or freed. Using\nthis info, we dump the approximated stl data structures memory usage\nwhen a sigquit occurs.\n\nThe allocation tracking can be disabled with a compile time boolean\nflag to remove performance impact.\n\nChange-Id: Idddb6713169e07be913bceeb50f305c8573e4392\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": "0e260a32601fb1178e11837c460807071d489f82",
      "tree": "5b9d4ac485805f99e0ada0009bbe040cf0d523e9",
      "parents": [
        "49ed57499b918553e2d3db922ca2826dffa5bcd1"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Fri Jun 21 09:20:34 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Mon Jul 22 10:19:07 2013 -0700"
      },
      "message": "Added code generation framework.\n\nvisitors.h: Contains only IR visitor declarations for now.\ncode_gen.h: Code generation vistor declaration (needs llvm).\ncode_gen.cc:Code generation visitor implementation (needs llvm).\ninstruction_nodes.h: Classes for each type of instruction; this\n            enables the visitor to visit each instruction differently and\n            corresponds to the sea of nodes paper.\nsea_node.h : Moved base Sea IR Node to this separate header.\n             Replaced NO_REGISTER with enum (including RETURN_REGISTER)\nsea.cc: Addded code generation call.\n        Set parent region for SignatureNodes.\n        Propagate method and class ids in IR generation routine.\n        Create InstructionNode subclasses.\n*.mk: Updated to support the new files. Fixed some pre-existing formatting.\ninstruction_tools.h: Fixed double-define of NO_REGISTER to\n                     refer to the new enum.\ndex_instruction.cc: Added support for one more instruction in\n                    HasRegXX and VRegXX functions.\n\nChange-Id: I7c78f603e41df7bf9da5b77951b8485dd1b49200\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"
    }
  ]
}
