)]}'
{
  "log": [
    {
      "commit": "b5e8ade3b6bf2162a885133f2ac728c578c3c2b0",
      "tree": "328252a5eba3615246ec12dc7d55cf1961253358",
      "parents": [
        "0344f4e1bd62eb092d77840ec7d9cb48adb48a15",
        "00b53b7f3f9ce5996b767b52c28dd846f47a723c"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 02 20:17:51 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 02 20:17:52 2016 +0000"
      },
      "message": "Merge \"Fast ART MIPS64 interpreter\""
    },
    {
      "commit": "35122443e5f8606cc5a660ac32745a06aefb341b",
      "tree": "be44db33797ae729342c671fb95b7746e363e799",
      "parents": [
        "f9f3c5b0ebacbfed59af9c5c81fe9752e6b1258c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 12:05:30 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 16:35:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Use the interpreter as a heartbeat for the JIT.\"\"\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit a96917a6983a5abbe973255a3846fda549fb1657.\n\nChange-Id: I5c4f0d87d3293a6a7ab56a33396670704b66a347\n"
    },
    {
      "commit": "00b53b7f3f9ce5996b767b52c28dd846f47a723c",
      "tree": "f0f5edd96d6b4b2256955fe78aad4b2f1da0b45f",
      "parents": [
        "00e94fb884eb0c58e75a623b0fd26330a9327f1e"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Tue Feb 02 20:25:45 2016 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 02 08:04:30 2016 -0800"
      },
      "message": "Fast ART MIPS64 interpreter\n\nChange-Id: I5dda522df0acf9f9df626fe4f5ecfe6c4df600d3\n"
    },
    {
      "commit": "73e31f8ae826be5b9b0c3c216abb904cbfa71077",
      "tree": "ed0a002d71f059a87957b851b710554b4ed2b561",
      "parents": [
        "a8fde8e67dc8d15a436db16c7bbe201dbb249290",
        "a96917a6983a5abbe973255a3846fda549fb1657"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 01 22:18:18 2016 +0000"
      },
      "message": "Merge \"Revert \"Use the interpreter as a heartbeat for the JIT.\"\""
    },
    {
      "commit": "a96917a6983a5abbe973255a3846fda549fb1657",
      "tree": "aa03a2a6d0f70faa20f3579458abde24f71abb04",
      "parents": [
        "7273a5d045d3ceb3ff011ad65765356b69b155e8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "message": "Revert \"Use the interpreter as a heartbeat for the JIT.\"\n\nHits a DCHECK testing libcore.\n    art F 11973 12675 art/runtime/jit/jit_code_cache.cc:644] Check failed: it.second-\u003eGetProfilingInfo(sizeof(void*)) !\u003d nullptr \n\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit 7273a5d045d3ceb3ff011ad65765356b69b155e8.\n\nChange-Id: I6614a82e775ea71aa16f041313f67546db41eac8\n"
    },
    {
      "commit": "7191fddfe6c623976dc8a97f785e3ce848e46d39",
      "tree": "2b4283da97295eb7612c7302c9c1fe4e9a5dba90",
      "parents": [
        "a2313aa47096ea59ffb661d5afc7ff792bab22d6",
        "6cbe0814952bd3bbb329c4ca4dc683ac87c2c2de"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 01 18:19:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 01 18:19:42 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fast ART x86_64 interpretator\"\"\""
    },
    {
      "commit": "01f4dae0b455f03ae3ba531a37eff5e4e8e9451f",
      "tree": "bacb31729cc86d232cf300a52c51949eaa1dd5c8",
      "parents": [
        "4cb069fa2fd967312d5884b86bbdac343df9eb28",
        "7273a5d045d3ceb3ff011ad65765356b69b155e8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 15:17:42 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 01 15:17:42 2016 +0000"
      },
      "message": "Merge \"Use the interpreter as a heartbeat for the JIT.\""
    },
    {
      "commit": "7273a5d045d3ceb3ff011ad65765356b69b155e8",
      "tree": "addf5dcdc82e54605cfb9a622d284bf06b849327",
      "parents": [
        "c3bcf40e905c53ec857ec40a9ae45f4c86738929"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 29 15:35:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:03:32 2016 +0000"
      },
      "message": "Use the interpreter as a heartbeat for the JIT.\n\nWhen doing a partial code cache collection, update all entrypoints to\ninterpreter, so that the next full collection will remove code\nthat wasn\u0027t executed during that window.\n\nbug:27398183\nbug:23128949\nbug:26846185\n\nChange-Id: I4423f5c4810dac183dc8973078bf218818745e80\n"
    },
    {
      "commit": "6cbe0814952bd3bbb329c4ca4dc683ac87c2c2de",
      "tree": "cdfac167046bf0da3b2bb372a756aceff42835b5",
      "parents": [
        "757701fc80dfe35ff9677c858b3d85e946e1ae36"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue Mar 01 16:10:48 2016 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Tue Mar 01 16:16:22 2016 +0600"
      },
      "message": "Revert \"Revert \"Fast ART x86_64 interpretator\"\"\n\nCFI is updated. Now unwinder can fall through fast interpreter.\n\nThis reverts commit c4a575f58007036ff3408b15c2ec48108add20f3.\n\nChange-Id: Ibb0a2ef41e4d02ab0b4ecc4f030ba0e72971aa9d\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "15315abf91c94a4ebb0a64050f2753798b34bc1f",
      "tree": "851f18eeb8b6401793051d5f52dfad1f7e69f965",
      "parents": [
        "3140ed59665d2ecea1e3ff153363ff26dab48b75",
        "c4a575f58007036ff3408b15c2ec48108add20f3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 26 08:57:18 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 26 08:57:18 2016 +0000"
      },
      "message": "Merge \"Revert \"Fast ART x86_64 interpretator\"\""
    },
    {
      "commit": "c4a575f58007036ff3408b15c2ec48108add20f3",
      "tree": "c08cc40abef82342c73019be6a52dc37561c0c44",
      "parents": [
        "c669beb798e273dd3d44cfa6a7a95ff90eba7209"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 26 08:56:45 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 26 08:56:45 2016 +0000"
      },
      "message": "Revert \"Fast ART x86_64 interpretator\"\n\nFails gcstress configuration.\n\nThis reverts commit c669beb798e273dd3d44cfa6a7a95ff90eba7209.\n\nChange-Id: Ifac92471f91a116fc271d0dde8356fbbb0a08048\n"
    },
    {
      "commit": "200f040af3e4fe9e178cb63c90860d58d90ef665",
      "tree": "ee57a9a9fe55bb8c4c333d3f87d245517913e31f",
      "parents": [
        "8ff01690eb2796604b8927076fdde7452b4c8a60"
      ],
      "author": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Thu Feb 25 20:05:47 2016 -0800"
      },
      "committer": {
        "name": "Douglas Leung",
        "email": "douglas.leung@imgtec.com",
        "time": "Thu Feb 25 20:05:47 2016 -0800"
      },
      "message": "[MIPS] Add Fast Art interpreter for Mips32.\n\nChange-Id: I6b9714dc8c01b8c9080bcba175faec1d2de08f8f"
    },
    {
      "commit": "36be5c503c21f4dbd1998f0c0b72e00e6cedd8fa",
      "tree": "5ed5f60d13ed5fe97de98501877d975a3ec3137a",
      "parents": [
        "eea36cb923b078b86c7b5033ce75fe1b8ea4e522",
        "c669beb798e273dd3d44cfa6a7a95ff90eba7209"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 25 23:18:19 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 25 23:18:19 2016 +0000"
      },
      "message": "Merge \"Fast ART x86_64 interpretator\""
    },
    {
      "commit": "fd522f9039befff986701ff05054ffdd1be1dd33",
      "tree": "d5d44cc20882ce0ed5823a34fb37f702d45461f6",
      "parents": [
        "a1f65135cd2315159ac302f904ba0c5ba0d7fd0e"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 11 22:37:42 2016 +0000"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 19 06:01:27 2016 -0800"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"ART: Enable Jit Profiling in Mterp for arm/arm64\"\"\"\"\n\nThis reverts commit 5d03317a834efdf3b5240c401f1bc2ceac7a2f25.\n\nWe need to catch all possible cases in which new instrumentation appears\nor the debugger is attached, and then switch to the reference interpreter\nif necessary.  We may, in a future CL, use the alt-mterp mechanism to accompish\nthis (as did Dalvik).\n\nOnly enables Arm64 for now.  Once it survives extended testing, will enable\narm and update x86.\n\nUpdated OSR handling to match other interpreters.\n\nChange-Id: I076f1d752d6f59899876bab26b18e2221cd92f69\n"
    },
    {
      "commit": "c669beb798e273dd3d44cfa6a7a95ff90eba7209",
      "tree": "4eb5ea171ee9e55284058b7c331d2cc79a18490a",
      "parents": [
        "ff8579efb24457bb2f2b451a4e735b8bc4d0200c"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Thu Jan 14 10:30:21 2016 +0600"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Thu Feb 18 12:10:29 2016 +0600"
      },
      "message": "Fast ART x86_64 interpretator\n\nIntroduce the ART x86_64 fast interpreter.\n\nChange-Id: I3649698eb251ac8acc98851969f9445f60d17b02\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "dd5e5e975e1965c3e4568143e8e1c7b65b319f58",
      "tree": "92f56fa2f743d50fc7078117cf28cbdacf2937d8",
      "parents": [
        "88f4bc504c1be353e95e9d215d68c7d58eb0717f"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Fri Feb 12 16:29:00 2016 +0000"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Mon Feb 15 18:32:27 2016 +0000"
      },
      "message": "Revert \"Revert \"Make it possible to enable native debugging through debug flags\"\"\n\nThis reverts commit 3a98aae1b9b20bc78dc5e05d2e60cb1d0072db02.\n\n* Add support for a new debug flag disabling the optimizations in\n  the compiler and enable the generation of some additional debug\n  info (--native-debuggable).\n* Ignore the content of the oat files if force JIT is enabled so\n  the runtime ignores the AOT-ed code what doesn\u0027t contain any\n  debug info.\n\nTime measurements on a Nexus 5 with running:\nam start -n com.facebook.katana/com.facebook.katana.LoginActivity -W\n\nBefore change:             | AVG | DEV\n--------------------------------------\nThisTime:  549 492 512 511 | 516 | 24\nTotalTime: 549 492 512 511 | 516 | 24\nWaitTime:  662 511 528 526 | 557 | 71\n\nAfter change:              | AVG | DEV\n--------------------------------------\nThisTime:  530 467 503 544 | 511 | 34\nTotalTime: 530 467 503 544 | 511 | 34\nWaitTime:  551 497 536 583 | 541 | 36\n\nBased on the numbers the speed impact of the change is less then the\naccuracy of the measurement and it is also negligible.\n\nThe minor speed improvement displayed in the measurements are just\nthe cause of the variance of the measurement and not caused by this\nchange.\n\nChange-Id: Ibf7294bfd14f8632a0fdeb27a5b90bfe5037d085\n"
    },
    {
      "commit": "953e4c990456a71d351e17aee62e80e8133a186e",
      "tree": "0e8ca7bbaef830281994a569bf09565463a5c5ee",
      "parents": [
        "34937e2ed46fa9f56d99e9f32e0bfad050e5e798",
        "5d03317a834efdf3b5240c401f1bc2ceac7a2f25"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 11 11:40:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 11 11:40:11 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"ART: Enable Jit Profiling in Mterp for arm/arm64\"\"\"\""
    },
    {
      "commit": "5d03317a834efdf3b5240c401f1bc2ceac7a2f25",
      "tree": "748b6dce978437f689e6f81808c47ed3a0b6e4a9",
      "parents": [
        "9687f244bdb5dd0b4d9dd804a7c8c7b4a911d364"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 11 11:39:37 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 11 11:39:37 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"ART: Enable Jit Profiling in Mterp for arm/arm64\"\"\"\n\nUnfortunately, run-test interpreter on arm32 are still timing out, and the following jdwp tests on armv8 are failing:\n\n  org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testBreakpoint_BeforeException (no test history available)\n  org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testFieldAccess (no test history available)\n  org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testFieldModification (no test history available)\n  org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testMethodExit (no test history available)\n  org.apache.harmony.jpda.tests.jdwp.Events.EventWithExceptionTest#testMethodExitWithReturnValue (no test history available)\n  org.apache.harmony.jpda.tests.jdwp.Events.FieldAccessTest#testFieldAccessEvent (no test history available)\n  org.apache.harmony.jpda.tests.jdwp.Events.FieldModification002Test#testFieldModifyEvent (no test history available)\n  org.apache.harmony.jpda.tests.jdwp.Events.FieldModificationTest#testFieldModifyEvent (no test history available)\n  org.apache.harmony.jpda.tests.jdwp.Events.MethodExitWithReturnValueTest#testMethodExitWithReturnValueException (no test history available)\n\nThis reverts commit 9687f244bdb5dd0b4d9dd804a7c8c7b4a911d364.\n\nChange-Id: Iadac4902ab8d7eb574cc4abeba5f93388d59dcb4\n"
    },
    {
      "commit": "797f70cb2eacbd1b6c1db8bff0375abbcc27d3b9",
      "tree": "8c9ca6d89fbfc654c4fab5ab36ed7978e468af07",
      "parents": [
        "dd08dd7109f09dea53e64685f7db1439a0b07b2b",
        "9687f244bdb5dd0b4d9dd804a7c8c7b4a911d364"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Feb 10 22:42:02 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 10 22:42:02 2016 +0000"
      },
      "message": "Merge \"Revert \"Revert \"ART: Enable Jit Profiling in Mterp for arm/arm64\"\"\""
    },
    {
      "commit": "9687f244bdb5dd0b4d9dd804a7c8c7b4a911d364",
      "tree": "a1704a3aab0407a37a7ae407c2e8ed23259901d6",
      "parents": [
        "27ec302da670ffddaf1278b5b7155b7742aa37fd"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 05 14:08:10 2016 +0000"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Feb 09 07:48:28 2016 -0800"
      },
      "message": "Revert \"Revert \"ART: Enable Jit Profiling in Mterp for arm/arm64\"\"\n\nFixes: missing sign extension in iget template\n       Call to wrong branch profiling helper in arm/goto_16 and arm/goto_32\n       Missing export PCs\nReworks: Branch handlers to reduce cost of branch profiling.\n\nRe-enables Jit profiling for both Arm and Arm64.\n\nPerformance note:\nBranch profiling is relatively expensive, though the real\ncost will depend on branch frequency.  Taking a very\nbranch intensive benchmark, CaffeineMark\u0027s logic test, we\nsee the following scores (higher is better):\n\nMterp  (profiling off) 6187\nMterp  (profiling on)  4305\n\nSwitch (profiling off) 3931\nSwitch (profiling on)  2032\n\nThis reverts commit 95717f0010e7a9445450f4d39babfaf3a83e29b5.\n\nChange-Id: Ia2ef8b54ce95bfa86178b89c43f8a703316b2944\n"
    },
    {
      "commit": "3a98aae1b9b20bc78dc5e05d2e60cb1d0072db02",
      "tree": "541d9f2eeeeb4d1b7f3e56846542d826d0f6be59",
      "parents": [
        "c94a61f06ffc13288c67891048128c987b29bf33"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Mon Feb 08 20:21:54 2016 +0000"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Mon Feb 08 20:21:54 2016 +0000"
      },
      "message": "Revert \"Make it possible to enable native debugging through debug flags\"\n\nThe change causes issues in test-art-target-gtest-jni_internal_test32\n\nThis reverts commit c94a61f06ffc13288c67891048128c987b29bf33.\n\nChange-Id: Iecfe3c6874d7b0dd59f10156fe2eb743ab7221dc\n"
    },
    {
      "commit": "c94a61f06ffc13288c67891048128c987b29bf33",
      "tree": "83ed6106d14b211281c9ba2a677aed97ebc7657b",
      "parents": [
        "ac6a195ec8e1b5a7a6bd3d0c53d8997ff7a5e2cc"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Fri Feb 05 18:09:08 2016 +0000"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Mon Feb 08 10:53:01 2016 +0000"
      },
      "message": "Make it possible to enable native debugging through debug flags\n\n* Add support for a new debug flag disabling the optimizations in\n  the compiler and enable the generation of some additional debug\n  info (--native-debuggable).\n* Ignore the content of the oat files if force JIT is enabled so\n  the runtime ignores the AOT-ed code what doesn\u0027t contain any\n  debug info.\n\nTime measurements on a Nexus 5 with running:\nam start -n com.facebook.katana/com.facebook.katana.LoginActivity -W\n\nBefore change:             | AVG | DEV\n--------------------------------------\nThisTime:  549 492 512 511 | 516 | 24\nTotalTime: 549 492 512 511 | 516 | 24\nWaitTime:  662 511 528 526 | 557 | 71\n\nAfter change:              | AVG | DEV\n--------------------------------------\nThisTime:  530 467 503 544 | 511 | 34\nTotalTime: 530 467 503 544 | 511 | 34\nWaitTime:  551 497 536 583 | 541 | 36\n\nBased on the numbers the speed impact of the change is less then the\naccuracy of the measurement and it is also negligible.\n\nThe minor speed improvement displayed in the measurements are just\nthe cause of the variance of the measurement and not caused by this\nchange.\n\nChange-Id: Ia9022cbc1bbfcc072314b6c95f63a4bf8060c36c\n"
    },
    {
      "commit": "867d63b65f653d27dc7ea87e924f47148cec22a7",
      "tree": "2038bbb25fe121bdcf3653cc32211c6e2cb88936",
      "parents": [
        "6006e2ce92fd86fdf028cd7b3afe972815b0e0f3",
        "df707e406877e9c0426dd051c00933ebb331673e"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Feb 04 00:34:43 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 04 00:34:43 2016 +0000"
      },
      "message": "Merge \"runtime: Don\u0027t skip verification for -Xverify:soft-fail\""
    },
    {
      "commit": "df707e406877e9c0426dd051c00933ebb331673e",
      "tree": "db9c96c96d373935a83dda2fafbf3c7e1aef3377",
      "parents": [
        "e3d4ff566f9545114bf9ed72421e49eaf9d37953"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Feb 02 16:56:50 2016 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Feb 03 13:39:19 2016 -0800"
      },
      "message": "runtime: Don\u0027t skip verification for -Xverify:soft-fail\n\nWhen forcing the interpreter into access checks mode,\nmake sure that the regular verification is still run,\ngiving the verifier an opportunity to throw a VerifyError.\n\nIf verification would\u0027ve succeeded (without -Xverify:soft-fail flag),\noverride this and soft-fail, to force the interpreter-with-access-checks to be run\ninstead of the normal faster interpreter.\n\nThis fixes the following run-tests under the interpeter-access-checks:\n* 135\n* 412\n* 471\n* 506\n* 800\n\nBug: 22414682\nChange-Id: I5cb86a8bba71c7af9361a63c0802786c852b857b\n"
    },
    {
      "commit": "3b0b4b9d09baae7234fc26b7970b3ec55560735e",
      "tree": "e62ad4aa196637b73bc2c237af00a5064d8aaba0",
      "parents": [
        "85aa2567c3c05eae82460c73c64d06606db5743e"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Feb 02 13:45:36 2016 +0000"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Feb 02 09:54:09 2016 -0800"
      },
      "message": "Revert \"Revert \"ART: Mterp for arm64\"\"\n\nLooks like some of our assemblers disagree on valid arm64 assembly syntax\nForce use of clang for art runtime.  In a subsequent CL, will use form\nthat both gcc and clang accept.\n\nThis reverts commit 43f3fb960bce978df699c8a68a972be2a0d0d221.\n\nChange-Id: Ice83072171ab502c43d492e2238b446c4814ea67\n"
    },
    {
      "commit": "43f3fb960bce978df699c8a68a972be2a0d0d221",
      "tree": "667108ee13e0f093ec27ea5018d4848e89cf95c0",
      "parents": [
        "e0c269e0a5f50b1a551ddba1205f6e5b4b5e6c98"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Feb 02 10:48:49 2016 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Feb 02 10:48:49 2016 +0000"
      },
      "message": "Revert \"ART: Mterp for arm64\"\n\nThis reverts commit e0c269e0a5f50b1a551ddba1205f6e5b4b5e6c98.\n\nThe CL is causing build breakages on arm64 targets.\n\nChange-Id: I7402fe34869258ae870c57308b2062e50d801bdd\n"
    },
    {
      "commit": "e0c269e0a5f50b1a551ddba1205f6e5b4b5e6c98",
      "tree": "e46dc4d4bb2fb201cb78f39832f9a2ae41f9ff4c",
      "parents": [
        "dc5909af876474898e34bb41240130f6c3a37b6c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 26 18:23:19 2016 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Feb 01 14:12:39 2016 -0800"
      },
      "message": "ART: Mterp for arm64\n\nReady for review.  All opcodes handled.  All applicable run-tests pass.\nDevice boots to desktop in interpret-only mode.\n\nChange-Id: I937d8bcf848a831e04d4b9de8d1914667a197d75\n"
    },
    {
      "commit": "d6b48dbe715fbf1431394d2b6ef75cb19a4012dd",
      "tree": "f736903d0504a0198dca09cfb27913b6d806da22",
      "parents": [
        "1d81df8ff1e5bc820d021fa02c552f2b53182b36"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jan 28 15:48:55 2016 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jan 28 16:11:04 2016 -0800"
      },
      "message": "ART: Fix single-step interpretation for mterp\n\nFor bring-up (and failover) purposes, mterp can bail out to the\nswitch interpreter to handle a single opcode.  This CL fixes the\nhandoff of the result register (a bug that was masked by an earlier\nrevision which passed it around by reference, rather than by value.\n\nChange-Id: Iba9e1576f52b3660348c89466438bdc0526227d0\n"
    },
    {
      "commit": "734f3aa9f758236b6f1ace6347895af90b0d813d",
      "tree": "5982ad1d7df2062e0bd5deb023b39997a3a66a98",
      "parents": [
        "de31ca62015e94016155a99a268ea798ab1ef75c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jan 28 14:20:06 2016 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jan 28 15:58:45 2016 -0800"
      },
      "message": "Fix \"Never Interpret\" option for all interpreters\n\nCL 196596 added support for an option to bypass interpretation.\nHowever, it only covers 2 our of 3 interpreters (missing mterp).\nThis change moves the control up a level to the common interpreter\nentry where it will take effect before we select which interpreter\nto use.\n\nAlso, it corrects a somewhat academic bug in that the existing\ncode that assumes that (dex_pc \u003d\u003d 0) means that we just entered a\nmethod.  If a method\u0027s dex code internally branched to address 0,\nwe could issue bogus method entry events.  By moving this test up\na level, we should avoid this situation.  Note, though, that dx\nwould never generate this pattern, and it\u0027s hard to imagine even\nhand-generated dex code that would trigger a deoptimization in this\nsituation.\n\nChange-Id: I6684bbf63570e02f5b01ce423c656889a890de7d\n"
    },
    {
      "commit": "7c58bd41046bb9f87642caa0c2b094dc98be29ca",
      "tree": "dd0986bea0175a7f178903e26e03af95bb245c3e",
      "parents": [
        "78338a788b19b2babcf535f8d330e637c74e70ac"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jan 20 20:46:01 2016 +0000"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jan 21 11:11:27 2016 -0800"
      },
      "message": "Revert \"Revert \"Fast ART x86 interpreter\"\"\n\nThis reverts commit 2d093a1213cc2f85b5e5e02782332657c479eb94.\n\nDisable x86 mterp compilation on Mac host builds (but keep enabled\nfor all target builds).\n\nChange-Id: Ie355279f166d2964a786646ee53f065b7e0f5ede\n"
    },
    {
      "commit": "2d093a1213cc2f85b5e5e02782332657c479eb94",
      "tree": "fe07a7150fbe132bdc7d78f62dbe039daf3eaae3",
      "parents": [
        "99229c71efda9363faa571017c52a215c6e28f83"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 19 23:42:50 2016 +0000"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 19 23:42:50 2016 +0000"
      },
      "message": "Revert \"Fast ART x86 interpreter\"\n\nThis reverts commit 99229c71efda9363faa571017c52a215c6e28f83.\n\nAssembly syntax issue with the Mac build.\n\nChange-Id: I271d18d31963fae46e4077ddd39313bec0b3a39e\n"
    },
    {
      "commit": "99229c71efda9363faa571017c52a215c6e28f83",
      "tree": "a1323c1cdf1b53de8f9039014c92b6869b361faf",
      "parents": [
        "f74388daf23522dd4e9ebe6640030f4fd52c52ea"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Thu Dec 31 13:05:31 2015 +0600"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 19 12:12:45 2016 -0800"
      },
      "message": "Fast ART x86 interpreter\n\nPort of ART Dalvik-style interpreter for x86.\nSee Bill\u0027s patch for details\nhttps://android-review.googlesource.com/#/c/188977/\n\nIncluded fixes\nhttps://android-review.googlesource.com/#/c/196153/\nART: Mterp read barrier fix + minor cleanup\n\nhttps://android-review.googlesource.com/#/c/196501/\nART: Mterp - remove redundant null check\n\nChange-Id: If447e3a14088559e3aa0b82cb2c91721bea586ee\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "9612a70aa77b183a3cb2103d7eeb25cec580d0c8",
      "tree": "4247e4d30bf542d0443060dcf568630985cdb1b7",
      "parents": [
        "e56234bd59f8198e1b828149c61223e9530a05bd"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jan 13 19:32:28 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 14 12:51:57 2016 -0800"
      },
      "message": "Revert \"Disable mterp for the read barrier config.\"\n\nNow that cl 196153 is in.\n\nThis reverts commit 987e44e6b65677587f37c26e630ddc4d4c563382.\n\nBug: 26510411\nChange-Id: I006d7532973a6e26adde99e04f8b3eab491b3901\n"
    },
    {
      "commit": "922698ded1e80cad1ecce4c2172a88c76a216373",
      "tree": "86ff9ec81ac67cfe8476c33fc94286333e4ec4e9",
      "parents": [
        "0b0dc293402ec3d13982d74becae429f04a49c91",
        "987e44e6b65677587f37c26e630ddc4d4c563382"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 12 23:45:26 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 12 23:45:26 2016 +0000"
      },
      "message": "Merge \"Disable mterp for the read barrier config.\""
    },
    {
      "commit": "64320f9e275b0790e7321e6772bf51eb23db9f52",
      "tree": "7402a45f2f08db84cbde23e6d4687317ec989db3",
      "parents": [
        "39209f8597f427127d698c5c55496c7ba5562468"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 12 12:45:51 2016 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 12 13:17:06 2016 -0800"
      },
      "message": "Disable mterp if unstarted runtime\n\nMterp uses entrypoints that assume the runtime is started.  If it isn\u0027t,\nrevert to the fallback interpreter.\n\nBug: 26510411\n\nChange-Id: I08278981ee1e7bc21163c6584426cc18a5e261fc\n"
    },
    {
      "commit": "987e44e6b65677587f37c26e630ddc4d4c563382",
      "tree": "98b76564a6ab31b41fd18ceb8b8d99207d66efbd",
      "parents": [
        "c3ba07ef76549129705af28173070b88a1c39531"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 12 12:05:08 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 12 12:05:08 2016 -0800"
      },
      "message": "Disable mterp for the read barrier config.\n\nFor now. Volantis boots with this.\n\nBug: 26510411\nBug: 12687968\nChange-Id: Ifc9799404306c973ad1085c42c399d6eef05dcc6\n"
    },
    {
      "commit": "1452bee8f06b9f76a333ddf4760e4beaa82f8099",
      "tree": "8ffb80498cd8fdff66a4ab272723cf4d4e69e57b",
      "parents": [
        "7f9ea1451bb74055ee5d51ae04fc869faa06cbdd"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 06 14:43:04 2015 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Jan 11 13:04:49 2016 -0800"
      },
      "message": "Fast Art interpreter\n\nAdd a Dalvik-style fast interpreter to Art.\nThree primary deficiencies in the existing Art interpreter\nwill be addressed:\n\n1.  Structural inefficiencies (primarily the bloated\n    fetch/decode/execute overhead of the C++ interpreter\n    implementation).\n2.  Stack memory wastage.  Each managed-language invoke\n    adds a full copy of the interpreter\u0027s compiler-generated\n    locals on the shared stack.  We\u0027re at the mercy of\n    the compiler now in how much memory is wasted here.  An\n    assembly based interpreter can manage memory usage more\n    effectively.\n3.  Shadow frame model, which not only spends twice the memory\n    to store the Dalvik virtual registers, but causes vreg stores\n    to happen twice.\n\nThis CL mostly deals with #1 (but does provide some stack memory\nsavings).  Subsequent CLs will address the other issues.\n\nCurrent status:\n   Passes all run-tests.\n   Phone boots interpret-only.\n   2.5x faster than Clang-compiled Art goto interpreter on fetch/decode/execute\n       microbenchmark, 5x faster than gcc-compiled goto interpreter.\n   1.6x faster than Clang goto on Caffeinemark overall\n   2.0x faster than Clang switch on Caffeinemark overall\n   68% of Dalvik interpreter performance on Caffeinemark (still much slower,\n       primarily because of poor invoke performance and lack of execute-inline)\n   Still nearly an order of magnitude slower than Dalvik on invokes\n       (but slightly better than Art Clang goto interpreter.\n   Importantly, saves ~200 bytes of stack memory per invoke (but still\n       wastes ~400 relative to Dalvik).\n\nWhat\u0027s needed:\n   Remove the (large quantity of) bring-up hackery in place.\n   Integrate into the build mechanism.  I\u0027m still using the old Dalvik manual\n       build step to generate assembly code from the stub files.\n   Remove the suspend check hack.  For bring-up purposes, I\u0027m using an explicit\n       suspend check (like the other Art interpreters).  However, we should be\n       doing a Dalvik style suspend check via the table base switch mechanism.\n       This should be done during the alternative interpreter activation.\n   General cleanup.\n   Add CFI info.\n   Update the new target bring-up README documentation.\n   Add other targets.\n\nIn later CLs:\n   Consolidate mterp handlers for expensive operations (such as new-instance) with\n       the code used by the switch interpreter.  No need to duplicate the code for\n       heavyweight operations (but will need some refactoring to align).\n   Tuning - some fast paths needs to be moved down to the assembly handlers,\n       rather than being dealt with in the out-of-line code.\n   JIT profiling.  Currently, the fast interpreter is used only in the fast\n       case - no instrumentation, no transactions and no access checks. We\n       will want to implement fast + JIT-profiling as the alternate fast\n       interpreter.  All other cases can still fall back to the reference\n       interpreter.\n   Improve invoke performance.  We\u0027re nearly an order of magnitude slower than\n       Dalvik here.  Some of that is unavoidable, but I suspect we can do\n       better.\n   Add support for our other targets.\n\nChange-Id: I43e25dc3d786fb87245705ac74a87274ad34fedc\n"
    },
    {
      "commit": "103992b9171fac9eceb2fe4015ab04f544b9c559",
      "tree": "0e21aeb48e11130f9bfe1c1c42202ba715e30cb6",
      "parents": [
        "376a6f3dbae7b71a6fc2c339ec416d3407277308"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 04 15:32:43 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 05 08:16:06 2016 -0800"
      },
      "message": "ART: Move ThrowStackOverflowError to common_throws\n\nThis should really be in common_throws considering all the callers.\n\nChange-Id: I410c07cbf5659f216d44597530cb85f99740f320\n"
    },
    {
      "commit": "73be1e8f8609708f6624bb297c9628de44fd8b6f",
      "tree": "47a22745797a345dea8dd846aad00334da0d5bf1",
      "parents": [
        "47229aa5848df7d45578dbdd9285f57dfa9399a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Sep 17 15:22:56 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 04 12:08:02 2015 +0000"
      },
      "message": "Inline monomorphic calls.\n\nChange-Id: If38171c2dc7d4a4378df5d050afc4fff4499c98f\n"
    },
    {
      "commit": "9139e008abe30b7beaf4afd6533228a1dd9b202c",
      "tree": "506be89287507bd777bd132627ad963729434969",
      "parents": [
        "d7c76bd7e867b151ac81ef41810614c7b4cc898e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Oct 09 15:59:48 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Nov 10 17:20:41 2015 -0800"
      },
      "message": "Correct exception behavior for default methods\n\nDefault methods are defined to throw an IncompatibleClassChangeError\n(ICCE) when they are called and there is no \"best\" implementation.\nPreviously we would simply throw an ICCE during class loading as soon\nas we noticed that this would happen if called. This makes us wait\nuntil we actually attempt to execute the method. Furthermore, this\nallows us to use other, non-conflicting, methods on the object as\nnormal.\n\nFurthermore, this makes us correctly throw AbstractMethodErrors in\ncases where all default implementations of a method are overridden by\nabstract declarations.\n\nAdds 3 tests for this new behavior.\n\nBug: 24618811\n\nChange-Id: Id891958a81f9b3862b2ce5919636aabef7d3422e\n"
    },
    {
      "commit": "eb7c144a6aff7da673ba53d501c46f00311d4d7f",
      "tree": "feec33dd2e711800305477b092970500991a3993",
      "parents": [
        "98ae42010a6e6a0e4c5bcc4d6a357805eef3f4ff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Aug 31 13:17:42 2015 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 13 13:09:37 2015 -0700"
      },
      "message": "Add initial default method support to Art\n\nThis commit starts the process of adding default methods and their\nassociated pieces to ART.\n\nThis adds full support for calling default methods using\ninvoke-interface and invoke-virtual on objects implementing the\ninterfaces. Verifier is changed to allow this when the runtime is\nstarted with -Xexperimental:default-methods.\n\nThis also adds support for defining and calling static methods on\ninterface classes with invoke-static.\n\nDirectly calling overridden default methods using invoke-super is not\nyet supported.\n\nThis adds 5 new run-tests for this functionality.\n\nBug: 24618811\n\nChange-Id: I35ca800d99d3329348b277789b70ceeeba6e7f03\n"
    },
    {
      "commit": "03ec930faded5bbfa096533ce60b6893847922db",
      "tree": "085ec76235f72647cd2e083801f15d82394e038b",
      "parents": [
        "14412079e6eba4d16f40c0bdc5e94812e1c7f5bc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 27 17:41:47 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 09 16:32:13 2015 -0700"
      },
      "message": "ART: Lock counting in the interpreter\n\nTo support structured locking when balanced-locking verification\nfailed, count lock and unlock operations in the verifier.\n\nBug: 23502994\nChange-Id: I2bb915da6e3d43c49723a943b42d4d5a7c939aa1\n"
    },
    {
      "commit": "3cfa4d05afa76e19ca99ec964b535a15c73683f0",
      "tree": "28c4950dff3700f69e3d32fc496890a722cfc379",
      "parents": [
        "f4156986d1ba5b6dd7dfe89754c8562557cd1bc5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 06 17:04:01 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 07 09:50:25 2015 -0700"
      },
      "message": "ART: Remove interpreter entrypoints\n\nThese are no longer used as entrypoints. Make them proper runtime\nfunctions local to the interpreter.\n\nBump oat version.\n\nChange-Id: Icdd92e20eafc5668b68eeebf55cf624560f462b3\n"
    },
    {
      "commit": "b30259251b22430fad12f1adeab671e4bf8f88f5",
      "tree": "80bff979beae84702b739962656a16d245a40ef4",
      "parents": [
        "eae0927cb81437389dc96437e9f04903783282b4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 01 14:45:00 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 24 15:42:14 2015 -0700"
      },
      "message": "ART: Use unique_ptr for alloca-ed ShadowFrames\n\nTo enable automated calls of the destructor (for extensions of\nShadowFrame), return a unique_ptr with a custom deleter. Use a\nmacro so that the alloca happens in the caller.\n\nChange-Id: Id28a6ea131f108e4a94ff1699fc22e7b44aec018\n"
    },
    {
      "commit": "520633bebd2bf4d70884d30f179dbde9f275aac6",
      "tree": "0006fb9db71545d9aaa88df3952a7488b30b2ae6",
      "parents": [
        "e0a49e3a93aa54b9e603d797d9e925a98742753a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 08 17:03:36 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 10 17:39:56 2015 +0200"
      },
      "message": "Support deoptimization on exception\n\nAllows to deoptimize when an exception is being thrown. We only\ndeoptimize if an executable frame (starting from the catch handler)\nneeds to be executed with the interpreter.\n\nBefore executing deoptimized frames, the exception is restored. The\ninterpreter starts by handling this exception at the point of the\nthrowing instruction.\n\nBug: 23714835\nChange-Id: I0c5f7d4b257644acf12210aae8e5b6bb0f4af1f7\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "799681b176ad25437ce2849639f54f610dcbf684",
      "tree": "4bbb5ea4c6a2dd7e1c20a23f3adbb81a3b86fe0d",
      "parents": [
        "9ba4e65148feec589fece0c991695ba1049785bf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 15 19:24:12 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 20 19:41:36 2015 +0000"
      },
      "message": "ART: Refactor UnstartedRuntime for testing\n\nExpose the UnstartedRuntime implementation functions as private static\nmethods of a class. Add a gtest that can invoke these functions. Add\nsample tests for String and Memory.\n\nBug: 21173514\nChange-Id: Ib5bde6347fafaf7607c642542ea7d5938ff4b1df\n"
    },
    {
      "commit": "241a9588c6d7d0fcb4c92da40c7141863930083a",
      "tree": "4a6868893dc742f6322775d198a2305f645f2f3f",
      "parents": [
        "a93b104b47da67eaa50f8a6b7280cc6c438ef37b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 27 15:19:41 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 04 12:10:07 2015 -0700"
      },
      "message": "Fix mismatched new[]/delete.\n\nAnother two cases where a new[] is used but only a delete occurs.\n\nBug: 18202869\nChange-Id: If68264807150f3a9783e44ef8823cc366bff8df2\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "d43b3ac88cd46b8815890188c9c2b9a3f1564648",
      "tree": "6c599c3f40d57e92786bd7f41c0541d9eaa2643b",
      "parents": [
        "a109632b240f3c9355ca95500f6f48e4478e3c51"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 01 14:03:04 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 01 14:05:13 2015 -0700"
      },
      "message": "Revert \"Revert \"Deoptimization-based bce.\"\"\n\nThis reverts commit 0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430.\n\nChange-Id: I1ca10d15bbb49897a0cf541ab160431ec180a006\n"
    },
    {
      "commit": "0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430",
      "tree": "0e1d0813c1d8d1c7239a900c1653296975713df0",
      "parents": [
        "e295e6ec5beaea31be5d7d3c996cd8cfa2053129"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "message": "Revert \"Deoptimization-based bce.\"\n\nThis breaks compiling the core image:\n\n Error after BCE: art::SSAChecker: Instruction 219 in block 1 does not dominate use 221 in block 1.\n\nThis reverts commit e295e6ec5beaea31be5d7d3c996cd8cfa2053129.\n\nChange-Id: Ieeb48797d451836ed506ccb940872f1443942e4e\n"
    },
    {
      "commit": "e295e6ec5beaea31be5d7d3c996cd8cfa2053129",
      "tree": "4d8a657d23d511743ce35bee596544d7f652efdb",
      "parents": [
        "d24ba2c44c76a2b2dd13aafe8f7981c15be31a98"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sat Mar 07 06:37:59 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Mar 23 16:39:37 2015 -0700"
      },
      "message": "Deoptimization-based bce.\n\nA mechanism is introduced that a runtime method can be called\nfrom code compiled with optimizing compiler to deoptimize into\ninterpreter. This can be used to establish invariants in the managed code\nIf the invariant does not hold at runtime, we will deoptimize and continue\nexecution in the interpreter. This allows to optimize the managed code as\nif the invariant was proven during compile time. However, the exception\nwill be thrown according to the semantics demanded by the spec.\n\nThe invariant and optimization included in this patch are based on the\nlength of an array. Given a set of array accesses with constant indices\n{c1, ..., cn}, we can optimize away all bounds checks iff all 0 \u003c\u003d min(ci) and\nmax(ci) \u003c array-length. The first can be proven statically. The second can be\nestablished with a deoptimization-based invariant. This replaces n bounds\nchecks with one invariant check (plus slow-path code).\n\nChange-Id: I8c6e34b56c85d25b91074832d13dba1db0a81569\n"
    },
    {
      "commit": "2969bcdcd80624e4a4fef696b54c2c76b44b6853",
      "tree": "a097d139d5525ec2af6682f3e37bda94dead8cc9",
      "parents": [
        "f719fdd20e6282f3579cb99529bb65e852612647"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 09 12:57:41 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 11 09:27:03 2015 -0700"
      },
      "message": "ART: Refactor unstarted runtime\n\nRefactor and clean up unstarted runtime.\n\nBug: 19542228\nChange-Id: Ib3e4b3517e06e8242d4fed32ca59419fef553a47\n"
    },
    {
      "commit": "270a0e16c3b8e5b95cbfdbd8996ac137c7c6322b",
      "tree": "2800649d19ffcdc891118a458f6b0169022d93e0",
      "parents": [
        "951d70b42400453f9d1746d155b8337c07c86acc"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jan 16 19:49:09 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jan 23 17:26:45 2015 +0100"
      },
      "message": "Fix exception handling during deoptimization\n\nWhen interpreting a deoptimized shadow frame, we may start with a\npending exception thrown by a previous deoptimized shadow frame (from\na previous invoke). Therefore, we need to handle it before executing\nany instruction, otherwise we execute incorrect code.\n\nBecause we need the DEX pc of the throwing instruction to find a\nmatching catch handler, we initialize deoptimized shadow frames with\nthe current DEX pc at the time the stack is deoptimized.\nWhen we are about to interpret a deoptimized shadow frame, we need to\nupdate the shadow frame with the DEX pc of the next instruction to\ninterpret. There are three cases:\n- if there is no pending exception, this is the instruction following\nthe current one.\n- if there is a pending exception and we found a matching catch\nhandler, this is the first instruction of this handler.\n- if there is a pending exception but there is no matching catch\nhandler, we do not execute the deoptimized shadow frame and continue\nto its caller.\n\nThe verifier now fails when a method starts with a move-exception\ninstruction. Indeed we cannot start executing a method with a pending\nexception.\n\nBug: 19057915\nBug: 19041195\nBug: 18607595\nChange-Id: I355ac81e6ac098edc7e3cc8c13dbfa24a2969ab2\n"
    },
    {
      "commit": "e94652f1e321b2c8b71acbe5b07d2ebf69fbdb99",
      "tree": "b4c2a4435800222fa740a5ae57fa217b6aed0875",
      "parents": [
        "f25c2ec6b63e116f24f359a10b59c78768fde67a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:19 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:49 2014 -0800"
      },
      "message": "Remove MethodHelper from the interpreter.\n\nUse ShadowFrame to get the executing method to avoid a handle for the current\nmethod.\nVarious associated bits of header file clean-up and removal of an unnecessary\nuse of MethodHelper in CompilerDriver.\n\nChange-Id: I3b6f4413701e8fc6b0c58b0041a0dd15472bedaa\n"
    },
    {
      "commit": "2d7210188805292e463be4bcf7a133b654d7e0ea",
      "tree": "7705a3bf841ae44b2396728fa22ed0b5dcb44dbf",
      "parents": [
        "e0491682d101c69bf88c3c24a965312129cbfa38"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 10 11:08:06 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 18 12:27:37 2014 -0800"
      },
      "message": "Change 64 bit ArtMethod fields to be pointer sized\n\nChanged the 64 bit entrypoint and gc map fields in ArtMethod to be\npointer sized. This saves a large amount of memory on 32 bit systems.\nReduces ArtMethod size by 16 bytes on 32 bit.\n\nTotal number of ArtMethod on low memory mako: 169957\nImage size: 49203 methods -\u003e 787248 image size reduction.\nZygote space size: 1070 methods -\u003e 17120 size reduction.\nApp methods: ~120k -\u003e 2 MB savings.\n\nSavings per app on low memory mako: 125K+ per app\n(less active apps -\u003e more image methods per app).\n\nSavings depend on how often the shared methods are on dirty pages vs\nshared.\n\nTODO in another CL, delete gc map field from ArtMethod since we\nshould be able to get it from the Oat method header.\n\nBug: 17643507\n\nChange-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8\n\n(cherry picked from commit e832e64a7e82d7f72aedbd7d798fb929d458ee8f)\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3",
      "tree": "f7a20779e4d665f948c5fbcd26dac0071dafb8d4",
      "parents": [
        "2df6840f68dd18d7dd8dbf53f8b6181bbfdc4fc4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 14 17:41:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 19:27:28 2014 -0700"
      },
      "message": "Make ART compile with GCC -O0 again.\n\nTidy up InstructionSetFeatures so that it has a type hierarchy dependent on\narchitecture.\nAdd to instruction_set_test to warn when InstructionSetFeatures don\u0027t agree\nwith ones from system properties, AT_HWCAP and /proc/cpuinfo.\nClean-up class linker entry point logic to not return entry points but to\ntest whether the passed code is the particular entrypoint. This works around\nimage trampolines that replicate entrypoints.\nBug: 17993736\n\nChange-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23\n"
    },
    {
      "commit": "5ad97daa3112ca626e3fbf2bf08971977344c3c3",
      "tree": "a470901bdeea004fd2ef526241853a167b1c0a02",
      "parents": [
        "72f961813dcb915542b9ae957aed040082d3e40a"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Oct 06 10:46:14 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Oct 06 10:47:18 2014 -0700"
      },
      "message": "Handlerize methods across some GC points.\n\nBug: 12687968\nChange-Id: I0d5b0a78488ba76db4d25991d8db95b24bb624e9\n"
    },
    {
      "commit": "fa888d06fd9ae90565254456e9b2e0cd62fbc91f",
      "tree": "53a63953098125c3ad66c4ebbbc1b3e687eebbe5",
      "parents": [
        "eb1d22bf405f0edaeb34f78905d75f167e88b868"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 30 12:00:11 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 30 12:03:52 2014 +0000"
      },
      "message": "Revert \"Enable computed goto interpreter on the host\"\n\nThis reverts commit 66d9bdb94f21106aaaa31a8fd686098672075e04.\n\nBug: 17716550\nChange-Id: Ib404242c86e96e8edf019a2dcc14f0f8294b79e8"
    },
    {
      "commit": "f0edfc355893d53d1104b05501c99ad5ccf305c4",
      "tree": "7e1fa49875759512f5d02b1c45435d3e3366b920",
      "parents": [
        "1ed5b27ee329208fd8ae22b8a9a61d708e2c1ffb"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 11:46:46 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 15:53:54 2014 -0700"
      },
      "message": "Some optimizations for the array alloc path.\n\n- Force Array::Alloc() to be inlined.\n- Simplify the array size overflow check.\n- Turn fill_usable into a template parameter.\n- Remove a branch in Array::DataOffset() and avoid\n  Primitive::ComponentSize(), which has a switch, in the array alloc\n  path.\n- Strength reductions in the array size computation by using component\n  size shifts instead of component sizes. Store component size shift\n  in the upper 16 bits of primitive_type field.\n- Speedup: ~4% (3435-\u003e3284) in MemAllocTest on N4.\n\nBug: 9986565\n\nChange-Id: I4b142ffac4ab8b5b915836f1660a949d6442344c\n"
    },
    {
      "commit": "66d9bdb94f21106aaaa31a8fd686098672075e04",
      "tree": "9ce15530f09990a57cb9342e37795803806bad66",
      "parents": [
        "8380c7c246337e66291a88f633dfaa250457bb0f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Aug 28 18:25:09 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 23 14:15:00 2014 +0200"
      },
      "message": "Enable computed goto interpreter on the host\n\nWe disabled the computed goto interpreter when compiling with clang because of\ncompilation issues. Since we compile with clang on the host, we used the\nswitch-based interpreter.\n\nNow clang is able to compile the computed goto interpreter, we can use it by\ndefault on the host.\n\nChange-Id: Ifa2a2d3c171b1116ecd3b3f213382c3c85e93f66\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "535a3fbc08e1577f43aec7402cab80c14ca64c41",
      "tree": "b1bfd1425064f3ddd243cc87352eb8596f2aa037",
      "parents": [
        "ebb6b5c90857f390db5a4f840bbe67b3a59a22d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 22 15:17:38 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 22 15:19:29 2014 +0100"
      },
      "message": "Interpreter can kick in even when implicit checks are enabled.\n\nAdd a GetStackEndForInterpreter for its stack overfow check.\n\nChange-Id: I2d4fc229a8eb727fda509ff778e16d60d96ecc28\n"
    },
    {
      "commit": "d8434439dc64add41cdfa69ddf96b960af9050de",
      "tree": "f1d90394dc3b11fd80397ff702413c8710cf1a65",
      "parents": [
        "3d71f321f4b87ba13113dc0457fd9c3470a2b380"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 11 09:56:07 2014 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 11 16:50:37 2014 -0700"
      },
      "message": "Call strong CAS from unsafe. Add more CAS versions.\n\nAdds a number of additional CAS versions.  Calls the correct\none from sun.misc.unsafe, fixing a recently introduced bug.\nAvoid unnecessary ordering constraint when installing hash code.\n\nChange-Id: I7c09d0c95ceb2a549ec28ee34084198ab3107946\n"
    },
    {
      "commit": "3641ac7de8b51c0853eaaa2ba3a3ab7e65a837c5",
      "tree": "425daeee0978d1a551ede86422643da09fbe1f43",
      "parents": [
        "eab674a87b32794ae2c5e7d238292e56804de09d",
        "4e99b3d8955131f3fc71aa113f0fa71f0092cb6f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jul 11 14:52:06 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 10 20:09:49 2014 +0000"
      },
      "message": "Merge \"Add missing class initialization during compilation and tests\""
    },
    {
      "commit": "4e99b3d8955131f3fc71aa113f0fa71f0092cb6f",
      "tree": "bcaf4e5119a74c836d8598e064a20cdead757efb",
      "parents": [
        "5fa647d5f663033e4ed3d398aece1f8211d7f460"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 24 14:35:40 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jul 10 17:03:15 2014 +0200"
      },
      "message": "Add missing class initialization during compilation and tests\n\nAdds missing class initialization during compilation and tests, especially\njava.lang.Class. Otherwise, we\u0027d be able to execute code while the referring\nclass is not initialized or initializing.\n\nAlso adds mirror::Class::AssertInitializedOrInitializingInThread method to\ncheck class initialization when entering the interpreter: the called method\u0027s\ndeclaring class must either be initialized or be initializing by the current\nthread (other threads must be waiting for the class initialization to complete\nholding its lock). Note we only do this check in debug build.\n\nBump oat version to force compilation.\n\nBug: 15899971\nChange-Id: I9a4edd3739a3ca4cf1c4929dcbb44cdf7a1ca1fe\n"
    },
    {
      "commit": "228602f562f1d130d06e60a98752d99c2d467d6a",
      "tree": "ee5b543695843ce48ebec4ffc88514ff679f4e93",
      "parents": [
        "be2a1df15a31a5223ee9af3015a00c31d2ad2e10"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 02:07:54 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 02:07:54 2014 -0700"
      },
      "message": "Make CAS operations in Object use art::Atomic.\n\nMake naming consistent with art::Atomic.\n\nChange-Id: If3abdb019ef8b53bd809e3fef3fd5248aeb27e9a\n"
    },
    {
      "commit": "6c5cb212fa7010ae7caf9dc765533aa967c95342",
      "tree": "c31c46eb7b284b317455fdab48317de92b81dd28",
      "parents": [
        "241fd1192dfc0f7322660343179f9fc0591ed9ff"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 18 16:07:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 18 16:39:29 2014 -0700"
      },
      "message": "Ensure classes are initialized rather than initializing.\n\nA class can be being initialized on a different thread, in that case other\nthreads should block trying to access the class. The initializing state shows\nthe class is being initialized but not that its safe for other threads to\naccess. Change occurances of IsInitializing to IsInitialized primarily in\nslow-path code.\nBug: 15347354\n\nChange-Id: Ib586d0a385be6086a890dfbf8868d76f16767fac\n"
    },
    {
      "commit": "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe",
      "tree": "3d3f667c8232a9c1bb6fe9daea0d364f9ae01d8c",
      "parents": [
        "2e1ca953c7fb165da36cc26ea74d3045d7e272c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 21 17:43:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 09 12:46:32 2014 -0700"
      },
      "message": "Change MethodHelper to use a Handle.\n\nAdded ConstHandle to help prevent errors where you modify the value\nstored in the handle of the caller. Also fixed compaction bugs\nrelated to not knowing MethodHelper::GetReturnType can resolve types.\nThis bug was present in interpreter RETURN_OBJECT.\n\nBug: 13077697\n\nChange-Id: I71f964d4d810ab4debda1a09bc968af8f3c874a3\n"
    },
    {
      "commit": "b74cd29802f364b4cec88f4913fa38ade26b8fab",
      "tree": "73ccdce1c5a6e57d5763cae1f889e53dca2b5e24",
      "parents": [
        "11138c73e0c5f8a90d1eeed3c48a2b63b310671c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 29 14:31:33 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 30 13:58:22 2014 -0700"
      },
      "message": "Compaction cleanup for FindArrayClass.\n\nWe now pass double pointer in to signify that it can cause thread\nsuspension, this double pointer gets wrapped by a handle if don\u0027t\nfind the array class in the cache.\n\nChange-Id: I43436b6c35597c7252b65d1180baddb5ac4caabb\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": "f832284dd847ff077577bb5712225430bbbb3b67",
      "tree": "44f6b91098639c6ebc438b4ec998d0dc128cef9a",
      "parents": [
        "8f0776768712b2021aa8fb649b51017b9f0fc7a9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 16 10:59:25 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 18 12:50:33 2014 -0700"
      },
      "message": "Delete ClassHelper and fix compaction bug in GetDirectInterface\n\nCleanup helps to prevent compaction bugs. Fixed a fairly serious\ncompaction error caused by calling ClassHelper::GetDirectInterface\nwithout handling the case where it causes thread suspension due to\nResolveType.\n\nBug: 8981901\n\nChange-Id: I82b3bb6dd48d21eb6ece7aae0733c4a23c2bc408\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "a4e7413aa3420d54e41f37f286866a8025caa373",
      "tree": "aa3c90533b5933e3ac30f92a021ecdf562acd101",
      "parents": [
        "2a12ad460af139a03c3e9bf5fc7886a7521b333e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 06 01:14:54 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 06 01:14:54 2014 -0700"
      },
      "message": "Allow VMRuntime.newUnpaddedArray allocations in unstarted runtime.\n\nChange-Id: I15e9110718a553d7ca98b64e6e545055036ea20c\n"
    },
    {
      "commit": "5d27fafdf03f259e92eaee9f6319b9349cc8d62e",
      "tree": "53afb1174be2ae235e41c5ac9eeb1e8d67e3c4e1",
      "parents": [
        "a54c22c0041306f6881694f4c305e655b10e37be"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 02 17:17:18 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 02 23:30:03 2014 -0700"
      },
      "message": "Allow ArtMethod::Invoke in unstarted runtimes.\n\nChange-Id: I0141f4daef4751589d03d27484eb65c811b14f27\n"
    },
    {
      "commit": "b2c7ead6bb5c98282cdfbc89db8984a004bea030",
      "tree": "8c7ca6ea7d57863b60e3f3afac88cb186396aea3",
      "parents": [
        "be4706907e226959623c0fb4937cf3979f440a97"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 29 11:13:16 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 30 11:55:39 2014 -0700"
      },
      "message": "Don\u0027t allow allocating finalizable objects during transactions.\n\nIt doesn\u0027t make sense to allocate finalizable objects during a\ntranscation since they will never get finalized without a started\nruntime.\n\nBefore StatusInitialized in core.host.oatdump.txt: 3564\nAfter StatusInitialized in core.host.oatdump.txt: 3564\n\nBug: 14078487\n\nChange-Id: I7070536f7bb87bfc691d4268bd39a3eca492f48e\n"
    },
    {
      "commit": "b0fa5dc7769c1e054032f39de0a3f6d6dd06f8cf",
      "tree": "839d13ebfa7170967dd9b4abd434b7abda53da99",
      "parents": [
        "948740c1938860df055ddc801f20fd1707331e38"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 28 16:47:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 29 14:36:28 2014 -0700"
      },
      "message": "Force inlining on trivial accessors.\n\nMake volatility for GetFieldObject a template parameter.\nMove some trivial mirror::String routines to a -inl.h.\n\nBug: 14285442\n\nChange-Id: Ie23b11d4f18cb15a62c3bbb42837a8aaf6b68f92\n"
    },
    {
      "commit": "861ea56e20d60f28e21d47f331c29b2e303e2dbe",
      "tree": "5cd016ab31e2448560fcd3313805d21aff184701",
      "parents": [
        "17c50db442d2791d9c4d7d1e98060556c323ce9b"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Apr 23 16:03:57 2014 -0700"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Thu Apr 24 18:58:23 2014 -0700"
      },
      "message": "Fix ART compilation for Clang 3.5.\n\nThis change adds required \u003c\u003e to some template instantiations, which\nClang was complaining about (and ignoring otherwise). It also updates\nthe integrated assembler defines, since Clang 3.5 now supports named\narguments.\n\nChange-Id: I878b8c96bcbc29415582c18a2df678b7f9a9d4ad\n"
    },
    {
      "commit": "ee1d79a603c77c0667b27c075a983579d5c51f7e",
      "tree": "7b23516402105319ab4736cd179a1de9101eeb46",
      "parents": [
        "78bd9b2198f0ccc48036c1517b2d9a9023157dfb"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Feb 21 15:46:30 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 02 09:21:12 2014 +0200"
      },
      "message": "Cleanup transaction support\n\nUpdates Thread::CreateInternalStackTrace to support both transactional and\nnon-transactional modes using template.\n\nGeneralizes non-transactional mode for invariant fields (which are set only\nonce).\n\nRemoves ArrayLog::VisitRoots as we never create Array logs of ObjectArray. As\nObjectArray elements are set using Object::SetFieldObject, they are already\nrecorded in the object logs: the object is the array itself and the offset\ncorresponds to the element index in this array. And also checks we never log\nObjectArray in array logs.\n\nFixes location of thrown exception when calling native method during class\ninitialization.\n\nChange-Id: Idbc368d3b8292b85ff40bc8a7c559e085477bf89\n"
    },
    {
      "commit": "b48b9eb6d181a1f52e2e605cf26a21505f1d46ed",
      "tree": "117d99c16f201b2f14adfe0922e56b9ff433c133",
      "parents": [
        "3c506f9877b4a106d93169b6bb5610b24a84d61c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 16:20:21 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 28 19:03:57 2014 -0800"
      },
      "message": "Fix clang to compile and run host tests.\n\nDon\u0027t use the computed goto interpreter with clang 3.4 as it causes compilation\nto hang.\nAvoid inclusion of LLVM_(HOST|DEVICE)_BUILD_MK except for with portable as it\nsets clang incompatible cflags.\nMost fixes are self-evident, for the quick dex file method inliner the enums\nwere being used with ostreams, so fix the enums and operator out python script\nto allow this.\nNote this change effects portable but this is untestable as portable was broken\nby ELF file and mc linker changes.\n\nChange-Id: Ia54348f6b1bd3f76d3b71c6e8c5f97626386b903\n"
    },
    {
      "commit": "92246bb5d6caae4fdb09cd3c8c10d78e41932d45",
      "tree": "632ddc6aa34d4c5941d3f65f2e4a8f49a5a05272",
      "parents": [
        "ef2cc5a9c6e508a3e8b24d04ca35f7422f27e112"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 25 18:22:39 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 25 18:27:30 2014 -0800"
      },
      "message": "Fix moving GC bugs in EnterInterpreterFromInvoke.\n\nCalling EnterInterpreterFromInvoke on a static method could cause\nclass initialization and trash the args before calling the method.\n\nChange-Id: If053d46dd6db403c8ebd1a816c20635194dd0e99\n"
    },
    {
      "commit": "f48644b6cfd35fd029fc85dc7c837ad19b4a5ba3",
      "tree": "c5e3f47f129702e24b74c58bfe73a55d2cffa9b0",
      "parents": [
        "2c3458dbda97b70158ee7ef22d13ce473a2a2147"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 17 15:16:03 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Feb 18 15:29:33 2014 +0100"
      },
      "message": "Update native methods whitelist.\n\nAdds System.identityHashCode to native methods whitelist and updates\nUnsafe.compareAndSwapInt to use mirror::Object::CasField32.\n\nBug: 12999675\nChange-Id: I177015777927b2d2180cbfd0f3a646948e7557b3\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": "4d2efce8bf1947880b90efc44448b4940c8016fb",
      "tree": "61adad3b981719a12d00aa9be44f76c004dd44c4",
      "parents": [
        "6b3697fec487b355d107b693c965919bf5fff906"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Feb 10 16:19:09 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Feb 11 13:16:20 2014 -0800"
      },
      "message": "Don\u0027t hardcode object layout in Unsafe and space_test.\n\nAdd a test for Unsafe.arrayBaseOffset() and Unsafe.arrayIndexScale().\n\nChange-Id: I9cbdb79a4a7ee055129f41811a117910c8b2febd\n"
    },
    {
      "commit": "5bb99037bef70784ae4630c2e4b81688d2a18621",
      "tree": "7c01146719c9bd445f983d470980206952d8719b",
      "parents": [
        "9c7f35435b51cdeae8665aabb8e63392105db787"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Feb 08 16:20:58 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Feb 08 16:26:12 2014 -0800"
      },
      "message": "Fix CreateMultiArray to be compaction safe.\n\nIt used to be compaction safe before moving classes was enabled.\nAdded missing SIRTs.\n\nChange-Id: I92963ed71fa6d2a20d16ec0e400b8fa0e41ac196\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": "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": "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": "2c88b38ec22278c325c2917fdc60f0674e8b7976",
      "tree": "8179daf7af605b98b13f37d6a88f2c2f27b507b0",
      "parents": [
        "f6e4a59cf58471ba69b0eafb34b3a43b2b95caa1"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Oct 18 10:35:39 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Oct 18 10:38:13 2013 +0200"
      },
      "message": "Make goto-based interpreter the default interpreter.\n\nChange-Id: Id21b57893864a72b77a78ef7df874c2c06209dc9\n"
    },
    {
      "commit": "e861ebd5d9490cc86200f3859f3d36fadad4588c",
      "tree": "be9ad31a9175198758491e6bcd3eef5c252c2c38",
      "parents": [
        "d50f8c8e4456263e169c9998d3a1c3a6c5c51435"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 09 15:01:21 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 09 15:17:12 2013 -0700"
      },
      "message": "Fix interpreter bugs.\n\nThese showed up in compaction work.\n\nChange-Id: Iac8eb0a1395c25aabba9f2e0ff6b01fc6180bdca\n"
    },
    {
      "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": "fc0e94bed3f88ed7e50854fd8dfaf5dcb345250f",
      "tree": "5cfbe05084351576e9659cb8f7b66dcb6163a37b",
      "parents": [
        "576fe9d4181c749aa510e32d2521ed4192bdfda0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 23 23:51:32 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 24 17:07:24 2013 -0700"
      },
      "message": "StringPiece clean up.\n\nProfile guided clean up.\nTry to avoid creating StringPieces with the contents of a dex file where\nthe length is known.\nTry to avoid RegTypeCache::FromDescriptor when there\u0027s a class available.\nMake ConstantType::ConstantValue inlinable.\nSaving of about 50ms from a 2 threaded ThinkFree compile on host.\n\nChange-Id: I47a12c3c76f46e2c9805be1c3a3e3870fe1f5d85\n"
    },
    {
      "commit": "8ece050d85fc244c72610244e440b0e00aa618fa",
      "tree": "6f9c9a909fc5c2cdf9cd4ba5c285381be39cc370",
      "parents": [
        "28c2300d9a85f4e7288fb5d94280332f923b4df3"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 07 11:26:41 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Sep 09 17:40:11 2013 +0200"
      },
      "message": "Add an interpreter using computed goto table.\n\nThis CL adds a new implementation of the interpreter using computed goto table.\nIn order to keep the switch-based implementation, it reorders things as the\nfollowing:\n- Keep interpreter entrypoints into interpreter.h/.cc files.\n- Move common interpreter parts to interpreter_common.h/.cc files.\n- Separate both implementations to their own modules.\n\nThe interpreter implementation can be selected by changing the value of the\nkInterpreterImplKind global variable (see interpreter.cc file). The default one\nremains the switch-based implementation.\n\nAlso updates the exception handling (FindNextInstructionFollowingException) and\nSPARSE_SWITCH switch handling (DoSparseSwitch) routines to share code between both\nimplementations.\n\nFinally, adds a PACKED_SWITCH handling routine (DoPackedSwitch) so we are\nconsistent with SPARSE_SWITCH handling.\n\nThe computed goto implementation use two handlers table: one for normal\ninstruction handling and one for instrumentation handling. The current handlers\ntable to be used is updated on backward branch depending on whether there is\nlistener to DEX pc change.\n\nBug: 10602809\nChange-Id: Ibb53bcc68be75c473fe5440835e78fc9a74381b3\n"
    },
    {
      "commit": "89502fc63d5d2ef3586e49b1ec38e1777ce7accf",
      "tree": "bdd0ca91f0dac742b2814ae60c4a4e1d3322fb86",
      "parents": [
        "2213ac60891aae4a05232663182bcb75137c7623"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Aug 21 11:54:09 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 23 11:46:35 2013 -0700"
      },
      "message": "A char array copy optimization.\n\n- Based on measurements, copy char by char for arrays of length \u003c\u003d 64.\n- With this change, the Ritz MemAllocBench got ~25% faster on Nexus 4\n  and ~20% faster on host.\n- This change only handles arraycopy calls in the core libraries and\n  char arrays with the rest future work.\n\nBug: 7103825\nChange-Id: Ie88890eb65f011ca052b1f253f1b0e078ec24b6b\n"
    }
  ],
  "next": "ea46f950e7a51585db293cd7f047de190a482414"
}
