)]}'
{
  "log": [
    {
      "commit": "1dd61ba3081a52c3e2efdc78d64f5c134eea7895",
      "tree": "3d708c62ffacf62d1ecd2019ea7a183411ff5787",
      "parents": [
        "427ca38b0a6c6fd7dc0dbb380619e2b91b56cf1c"
      ],
      "author": {
        "name": "Vladimir Kostyukov",
        "email": "vladimir.kostyukov@intel.com",
        "time": "Wed Apr 02 18:42:20 2014 +0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 07 09:39:16 2014 -0700"
      },
      "message": "ART: A workaround for a wrongly-read caller\u0027s frame\n\nThe quick-trampoline treats caller\u0027s frame in a different way\nthen it was formed by quck-invoke stub for hard float ABI targets\nsuch as x86_64 and aarch64. The patch workarounds the issue of\nwrongly-read stack arguments due to no contract between quick-invoke\nstub and quick-trampoline/shadow-frame-builder regarding the reg-\nspill area.\n\nChange-Id: I302f212b4ea5e38632527a5ace03f136b21ef806\nSigned-off-by: Vladimir Kostyukov \u003cvladimir.kostyukov@intel.com\u003e\n"
    },
    {
      "commit": "ad61517890168ff6ed19063cc8032a9c033d135b",
      "tree": "7bc9f0fa28eaedef854527c85cb15ff3d0afea8f",
      "parents": [
        "e8b4bbcef44f7fe76896850b2f5750cd46b1ade0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 04 16:20:13 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 04 16:28:13 2014 -0700"
      },
      "message": "Fix wrong handling of Generic JNI not finding native method.\n\nCode did not properly call JNIMethodEnd, such that locks etc\nwhere not correctly handled.\n\nAdd a test case to jni_compiler_test.\n\nChange-Id: If2d5c628517d65a56dd6bb5c4cabdff77c7664a1\n"
    },
    {
      "commit": "0bf8b9ca3899a2913948d02fa17ce5fbe3e7af54",
      "tree": "f1e4ab44932f5ef11af271b8bb69a24953104fb2",
      "parents": [
        "839f43a40c9fe170266f42a9726c02195c73d043"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 04 09:55:27 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 04 10:04:47 2014 +0100"
      },
      "message": "Please clang by making explicit instantiations non-static.\n\nChange-Id: I4112bf62c69b4f28ca369c4bf3c626be43692afd\n"
    },
    {
      "commit": "8689a0a0f266dde073fe7b328c3ceeaa1b23276a",
      "tree": "2fa121695151511832acc8691b9a4d7d1b71a82d",
      "parents": [
        "541dd231f9a7282f7fd1092349a322dc67bafaf2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 04 09:26:24 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 04 09:35:11 2014 +0100"
      },
      "message": "Explicitly instantiate artInvokeCommon to please analysis tool.\n\nChange-Id: I5c078a197c5026e9bd886d0ba1e188054b5ffa75\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": "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": "f943914730db8ad2ff03d49a2cacd31885d08fd7",
      "tree": "885a781e5f8bd852e2c1615108ae7b17576a6567",
      "parents": [
        "cfd5acf281b0c509f86b13d73c6a8dfa3ea9922c"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Mar 27 15:10:22 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon Mar 31 18:04:08 2014 -0700"
      },
      "message": "Implement implicit stack overflow checks\n\nThis also fixes some failing run tests due to missing\nnull pointer markers.\n\nThe implementation of the implicit stack overflow checks introduces\nthe ability to have a gap in the stack that is skipped during\nstack walk backs.  This gap is protected against read/write and\nis used to trigger a SIGSEGV at function entry if the stack\nwill overflow.\n\nChange-Id: I0c3e214c8b87dc250cf886472c6d327b5d58653e\n"
    },
    {
      "commit": "84956ff6c0ff150d86a08157216ded79217d860a",
      "tree": "04177625872b89f27f00a53b574085416617ee0d",
      "parents": [
        "636583c586b78e188168e510452cef0645578f8d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 26 23:52:41 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 26 23:56:58 2014 -0700"
      },
      "message": "Reflection tidying.\n\nMove out arguments to the right and make pointer not reference types.\nRemove unused unbox for argument routine.\nSimplify convert primitive routine for the case of identical types.\n\nChange-Id: I6456331b0f3f3e5f0b2c361a9f50b4ed1c9462a3\n"
    },
    {
      "commit": "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": "53b8b09fc80329539585dcf43657bc5f4ecefdff",
      "tree": "cac0f82fbb89bd907104e3fed6c36203e11a3de0",
      "parents": [
        "0dea9872082bc3e576ed6cefed86b0d6c0c45ffd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 23:45:53 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 11:28:10 2014 -0700"
      },
      "message": "Refactor reflective method invocation.\n\nMove invocation code out of JNI internal into reflection, including ArgArray\ncode. Make reflective invocation use the ArgArray to build arguments rather\nthan allocating a jvalue[] and unboxing arguments into that.\nMove reflection part of jni_internal_test into reflection_test.\nMake greater use of fast JNI.\n\nChange-Id: Ib381372df5f9a83679e30e7275de24fa0e6b1057\n"
    },
    {
      "commit": "9a6a99aaac2e4c973e0bc71075f196b8b084100f",
      "tree": "ec82d1b0a85232f98dad95ade6120c63160e1347",
      "parents": [
        "ba3c292374282b658ddfd188a8bba565240036a0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 14 07:52:20 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 14 07:52:20 2014 -0700"
      },
      "message": "Remove small duplicate code in Generic JNI handling, add comments\n\nChange-Id: Ib276fa63b6a00480eaaff6c352d37917c61e966c\n"
    },
    {
      "commit": "90546836312adda54f28b700f25ff29ec8becdf8",
      "tree": "e420ee1f4e80adae2ebe152cca39a8d64d09148f",
      "parents": [
        "9545a446e99b22248099fe66f5f9431530c20851"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 12 18:07:19 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 13 15:20:18 2014 -0700"
      },
      "message": "Fixes for Generic JNI\n\nThis fixes some linking issues and native code retrieval errors.\nAll host tests are functional with this change.\n\nMake ArtMethod::GetFrameSizeInBytes() templated to bypass the\nembedded sanity check. Necessary for fix-up decision.\n\nAdd ArtMethod metadata fix-up code to ClassLinker::LinkCode.\nNecessitates new parameters to access the shorty and compute\nthe frame size.\n\nFix handling the JNI dlsym lookup stub in the generic JNI code.\n\nChange-Id: I4173b0fbb1ba5b1bcbee1bb340cfdd08a54767e5\n"
    },
    {
      "commit": "9758f79a6c1ef7f662caca9c1df39de1934166b8",
      "tree": "fdffb18605692c990665f3e99a17dcb0efb09893",
      "parents": [
        "c1020433660737d466b0d726bbeb86d9a279a44a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 09:02:55 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 09:12:20 2014 -0700"
      },
      "message": "Implement FINAL/OVERRIDE for clang.\n\nSeparate declaration from definition in certain places to work-around issues\nwith clang.\nRemove bogus lock annotation at definition in compilers.cc that is already\npresent at the declaration.\nRemove duplicate definition of ClassReference.\n\nChange-Id: I5368057bb36319a259110b2198610d9d2b2e5041\n"
    },
    {
      "commit": "36fea8dd490ab6439f391b8cd7f366c59f026fd2",
      "tree": "6720290f54717f7cee1116103cd1839147936146",
      "parents": [
        "63dcdff34c40a64df6939ea5bba71813abd2acd3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 10 13:37:40 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 12 15:16:12 2014 -0700"
      },
      "message": "Fixing structure of native frame for Generic JNI\n\nThis changes the layout of the callee-save frame used in generic\nJNI to be consistent with the JNI compiler, that is, the SIRT is\ninline (above the method reference). Now the location of the\n\"this\" object is consistent.\n\nChange-Id: Ibad0882680712cb640b4c70ada0229ef7cf4e62c\n"
    },
    {
      "commit": "0f6784737882199197796b67b99e5f1ded383bee",
      "tree": "139888bdfad743c50e800ad46b9aec97ae3415d3",
      "parents": [
        "73a471336a9515fa7fdc5859e3c481ec451237a5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 10 16:18:37 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 10 18:02:07 2014 -0700"
      },
      "message": "Unify 64bit int constant definitions.\n\nLL and ULL prefixes are word size dependent, use the INT64_C and UINT64_C\nmacros instead.\n\nChange-Id: I5b70027651898814fc0b3e9e22a18a1047e76cb9\n"
    },
    {
      "commit": "7a0e504e60441012c78fc2f3ab8d4da131185c50",
      "tree": "da9980eb313d2e8eb279a88f00375e910e1d98e5",
      "parents": [
        "d57abe5f75e2c82052d7396d6ec6eafc7f3af58a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 07 13:03:19 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 10 09:17:10 2014 -0700"
      },
      "message": "More JNI compiler tests and small fix\n\nAdd checks for alignment, floats, and maximum number of parameters\nFixed x86_64 ABI wrong interpretation (floats not widened in registers)\n\nChange-Id: I6c09af4914b7675ac0275ce21003e317ca44a403\n"
    },
    {
      "commit": "e0dcd46314d07eeb332edea292f5110178e4e3d2",
      "tree": "d1060bc54e1ad26bad69a6e06662e643e75ce484",
      "parents": [
        "80a250f8862096b72e7357c12b40dc9d5310a475"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 08 15:21:04 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Mar 09 02:17:46 2014 +0000"
      },
      "message": "JNI down call fixes.\n\nEnsure SIRT isn\u0027t accessed via quick callee save frame.\nSome tidying of code.\n\nChange-Id: I8fec3e89aa6d2e86789c60a07550db2e92478ca7\n"
    },
    {
      "commit": "c147b00f86c28f5275c99c8ce515499c90c01e31",
      "tree": "d90a9f1139b043c2c16f6c69c46919d4b97ea5f5",
      "parents": [
        "aa00fe010eb7b61c2de82611ce3f6fc0918a4f9e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 06 18:11:06 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 07 20:35:17 2014 +0000"
      },
      "message": "Release unused parts of a JNI frame before calling native code\n\nTwo-pass process for setting up the JNI frame so we can put Sirt\nand native call stack as close together as possible.\n\nChange-Id: I827167a55fafc4eba7d4eaf14a35fc69fd5f85ce\n"
    },
    {
      "commit": "c645f1ddb7c40bea6a38eda4b3f83f6b6dec405b",
      "tree": "de6141864c1c011216c19dd99a2c1e2bc442dd6d",
      "parents": [
        "a9d7be62735e3356cef7e8ed797c519134a17061"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 06 18:11:53 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 12:09:04 2014 -0800"
      },
      "message": "Add more VerifyObject calls.\n\nAdded verify object calls to SirtRef, IndirectReferenceTable,\nReferenceTable.\n\nRemoved un-needed verify object in ScopedObjectAccess / DecodeJObject\nsince object sources are handled.\n\nBug: 12934910\nChange-Id: I55a46a8ea61fed2a77526eda27fd2cce97a9b125\n"
    },
    {
      "commit": "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": "bf6b92a158053c98b15f4393abb3b86344ec9a20",
      "tree": "93a28d1e01b045a8df23fe5279601496b62af3dd",
      "parents": [
        "359597ee8c0667a7d2c0b74dcbb0f90bb6059bae"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 05 16:11:04 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 05 22:32:53 2014 -0800"
      },
      "message": "Generic JNI implementation for x86_64\n\nStarting implementation for generic JNI on x86_64. Frames are of\nlarge static size (\u003e4K) right now, should be compacted later. Passes\nthe whole of jni_compiler_test.\n\nChange-Id: I88ac3e13a534afe7568d62a1ef97cb766e8260e4\n"
    },
    {
      "commit": "2ec6520d57479d393bffa05defa1479b25ca8382",
      "tree": "6f5266b53e335c7bf74b52905f64435dd114a18f",
      "parents": [
        "e6031e6fefc8f439b44e284b8563c790ef764c68"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 03 15:16:37 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 04 16:53:15 2014 -0800"
      },
      "message": "Support compiler filters for boot classpath\n\nimage_writer.cc\n  Remove assumption that all methods in the boot classpath are compiled\n\noat_writer.cc\n  Don\u0027t skip writing ArtMethod::quick_code_offset_ for methods that need resolution, leave that to ImageWriter\n\ndex2oat.cc\n  Allow dex2dex compilation of image dex files by making the in memory pages writable in all cases, not just app case.\n\noatdump.cc\n  dump new OatHeader fields\n  use ImageSpace.GetImageFilename, not command line image filename, since location may be in dalvik-cache\n  remove inaccurate check about non-null GC map\n\nquick_trampoline_entrypoints.cc\n  add and improve some DCHECKS that were useful while debugging\n\nclass_linker.cc\nimage_space.cc\n  fix double facepalm\n\nparsed_options.cc\n  fix zygote logging to not skip values to two part options like -classpath \u003cfoo\u003e\n\nruntime.cc\n  wireup parsed compiler options to runtime\n\nChange-Id: Iad314df0b80623c0663d61713d5098297ab9ac87\n"
    },
    {
      "commit": "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": "2da882315a61072664f7ce3c212307342e907207",
      "tree": "67d777be044f5b60e2f13ab7968b63c581904ea9",
      "parents": [
        "762d4e5b9e777ae64c4ba581af9c84b78a5e96a6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 27 12:26:20 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 03 23:27:12 2014 +0000"
      },
      "message": "Initial changes towards Generic JNI option\n\nSome initial changes that lead to an UNIMPLEMENTED. Works\nby not compiling for JNI right now and tracking native methods\nwhich have neither quick nor portable code. Uses new trampoline.\n\nChange-Id: I5448654044eb2717752fd7359f4ef8bd5c17be6e\n"
    },
    {
      "commit": "9e8b367100da968e0a2fd5e0db6330d108421203",
      "tree": "7ad0fd61116de65f91658817f4e8a93e204baf59",
      "parents": [
        "5a40712f67341a8b919afbe6a6d462e8f9044767"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 28 17:06:40 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 28 17:06:40 2014 -0800"
      },
      "message": "Add VerifyObject calls to JniMethodEndWithReference.\n\nBug: 12934910\nChange-Id: I9d0926100c5e08dfbaea8926e8ac7cdd4e7dfe1c\n"
    },
    {
      "commit": "55871bf5277f8e8041f1303a416be2cd9215aa07",
      "tree": "3c8699c8910738552d9a5ee14a2e856747c30a87",
      "parents": [
        "4f2573b38f7b0bca027d8540c9b22abe8ba7b7bc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 27 10:24:50 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 27 10:34:48 2014 -0800"
      },
      "message": "Add null check in artQuickResolutionTrampoline\n\nAlso fix possible compaction bug around ResolveMethod.\n\nBug: 13221223\nChange-Id: I0495eaee8d5f9ae5da0a87c4800a66cd04dc4aa7\n"
    },
    {
      "commit": "6fac447555dc94a935b78198479cce645c837b89",
      "tree": "bcf1449999084b1e1dec3dac287f6f3670d7eda0",
      "parents": [
        "7f0ff7e7fff82566bca5f9353eaa2c4f81f0671a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 25 17:01:10 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 26 16:38:22 2014 -0800"
      },
      "message": "Make allocations report usable size.\n\nWork-in-progress to allow arrays to fill usable size. Bug: 13028925.\nUse C++11\u0027s override keyword on GCC \u003e\u003d 2.7 to ensure that we override GC and\nallocator methods.\nMove initial mirror::Class set up into a Functor so that all allocated objects\nhave non-zero sizes. Use this property to assert that all objects are never\nlarger than their usable size.\nOther bits of GC related clean-up, missing initialization, missing use of\nconst, hot methods in .cc files, \"unimplemented\" functions that fail at\nruntime in header files, reducing header file includes, move valgrind\u0027s space\ninto its own files, reduce number of array allocation routines.\n\nChange-Id: Id5760041a2d7f94dcaf17ec760f6095ec75dadaa\n"
    },
    {
      "commit": "a1ce1fef2d49d1d537776a5308ace7102a815fe5",
      "tree": "a1afe850d9ebd21f4b751eb68e1ec3dc60dab001",
      "parents": [
        "930f7b843ddc6e6530439d3fdb0e2133a6292f1e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Feb 24 23:23:58 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 26 13:17:44 2014 -0800"
      },
      "message": "Split up CommonTest into CommonRuntimeTest and CommonCompilerTest\n\nChange-Id: I8dcf6b29a5aecd445f1a3ddb06386cf81dbc9c70\n"
    },
    {
      "commit": "9837939678bb5dcba178e5fb00ed59b5d14c8d9b",
      "tree": "00f0e6b54d7c4cac78a02752e268724157e50b6e",
      "parents": [
        "3fcf18e25241253f23efbeebe77b2a4c4a7c54d3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 16:53:16 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 24 18:47:23 2014 -0800"
      },
      "message": "Avoid std::string allocations for finding an array class.\n\nIntroduce ClassLinker::FindArrayClass which performs an array class lookup\ngiven the element/component class. This has a 16 element cache of recently\nlooked up arrays.\nPass the current thread to ClassLinker Find .. Class routines to avoid calls\nto Thread::Current().\nAvoid some uses of FindClass in the debugger where WellKnownClasses is a\nfaster and more compacting GC friendly alternative.\n\nChange-Id: I60e231820b349543a7edb3ceb9cf1ce92db3c843\n"
    },
    {
      "commit": "5275bcbf35c2362a10607670e59edbfdfc80a758",
      "tree": "28ee33f7e3526976dae19a52a4e4529ab1619196",
      "parents": [
        "ab70b7cbd2359cd2a291ebc0d0729822d09660ef"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Feb 20 17:16:42 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 21 10:20:05 2014 -0800"
      },
      "message": "Restore refs in artQuickProxyInvokeHandler.\n\nFixes a compaction related bug which could be caused by moving args\nin artQuickProxyInvokeHandler and not updating them before returning\nback into compiled code.\n\nAlso changed some Object** to StackReferences.\n\nChange-Id: I0779c8fd5f10f142d3c6149ddc531c99ff8ee4c2\n"
    },
    {
      "commit": "936b37f3a7f224d990a36b2ec66782a4462180d6",
      "tree": "94de34072e8ce0a2a251ed8d5ccc7d87709db750",
      "parents": [
        "fd80b5717c0cdd10ef2caabf4291415a52fcc874"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 14 00:52:24 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 20 14:46:02 2014 -0800"
      },
      "message": "Upcall support for x86-64.\n\nSufficient to pass jni_internal_test.\n\nChange-Id: Ia0d9b8241ab8450e04765b9c32eb6dc8fc1a8733\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": "d565caf5a5742e2c0b09a1edefac96c8bf354642",
      "tree": "c72c8bb4f817c0247453fbf3e4ae5252e4c8c65d",
      "parents": [
        "32a6c7f3bd76bbe574675d44b7d8076995690a5b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Feb 16 15:59:00 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Feb 16 16:06:03 2014 -0800"
      },
      "message": "Don\u0027t store this_object in SIRT for static invokes.\n\nI believe this_object is sometimes is garbage for static invokes.\nThis may lead to bad roots being marked if ResolveMethod causes\nsuspension for GC.\n\nBug: 13051126\nChange-Id: I6775b3db63ac5ce37ad423796f16c92645bd7891\n"
    },
    {
      "commit": "e7e8a5fea2d852cccc840fa046151a16627f26cd",
      "tree": "4509736090c371a363e79f4a3d01107d0b8d5e72",
      "parents": [
        "cc35e45f371f5018b42e2ef383185e2840cf4374"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 14 16:59:41 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Feb 14 18:26:37 2014 -0800"
      },
      "message": "Remove using mirror::* in jni internal.\n\nCleans up the code since it helps make it easier to spot moving GC\nrelated bugs.\n\nAlso fixed moving GC bugs in MonitorEnter, and FindFieldID.\n\nChange-Id: I794e4fbcc2010875fc6b299c6d4c9fb0f071b71a\n"
    },
    {
      "commit": "b422d3fed381d93451ffcf96cbf928d7a13d3701",
      "tree": "48998bbff239544b1d9947f3ce81ed6bbe572652",
      "parents": [
        "763a08537134c14defe8a591f88846164adef0c9",
        "bbcc0c0a17262f3d2a70fc0a82e1783862f708cc"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 12 10:37:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 12 10:37:12 2014 +0000"
      },
      "message": "Merge \"Speed up method lookup in a different dex file.\""
    },
    {
      "commit": "fd14755c09ada4769b5b6658e484441ca3f628b5",
      "tree": "c70c10b6e319f44dadb56c78acaf7ce89b502d82",
      "parents": [
        "3c976a8f82007285316dd9d1bbccb659b0668a06",
        "0177e53ea521ad58b70c305700dab32f1ac773b7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 12 01:16:29 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 12 01:16:30 2014 +0000"
      },
      "message": "Merge \"Work in the direction of hard float quick ABIs.\""
    },
    {
      "commit": "0177e53ea521ad58b70c305700dab32f1ac773b7",
      "tree": "db15627a19a04634cf84cecd15b813319d80d225",
      "parents": [
        "abaf927f29f6feceb3df3e6ced7d01970ba0dbe9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 11 16:30:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 11 17:02:21 2014 -0800"
      },
      "message": "Work in the direction of hard float quick ABIs.\n\nPass a shorty to ArtMethod::Invoke so that register setup can use it.\nDocument x86-64 ABI.\nAdd extra debug output for one JNI native method registration fails, namely a\ndump of the Class and its dex file\u0027s location.\nAdd hack to get testing of OatMethod\u0027s without GC maps working in 64bit.\n\nChange-Id: Ic06b68e18eac33637df2caf5e7e775ff95ae70f3\n"
    },
    {
      "commit": "d68ac700820f3e4253c8b4bcf718daf452f6da4c",
      "tree": "c4579acae2e9c807bdef4d8523124d9aed509075",
      "parents": [
        "6b3697fec487b355d107b693c965919bf5fff906"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 14:50:51 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 11 15:05:31 2014 -0800"
      },
      "message": "Add more checking to ReleasePrimitiveArray.\n\nWhen we ReleasePrimitiveArray, we now check that the elements pointer\nis not a heap address if it is not equal to the java array\u0027s data.\n\nBug: 12845603\nChange-Id: I458862f4dc586ba1c414647c7eb81b978c4ccb7e\n"
    },
    {
      "commit": "bbcc0c0a17262f3d2a70fc0a82e1783862f708cc",
      "tree": "ccb113f6c8532d5656b2f38e464d1e1086d9d0de",
      "parents": [
        "0a07f9391e9bef0f49bd3623892f9cf3d77c14a1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 03 14:08:42 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 11 18:14:58 2014 +0000"
      },
      "message": "Speed up method lookup in a different dex file.\n\nUse already known name and proto.\n\nChange-Id: I4505b81724bd6a0f3cf21ee6fed44774d38c4e15\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": "37a9876bf9ff26a451841722a3e3ab9ad4c1e584",
      "tree": "0370ffd1477301079b8d8bf156a6cbfc0e4e744e",
      "parents": [
        "90ea00c30f5dd1a7c2934417ac5ec7d116ceb93d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 05 12:14:39 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 05 12:24:48 2014 -0800"
      },
      "message": "Add missing SIRT to FindMethodFromCode.\n\nNeeded since ResolveMethod can cause allocations -\u003e GC.\nThis change will hopefully fix the trampoline native crash in the\ndalvik-dev monkeys.\n\nChange-Id: I73aa84a8198142ffb344773372ac80828c225c5c\n"
    },
    {
      "commit": "89786437f4c0176b35ca0376153dd18ab7df4924",
      "tree": "c1b233f9e036c14f7a39d722a7a34874253307c1",
      "parents": [
        "1f00671edaaa34578319d0fdaf605600ed539d41"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 31 15:03:55 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 03 18:15:13 2014 +0000"
      },
      "message": "Don\u0027t assume resolved type has the same dex cache.\n\nWhen we resolve a type with a certain DexCache that type\u0027s\nGetDexCache() doesn\u0027t necessarily return the same DexCache.\nThis could have led to the wrong DexFile being used in\naccess checks by the CompilerDriver.\n\nChange-Id: I2c836477f69f142bcbff902207dc0ad83854a398\n"
    },
    {
      "commit": "bb8f0ab736b61db8f543e433859272e83f96ee9b",
      "tree": "7b7bac5c0e7d0ac9aba91a40e0fbf761cfacb412",
      "parents": [
        "6e65720d99bd3387b72d528a46291f1ed8184ede"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jan 27 16:50:29 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jan 27 16:50:29 2014 -0800"
      },
      "message": "Embed array class pointers at array allocation sites.\n\nFollowing https://android-review.googlesource.com/#/c/79302, embed\narray class pointers at array allocation sites in the compiled code.\n\nChange-Id: I67a1292466dfbb7f48e746e5060e992dd93525c5\n"
    },
    {
      "commit": "be1ca55db3362f5b100c4c65da5342fd299520bb",
      "tree": "b9df6f5562d884698ed15f21764a704bb51e359e",
      "parents": [
        "9d8918fe97c235fdc6eb2c7f2d50a6673ab50329"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jan 15 11:46:48 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 23 15:29:12 2014 -0800"
      },
      "message": "Use direct class pointers at allocation sites in the compiled code.\n\n- Rather than looking up a class from its type ID (and checking if\n  it\u0027s resolved/initialized, resolving/initializing if not), use\n  direct class pointers, if possible (boot-code-to-boot-class pointers\n  and app-code-to-boot-class pointers.)\n- This results in a 1-2% speedup in Ritz MemAllocTest on Nexus 4.\n- Embedding the object size (along with class pointers) caused a 1-2%\n  slowdown in MemAllocTest and isn\u0027t implemented in this change.\n- TODO: do the same for array allocations.\n- TODO: when/if an application gets its own image, implement\n  app-code-to-app-class pointers.\n- Fix a -XX:gc bug.\n  cf. https://android-review.googlesource.com/79460/\n- Add /tmp/android-data/dalvik-cache to the list of locations to\n  remove oat files in clean-oat-host.\n  cf. https://android-review.googlesource.com/79550\n- Add back a dropped UNLIKELY in FindMethodFromCode().\n  cf. https://android-review.googlesource.com/74205\n\nBug: 9986565\nChange-Id: I590b96bd21f7a7472f88e36752e675547559a5b1\n"
    },
    {
      "commit": "23a282146042a0d171aec2a415176f5d0621a90c",
      "tree": "de676891deb5bee6bc76b7cba23c29df662e57c0",
      "parents": [
        "d6c3ae638a47db3970054843d2aa2f0d961cec4c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 09 19:24:37 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 21 17:09:51 2014 +0000"
      },
      "message": "Clean up access checks.\n\nChange-Id: Ia62ba6c8f1d0a9bfbbfde2d7be4c52c0f982b9d2\n"
    },
    {
      "commit": "e6da9af8dfe0a3e3fbc2be700554f6478380e7b9",
      "tree": "127a0565fce79f05d82d0ff242fbbffa6e2bc6b3",
      "parents": [
        "977d409b959497eecc44a35cff16115d0f04ccab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 16 11:54:42 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 08 14:16:12 2014 -0800"
      },
      "message": "Background compaction support.\n\nWhen the process state changes to a state which does not perceives\njank, we copy from the main free-list backed allocation space to\nthe bump pointer space and enable the semispace allocator.\n\nWhen we transition back to foreground, we copy back to a free-list\nbacked space.\n\nCreate a seperate non-moving space which only holds non-movable\nobjects. This enables us to quickly wipe the current alloc space\n(DlMalloc / RosAlloc) when we transition to background.\n\nAdded multiple alloc space support to the sticky mark sweep GC.\n\nAdded a -XX:BackgroundGC option which lets you specify\nwhich GC to use for background apps. Passing in\n-XX:BackgroundGC\u003dSS makes the heap compact the heap for apps which\ndo not perceive jank.\n\nResults:\nSimple background foreground test:\n0. Reboot phone, unlock.\n1. Open browser, click on home.\n2. Open calculator, click on home.\n3. Open calendar, click on home.\n4. Open camera, click on home.\n5. Open clock, click on home.\n6. adb shell dumpsys meminfo\n\nPSS Normal ART:\nSample 1:\n    88468 kB: Dalvik\n     3188 kB: Dalvik Other\nSample 2:\n    81125 kB: Dalvik\n     3080 kB: Dalvik Other\n\nPSS Dalvik:\nTotal PSS by category:\nSample 1:\n    81033 kB: Dalvik\n    27787 kB: Dalvik Other\nSample 2:\n    81901 kB: Dalvik\n    28869 kB: Dalvik Other\n\nPSS ART + Background Compaction:\nSample 1:\n    71014 kB: Dalvik\n     1412 kB: Dalvik Other\nSample 2:\n    73859 kB: Dalvik\n     1400 kB: Dalvik Other\n\nDalvik other reduction can be explained by less deep allocation\nstacks / less live bitmaps / less dirty cards.\n\nTODO improvements: Recycle mem-maps which are unused in the current\nstate. Not hardcode 64 MB capacity of non movable space (avoid\nreturning linear alloc nightmares). Figure out ways to deal with low\nvirtual address memory problems.\n\nBug: 8981901\n\nChange-Id: Ib235d03f45548ffc08a06b8ae57bf5bada49d6f3\n"
    },
    {
      "commit": "5ddb4104ac605d66693b55b79f26f8b8a5505e63",
      "tree": "9231f1e54e9a1aaca640c590d5b4f318720e263b",
      "parents": [
        "5a2ced515a456f15dcf194843c024e835eda7dbe"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 07 08:58:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 08 09:15:46 2014 -0800"
      },
      "message": "Remove intialized static storage from dex cache.\n\nThe initialized static storage array is used by compiled code to determine if\nfor a sget/sput class initialization is necessary. The compiled code typically\ndoesn\u0027t require this test as the class is pre-initialized or the class being\naccessed is the same as the current method.\n\nChange-Id: Icbc45e692b3d0ac61e559e69edb6c9b29439e571\n"
    },
    {
      "commit": "692fafd9778141fa6ef0048c9569abd7ee0253bf",
      "tree": "63ce2c7d4be6af2524a5f442195c8c8b6f5cc955",
      "parents": [
        "07dc96d370c4844c7a279c01cedf24a272b9f4f3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 29 17:24:40 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 16 16:57:37 2013 -0800"
      },
      "message": "Thread local bump pointer allocator.\n\nAdded a thread local allocator to the heap, each thread has three\npointers which specify the thread local buffer: start, cur, and\nend. When the remaining space in the thread local buffer isn\u0027t large\nenough for the allocation, the allocator allocates a new thread\nlocal buffer using the bump pointer allocator.\n\nThe bump pointer space had to be modified to accomodate thread\nlocal buffers. These buffers are called \"blocks\", where a block\nis a buffer which contains a set of adjacent objects. Blocks\naren\u0027t necessarily full and may have wasted memory towards the\nend. Blocks have an 8 byte header which specifies their size and is\nrequired for traversing bump pointer spaces.\n\nMemory usage is in between full bump pointer and ROSAlloc since\nmadvised memory limits wasted ram to an average of 1/2 page per\nblock.\n\nAdded a runtime option -XX:UseTLAB which specifies whether or\nnot to use the thread local allocator. Its a NOP if the garbage\ncollector is not the semispace collector.\n\nTODO: Smarter block accounting to prevent us reading objects until\nwe either hit the end of the block or GetClass() \u003d\u003d null which\nsignifies that the block isn\u0027t 100% full. This would provide a\nslight speedup to BumpPointerSpace::Walk.\n\nTimings: -XX:HeapMinFree\u003d4m -XX:HeapMaxFree\u003d8m -Xmx48m\nritzperf memalloc:\nDalvik -Xgc:concurrent: 11678\nDalvik -Xgc:noconcurrent: 6697\n-Xgc:MS: 5978\n-Xgc:SS: 4271\n-Xgc:CMS: 4150\n-Xgc:SS -XX:UseTLAB: 3255\n\nBug: 9986565\nBug: 12042213\n\nChange-Id: Ib7e1d4b199a8199f3b1de94b0a7b6e1730689cad\n"
    },
    {
      "commit": "460536209b741bc469f1b0857775449abb2102fb",
      "tree": "4bc7f636b86ab2531811827d0fd0c33011a7280e",
      "parents": [
        "19031d51ab9edfc3b1996891d654a6b86ca937c0"
      ],
      "author": {
        "name": "Bernhard Rosenkränzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Thu Dec 12 02:15:52 2013 +0100"
      },
      "committer": {
        "name": "Bernhard Rosenkränzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Thu Dec 12 13:08:03 2013 +0100"
      },
      "message": "Don\u0027t rely on gcc extensions\n\nMake the code more compatible with different compilers.\nclang doesn\u0027t allow extra static qualifiers on template\nspecializations, const qualifiers on function types,\nor inline attributes on lambda functions, and is more\npicky about casting away constness with reinterpret_cast.\n\nThese modifications are compatible with both gcc and\nclang.\n\nChange-Id: I739b10df2780bec537827a13679fd2bcc2cc7188\nSigned-off-by: Bernhard Rosenkränzer \u003cBernhard.Rosenkranzer@linaro.org\u003e\n"
    },
    {
      "commit": "c528dba35b5faece51ca658fc008b688f8b690ad",
      "tree": "d95c113a639d07f7e3b88e8a6caa9b5f6e044801",
      "parents": [
        "76f552307ee980221626d1dff0ada56c989d24ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 12:00:11 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 16:00:58 2013 -0800"
      },
      "message": "Enable moving classes.\n\nSlight reduction in Zygote size, memory savings are in the noise.\nBefore: Zygote size: 8739224\nAfter: Zygote size: 8733568\n\nFixed a bug where we didn\u0027t set the concurrent start bytes after\nswitching the allocator from bump pointer to ROSAlloc in the\nzygote. This caused excessive memory usage.\n\nAdded the method verifiers as roots to fix an issue caused by\nRegTypes holding a Class*.\n\nAdded logic to clear card table in the SemiSpace collector, this\nreduces DalvikOther from ~2400k -\u003e ~1760k when using the SemiSpace\ncollector.\n\nAdded a missing lock to the timing loggers which caused a rare\none time crash in std::set.\n\nBug: 11771255\nBug: 8499494\nBug: 10802951\n\nChange-Id: I99d2b528cd51c1c5ed7012e3220b3aefded680ae\n"
    },
    {
      "commit": "76f552307ee980221626d1dff0ada56c989d24ca",
      "tree": "b420fbe97cdf75e52944004d49b161caace4f109",
      "parents": [
        "3d0ecf950d67bd272a979adb5988b9a977b44fac",
        "f043de4fbcf8eaa72b55597ccc6b2ea5b26a24d2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 23:19:30 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 10 23:19:30 2013 +0000"
      },
      "message": "Merge \"Add missing push/pop shadow frame to artInterpreterToCompiledCodeBridge.\""
    },
    {
      "commit": "f043de4fbcf8eaa72b55597ccc6b2ea5b26a24d2",
      "tree": "4072447aba9429f9c87d1b6a0d68f2297be5d4e4",
      "parents": [
        "fa365d2fa097810f31d6cb1b1ef415636bc63af8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 14:37:16 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 14:52:12 2013 -0800"
      },
      "message": "Add missing push/pop shadow frame to artInterpreterToCompiledCodeBridge.\n\nEnsureInitialized can cause GC to occur. Since the shadow frame wasn\u0027t\nbeing pushed it meant that the references inside wouldn\u0027t get updated\nby the moving garbage collector.\n\nBug: 12022098\nChange-Id: I1f3fda41d14a2cf51cf524874de54d7766c362e9\n"
    },
    {
      "commit": "4fa0bcd2142793e1f105b24b658de3635652b957",
      "tree": "6d65a1fe48a8914e86ff63549429edd820412d21",
      "parents": [
        "dd668730cf052178c679119dfc932b4db354c835"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Dec 10 11:24:21 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Dec 10 11:24:21 2013 -0800"
      },
      "message": "Remove unneeded quoting\n\nChange-Id: I87f452e338bd4ff0587e3fc7b0bec3f08a1e7fe6\n"
    },
    {
      "commit": "8171fc34bf74ed0df02385787d916bc13eb7f160",
      "tree": "9c2b15d421bbf7483dd042a4b9985517c3cc86ee",
      "parents": [
        "fa365d2fa097810f31d6cb1b1ef415636bc63af8"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 26 17:05:58 2013 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 10 10:02:58 2013 +0000"
      },
      "message": "Don\u0027t prefix GC map by length.\n\nBug: 11767815\nChange-Id: I063917aefdf7674ee1a77736db059c9ee95ea075\n"
    },
    {
      "commit": "85db144fbb79582b962344ca80068d91fac6e046",
      "tree": "9559b734fff58474da26f4f2eee82022ef2946d3",
      "parents": [
        "2f838d4058c091c56c31c5dfbc17d7379ba5523b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 03 10:51:00 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 03 14:07:10 2013 -0800"
      },
      "message": "Fix incorrect IsHeapAddress in jni entrypoints.\n\nThe behaviour of IsHeapAddress had changed in the compaction CL\nto not include nullptr as a valid heap address.\n\nBug: 11982013\nChange-Id: I2847f71ca6775210ea4de8ede8b9ee8c14c55228\n"
    },
    {
      "commit": "cbbb080e8b45e46ea43af521ba2a0b3d432702a7",
      "tree": "3743409700a99c7f8d91059a24962e28d04a8be9",
      "parents": [
        "1febddf359ae500ef1bb01ab4883b076fcb56440"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 21 12:42:36 2013 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 21 12:42:36 2013 -0800"
      },
      "message": "Fix a libartd.so boot crash in Heap::AllocObjectWithAllocator()\n\nBug: 11806947\nChange-Id: I826875f23ee2233d4128e852ff6fe7e26ced378f\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": "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": "88474b416eb257078e590bf9bc7957cee604a186",
      "tree": "7c59aa370bec9b0f2d37cb7a96d3b2effb3d92ce",
      "parents": [
        "9780099e445884d8bc9444c8c1261b02d80a26c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 23 16:24:40 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 29 12:01:28 2013 -0700"
      },
      "message": "Implement Interface Method Tables (IMT).\n\nChange-Id: Idf7fe85e1293453a8ad862ff2380dcd5db4e3a39\n"
    },
    {
      "commit": "eda6df7374bf61c933d4a36635e2a9a30c9892a0",
      "tree": "72b199f5bc1d1ed67205389f90ce9b420cdd63e9",
      "parents": [
        "652e0ff0ce438385d1268ff0214d0eef6e8623ff",
        "d4beb6bc2b42b176c6d04fdd91d6c758e542c7c2"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Oct 29 08:35:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 29 08:35:16 2013 +0000"
      },
      "message": "Merge \"Inline field and method resolution.\" into dalvik-dev"
    },
    {
      "commit": "d4beb6bc2b42b176c6d04fdd91d6c758e542c7c2",
      "tree": "083f8c75e44105e98688eff3e206e5a7fd188912",
      "parents": [
        "57e6d8a99058e5c74d5244b68a5f4d53526fa108"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Oct 02 17:07:20 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Oct 28 18:12:22 2013 +0100"
      },
      "message": "Inline field and method resolution.\n\nAccording to profiling results, field and method resolutions are hot points\nduring interpreter execution. This CL attempts to speed up these resolutions.\n\nForces aggressive inlining of FindFieldFromCode and FindMethodFromCode. This\nallows to reduce the overhead of access check code when the interpreter runs\nwithout these checks. Templatize these functions to optimize inlining and their\ncallers.\n\nAlso spread the use of C++11 \"nullptr\" in place of \"NULL\" in field access and\ninvoke helpers.\n\nChange-Id: Ic1a69834d8975b2cddcddaae32f08a7de146a951\n"
    },
    {
      "commit": "83883d7fddf30fdb8b6903560fa1337ab991e74c",
      "tree": "d08809deef3a4ab19a57dd4e2ed629a79b60ce74",
      "parents": [
        "8584a68279efc0f9a409a3555ae5ebf3ec2cc4ac"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 21 21:07:24 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 25 14:22:26 2013 -0700"
      },
      "message": "Populate dex cache for sharpened calls.\n\nWe ensured the resolved method was in the dex cache, but for a sharpened call\nthis is abstract. Ensure that the concrete method is also resolved.\nLimit the use of direct dex cache based dispatch to cases where we know how to\npatch the dex cache.\n\nBug 11389002\n\nChange-Id: I08252686a53b5948650632837c74bcd5cbf8a862\n"
    },
    {
      "commit": "1eb512d33f94d1dd7ea38263307ba0f7a0dfa653",
      "tree": "b4d4d9b16013ab90fb4b40d23013d7ef44bb5852",
      "parents": [
        "b917ea1a62aa0ab8eca3f689ef64b5be34e11abb"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 18 15:42:20 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 20 14:55:26 2013 -0700"
      },
      "message": "Fast JNI support.\n\nUse a modifier to signal a native method is a fast JNI method. If the\nmodifier is set then don\u0027t perform runnable transitions.\n\nChange-Id: I7835b4d837bfdd1cb8e2d54b919c0d5e6cf90499\n"
    },
    {
      "commit": "241b5de2d3cf06868ac31f1153aa0b32ddb07b20",
      "tree": "6161a90ea504c3907d171f16ca7d94817bbf8b9a",
      "parents": [
        "252a00273bc945ebe4a1d77d82d085fdff2ae769"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 09 17:58:57 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 10 17:26:04 2013 -0700"
      },
      "message": "Clinits may not have the kAccConstructor flag.\n\nBug: 11157540\nSet the clinit access flag when we load the method and warn about badly\nformed access flags.\n\nChange-Id: I515c692095051f84f98510722ab764591185918e\n"
    },
    {
      "commit": "a9a8254c920ce8e22210abfc16c9842ce0aea28f",
      "tree": "56614ee997940e8e3b88fef43b890e8a33e78112",
      "parents": [
        "34633b22f74393344987a50b8aaee548a9dadc18"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 04 11:17:26 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 08 15:54:54 2013 -0700"
      },
      "message": "Improve quick codegen for aput-object.\n\n1) don\u0027t type check known null.\n2) if we know types in verify don\u0027t check at runtime.\n3) if we\u0027re runtime checking then move all the code out-of-line.\n\nAlso, don\u0027t set up a callee-save frame for check-cast, do an instance-of test\nthen throw an exception if that fails.\nTidy quick entry point of Ldivmod to Lmod which it is on x86 and mips.\nFix monitor-enter/exit NPE for MIPS.\nFix benign bug in mirror::Class::CannotBeAssignedFromOtherTypes, a byte[]\ncannot be assigned to from other types.\n\nChange-Id: I9cb3859ec70cca71ed79331ec8df5bec969d6745\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": "003d297a8760c0d00630820fce2c02730601946e",
      "tree": "ebc098952e6c96603218e1fdf982e8e52663b6de",
      "parents": [
        "65d1b22d0b02fb0111f69013163c8170e68392f1",
        "c61124bdeaae94f977ffc36ac69535e792c226f2"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 30 07:02:33 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Sep 30 07:02:33 2013 +0000"
      },
      "message": "Merge \"Cleanup invoke in interpreter.\" into dalvik-dev"
    },
    {
      "commit": "c61124bdeaae94f977ffc36ac69535e792c226f2",
      "tree": "41ba8619a6dea88a8c607836db21531b05a3787a",
      "parents": [
        "7541c745e00b49983f277d6b6b18bc4c174c7e39"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 10 11:44:19 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 30 08:57:33 2013 +0200"
      },
      "message": "Cleanup invoke in interpreter.\n\nSome cleanup in invocation stuff:\n- Get the number of invoke arguments from instruction (vA) rather than get it\nfrom its code item. This benefits to native invoke since we no longer need to\nparse the method\u0027s shorty. Also pass the low 16 bits of instructions to avoid\nfetching it twice when reading vA.\n- Remove \"is_static\" tests by taking advantage of invoke type template argument\nrather than testing method\u0027s access flags.\n- Ensure Instruction::GetArgs is inlined.\n- Check exception when initializing method\u0027s class when transitioning from\ninterpreter to compiled code (artInterpreterToCompiledCodeBridge).\n- Move UnstartedRuntimeInvoke function to interpreter_common.cc and make it\nstatic as it\u0027s only used by DoInvoke and DoInvokeVirtualQuick functions.\n- Avoid duplicating code in ShadowFrame::Create.\n\nPerformance remains the same according to benchmarks. Hopefully, this should be\naddressed in next CLs, especially by improving new shadow frame initialization.\n\nBug: 10668955\nChange-Id: I514b8f098d0ef3e35921ceb770383aac1a9c7902\n"
    },
    {
      "commit": "58ff84450a28966a4d2b1f1f4cec527a6a586905",
      "tree": "70217a42f68c8d9d870e291c1d17c6e358b76468",
      "parents": [
        "7287601984059902aebde00ea4e077ead42fb149",
        "07d447bebe6cc358e05ef041db84a5095a69e4f1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 26 22:34:08 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 26 22:34:08 2013 +0000"
      },
      "message": "Merge \"Make artQuickResolutionTrampoline fix up references after GC points.\" into dalvik-dev"
    },
    {
      "commit": "07d447bebe6cc358e05ef041db84a5095a69e4f1",
      "tree": "0ed9d07628e7fe07b49261c9562200a3fd18d6ba",
      "parents": [
        "f7e090ebcded6d6693894c018d89c4add79253ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 26 11:57:43 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 26 13:20:37 2013 -0700"
      },
      "message": "Make artQuickResolutionTrampoline fix up references after GC points.\n\nRequired for compaction.\n\nBug: 8981901\nChange-Id: I53a5f942af2a4428fe3548ba1856967632c2df9f\n"
    },
    {
      "commit": "3b4c18933c24b8a33f38573c2ebcdb9aa16efeb5",
      "tree": "5298ccd9c1f1f6b329c0cb6cefac6a8df43dd633",
      "parents": [
        "f7e090ebcded6d6693894c018d89c4add79253ff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 12 21:33:12 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 25 20:28:49 2013 -0700"
      },
      "message": "Split the allocation path into \u0027instrumented\u0027 and \u0027uninstrumented\u0027\nones.\n\nThe instrumented path is equivalent to the existing allocation path\nthat checks for three instrumentation mechanisms (the debugger\nallocation tracking, the runtime allocation stats collection, and\nvalgrind) for every allocation. The uinstrumented path does not\nperform these checks. We use the uninstrumented path by default and\nenable the instrumented path only when any of the three mechanisms is\nenabled. The uninstrumented version of Heap::AllocObject() is inlined.\n\nThis change improves the Ritz MemAllocTest by ~4% on Nexus 4 and ~3%\non Host/x86.\n\nBug: 9986565\nChange-Id: I3e68dfff6789d77bbdcea98457b694e1b5fcef5f\n"
    },
    {
      "commit": "450dcb56ecbf6f729401e753f0a27e4170177ddd",
      "tree": "f596d57c5f6fbdc90b3dc68a2008e38ee48e2882",
      "parents": [
        "810b1d704f2db0d935bf5dddae3545f79cabd435"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 20 17:36:02 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 20 18:47:39 2013 -0700"
      },
      "message": "Improve float to integral conversion.\n\nChange-Id: I1597083cb2c04084ce825fe2e3c753fde8309cd8\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": "2e450bf45e1bacc9c356f6ab239ccfb31bd8d7e4",
      "tree": "d695b5a0aa5049ed3936a65ab69b409e2eceb818",
      "parents": [
        "dd3c27eeb8286ab53d8a2f1aec76a7a919ba353a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 06 15:39:46 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 06 15:43:51 2013 -0700"
      },
      "message": "Revert \"Remove bogus fastpath from String::Equals(const StringPiece\u0026)\"\n\nThis reverts commit 8438ed31e10f3881ed92f03877d5edaca7d5b48c.\n\nBug: 10614658\nChange-Id: I335f10a7140e1644957bc1cee21a9b310a558499\n"
    },
    {
      "commit": "8438ed31e10f3881ed92f03877d5edaca7d5b48c",
      "tree": "a29524e6974a58d593362b49217649dc9a39f496",
      "parents": [
        "51db7beb7faaea43d697321520732d1d71288f50"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 04 17:17:19 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 06 12:38:20 2013 -0700"
      },
      "message": "Remove bogus fastpath from String::Equals(const StringPiece\u0026)\n\nBug: 10614658\nChange-Id: I907ec77a65c1ae29e800356abdf755a457620081\n"
    },
    {
      "commit": "d3633d52e5d21beea73c2e902c043cf96b70df74",
      "tree": "25a2e8033f4b945adf4da3cb6775d0b4b6626215",
      "parents": [
        "be7149fc2e7cc607937209f2819e3c1d672e2668"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 20 21:06:26 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 20 23:48:34 2013 -0700"
      },
      "message": "Add some extra DCHECKS for debugging artQuickProxyInvokeHandler\n\nBug: 10094803\nChange-Id: I8cc08cd54dbe67781a8264cf2ceb5dab24b78799\n"
    },
    {
      "commit": "bd136a29f08486525d6abc7d0a0006ce5b4011c1",
      "tree": "71a61d4545e7fa871d2cafee23dd5e3beb6619ee",
      "parents": [
        "7d70a7932f0ba09eb01a93caab060aef1403d4e6"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Aug 13 18:07:04 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu Aug 15 15:10:55 2013 -0700"
      },
      "message": "Get PORTABLE + SMALL on x86.\n\nImplemented the portable resolution trampoline and\nthe portable to interpreter bridge.\nAlso work on integrating SEA_IR in the PORTABLE+SMALL framework.\nRefactor some naming and correct indenting.\n\nChange-Id: Ibd97da5e5b6f5148274c9bff368e3654b661ef51\n"
    },
    {
      "commit": "7571e8b761ebc2c923525e12ea9fcf07e62cb33e",
      "tree": "5d90ecf4d0ba1a72b040a376f227df1ba9278889",
      "parents": [
        "2e250c826b3c405d675017efe79e5db3651c9ee6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 12 17:04:14 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 15 10:33:53 2013 -0700"
      },
      "message": "Add flock(2)ing on dex-cache files to prevent races\n\nBug: 9071417\nChange-Id: I1ee9ff281867f90fba7a8ed8bbf06b33ac29d511\n"
    },
    {
      "commit": "0f40ac31134d9ae0f059d4c448165599dc8459c1",
      "tree": "2f908f5d7a51d4e7b028b307e5d43a9e794abc10",
      "parents": [
        "97a03e3cc86002b10889562a6b5b164cd2b99e7e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 22:10:30 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 22:30:39 2013 -0700"
      },
      "message": "Fix races in small mode compiler filters setup\n\nFixes host tests in small art mode.\n\nChange-Id: I2579f872583f425607f91c1e58df68b05b5098bb\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": "f417117a633bb058268981bd04e11906c85f158b",
      "tree": "5a40743de1e364fb97e3350408e5688cec7a9bfe",
      "parents": [
        "1b8b2e49fdfee50cafafe01d73346af6dfcf231d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 31 10:59:55 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 31 10:59:55 2013 -0700"
      },
      "message": "Clear exception when no move-exception on portable.\n\nChange-Id: I36c523e479c7dc6f752b7240f4334e1e5e417190\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": "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"
    }
  ]
}
