)]}'
{
  "log": [
    {
      "commit": "b7edcda968bb0cbaa69a3ad387fcd3194f5612be",
      "tree": "50748aac195d20a7e8f6d59a6e499f3fe69418de",
      "parents": [
        "049f2a58ea9276dfd162760271ad443570f2e660"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Apr 27 13:20:31 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 09 10:54:02 2017 -0700"
      },
      "message": "Add method tracing JVMTI callbacks\n\nAdd MethodEntryHook and MethodExitHook callbacks and associated\ncapabilities.\n\nSplit --jvmti-stress option in run-test into --jvmti-trace-stress and\n--jvmti-redefine-stress to test each different component.\n\nNB 3 differences from RI found:\n  1) RI will call methodExitHook again if the method exit hook throws\n     an exception. This can easily cause an infinite loop and the test\n     is specifically tweaked to prevent this from happening on the RI.\n  2) RI always includes the method being exited in the stack trace of\n     errors thrown in the hooks. In ART we will not include the method\n     if it is native. This is due to the way we call native methods\n     and would be extremely difficult to change.\n  3) The RI will allow exceptions thrown in the MethodEnterHook to be\n     caught by the entered method in some situations. This occurs with\n     the tryCatchExit test in 989. In ART this does not happen.\n\nBug: 34414073\nTest: ./test.py --host -j40\nTest: ART_TEST_FULL\u003dtrue DEXTER_BINARY\u003d\"/path/to/dexter\" \\\n      ./test/testrunner/testrunner.py --host -j40 -t 988\nTest: ART_TEST_FULL\u003dtrue DEXTER_BINARY\u003d\"/path/to/dexter\" \\\n      ./test/testrunner/testrunner.py --host -j40 -t 989\nTest: lunch aosp_angler-userdebug; \\\n      m -j40 droid build-art \u0026\u0026 \\\n      fastboot -w flashall \u0026\u0026 \\\n      ./test.py --target -j4\n\nChange-Id: Iab229353fae23c2ea27c2b698c831627a9f861b1\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "5ea8413714ceec50a758df6614dc4a3ec6179112",
      "tree": "edbf6a2ffe8aa717d2121b0daa1fc68678fc2ed2",
      "parents": [
        "8bdf4e0d2094b7c9a9a1ffc1a58dbdff4cbe7126"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 05 16:59:29 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu May 25 15:11:56 2017 -0700"
      },
      "message": "Stop interpreter from accessing code items of compiled code.\n\nThe ArtInterpreterToCompiledCodeBridge accesses the code item in a\nnumber of places to handle argument marshalling. However, the code item\nof a compiled method should have no need to be accessed by the runtime\nat all, since the code has been compiled. By removing these accesses,\nthere is a drop in the memory footprint of the dex file, since these\ncode items remain untouched by the runtime.\n\nIncludes fixes for JIT and deopt.\n\nFor Maps:\nSystrace vdex memory usage: 19.4/33.4MB -\u003e 18.8/33.4MB\nDumpsys meminfo vdex PSS: 9371kB -\u003e 9275kB\n\nBug: 35800981\nTest: mm test-art-host\nChange-Id: I3bf17f8866287d9a8f127c16da23bebb801456dc\n"
    },
    {
      "commit": "ef65271c52cff9b39aeb5f326a605e4753214ab2",
      "tree": "305ca05714b8c3c9458d52a02861ece688f81ce2",
      "parents": [
        "178dce79220c16e6f0061bcd12e9e9683ec045ee"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 18 13:04:37 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 18 13:04:37 2017 +0000"
      },
      "message": "Revert \"Stop interpreter from accessing code items of compiled code.\"\n\nThe entrypoint of a method can change concurrently.\n\nBug: 35800981\n\nThis reverts commit 178dce79220c16e6f0061bcd12e9e9683ec045ee.\n\nChange-Id: I25ae8d0d2830eb8412c52f61736bac7b16281c11\n"
    },
    {
      "commit": "178dce79220c16e6f0061bcd12e9e9683ec045ee",
      "tree": "1cff48009b99bd67d8859f2aa13075612a1d7fee",
      "parents": [
        "6579b099786c8cac8fdb0c86d98ad4b232a52ea0"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 05 16:59:29 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 16 11:28:26 2017 -0700"
      },
      "message": "Stop interpreter from accessing code items of compiled code.\n\nThe ArtInterpreterToCompiledCodeBridge accesses the code item in a\nnumber of places to handle argument marshalling. However, the code item\nof a compiled method should have no need to be accessed by the runtime\nat all, since the code has been compiled. By removing these accesses,\nthere is a drop in the memory footprint of the dex file, since these\ncode items remain untouched by the runtime.\n\nMaps Vdex Memory Usage: 19.4/33.4MB -\u003e 18.8/33.4MB\n\nBug: 35800981\nTest: mm test-art-host\nChange-Id: I147a9267ec022547b384374e1449d20bcab1ead2\n"
    },
    {
      "commit": "db01a091aefbd78b56777f4c2e8c5e3f2d8c2712",
      "tree": "62dbbd082c5a4cfc122830a4df0a2ced219d8d6d",
      "parents": [
        "432fccc4c001fcd822f401aea1a4214b713bd896"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Apr 03 15:39:55 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Apr 04 11:44:35 2017 -0700"
      },
      "message": "Ensure invoking obsolete methods throws errors.\n\nThis sets the entrypoint for obsolete methods to a special stub that\nwill ensure that calling them results in an Error being thrown.\nPreviously we were allowing obsolete methods to be run if they could\nreach the appropriate places in the runtime.\n\nGetting into the state where this is possible is extremely difficult\nsince one can only get an jmethodID to an obsolete method by snatching\nit off the stack (or by inspecting internal runtime data). From there\nnormally invoking it will do lookup on the receiver which will get you\nthe original version.\n\nBug: 36867251\nBug: 31455788\n\nTest: ./test.py --host -j40\nTest: (with aosp_marlin-userdebug device) ./test.py --target -j4\n\nChange-Id: I2ca0503966a4e3de18dd89cb7ff224eba1459b49\n"
    },
    {
      "commit": "d9911eeca13f609c885e0f6a5ce81af9b6340bfa",
      "tree": "f850510643ee120dba140bf0bb3e1c1b9c9ce4db",
      "parents": [
        "46bfb7c047a590ac5c24b658f31c170631556bb6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 13:27:24 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 27 13:53:48 2017 -0700"
      },
      "message": "ART: Clean up field initialization\n\nAdd explicit field initialization to default value where necessary.\nAlso clean up interpreter intrinsics header.\n\nTest: m\nChange-Id: I7a850ac30dcccfb523a5569fb8400b9ac892c8e5\n"
    },
    {
      "commit": "01822299e8c3a7827d6613cd08fca6aa52c4ae42",
      "tree": "0091c82b4f3b239b6b28418062954b9a0583261d",
      "parents": [
        "df79ddb545f0d6e71d6eebb9cb94aa6916351ee9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 09 09:03:19 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 09 09:03:19 2017 +0000"
      },
      "message": "Revert \"Stop interpreter from accessing code items of compiled code.\"\n\nBug: 35800981\n\nThis reverts commit df79ddb545f0d6e71d6eebb9cb94aa6916351ee9.\n\nChange-Id: I04b1cb8d002ca330c0aa6e68b431c7f80c2779d6\n"
    },
    {
      "commit": "df79ddb545f0d6e71d6eebb9cb94aa6916351ee9",
      "tree": "3fb9da92f3049c3afa99920898b0ddc57e68b074",
      "parents": [
        "68948e01f56ad1996af77f4c0aab721940b0e18d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Feb 27 14:47:06 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Mar 09 00:36:13 2017 +0000"
      },
      "message": "Stop interpreter from accessing code items of compiled code.\n\nThe ArtInterpreterToCompiledCodeBridge accesses the code item in a\nnumber of places to handle argument marshalling. However, the code item\nof a compiled method should have no need to be accessed by the runtime\nat all, since the code has been compiled. By removing these accesses,\nthere is a drop in the memory footprint of the dex file, since these\ncode items remain untouched by the runtime.\n\nBug: 35800981\nTest: mm test-art-host\nChange-Id: Ib7d29c17e80b1690aa819d083f5b12739492ebd6\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "ef41db7a3f322a1feb305fdb457410c4cea94d00",
      "tree": "c03152c091ef62ab70f5be0a2fe3a965b189132c",
      "parents": [
        "1458e0c09fe0a3b9fa5fd7beb9b6077d1fc46b1d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 25 15:08:01 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 26 15:25:40 2016 -0700"
      },
      "message": "Move interpreter to ObjPtr\n\nMoved most of interpreter, interpreter_common,\ninterpreter_switch_impl, and some of mterp to ObjPtr.\n\nBug: 31113334\n\nTest: test-art-host ART_TEST_INTERPRETER\u003dtrue\nTest: art/tools/run-libcore-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I0935d18287e1332205c17c5a018aa167788ab897\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "1a5337fff2cc6cb9d563c8b32aca75f485d23373",
      "tree": "03616e90a91c5c4c1bd7ff03c3d193c3b24bf0db",
      "parents": [
        "c8b722b3cebff245d614e95d1849de45ef7bdf06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 13:48:23 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 17:37:56 2016 -0700"
      },
      "message": "Move mirror::ObjectArray to ObjPtr\n\nAlso reduce calls to ObjPtr::Ptr.\n\nBug: 31113334\n\nTest: test-art-host -j32\n\nChange-Id: I73e1b356972bb079b66332f00f7f07451601044e\n"
    },
    {
      "commit": "28bd2e4f151267b34b8e1eb19c489d8d547bbf5c",
      "tree": "d99ae3fe74ea63b83091898d830d3efe68cd479d",
      "parents": [
        "6e5fa09510c7280168e040382d27dd8b55760d9a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 13:54:57 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 10:59:28 2016 -0700"
      },
      "message": "Move mirror::Class to use ObjPtr\n\nLeave the return types as non ObjPtr for now. Fixed moving GC bugs\nin tests.\n\nTest: test-art-host\n\nBug: 31113334\n\nChange-Id: I5da1b5ac55dfbc5cc97a64be2c870ba9f512d9b0\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "f61df9b450f8734b84584671ad22fa4f29d386e4",
      "tree": "a97f593b18e8f03fb01c0bf23703cf0fc7638f5d",
      "parents": [
        "9d185da3bef8caf015d3dbf4ad79c520af7ce3b1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 07 07:12:29 2016 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 07 07:42:27 2016 -0700"
      },
      "message": "ART: Remove computed-goto interpreter\n\nART currently has 3 interpreters: a baseline switch-statement based\ninterpreter, a C++ computed goto interpreter and a fast assembly\ninterpreter (mterp).\n\nThe C++ computed goto interpreter was intended to get some of the\nbenefits of the old Dalvik mterp interpreter - which it did.  However,\nwe now have the faster assembly interpreter, so it is no longer\nneeded.\n\nTest: m test-art-host\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-host\nChange-Id: I0e8f139ab6bc48d0568951af1f83e2b1c00835f8\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "5e26eb1dc8ea89b2ebf4ce4b40cbe18542758fbd",
      "tree": "ac8eaad8db47f667e3290e63f52f6e1c06f9fbad",
      "parents": [
        "cf834d00de838272cf28f2382ffc26fe716aae5c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 17:54:17 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 22 21:30:40 2016 -0700"
      },
      "message": "ART: Clean up interpreter includes\n\nMove goto-interpreter special-cased Clang declarations to goto\nimplementation file. Separate out declarations into their own\nheaders. Tag the declarations with thread safety annotations.\n\nMinor compile-time impact when running with -j1.\n\nChange-Id: I03664d4e7dc6361b2510a8c9beb693d23a657c9d\nTest: m test-art-host\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-host\n"
    },
    {
      "commit": "6740997e6934bbca27d5830a32352d82aabbd38b",
      "tree": "684ab2e46ddeaaf251fb6919bf64295810e46afa",
      "parents": [
        "dc4f4d42aa1712a7ac2e4c24c0aebe58b71ae2c0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 19 22:34:53 2016 -0700"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jul 20 11:44:25 2016 +0100"
      },
      "message": "ART: Change return types of field access entrypoints\n\nEnsure that return types guarantee full-width data as the compiled\ncode and mterp expect by using size_t and ssize_t.\n\nThis fixes Clang no longer sign-/zero-extending small return types.\n\nBug: 30232671\nTest: m ART_TEST_RUN_TEST_NDEBUG\u003dtrue ART_TEST_INTERPRETER\u003dtrue test-art-host-run-test\nChange-Id: Ic505befc6c94e2dccbc8abf2b13d4c2d662e68d1\n"
    },
    {
      "commit": "ffedec510c07cf0f77d0cce51940838f2e630514",
      "tree": "7b21bd86b08f2750bab8d4fd9f23a721ec4eba84",
      "parents": [
        "247250f28028a5b2260ba2eb0a7f555a183b996a"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 19 10:48:40 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Fri May 20 11:36:18 2016 -0700"
      },
      "message": "Revert \"Revert \"Move rewritten StringFactory call results into dex registers for deopt\"\"\n\nPotential gc points can make the result value stale. We now set the result value\nto null proactively once it\u0027s moved to shadow frame registers. IsStringInit()\nis written in a way that does string comparison instead of requiring method\nresolution so that it doesn\u0027t have a gc point. Also we don\u0027t cache the callee\nmethod during frame unwinding since the method may be rewritten already.\n\nBug: 28555675\n\nChange-Id: Ic51511a4a0fc84a852d8d907f91e7835f49ac478\n"
    },
    {
      "commit": "695e2c4aa1e61aa006412c83f15c4a659111a08a",
      "tree": "37bd8865195a0eeff1b237dbbd94db2dc7f31f70",
      "parents": [
        "8ca33bf04060fadd5b35fa93fa56547c62fe52e7"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 19 00:15:12 2016 +0000"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 19 00:15:12 2016 +0000"
      },
      "message": "Revert \"Move rewritten StringFactory call results into dex registers for deopt\"\n\nThis reverts commit 8ca33bf04060fadd5b35fa93fa56547c62fe52e7.\n\n597-deopt-new-string is failing.\n\nBug: 28846692\nBug: 28555675\nChange-Id: Ibfb59ec36e089c987ea64e4af4ca3709e536412a\n"
    },
    {
      "commit": "8ca33bf04060fadd5b35fa93fa56547c62fe52e7",
      "tree": "8f41ac9cad78e9cae1902fbd2f2e9636a9d5bd31",
      "parents": [
        "8ccc728d9275ad9bf839507a4979774f26ee7392"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 16 11:01:49 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue May 17 17:03:58 2016 -0700"
      },
      "message": "Move rewritten StringFactory call results into dex registers for deopt\n\nBug: 28555675\nChange-Id: I9236df283f2e83ca5dcde01f73dc0522d745cd59\n"
    },
    {
      "commit": "0122320f86ae004aa195d76814c52564d84ee632",
      "tree": "0284342034932f022a520aea87a86701cd0d4ffd",
      "parents": [
        "b0fca360a081eff1a44c6f055c628e2dba44c003"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Thu May 05 15:10:42 2016 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Tue May 10 10:05:55 2016 -0700"
      },
      "message": "Break the debug cycle!\n\nRationale:\nWhen entering the path that implements method invocation,\nit is possible for the interpreter and JIT to cycle around\ntrying to interpret or compile a method, never making a\ndecision. This bug fix avoids such cycling with a minimum\nof extra runtime overhead.\n\nBUG\u003d28537292\n\nChange-Id: If805b7bc0279019d0ebf322ddd17cb57a9e884eb\n"
    },
    {
      "commit": "504a69081f63818ca332ddaf54e8198448554538",
      "tree": "337b397a2167c91ada31f33f9613b9ec6479c4a3",
      "parents": [
        "b652da7aae5515c58c776a6975305d895f81ac19"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Apr 28 16:23:01 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 05 11:44:27 2016 -0700"
      },
      "message": "Fix assert failure in interpreter after deoptimization.\n\nThere is code that does\n  new String(chararr, 0, chararr_count);\nwhich under debuggable turns into a call into pNewEmptyString() plus a\ncall into pNewStringFromChars_CII().\nEven though we currently don\u0027t patch return pc in a runtime method,\ncalling into pNewEmptyString() is special since it\u0027s hacked such\nthat it\u0027s acting as if the caller calls into the java method\nStringFactory.newEmptyString() directly. So deoptimization can now\nhappen at the NewEmptyString site and the assert is triggered since\nit\u0027s a new instance instead of an invoke instruction.\n\nThe fix relaxes the assert to allow the special case.\n\nBug: 28555675\nChange-Id: Idbb159b5aa450df2344cd93ae74fef5f55bdc534\n"
    },
    {
      "commit": "56fdd0e63812764bbeb8cc52e376d3fd1f270052",
      "tree": "6988e995bf02f788066fb6e748cd3049fe87d31a",
      "parents": [
        "9d05b59a8595cf7eeece1795eb65b6b8706aad45"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Apr 28 14:56:54 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 29 17:33:22 2016 -0700"
      },
      "message": "ART: Disambiguate access-checks mode from lock-counting\n\nLock-counting (when structural locking verification failed) is a\nspecial sub-mode of access-checks and must be disambiguated, because\nwe currently use access-checks mode class-wide when at least one\nmethod soft-fails, but do not stop the compiler/JIT to compile\nthe \"working\" methods. So we may end up in the access-checks\ninterpreter for a working method through deopt without knowing\nwhich locks are already held.\n\nBug: 28351535\n\n(cherry picked from commit f517e283d477dd2ae229ee3f054120c6953895db)\n\nChange-Id: I083032f064d88df8f8f0611ad8b57d1b39cd09fb\n"
    },
    {
      "commit": "71cd50fb67fa48667b0ab59aa436a582c04ba43d",
      "tree": "9f99f187060b0ef3a118120db367555d8f757f0c",
      "parents": [
        "9b863613454ee139370d24e65adb41fabe75d482"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 14 15:00:33 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 15 15:42:31 2016 +0100"
      },
      "message": "Add weight to compiled/interpreter transitions.\n\nAlso:\n- Cleanup logging.\n- Check ArtMethod status before adding compilation requests.\n- Don\u0027t request osr compilation if we know AddSamples does not come\n  from a back edge.\n\nBug: 27865109\n\nChange-Id: I84512f7d957b61ce2458360ed430adb151830278\n"
    },
    {
      "commit": "274fe4adcb0610a9920be7814d9beb9cac6417ce",
      "tree": "4a5c41dd2568869ceaf0a510e37065a606f512fb",
      "parents": [
        "6990775e323cd9164d6cc10955a047b9d9f15f32"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Apr 12 16:33:24 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Apr 13 17:34:53 2016 +0100"
      },
      "message": "Remove the JIT from the instrumentation framework.\n\nThis was slowing down the interpreter for no reason.\nAlso, call AddSamples for invoke-static and invoke-direct.\n\nChange-Id: I7b5641097f7741dd32feb1ce6af739fd27fb37c2\n"
    },
    {
      "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"
    }
  ],
  "next": "b74cd29802f364b4cec88f4913fa38ade26b8fab"
}
