)]}'
{
  "log": [
    {
      "commit": "41c507a9dae44b8329a857da3d9810fab2e9ddc6",
      "tree": "78d2a1f81227ca41c4541be5fd87cacabaf06ed2",
      "parents": [
        "f71f8da2e83fefcec42ad77385c1df62f521ddad"
      ],
      "author": {
        "name": "Alexei Zavjalov",
        "email": "alexei.zavjalov@intel.com",
        "time": "Thu May 15 16:02:46 2014 +0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 10 10:01:01 2014 -0700"
      },
      "message": "ART: Generalize code to find PC for artInvokeInterfaceTrampoline\n\nThis allows to determine target method when the interface method has\nno dex index, now also for X86-64 and ARM64.\n\nAdd constexpr functions to callee_save_frame.h to have compile-time\nsizes of callee-save frames. Add a test that ensures they agree\nwith computations by the corresponding ArtMethod methods.\n\nMove some instruction-set functions into the header file to allow\ninlining them. Move arch-specific pointer sizes and alignment sizes\nout of globals.h to instruction_set.h to reduce dependencies.\n\nChange-Id: I2997592c7dd1f4dd2bd497522c64bd235ae615a6\nSigned-off-by: Alexei Zavjalov \u003calexei.zavjalov@intel.com\u003e\n"
    },
    {
      "commit": "ea248f8b048d904a8fe806b6a52372985945274d",
      "tree": "b5bfacb1e2005a6a9ca7dd5b84f3c6ca129f7286",
      "parents": [
        "608f63bae4ed0dc0cd6462d0df3d15c28f37f0b2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 10 00:09:42 2014 -0700"
      },
      "committer": {
        "name": "Mark Mendell",
        "email": "mark.p.mendell@intel.com",
        "time": "Tue Jun 10 10:19:08 2014 -0400"
      },
      "message": "Remove TARGET_REX_SUPPORT define.\n\nChange-Id: I1c3644176c101064261d13b50484d2e3ae456316\n"
    },
    {
      "commit": "779f8c951c0fbe36d4b213113a99541132947bb7",
      "tree": "53bad4e79ad0d5314c7c2d6b95a8bf962ca28018",
      "parents": [
        "5d4a3fedcb18dadba5f50661e2a6d86890adfcbc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 09 18:29:38 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 09 18:29:38 2014 -0700"
      },
      "message": "ART: Generic JNI for x86\n\nAdd the generic JNI trampoline for x86. Small cleanup in the C code.\n\nChange-Id: Icaf9de7c0e5e8d1e6cb1135a54552040344cc5a3\n"
    },
    {
      "commit": "58994cdb00b323339bd83828eddc53976048006f",
      "tree": "a1ec67c5b04cf99439619bf972a58b6d46dd2823",
      "parents": [
        "9529d6273777ee297a8aa7513e8172775f0496df"
      ],
      "author": {
        "name": "Dmitry Petrochenko",
        "email": "dmitry.petrochenko@intel.com",
        "time": "Sat May 17 01:02:18 2014 +0700"
      },
      "committer": {
        "name": "Dmitry Petrochenko",
        "email": "dmitry.petrochenko@intel.com",
        "time": "Sat Jun 07 01:28:05 2014 +0000"
      },
      "message": "x86_64: Hard Float ABI support in QCG\n\nThis patch shows our efforts on resolving the ART limitations:\n - passing \"float\"/\"double\" arguments via FPR\n - passing \"long\" arguments via single GPR, not pair\n - passing more than 3 agruments via GPR.\n\nWork done:\n - Extended SpecialTargetRegister enum with kARG4, kARG5, fARG4..fARG7.\n - Created initial LoadArgRegs/GenDalvikX/FlushIns version in X86Mir2Lir.\n - Unlimited number of long/double/float arguments support\n - Refactored (v2)\n\nChange-Id: I5deadd320b4341d5b2f50ba6fa4a98031abc3902\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\nSigned-off-by: Dmitry Petrochenko \u003cdmitry.petrochenko@intel.com\u003e\nSigned-off-by: Chao-ying Fu \u003cchao-ying.fu@intel.com\u003e\nSigned-off-by: Mark Mendell \u003cmark.p.mendell@intel.com\u003e\n"
    },
    {
      "commit": "cf4035a4c41ccfcc3e89a0cee25f5218a11b0705",
      "tree": "323d9e98e6129c67e464a3e6857ee02593a2f2c2",
      "parents": [
        "29b53d3d715b1ec19349e8cbf7c5e4ff529bd5fe"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 28 22:43:01 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 29 20:50:49 2014 -0700"
      },
      "message": "ART: Use StackReference in Quick Stack Frame\n\nThe method reference at the bottom of a quick frame is a stack\nreference and not a native pointer. This is important for 64b\narchitectures, where the notions do not coincide.\n\nChange key methods to have StackReference\u003cmirror::ArtMethod\u003e*\nparameter instead of mirror::ArtMethod**. Make changes to\ninvoke stubs for 64b archs, change the frame setup for JNI code\n(both generic JNI and compilers), tie up loose ends.\n\nTested on x86 and x86-64 with host tests. On x86-64, tests succeed\nwith jni compiler activated. x86-64 QCG was not tested.\n\nTested on ARM32 with device tests.\n\nFix ARM64 not saving x19 (used for wSUSPEND) on upcalls.\n\nTested on ARM64 in interpreter-only + generic-jni mode.\n\nFix ARM64 JNI Compiler to work with the CL.\n\nTested on ARM64 in interpreter-only + jni compiler.\n\nChange-Id: I77931a0cbadd04d163b3eb8d6f6a6f8740578f13\n"
    },
    {
      "commit": "0cd81352a7c06e381951cea1b104fd73516f4341",
      "tree": "fcc8ff9cdeb608d0913097aa1fb64d1879f11ffa",
      "parents": [
        "dfd301f19800a4f168283cf2d0b15b2c09071955"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 16:48:55 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 12:55:45 2014 -0700"
      },
      "message": "Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\n\nFixed the generic trampoline to not use ToJObject when unnecessary.\n\nBug: 15167269\n\nThis reverts commit 3bdb873122964da7937eb070cbcf2ef638a8e459.\n\nChange-Id: I0525d0e0f3afb753c770e1572070a0fa22b02271\n"
    },
    {
      "commit": "3bdb873122964da7937eb070cbcf2ef638a8e459",
      "tree": "3d29123f33853e11adb67bdd6ac56f19ee798a1f",
      "parents": [
        "e09ae0920be57760fb390b6944bce420fa0b5582"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "message": "Revert \"Fix an outstanding compaction bug in interpreter.\"\n\nThis reverts commit e09ae0920be57760fb390b6944bce420fa0b5582.\n\nChange-Id: I48036306130d5ccfec683d0dc3e9a642a02ee9c1\n"
    },
    {
      "commit": "e09ae0920be57760fb390b6944bce420fa0b5582",
      "tree": "acc40266093df4289ffb6728c979cafd6b5114d2",
      "parents": [
        "b8033db2a8dc6f7c7e29b1552177542964f56e44"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 15 12:39:19 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 10:47:44 2014 -0700"
      },
      "message": "Fix an outstanding compaction bug in interpreter.\n\nFixed a bug in DoFieldPut where the FieldHelper GetType could cause\nthread suspension which would result in a stale obj.\n\nAdded more handles in the class linker to facilitate moving fiels\nand methods in the future.\n\nRemoved un-necessarly passing handle references since these are value\ntypes and don\u0027t need to be passed by reference.\n\nAdded a special NullHandle type which allows null handles without a\nhandle scope.\n\nChange-Id: I1b51723920a2e4f4f8b2907066f578a3e879fd5b\n"
    },
    {
      "commit": "51f763506c7bb34420242e88e1631550f94d6417",
      "tree": "303449238c72ec7e4e5b24053903c430401f2282",
      "parents": [
        "299d2a2b200a94daa49c4727fd679f4461c083c7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 21 08:28:48 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 21 11:12:07 2014 -0700"
      },
      "message": "ART: Add INVOKE_TRAMPOLINE and imt_conflict stub to 64b architectures\n\n\"Generalize\" the return type notion of the interface helpers.\n\nIncludes a simple test for imt_conflict. The other interface\ntrampolines are as of yet untested.\n\nChange-Id: I30fc75f5103766d57628ff22bcbac7c7f81037e3\n"
    },
    {
      "commit": "700a402244a1a423da4f3ba8032459f4b65fa18f",
      "tree": "4c22fcda04d271bd55a37aff30650214af17a90c",
      "parents": [
        "047c11adcbcbc0bcf210defdfcbada763961ffee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 16:49:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:27:39 2014 -0700"
      },
      "message": "Now we have a proper C++ library, use std::unique_ptr.\n\nAlso remove the Android.libcxx.mk and other bits of stlport compatibility\nmechanics.\n\nChange-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "f486778d50fc8afa61330df495e94f4f3ec0e238",
      "tree": "f182c61f9c8cbedcdf481bd6894f52412d1b9337",
      "parents": [
        "8ea5baa10b04e9dbd0f0cf14b0358fe8b956bb2e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 05 11:55:02 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 05 13:57:49 2014 -0700"
      },
      "message": "Add some debugging info for bug 14469172.\n\nChange-Id: Iba7d47b6a697ab61e10dfc9e1c2b8fde24af27be\n"
    },
    {
      "commit": "42fcd9838a87abaf7a2ef86853a5287f86dbe391",
      "tree": "d8ffcfcb9c1997c06c6ef93b551abaa900ebcf8e",
      "parents": [
        "608168b380b741e2c7e1a2b0b568c0738986166b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 22 11:03:52 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 02 10:44:52 2014 +0100"
      },
      "message": "Revert \"Revert \"64bit changes to the stack walker for the Quick ABI.\"\"\n\nThis reverts commit 8d5ead52a92675c258113d3dfa71bf8fceba5d9f.\n\nChange-Id: I6b4774a9bd180de33551975e106322ba1192e6ab\n"
    },
    {
      "commit": "8d5ead52a92675c258113d3dfa71bf8fceba5d9f",
      "tree": "43f4c2518035b346d7b7ecd46c4b79d1ef45d882",
      "parents": [
        "5cb328362a633302ca0fcdbaa0da7d94069df051"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 22 08:30:19 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 22 08:30:19 2014 +0000"
      },
      "message": "Revert \"64bit changes to the stack walker for the Quick ABI.\"\n\nThis reverts commit 5cb328362a633302ca0fcdbaa0da7d94069df051.\n\nChange-Id: Icc0ec1a9f15c2e4e9103e732d7ba75a4feb853b1\n"
    },
    {
      "commit": "5cb328362a633302ca0fcdbaa0da7d94069df051",
      "tree": "bf31cf8e9aaab4e7d326cef1d2b8936bca658473",
      "parents": [
        "957e2a2bb9ca9a59b4fb41170b1b1a53e99bed67"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 17 14:05:19 2014 +0100"
      },
      "committer": {
        "name": "Dmitry Petrochenko",
        "email": "dmitry.petrochenko@intel.com",
        "time": "Fri Apr 18 15:23:34 2014 +0700"
      },
      "message": "64bit changes to the stack walker for the Quick ABI.\n\n- Spill registers have different sizes.\n- The ArtMethod at the bottom of the stack is always of kWordSize.\n\nChange-Id: I92f67ff928477970c393c7146980255d08e8e6af\n"
    },
    {
      "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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": "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"
    }
  ]
}
