)]}'
{
  "log": [
    {
      "commit": "8cf9cb386cd9286d67e879f1ee501ec00d72a4e1",
      "tree": "88e86e214b425e444760fe4e0ffeee677e1558a2",
      "parents": [
        "914b7b6a6c9f399b26b41e9160e9871ef749e0db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 19 09:28:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 24 16:07:10 2017 -0700"
      },
      "message": "ART: Include cleanup\n\nLet clang-format reorder the header includes.\n\nDerived with:\n\n* .clang-format:\n BasedOnStyle: Google\n IncludeIsMainRegex: \u0027(_test|-inl)?$\u0027\n\n* Steps:\n find . -name \u0027*.cc\u0027 -o -name \u0027*.h\u0027 | xargs sed -i.bak -e \u0027s/^#include/ #include/\u0027 ; git commit -a -m \u0027ART: Include cleanup\u0027\n git-clang-format -style\u003dfile HEAD^\n manual inspection\n git commit -a --amend\n\nTest: mmma art\nChange-Id: Ia963a8ce3ce5f96b5e78acd587e26908c7a70d02\n"
    },
    {
      "commit": "16d1dd86dca33520b44d9802695e19d3b658af3e",
      "tree": "c273a6256e2b8ea49e9e1935830fe9d1748ebcf4",
      "parents": [
        "3a3abd08ca92636a706c0efa777c0410258ebd5f"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Thu Jul 20 17:56:26 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Sat Jul 22 16:07:03 2017 -0700"
      },
      "message": "Move transaction creation to runtime\n\nMove the transaction creation to runtime instead of passing a pointer to\nruntime when EnterTransactionMode. Because later there will be more\nplaces to create transaction so this makes the code cleaner and more\ncompact.\n\nTest: make test-art-host -j64\nChange-Id: I971edf3110eb6634b6e0f7f56256be04517a5281\n"
    },
    {
      "commit": "331f4c4e287791611733120c1a1c2afd55ecdd65",
      "tree": "1fcf7810c6c8e2df8b6191bb14a69084f3c7cf11",
      "parents": [
        "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "message": "Merge \"ART: Change method lookup to be more consistent to JLS and the RI.\""
    },
    {
      "commit": "ba118827465d12177f3996e50133960087b1c916",
      "tree": "f39728cdafc7810004d51c0bef2728b98993daa9",
      "parents": [
        "64a102dde8c5daad83b991710decb418ce43aac5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:41:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 13:35:06 2017 +0100"
      },
      "message": "ART: Change method lookup to be more consistent to JLS and the RI.\n\nThe method lookup for different invoke types was previously\nwidely different and didn\u0027t work well with the dex cache\nmethod array where we have only a single slot for each\nMethodId. The new behavior is to perform the same lookup for\nall cases, distinguishing only between interface and\nnon-interface referencing class, and to further align the\nbehavior with the JLS and the RI. Where the JLS conflicts\nwith the RI, we follow the JLS semantics.\n\nThe new lookup for class methods first searches the methods\ndeclared in the superclass chain (ignoring \"copied\" methods)\nand only then looks in the \"copied\" methods. If the search\nin the superclass chain finds a method that has not been\ninherited (i.e. either a private method or a package-access\nmethod where one of the classes in the chain does not belong\nto the same package, see JLS 8.4.8), we still search the\n\"copied\" methods as there may actually be a method inherited\nfrom an interface. This follows the JLS semantics where\ninherited methods are included in the search (JLS 15.12.2.1)\nbut conflicts with the RI where the private or\npackage-access method takes precedence over methods\ninherited from interfaces.\n\nNote that this search can find an accessible method that is\nnot inherited by the qualifying type, either for a package\naccess method when the referrer is in the same package but\nthe qualifying type is in another package, or for a private\nmethod where the referrer is in the same class but the\nqualifying type is actually a subclass. For the moment we\nallow such calls and we shall consider whether to throw\nan IncompatibleClassChangeError in this situation in future\nto comply with JLS 15.12.4.3.\n\nThe new lookup for interface methods searches the interface\nclass, then all the superinterfaces and then the\njava.lang.Object class, see implicitly declared methods in\ninterfaces, JLS 9.2. The search for the maximally-specific\nnon-abstract superinterface method is not yet implemented,\nbut the difference should be difficult to observe as the\nusual subsequent call to FindVirtualMethodForInterface()\nshould yield the same result for any matching method.\n\nThe new test 162-method-idx-clash exposes several cases\nwhere we previously completely messed up due to the effects\nof the DexCache, or where we were out of line with the RI.\nIt also tests a case where the JLS and the RI disagree and\nwe follow the JLS.\n\nTest: art/test/run-test --host --jvm 162-method-resolution\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nBug: 62855082\nBug: 30627598\nChange-Id: If450c8cff2751369011d649c25d28a482a2c61a3\n"
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "fef27c271e536f84e2d44fd0730b9fb329296376",
      "tree": "c92a57079f45445f1ee72ed01f61bd0c3f149074",
      "parents": [
        "00cca3a275562d110a8b35094b9b12fac37f67ab"
      ],
      "author": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Tue Jul 11 09:57:44 2017 -0700"
      },
      "committer": {
        "name": "Chang Xing",
        "email": "chxing@google.com",
        "time": "Tue Jul 11 11:06:31 2017 -0700"
      },
      "message": "Fix pointer size mismatch\n\nWhen compiler starts interpreter and unstarted_runtime, the pointer size\nneeded should be determined by the target instead of using compiler\u0027s\nbinary mode. Since compiler is only compiled once for both 32-bit and\n64-bit, there will be a mismatch for some cases.\n\nFixed the pointer size used in compiler and interpreter, retrieve\npointer size from ClassLinker when needed.\n\nUpdated corresponding test, otherwise there would be check fail which\ntest the equality of pointer sizes between the template argument and\nruntime information.\n\nTest: make test-art-host -j64\nChange-Id: I927a24ec79f8f82420133c6996703b940852a1e0\n"
    },
    {
      "commit": "448bbcfc76426d6dfc336954df51bdad47f34ef7",
      "tree": "d033b4984a10d388fac7b0d04915e61f4cc39948",
      "parents": [
        "0656044bf8b1d5053cdea6615f4d0aebad5b64b8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 06 12:05:13 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 06 14:56:40 2017 -0700"
      },
      "message": "Avoid cross compilation error in DoCallCommon\n\nAvoid calling ShouldUseInterpreterEntrypoint in DoCallCommon for\nunstarted runtimes. This fixes a cross compilation error caused by\nreading past the end of a 32 bit ArtMethod with a 64 bit dex2oat.\n\nTest: test-art-host ART_TEST_INTERPRETER\u003dtrue\nBug: 62402160\nChange-Id: I792d4e1663dd13ac3836b7ce439e8286cb0a1bc3\n"
    },
    {
      "commit": "631827d9b200c93f24816c6869d72426f9fed8e3",
      "tree": "9d5d768df39e21a2678d4b9148c5ec4d1c016911",
      "parents": [
        "d64fbfa3471c47d6628d6014bc4a3ac780abd26a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Apr 10 14:53:47 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jul 04 11:57:13 2017 +0100"
      },
      "message": "Fixes for constant method handles\n\nAdd support for constant direct and interface method handles in the\nDEX file.\n\nAdd error handling for field and method resolution failures in\nClassLinker::ResolveMethodHandle().\n\nBug: 36957105\nTest: art/test/run-test --host 952-invoke-custom-kinds\nChange-Id: I91a2a23ba3365310eccb8cadd193b62f57e5811c\n"
    },
    {
      "commit": "2989a4a7f663d917c466cf8182356eca67bb8ae7",
      "tree": "dcbca95af80342208c5748585f486a1a33c3ea2c",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 09:44:57 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 09:44:57 2017 -0700"
      },
      "message": "Make DoDexPcMoveEvent always be NO_INLINE\n\nThis function can cause the stack frame of ExecuteSwitchImpl to grow\npast the stack-frame limit if it is inlined.\n\nFollow up to: I70f76ba7a876bc57204d379295a6d75e5bcefb45\nFollow up to: I25c143715386bee74e99358062eeb2404e029e32\n\nTest: mma -j40 build-art\nBug: 63118894\nChange-Id: Id63f80c35a7d45637c658c3ba186eb8d908d80b0\n"
    },
    {
      "commit": "d3401278c919a32168d6b8dc553f46370aa23cab",
      "tree": "e6a5d77be9a32107bf2158d8fcb04c3f9f3cb5e1",
      "parents": [
        "9a70a63127c41f061fab48ffdf72b435171b40e2"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 28 20:07:31 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 03:34:06 2017 +0000"
      },
      "message": "Force DoDexPcMoveEvent to be NO_INLINE with ASAN\n\nThe function ExecuteSwitchImpl is made far larger then the limit when\nwe build with asan because of inlining this function.\n\nBug: 63118894\nTest: make -j49 droid ASAN_OPTIONS\u003ddetect_leaks\u003d0 SANITIZE_HOST\u003daddress\n\nFollow up to: I70f76ba7a876bc57204d379295a6d75e5bcefb45\n\nChange-Id: I25c143715386bee74e99358062eeb2404e029e32\n"
    },
    {
      "commit": "fc90567ec0bcd14f6096ab05bb2b9b6028fa796d",
      "tree": "87c3c2c229ebbeb2e6d57fa1c1b56b039c07dd7c",
      "parents": [
        "97e78033e6cf81d72c9d4d016e349282b911303c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 27 17:53:15 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 28 13:44:41 2017 -0700"
      },
      "message": "Interpreter needs to handle DexPcMovedEvent throwing.\n\nDexPcMovedEvent can throw and the interpreter needs to handle this\nsituation.\n\nTests follow in later CL.\n\nTest: ./test.py --host -j40\nChange-Id: I70f76ba7a876bc57204d379295a6d75e5bcefb45\n"
    },
    {
      "commit": "ef43805b0e80015645a5fc52e53b93ad178f60e3",
      "tree": "8b991e4d46c60ee0a118a95e079a7178a0663959",
      "parents": [
        "bc81c32d7c6b7862816a23c9e8b594840d78e900"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 28 14:41:07 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 28 14:47:09 2017 +0100"
      },
      "message": "Interpreter: Save and restore object result register.\n\nSave and restore object result register when there is a PC listener,\nto avoid moving GC issues.\n\nbug: 63088506\nbug: 15126502\n\nTest: TBD\nChange-Id: I231178e71469ccd167525d78bfc23f4fe32e23dd\n"
    },
    {
      "commit": "18b4ed19eb7970b9dfcc3246562c6fabe57176ee",
      "tree": "c121c2eaa06391710236ce1ec7dce54d1e2306e2",
      "parents": [
        "89af4771a6b5bfe5283c32337cb9e33c98323e33",
        "43e935dfd2d16c6a1a2d120ca6b99ffabd064239"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jun 20 15:47:35 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jun 20 15:47:38 2017 +0000"
      },
      "message": "Merge changes from topic \u0027jvmti-field-cbs\u0027\n\n* changes:\n  Add field-access/modification to ti-stress.\n  Add tests for field access and modify JVMTI callbacks\n  Add field access \u0026 modify JVMTI callbacks\n"
    },
    {
      "commit": "36a296ff674e0aea16b29db965f84f81866b1375",
      "tree": "9d940463852089016a0d0932368923d04da2c3fe",
      "parents": [
        "77c7d1093281bec76d3055541fe41145cdc5f807"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 13 14:11:11 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 19 16:21:58 2017 -0700"
      },
      "message": "ART: Refactor stack.h\n\nFactor out LockCountData, ShadowFrame and JavaFrameRootInfo and leave\nstack.h for the StackVisitor. Move single-use function to user to remove\nDexFile dependency.\n\nTest: m test-art-host\nChange-Id: I53d2880917bdf6782856fd2b16f38a0293f3aefc\n"
    },
    {
      "commit": "084fa370a14edc43dcf8ff4e454e04c863e1a130",
      "tree": "d616c178536092d546fcfeb10734df1a1d8bfcc1",
      "parents": [
        "8b0673f022711bc725b63517bf338447a00cb45c"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 16 08:58:34 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jun 19 10:20:32 2017 -0700"
      },
      "message": "Add field access \u0026 modify JVMTI callbacks\n\nThis adds support for the FieldAccess and FieldModification callbacks\nin JVMTI and all other functions and behaviors associated with the\ncan_generate_field_modification_events and\ncan_generate_field_access_events capabilities.\n\nTests follow in the next CL.\n\nBug: 34409228\nTest: ./test.py --host -j40\n\nChange-Id: Id18fc53677cc1f96e1460c498ade7607219d5a79\n"
    },
    {
      "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": "d76615851af31791c7b1549e8c4609152237b9ce",
      "tree": "e438a8cb0892e02768c55c2bc99f8be1d00abacb",
      "parents": [
        "6ecff4d2127e70738aa2493d6deceb946c204eff"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon May 01 13:48:16 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 07 11:10:50 2017 -0700"
      },
      "message": "Handler-ize InstrumentationListener and related code\n\nWe are going to be making instrumentation listeners that can cause\nsuspensions during their running. We explicitly handler-ize all the\ninstrumentation listener functions in order to ensure this is safe.\n\nBug: 34414073\nTest: ./test.py --host --ntrace --trace -j40\nChange-Id: Ic719080d0991b104d41b7757df8d1f332c72cd04\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": "0a5ace58e973da278049f837bf2cdbaf7b44849c",
      "tree": "3ef8f5c2d148c7d4d30696cf3a618984546398b9",
      "parents": [
        "d8b6461dfda391284e4b6942df0e872a3da24ce9",
        "5ea8413714ceec50a758df6614dc4a3ec6179112"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri May 26 21:47:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 26 21:47:32 2017 +0000"
      },
      "message": "Merge \"Stop interpreter from accessing code items of compiled code.\""
    },
    {
      "commit": "2419cb78c9db9ba8e446d99b887c8919e837769d",
      "tree": "cce78f7af73164a6dc659c6a1fcecd703da3cd87",
      "parents": [
        "32e075d17d3eefa3dc3a4abe2cd174e1b033ad07"
      ],
      "author": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Fri May 26 13:01:49 2017 +0200"
      },
      "committer": {
        "name": "Lena Djokic",
        "email": "Lena.Djokic@imgtec.com",
        "time": "Fri May 26 15:16:43 2017 +0200"
      },
      "message": "MIPS: Drop unnecessary code for R6 in interpreter (NAN2008)\n\nThe latest MIPS64R6 emulator supports NAN2008 standard. Because\nof that many workarounds can be removed in conversion functions\nin interpreter.\n\nTest: ./testrunner.py --target --interpreter --64 in QEMU for MIPS64R6\nTest: ./testrunner.py --target --interpreter --32 in QEMU for MIPS32R6\nTest: ./testrunner.py --target --interpreter --32 in QEMU for MIPS32R2\n\nChange-Id: Ibee66db7044c4110a4eace0187207c63ffe84629\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": "b9bec2e3846f3f500ca1354c849a81dfbb095b6b",
      "tree": "772383c2fc54321f7f0a698e51589465d6f0a927",
      "parents": [
        "7f31200a4afe3f01ca65e87015e292e2d84e4f20"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 24 15:59:18 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 24 15:59:18 2017 +0100"
      },
      "message": "Record types when the interpreter executes intrinsics.\n\nOtherwise, we could keep on deopting, as the JIT compiler wouldn\u0027t\nsee those types when doing inlining decisions.\n\nbug: 37655083\nTest: 652-deopt-intrinsic\nChange-Id: I33908a8e1565ac2eb9bd3ba9033916173ede4560\n"
    },
    {
      "commit": "c1c3351492674f2e264f41d93ffc80b633726689",
      "tree": "dac7a876246df25040b1888413c14b89b80fc6fc",
      "parents": [
        "76e9b6152f3c1fd137cb0686f728ab59299c33d4",
        "ef65271c52cff9b39aeb5f326a605e4753214ab2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu May 18 14:31:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 18 14:31:32 2017 +0000"
      },
      "message": "Merge \"Revert \"Stop interpreter from accessing code items of compiled code.\"\""
    },
    {
      "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": "47aa869c1600b349de716f6990de0f431ce558a9",
      "tree": "2ca9a3b1919caef73f9ed810048adab331307858",
      "parents": [
        "e74e120dbd3243ae6f43db6fd91ec201f96ef5ea",
        "365719c23d809e595cf320bfba40e76bb4e87940"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 17 14:02:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 17 14:02:59 2017 +0000"
      },
      "message": "Merge \"No need to lock when calling Thread.interrupted.\""
    },
    {
      "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": "365719c23d809e595cf320bfba40e76bb4e87940",
      "tree": "0939f0d8dc47723978a665fa11dd637f6976d521",
      "parents": [
        "d6705a0586377f1b0d7d14d3abe2b270bb0adb18"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 08 13:11:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 16 01:58:03 2017 +0100"
      },
      "message": "No need to lock when calling Thread.interrupted.\n\nAlso intrinsify the Thread.interrupted call.\n\nThe rationale behind this optimization is that the flag can only\nhave two values, and only self can set it to false.\n\nTest: libcore, jdwp, run-tests, 050-sync-test\nChange-Id: I5c2b43bf872ba0bfafcb54b2cfcd19181864bc4c\n"
    },
    {
      "commit": "eac4f281302c8e28622fc86354ce88ec02cf5a12",
      "tree": "02a36c6a26597d0b8470829f37188496c6739acb",
      "parents": [
        "a018224023f720bfd5ff96c9f9cb55bd66815d33"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 21:07:04 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 26 21:07:04 2017 -0700"
      },
      "message": "ART: Fix UnstartedRuntime unique_ptr braino\n\nBetter call reset instead of release.\n\nBug: 37727233\nTest: mma SANITIZE_HOST\u003daddress art-boot-image\nChange-Id: Ib4f4cce1440bb7accf32e0d93ff8c5a3d2fe8171\n"
    },
    {
      "commit": "6d7abbd2324f544c6b6da42bb6b9b531df0ce3cd",
      "tree": "669705a042bbc77c7963c117a9bf6f7a2308f9c8",
      "parents": [
        "0dfc315a096bf5678cb5182771e3fdcca8ea4433"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 13:19:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 24 14:18:45 2017 -0700"
      },
      "message": "ART: More header cleanup - method_verifier.h\n\nMove enumerations to own header. Move the compiler interface (of what\nthe compiler can tolerate) into its own header. Replace or remove\nmethod_verifier.h where possible.\n\nTest: mmma art\nChange-Id: I075fcb10b02b6c1c760daad31cb18eaa42067b6d\n"
    },
    {
      "commit": "c6ea7d00ad069a2736f603daa3d8eaa9a1f8ea11",
      "tree": "a6d3332a8592fb806841314d55b206b573d37d86",
      "parents": [
        "d68677c5fde1ace16ea58d65733776c954e7acb4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 16:46:28 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 08:40:33 2017 -0700"
      },
      "message": "ART: Clean up art_method.h\n\nClean up the header. Fix up other headers including the -inl file,\nin an effort to prune the include graph. Fix broken transitive\nincludes by making includes explicit. Introduce new -inl files\nfor method handles and reference visiting.\n\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_angler-userdebug \u0026\u0026 mmma art\nTest: source build/envsetup.sh \u0026\u0026 lunch aosp_mips64-userdebug \u0026\u0026 mmma art\nChange-Id: I8f60f1160c2a702fdf3598149dae38f6fa6bc851\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": "8f2b925473cfdc7650cef407102957befe0c6bb5",
      "tree": "4af3395adaf03cb4a60cd40e7b3ee4196645eb9e",
      "parents": [
        "de9b8d63ef548d56de9c9d4657a7b916050d81ad",
        "6b2dc3156a2140a5bfd9cbbf5d7dad332ab5f5bd"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Mar 17 09:05:55 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 17 09:05:56 2017 +0000"
      },
      "message": "Merge \"ART: Get rid of most of java.lang.DexCache.\""
    },
    {
      "commit": "6b2dc3156a2140a5bfd9cbbf5d7dad332ab5f5bd",
      "tree": "a335cae93c0eabae63e39b8bc13ef3e15f4f7e50",
      "parents": [
        "f83f3f6ecb1153d96cc8007e8a0d1e35af4d3f38"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Mar 14 13:26:12 2017 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Mar 16 17:56:04 2017 +0000"
      },
      "message": "ART: Get rid of most of java.lang.DexCache.\n\nAll remaining functionality is moved over to native. The DexCache\nobject itself is allocated in the Java heap, even though there\u0027s no\nlonger much of a reason to do so. It can be changed in a future change\nif needed.\n\nThis also renames mirror::Class:GetInterfaces to GetProxyInterfaces\nsince it\u0027s supposed to be called only for proxies.\n\nTest: test-art-host, cts -m CtsLibcoreTestCases\n\nChange-Id: Ie261f22a9f80c929f01d2b456f170c7a464ba21c\n"
    },
    {
      "commit": "41e604aac001ef023ad61f672239b76ccf33489b",
      "tree": "518cc006471e205633c9adf7c71739f547cded30",
      "parents": [
        "e9cd81c14609fa9dae2125e96ec4d86ca959117f",
        "31afbec96e9f9c8e58778694e74aea7ce55e1378"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Mar 16 14:20:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 16 14:20:30 2017 +0000"
      },
      "message": "Merge \"ART: Bit intrinsics for Mterp interpreter\""
    },
    {
      "commit": "31afbec96e9f9c8e58778694e74aea7ce55e1378",
      "tree": "1ad1633c75fb6c65fbb25d09fb9dcf92c4a81b8c",
      "parents": [
        "c53528a048e47ef8c51fc5c9667061ebd840adf1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 14 15:30:19 2017 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Mar 16 05:31:59 2017 -0700"
      },
      "message": "ART: Bit intrinsics for Mterp interpreter\n\nAnother batch of interpreter intrinisics, mostly around bit\nmanipulation.  Also some formatting changes and inclusion of a\ncomprehensive list of recognized intrinisics (to assist with\ntelling what\u0027s left to do).\n\nBug: 30933338\n\nBenchmarks:\n   20% Improvement for Reversi\n   10% Improvement for Scimark2\n    3% Improvement for ChessBench\n\nTest: ART_TEST_INTERPRETER\u003dtrue m test-art-host\nTest: art/tools/run-libcore-tests --host (edited for force -Xint)\n\nNote: Added intrinsics have existing test coverage via\n082-inline-execute, 123-inline-execute2, 565-checker-rotate,\n564-checker-bitcount, 566-checker-signum \u0026 567-checker-compare\n\nChange-Id: I29f0386e28eddba37c44f9ced44e7d5f8206bb47\n"
    },
    {
      "commit": "9e57abacecc683f50dd6c9870a32ee075eaf86a8",
      "tree": "27ef93c87f3ce9f09414620f77b35f6d0949fb22",
      "parents": [
        "26ec3cad4968ae32ce9d04c3046f766df46d9bd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 16 10:45:40 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 16 10:55:24 2017 +0000"
      },
      "message": "Fix String::DoReplace() using obsolete `this`.\n\nChange it to a static function taking a Handle\u003c\u003e.\n\nTest: testrunner.py --host --interp-ac --gcstress -t 021-string2\nBug: 36335996\nChange-Id: I5ab3e7adc59d6a9095290e57d5ce5d46b79f089b\n"
    },
    {
      "commit": "8f323e09e692ff4f95f40300391fe41fb96a6c49",
      "tree": "990917f714cbe1565105145a2232e557bb0b7048",
      "parents": [
        "8f48f4cb1760cd5d1b193e87ba6b56043bb08f35",
        "e667a3c2e4cae5a977e412a1d80f31a1dc4f3028"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 13 12:47:04 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 13 12:47:04 2017 +0000"
      },
      "message": "Merge \"ART: String intrinsics for Mterp interpreter\""
    },
    {
      "commit": "e667a3c2e4cae5a977e412a1d80f31a1dc4f3028",
      "tree": "eb7b8832797e62d0389443148b1d5afb5e8d7071",
      "parents": [
        "c02fe5f31d487765a8c59922c46d459ba6ebf939"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Mar 09 13:51:23 2017 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 10 13:08:32 2017 -0800"
      },
      "message": "ART: String intrinsics for Mterp interpreter\n\nAdds the most common java.lang.string intrinsics.  Includes change\nto jvalue handling to zero-exend setting of chars and booleans to\n64 bits (aligns with current sign-extension of shorts and ints).\n\nBug: 30933338\n\nBenchmarks:\n  2x boost for Caffeinemark String\n  11% improvement for Dhrystone\n\nTest: ART_TEST_INTERPRETER\u003dtrue m test-art-host\nTest: ART_TEST_INTERPRETER\u003dtrue m test-art-target (Bullhead)\n\nNote: Added intrinsics have existing test coverage via\n082-inline-execute and 123-inline-execute2.\n\nChange-Id: I64b35b1d7bdfe14da0c662594c0edf5cde667277\n"
    },
    {
      "commit": "cac55a12d455efeeb928b6c5629dae4636249e56",
      "tree": "2c7b988bb41c592425783cb279e2c4066fe8e0f0",
      "parents": [
        "d1d4530ffa97729aa8944932a7ac2009ae51c7e3",
        "ece2f7c2644062cb39ad9a62cc19278398deec6b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 09 16:33:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 09 16:33:24 2017 +0000"
      },
      "message": "Merge \"Update UnstartedRuntime for System.identityHashCode.\""
    },
    {
      "commit": "41d82634a7a90559c9d47ba1baa9a1ea0a3d314a",
      "tree": "09bd063fe74677ba113690fd5f63e230d4897080",
      "parents": [
        "68fdd5a22024f70a65159bcb8929296fc93b807d",
        "01822299e8c3a7827d6613cd08fca6aa52c4ae42"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 09 09:03:51 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 09 09:03:51 2017 +0000"
      },
      "message": "Merge \"Revert \"Stop interpreter from accessing code items of compiled code.\"\""
    },
    {
      "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": "02a4d7ff633e67d0a5113f0fc742116dcdc5b7f6",
      "tree": "72a4982d326b528ef8a64d113390d01dae08ddfd",
      "parents": [
        "8a9f49e33b17de220d6bb122194b632ccc8673e3",
        "df79ddb545f0d6e71d6eebb9cb94aa6916351ee9"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Mar 09 03:53:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 09 03:53:36 2017 +0000"
      },
      "message": "Merge \"Stop interpreter from accessing code items of compiled code.\""
    },
    {
      "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": "78f1bdc6bbf0ac07a333ada2396987e8391eee49",
      "tree": "148edb8b92b9df1da50b61448417267c00d014a3",
      "parents": [
        "fddc19338d9fdee24c4e10b758db1a6997004e2e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 01 10:55:57 2017 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 08 09:22:05 2017 -0800"
      },
      "message": "Interpreter intrinsics\n\nFirst of several intrinsic CLs.  This one provides the basic\nmechanism plus a handful of the most simple examples.  Note that\nIntrinsic support is limited to Mterp both to keep the switch\ninterpreter as a pure reference, and to avoid mixing debugging\nand intrinsics.\n\nBug: 30933338\n\nTest: ART_TEST_INTERPRETER m test-art-host\nTest: Note: existing 082-inline-execute, 123-inline-execute2\nTest:   cover intrinsics enabled by this CL.\n\nChange-Id: I9d79e23a84bf00cadb54e1db52d8ed193bbf8887\n"
    },
    {
      "commit": "ece2f7c2644062cb39ad9a62cc19278398deec6b",
      "tree": "47f8e0796f171b4add33f9fca687ef00210ab6e3",
      "parents": [
        "7b6bd79319f239d20f0dadab3e6bb676e906cb5b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 08 16:11:23 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 08 17:20:22 2017 +0000"
      },
      "message": "Update UnstartedRuntime for System.identityHashCode.\n\nThe method is not native anymore.\n\nTest: unstarted_runtime_test\nChange-Id: Ib5cc378f05e9b6ee50168129e855803773a9c5e6\n"
    },
    {
      "commit": "fa6adfd5f349bfeadc6b1bf4fd5f47666dc96269",
      "tree": "23bcee09cf361ce5eeeb7b4d7d68babebb2dce17",
      "parents": [
        "12664625ccbf7b11b7b8f8daca5ac1cb405ef7a3"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Feb 22 13:40:59 2017 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Feb 28 10:56:10 2017 -0800"
      },
      "message": "ART/Mterp: eliminate unnecessary access checks\n\nThis CL switches mterp from using the old quick entrypoints\nfor sget/sput to instead using an sget/sput access sequence\nsimilar to that used by the reference interpreter.  This\nresults in a reduction of unnecessary access checks.\n\nBenchmarks: 3% improvement on DeltaBlue\n\nBug: 30933338\nTest: ART_TEST_INTERPRETER\u003dtrue m test-art-host\nChange-Id: Ib4e64d72b511c6a9ed537289bfeb393eff42c70f\n"
    },
    {
      "commit": "1c5cab0587864e2ca10ca75a0913ff481bb9cb1f",
      "tree": "4bdc477123a2d59e5f3505e160003527c2e4226d",
      "parents": [
        "0fc3e418428f9f29a52c1dd60b1d86c71eb00d18"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Feb 27 08:05:16 2017 -0800"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Feb 27 16:44:41 2017 +0000"
      },
      "message": "ART: Let mterp know about invoke-custom\n\nBy default, the mterp assembly interpreter will redirect any\nnew or unexpected dex opcode to the reference switch interpreter.\nThat\u0027s what is happening now with the new invoke-custom opcodes.\nThis CL simply makes that fallback transition explicit.\n\nTest: ART_TEST_INTERPRETER\u003dtrue m test-art-host\nChange-Id: I9e1388ce58cb6e0618697748c6bafa55fdbbeb57\n"
    },
    {
      "commit": "92907f3f7af106a9eeb341caba17f3770203f7fb",
      "tree": "c44f6b487c9ad078c044f19a4a6d72eaf4979d11",
      "parents": [
        "1b7ba9e15d9525eec7ea68e9ecf95e5777a46069"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:08:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 21 12:31:52 2017 +0000"
      },
      "message": "Remove String.setCharAt().\n\nThe internal API String.setCharAt() breaks the assumption\nthat strings are really immutable. That in turn breaks\nstring compression invariants - compressible strings must\nbe compressed. This CL removes the String.setCharAt() API.\n\nThe method was used only in String.replace(char, char)\nwhen we found a match, copying the string on first match.\nInstead, introduce a new native method that does the whole\nreplacement with a single call when we find the first match.\n\nStringReplaceBenchmark results on Nexus 6P, lower is better:\n  timeReplaceCharNonExistent/EMPTY   41.93 -\u003e   38.25 (-9%)\n  timeReplaceCharNonExistent/L_16   114.90 -\u003e   95.09 (-17%)\n  timeReplaceCharNonExistent/L_64   419.97 -\u003e  320.65 (-24%)\n  timeReplaceCharNonExistent/L_256 1667.01 -\u003e 1091.25 (-35%)\n  timeReplaceCharNonExistent/L_512 3253.50 -\u003e 2075.62 (-36%)\n  timeReplaceCharRepeated/EMPTY      41.93 -\u003e   39.58 (-6%)\n  timeReplaceCharRepeated/L_16      114.87 -\u003e   95.40 (-17%)\n  timeReplaceCharRepeated/L_64     1267.29 -\u003e  704.32 (-44%)\n  timeReplaceCharRepeated/L_256    5139.14 -\u003e 1361.80 (-74%)\n  timeReplaceCharRepeated/L_512   10787.81 -\u003e 2338.41 (-78%)\n  timeReplaceSingleChar/EMPTY        41.78 -\u003e   37.16 (-11%)\n  timeReplaceSingleChar/L_16        449.54 -\u003e  497.51 (+11%)\n  timeReplaceSingleChar/L_64        942.08 -\u003e  891.35 (-5%)\n  timeReplaceSingleChar/L_256      2756.18 -\u003e 2174.64 (-21%)\n  timeReplaceSingleChar/L_512      5489.91 -\u003e 3983.32 (-27%)\n\nTest: testrunner.py --host\nTest: run-libcore-tests.sh --mode\u003dhost\nTest: testrunner.py --host with string compression enabled.\nTest: run-libcore-tests.sh --mode\u003dhost with string compression enabled.\nBug: 31040547\nChange-Id: I9cf0d5457182f0a33ca8251c29931d3eb624ae07\n"
    },
    {
      "commit": "85bef7ea31ac8ad90f97b20c3c391da99c4fb8a0",
      "tree": "43959d2d748077f60cfac143e4a94707284b910d",
      "parents": [
        "6a669aac63ffc17b5e903aa4a1f285fe338eadcf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 16 18:13:26 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 17 10:44:37 2017 -0800"
      },
      "message": "ART: Add constructor support to unstarted runtime\n\nAdd support for Constructor.newInstance0.\n\nBug: 34956610\nTest: m\nTest: m test-art-host-gtest-unstarted_runtime_test\nTest: Device boots\nChange-Id: Ifcea33359c30b70262cd2f4f56f59515b06532ce\n"
    },
    {
      "commit": "9486a16180466e32aa8a98927030aff9fbdce189",
      "tree": "a0ed8e41136c8d1e39671906b49341d0f4659ae4",
      "parents": [
        "08d567b67fb7c98f48983c4adcde2465e5f14628"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 16 15:17:47 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 16 15:40:44 2017 -0800"
      },
      "message": "ART: Add GetSignatureAnnotation to unstarted runtime\n\nAdd support for Class.getSignatureAnnotation to the unstarted\nruntime. Refactor dex file annotation code to support transactions.\n\nBug: 34956610\nTest: m\nTest: m test-art-host-gtest-unstarted_runtime_test\nTest: Device boots\nChange-Id: I9f4a93e05ad6999c46c3bb1dbabe48a1ad6225b2\n"
    },
    {
      "commit": "47de0fad87b5e9a02b1fdde124ff32247f0b477e",
      "tree": "87fda7f87a8d10cd67177298b68fd7e46e0ac098",
      "parents": [
        "2bece1f9df4a060db2fc5b65cd3f3785e4e6e877"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 15 19:29:36 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 16 11:07:41 2017 -0800"
      },
      "message": "ART: Fix Unstarted Runtime Class.forName\n\nWe really only support the boot classloader, and only in the null\ndenotation. Otherwise the class-linker would want to install a\nclass table into the fake BootClassLoader.\n\nAdd tests.\n\nBug: 34956610\nTest: m test-art-host-gtest-unstarted_runtime_test\nChange-Id: I47e284fbd17eb8d33665d2788afcbcc3d09d3d2e\n"
    },
    {
      "commit": "70dc86b03a65b6407f609c401ec78a3e68570bc1",
      "tree": "abdec940c033b5726d166ac200d2dfbc494f1536",
      "parents": [
        "45d942662883a0c5106b85b54e87be0f0610b394"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 15 14:40:55 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 15 14:40:55 2017 -0800"
      },
      "message": "ART: Remove unintended debug logging\n\nTest: m\nChange-Id: Id6085215d8a9e2d22454894adc3c1e9923e54611\n"
    },
    {
      "commit": "45d942662883a0c5106b85b54e87be0f0610b394",
      "tree": "c5fc69b1d327ac7479eb2b6f90f9d45c4246689d",
      "parents": [
        "3fb852a88d2a8ffaa87089752f4b1d5f9d6ce3c1",
        "bad529da18122c7044fbfd7d56153535d34367b1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 15 21:02:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 15 21:02:27 2017 +0000"
      },
      "message": "Merge \"ART: Add currentThread cutout to Unstarted Runtime\""
    },
    {
      "commit": "bad529da18122c7044fbfd7d56153535d34367b1",
      "tree": "44982bc9ec345be1e96ba6c66e22e5c08fcaed56",
      "parents": [
        "1fb51268b78f55b345ea951a73eae5194ec71b91"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 13 18:52:10 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 17:43:52 2017 -0800"
      },
      "message": "ART: Add currentThread cutout to Unstarted Runtime\n\nAdd currentThread() and getThreadState() cutouts to the unstarted\nruntime to allow further compile-time initialization. The cutouts\nare protected by call-stack checks.\n\nAdd tests.\n\nBug: 34956610\nTest: m test-art-host-gtest-unstarted_runtime_test\nChange-Id: I6335bccda8bedae90376fc7c47b303576f1ac78b\n"
    },
    {
      "commit": "fe35fe172a7d3469ebf1dae9cca7e1ac8aefcba7",
      "tree": "3bf964f7786227f8104eeba08fe2e1768109a764",
      "parents": [
        "a0637543dc82dfd54feda7c80da017bd39b1d2d5",
        "fa4333dcb481e564f54726b4e6f8153612df835e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 22:11:34 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 22:11:35 2017 +0000"
      },
      "message": "Merge \"ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\""
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "c069a30d42aefd902c20e8bc09dfad1683f07ded",
      "tree": "8bbf72bea7ea5d243b57f8e0ab64b687a9f60e4b",
      "parents": [
        "3f38398380b80d1ded078ebed1211b7e4f51460f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 18 09:23:12 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 14 14:04:33 2017 +0000"
      },
      "message": "ART: invoke-custom support\n\nAdds invoke-custom instruction to the interpreter.\n\nBug: 33191717,30550796\nTest: art/test/run-test --host 952\nChange-Id: I3b754128649a8b3a00ade79ba2518d0e377f3a1e\n"
    },
    {
      "commit": "3d2fcaae4145a50e4d7460d8ce3caf97eb825a08",
      "tree": "583773207bd59fb7a88fbd1994383987d9f0f663",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 09 12:50:52 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 09 13:55:42 2017 -0800"
      },
      "message": "ART: Update unstarted runtime for changed libcore\n\nUpdate float conversion to current libcore implementation. Add\ntests.\n\nBug: 34956610\nTest: m test-art-host-gtest-unstarted_runtime_test\nChange-Id: Ib62c64011e2d5b980fb8fab81f6c343065ce946c\n"
    },
    {
      "commit": "8b6d2fd300624ad1716c0907e646b87997b6671d",
      "tree": "ee0ef8b755d2927bc97fdabb05347579420b78c9",
      "parents": [
        "4f5dfb392559feca746ec558e268ce490dcbb88c",
        "ae78c2643375c7536affcec318a60d13d430f181"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Feb 02 21:46:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 02 21:46:23 2017 +0000"
      },
      "message": "Merge \"ART: Add UnstartedRuntime support for Class.getSimpleName\""
    },
    {
      "commit": "ae78c2643375c7536affcec318a60d13d430f181",
      "tree": "d7299730b4e84107d544f66b6a046af75f367669",
      "parents": [
        "a85111c5f25310e3d0eac68a6f0d8cd7c6612dfe"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 20:40:44 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 02 10:53:14 2017 -0800"
      },
      "message": "ART: Add UnstartedRuntime support for Class.getSimpleName\n\nThis requires two native methods, isAnonymousClass and\ngetDeclaringClass.\n\nAdd tests.\n\nBug: 34890992\nTest: m\nTest: m test-art-host\nTest: Device boots\nChange-Id: Ib3fca2a6bb6e367ef202ff864719cab979d6c793\n"
    },
    {
      "commit": "6674a744b5c83aa12aa25fad544fa5041b4b5550",
      "tree": "93216746f8bef1b657cfe9b31060002b2901dbd3",
      "parents": [
        "a85111c5f25310e3d0eac68a6f0d8cd7c6612dfe",
        "42a09cb0c6aee5de92eb4cdf6d34646dcd247840"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 02 17:08:16 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Feb 02 17:08:16 2017 +0000"
      },
      "message": "Merge \"ART: Reduce overhead of mterp OSR checking\""
    },
    {
      "commit": "42a09cb0c6aee5de92eb4cdf6d34646dcd247840",
      "tree": "32a06b1cdc48cd1eeb4f6f0ba232935c5393f899",
      "parents": [
        "fbf47ea64a9f797a82030e919fa4f085c9eb5b28"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Feb 01 09:08:31 2017 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Feb 01 09:08:31 2017 -0800"
      },
      "message": "ART: Reduce overhead of mterp OSR checking\n\nOnce mterp\u0027s branch profiling identifies a method hot enough\nto try on-stack replacement, a request is made to the JIT to compile\nthe method for OSR.  Mterp then enters a mode in which it checks\nfor completion of the compilation in order to initiate the OSR.\nCurrently, this completion check happens on every branch. In\nsituations in which the JIT is backlogged and it takes awhile for the\ncompilation to complete, the overhead of doing these checks is noticable.\n\nThis change moves from a \"check on every branch\" model to a \"check\non every Nth branch\" model.  We start with N\u003d100, which should still\nyield responsive OSR but dramatically reduce the checking overhead.\n\nBug: 32090348\nTest: m test-art-host\nTest: m test-art-target (Nexus 5x)\nChange-Id: I97442723397bb242163dc18bd4444977bcd469fa\n"
    },
    {
      "commit": "d16363a93053de0f32252c7897d839a46aff14ae",
      "tree": "8823c6dd4641eae333aa7001203460757a515010",
      "parents": [
        "ac240396125911b52437a460a400c8b38be43a96"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 14:09:13 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 01 15:27:37 2017 +0000"
      },
      "message": "Revert \"Hash-based dex cache type array.\"\n\nReverting to work around some programs crashing with\n    Check failed: handle_scope_iface.Get() !\u003d nullptr.\nthough the reason for the failure not yet understood.\n\nTest: m test-art-host\nBug: 34839984\nBug: 30627598\nBug: 34659969\nBug: 30419309\n\nThis reverts commit ec7862283dd49f5a58d0ac45960ce27c2f7671b8.\n\nChange-Id: Ifded663633082f1e59e5b6ff2e026dc559bd6b82\n"
    },
    {
      "commit": "ec7862283dd49f5a58d0ac45960ce27c2f7671b8",
      "tree": "26d6dcc1d5ed4f0ba5ac15f17ef7377215684bf6",
      "parents": [
        "c01d49091f4588777db5bf45345f388058caa99f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 20 16:24:13 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 10:21:16 2017 +0000"
      },
      "message": "Hash-based dex cache type array.\n\nTest: m test-art-host (Interpreter, Optimizing, JIT)\nTest: m test-art-target on Nexus 6P (Interpreter, Optimizing, JIT)\nTest: Nexus 6P boots\nTest: m valgrind-test-art-host\nBug: 30627598\nBug: 34659969\nBug: 30419309\nChange-Id: Ic00eda89e58088a3573fc9ec0ad04c0e69e161d1\n"
    },
    {
      "commit": "5e8d5f01b0fe87a6c649bd3a9f1534228b93423d",
      "tree": "a1441acc0021d170f412542ae2a1ae62794e7846",
      "parents": [
        "b0dde4397fa5b0756312b46bd18477a2c1f6a7da"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Oct 18 18:03:43 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jan 23 15:50:01 2017 +0000"
      },
      "message": "Fix some typos in ART.\n\nTest: m build-art-host\nTest: m cpplint-art\nChange-Id: Ifc6ce3d0d645c4a8dca72dd483fc03fc05077130\n"
    },
    {
      "commit": "8631a46d6d93d739428873b9b4053d228b9b5cfa",
      "tree": "aef39e578a857c49817398f567bb2508839e942b",
      "parents": [
        "dedb22a0e099c81435a764881bdfa8bb050c3d3f"
      ],
      "author": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Jan 19 19:07:37 2017 -0800"
      },
      "committer": {
        "name": "Alexey Frunze",
        "email": "Alexey.Frunze@imgtec.com",
        "time": "Thu Jan 19 21:20:45 2017 -0800"
      },
      "message": "Fix polymorphic invokes (one more round).\n\nmemcpy() exhibits undefined behavior when the source and the\ndestination overlap. Use memmove() instead.\n\nThis fixes test failures when running the below tests on MIPS.\n\nTest: booted MIPS32R2 in QEMU\nTest: ./run-test --interpreter 953-invoke-polymorphic-compiler\nTest: ./run-test --interpreter 955-methodhandles-smali\nTest: ./run-test --interpreter 956-methodhandles\nTest: ./run-test --interpreter 957-methodhandle-transforms\nTest: ./run-test --interpreter 958-methodhandle-emulated-stackframe\nTest: ./run-test --interpreter 959-invoke-polymorphic-accessors\n\nChange-Id: Ia17ff25001faa7d91ce1178ab35313c36e75aa07\n"
    },
    {
      "commit": "942fd3130254d8276cbfe8e6201825e9c49e9b2c",
      "tree": "62dbcd85ab150604e2d72a3c2d0c3639a28c9b7a",
      "parents": [
        "8bd59a0fd46db83616785168231e09fb95ed2ead"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 16 20:52:19 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 17 16:12:15 2017 +0000"
      },
      "message": "Reduce using ArtMethod\u0027s dex_cache_resolved_types_.\n\nAvoid using the ArtMethod\u0027s dex cache type array shortcut\nin runtime, preparing for its removal. We do not completely\nremove the shortcut yet because it is still used by array\nallocation entrypoints.\n\nFix ArgArray::BuildArgArrayFromObjectArray in reflection.cc\nto not ask for the parameter type to be resolved. It should\nhave been previously resolved when retrieving the Method.\n\nAlso partially revert\n    https://android-review.googlesource.com/310717\nbecause it relied on the removed AIOOBE check in the removed\nArtMethod::GetDexCacheResolvedType(). The removed check was\nsimply defensive but it could not be triggered without some\nmemory corruption.\n\nTest: m test-art-host\nBug: 30627598\nChange-Id: Ic45a5ff8c66b79429e440cbc08d67bf22a083682\n"
    },
    {
      "commit": "0d3998b5ff619364acf47bec0b541e7a49bd6fe7",
      "tree": "a4763c0660372f6311b612c09267cbbc2fe71e89",
      "parents": [
        "aa89a4c6fca095904521842c018399f1e3501a45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 12 15:35:12 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 12 16:51:12 2017 +0000"
      },
      "message": "Revert \"Revert \"Make object allocation entrypoints only take a class.\"\"\n\nThis reverts commit f7aaacd97881c6924b8212c7f8fe4a4c8721ef53.\n\nChange-Id: I6756cd1e6110bb45231f62f5e388f16c044cb145\n"
    },
    {
      "commit": "f7aaacd97881c6924b8212c7f8fe4a4c8721ef53",
      "tree": "780209ac8e992fa63307062977f672aa5bb55d9e",
      "parents": [
        "2b615ba29c4dfcf54aaf44955f2eac60f5080b2e"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 12 02:58:38 2017 +0000"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 12 02:58:38 2017 +0000"
      },
      "message": "Revert \"Make object allocation entrypoints only take a class.\"\n\n960-default-smali64 is failing.\n\nThis reverts commit 2b615ba29c4dfcf54aaf44955f2eac60f5080b2e.\n\nChange-Id: Iebb8ee5a917fa84c5f01660ce432798524d078ef\n"
    },
    {
      "commit": "2b615ba29c4dfcf54aaf44955f2eac60f5080b2e",
      "tree": "0a2fe5f9243645a054d4aa094bff5a69cc1abb88",
      "parents": [
        "c9a060f2688599d4a402ee6234db46c2e9b7463f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 06 14:40:07 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 11 10:34:10 2017 +0000"
      },
      "message": "Make object allocation entrypoints only take a class.\n\nChange motivated by:\n- Dex cache compression: having the allocation fast path do a\n  dex cache lookup will be too expensive. So instead, rely on the\n  compiler having direct access to the class (either through BSS for\n  AOT, or JIT tables for JIT).\n- Inlining: the entrypoints relied on the caller of the allocation to\n  have the same dex cache as the outer method (stored at the bottom of\n  the stack). This meant we could not inline methods from a different\n  dex file that do allocations. By avoiding the dex cache lookup in\n  the entrypoint, we can now remove this restriction.\n\nCode expansion on average for Docs/Gms/FB/Framework (go/lem numbers):\n- Around 0.8% on arm64\n- Around 1% for x64, arm\n- Around 1.5% on x86\n\nTest: test-art-host, test-art-target, ART_USE_READ_BARRIER\u003dtrue/false\nTest: test-art-host, test-art-target,  ART_DEFAULT_GC_TYPE\u003dSS ART_USE_TLAB\u003dtrue\n\nChange-Id: I41f3748bb4d251996aaf6a90fae4c50176f9295f\n"
    },
    {
      "commit": "aceff18580b94a586a469110565f2ba166f3635a",
      "tree": "f6904a81ad70e54bc1968f7c0d9d6f33b9e19196",
      "parents": [
        "fac5c658f17c059c42c75cf8cbfbb0680c591c1d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jan 09 18:48:11 2017 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 10 07:58:01 2017 -0800"
      },
      "message": "Delete extra arm64/mips64 MterpReturn suspend check\n\nDoing a suspend check after moving the result into the shadow frame\nresult_register_ is not safe since result_register_ is not a GC\nroot. The suspend check is unnecessary since the opcodes that branch\nto MterpReturn already do a suspend check.\n\nThis could maybe explain one crash for CC that was seen after calling\na getter that had no compiled code.\n\nThe extra suspend check appears to only be present on arm64 amd mips64.\n\nTest: test-art-target ART_TEST_INTERPRETER\u003dtrue\n\nBug: 33211261\nChange-Id: I70b8863f40a25a26f278ac8ef0d57e083b663e0f\n"
    },
    {
      "commit": "811bd5ff0189122d34e8a1b8ccda889bbba4c0d1",
      "tree": "278b128c15dc32657e06fd38b7111407edef552f",
      "parents": [
        "b51edffe1c0b331a4d4d5298938c7c1b31ebaf6a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Dec 07 11:35:37 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 06 08:49:07 2017 +0000"
      },
      "message": "ART: Make method handle runtime code callable from compiler.\n\nMost of this change is moving the existing method handles code, but it\nalso introduces a new header file, common_dex_operations.h, that has\nsome operations taken from interpreter_common.{h,cc} that are also used\nby method handles (perform call, set field, get field).\n\nBug: 30550796\nTest: m test-art-host\nChange-Id: I2235e13770a5562950f2767f65a25ca273479150\n"
    },
    {
      "commit": "dba61481035b7944173181ec9ee02aea41dd0e29",
      "tree": "8629775e657cc8968e2f8fa2af6256c7a58c7dd4",
      "parents": [
        "cb2ce333ee2d1053919fe0acc390369bea3ad77e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 08:20:29 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 11:43:14 2016 -0800"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\"\n\nA GetDeclaringClass()-\u003eGetDexCache() got inserted during the\nmerge/review process meaning that we would try to access incorrect\ndex-cache in obsolete methods in some situations.\n\nAlso when using tracing we would loop forever (or at least until an\nOOM error) in test 916 due to tracing forcing InterpretOnly mode\nmeaning methods would never be jitted.\n\nBug: 32369913\nBug: 33630159\n\nTest: ART_TEST_TRACE\u003dtrue \\\n      ART_TEST_JIT\u003dtrue   \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\n\nThis reverts commit f6abcda293b115a9d7d8a26376ea2dcf2d1dc510.\n\nChange-Id: I0773bfcba52e3cd51a83be815c6a50c189558f48\n"
    },
    {
      "commit": "f6abcda293b115a9d7d8a26376ea2dcf2d1dc510",
      "tree": "a30ce596848d14c95a73449dbf2bfccf26a510b9",
      "parents": [
        "ce77fc0e7f60a15354bb20c356537cbf8b53b722"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\n\nFails in tracing mode\n\nBug: 32369913\nBug: 33630159\n\nThis reverts commit ce77fc0e7f60a15354bb20c356537cbf8b53b722.\n\nChange-Id: I1bdcf6ad467f2e31f9c5d0c3c987b90a4f5efc69\n"
    },
    {
      "commit": "ce77fc0e7f60a15354bb20c356537cbf8b53b722",
      "tree": "b4301967c423ab190a4274409d99a3d6e23f0e8a",
      "parents": [
        "d54f43ca39dfa92f08c2d760123f185f0f65fb86"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 01:05:52 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 19 14:26:18 2016 -0800"
      },
      "message": "Revert \"Revert \"Basic obsolete methods support\"\"\n\nThis reverts commit b81a9840b44480bfeacd74b8d9f51e06f295411d.\n\nThere were 2 issues with the original CL\u0027s test 916-obsolete-jit that\ncaused it to sporadically fail.\n\nFirst, when checking if we had jitted the function under test in\n916-obsolete-jit we failed to check to see if the function \u0027doCall\u0027,\nwhich is used to work-around bugs in our deoptimization \u0026 compilation\nsystems, had also been jitted.\n\nIn the case where the \u0027sayHi\u0027 function had been jitted but the\n\u0027doCall\u0027 function had not we would (correctly) fail to redefine the\n\u0027Transform\u0027 class since we would not be able to deoptimize the \u0027sayHi\u0027\nfunction since it is under a quick_to_interpreter_bridge (runtime)\nframe.\n\nSecondly, the function Main.isInterpretedFunction was incorrect and\nwould always return false, regardless of the actual state of the\nfunction. This would cause the test to fail as the\nquick_to_interpreter_bridge frame prevented deoptimization of the\nobsoleted function. Usually the warm-up period was enough to make sure\nthe methods were jitted anyway but this was not guaranteed.\n\nBoth of these problems become more likely to occur on systems with\nmore cpu contention such as the buildbots.\n\nTest: stress --cpu 60 \u0026; while ./test/run-test --host --jit 916; do ; done\n\nReason for revert: Fixed bug in test that was causing failures.\n\nOriginal Tests:\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: If1a92e47b90965a7dc21c5826185debe62bd1554\n"
    },
    {
      "commit": "913e6e6f36f6feb1d11e7c095dbbc9cea7ab01be",
      "tree": "d1e74a07e3b801ff81eaefe5569a1262cc922976",
      "parents": [
        "4c1667fd521f6e11367fd262f9bd6474f48fb3e7",
        "f9bf250cc642c4e3e0c6904550fe922d3359a737"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 16 09:32:22 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 16 09:32:23 2016 +0000"
      },
      "message": "Merge \"Remove dex cache string from mirror::Class.\""
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "f9bf250cc642c4e3e0c6904550fe922d3359a737",
      "tree": "953351c7e13b45e9246625ad81bce708788d96f9",
      "parents": [
        "b73e659be3fb6474ff3a993cd25ecbfa1cc4715c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 14 14:59:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 14:52:22 2016 +0000"
      },
      "message": "Remove dex cache string from mirror::Class.\n\nThe compiled code does not need it anymore.\n\nTest: test-art-host test-art-target\nChange-Id: I71c08ce12d450ab2b2cd018330d42a8b8c9e3da2\n"
    },
    {
      "commit": "b7cc593a34896e230aab6d9718239b4f85c2dc63",
      "tree": "fdad7132bcdf125e8c2a499bf794bc6bcbba76d3",
      "parents": [
        "bdca0a27eb034152afba52f1d499d773b81908df",
        "b81a9840b44480bfeacd74b8d9f51e06f295411d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 01:04:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 15 01:04:03 2016 +0000"
      },
      "message": "Merge \"Revert \"Basic obsolete methods support\"\""
    },
    {
      "commit": "b81a9840b44480bfeacd74b8d9f51e06f295411d",
      "tree": "d79a3567b272b6eb4fb94d66a537cf92bef455db",
      "parents": [
        "d8936da27b792d1ca02e59c92456a1a53c7b9905"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "message": "Revert \"Basic obsolete methods support\"\n\nThis reverts commit d8936da27b792d1ca02e59c92456a1a53c7b9905.\n\nReason for revert: Some sort of race in JIT\n\nChange-Id: Ibb4e520bb0721d6d7aa2c841a52eb5baff07740e\n"
    },
    {
      "commit": "6d736d8edb0692ac70044c18045e2fcb3d14c1e5",
      "tree": "7b7c9973a04d9231af44fc967ebe49f1c835a861",
      "parents": [
        "7a8e16c827efc866d01b5cbca835b18fe29a83ab",
        "d8936da27b792d1ca02e59c92456a1a53c7b9905"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 14 22:21:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 14 22:21:28 2016 +0000"
      },
      "message": "Merge \"Basic obsolete methods support\""
    },
    {
      "commit": "d8936da27b792d1ca02e59c92456a1a53c7b9905",
      "tree": "6a593dd426e7f4a15c651dd3b872f22fb64f09ce",
      "parents": [
        "7c73bf3518eea7544406eadfed6946411c54a267"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 28 16:24:32 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 14 13:01:27 2016 -0800"
      },
      "message": "Basic obsolete methods support\n\nAdd support for executing obsolete methods following redefinitions.\nThis support includes methods that have been jitted. This does not add\nany additional validity checks to our redefinition functions.\n\nNote using work-arounds to ensure 916 works pending some fixes to the\ncompiler, deoptimizer, or both.\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: I78ef95f484146f1fb93c37fc50f56575bdab2432\n"
    },
    {
      "commit": "f4f7637ef078cbd0812432f5a4051858c80f6309",
      "tree": "7aa38858ff7af69ae2040bfb386d4a14dd371e96",
      "parents": [
        "0955e348436130df87ee8f2075b492a66c5232ef"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 13 14:43:58 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 13 14:43:58 2016 -0800"
      },
      "message": "ART: Make switch back-edge suspension point consistent\n\nBoth compiled code and mterp attribute a back-edge suspend point\nto the target. Make switch consistent by proactively updating\nthe frame\u0027s dex PC in that case.\n\nAdd another macro for reuse.\n\nBug: 31684812\nTest: m test-art-host-run-test-911-get-stack-trace\nTest: m ART_TEST_INTERPRETER\u003dtrue ART_TEST_JIT\u003dtrue ART_TEST_TRACE\u003dtrue test-art-host\nChange-Id: I9969cc4ffbc34cf1d8849938a1cd7e2c9aec462d\n"
    },
    {
      "commit": "a04a5cf781ae94b706c734ef9179f5a6218ba39f",
      "tree": "f88b3e76a9f7609f7bb9b53e3696f1e5443ef814",
      "parents": [
        "07830e11b718774c474d5f618ecfb29e238e47f7"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Dec 06 05:00:01 2016 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Dec 06 05:53:59 2016 -0800"
      },
      "message": "Mterp/arm: Add CFI directives, add missing change\n\nCL 308760 neglected to regenerate mterp_arm.S.  Added here.\n\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-target (in progress)\nBug: 31456348\nChange-Id: I476e65e81bf54c8fdb1e2134d460db496308d6c1\n"
    },
    {
      "commit": "07830e11b718774c474d5f618ecfb29e238e47f7",
      "tree": "d09fee8d2915d5355aa367955610235c64269321",
      "parents": [
        "d1aa2912f3acdd9f47acd98e947818b09c2b349a",
        "ac50aab516a1ab0977fbc961f53f4edd29a891e5"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Dec 06 12:42:21 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 06 12:42:21 2016 +0000"
      },
      "message": "Merge \"Mterp/arm: Add CFI directives.\""
    },
    {
      "commit": "ac50aab516a1ab0977fbc961f53f4edd29a891e5",
      "tree": "329f7ea09c6e8a0ff655e12ac991a1b7ed7ca86d",
      "parents": [
        "6afaa42f50157095a3cdc742afdbc3d58b833eea"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Dec 01 14:03:05 2016 -0800"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Dec 05 16:54:50 2016 +0000"
      },
      "message": "Mterp/arm: Add CFI directives.\n\nIncludes reworking of float_to_long and double_to_long to\nelminate frame (as suggested by vmarko).\n\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-target (in progress)\nBug: 31456348\nChange-Id: Ic4e985b977f76c4df926559b187d92d969206514\n"
    },
    {
      "commit": "c571e73e21202cff0a8ec3bcfecb7d326e8648ef",
      "tree": "905cb5252b8bc8c335f569c869dfb8529301f40c",
      "parents": [
        "edcd7929e2bf521316fa5305109c330d563d87db",
        "cfa325e4ca65603fdb03a836a6cb394d23ed511f"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 02 11:52:14 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 02 11:52:15 2016 +0000"
      },
      "message": "Merge \"ART: Add verifier support for invoke-polymorphic.\""
    },
    {
      "commit": "cfa325e4ca65603fdb03a836a6cb394d23ed511f",
      "tree": "f14e628cc90f7b03f8f227a30361993f3f594f11",
      "parents": [
        "35b6546b0a4fe423ed6f27d8c5b709d5191e99ef"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Oct 13 10:25:54 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Dec 02 10:09:40 2016 +0000"
      },
      "message": "ART: Add verifier support for invoke-polymorphic.\n\nChange-Id: I1e1860cad80db46320c3ef5a9eaceb7529ea68d7\nBug: 30550796,33099829,33191712\nTest: make test-art-host\n"
    },
    {
      "commit": "4e1a19b2e2191c27c45cac373ad9db2d61ed7fc9",
      "tree": "4694e18e1ee50029a1506aae85630ee6d030efcd",
      "parents": [
        "903691455319f72219853a46340b59c9b89b7553",
        "112aa1088cf283d57c533be17d79c4b638665651"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 14:53:54 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 14:53:55 2016 +0000"
      },
      "message": "Merge \"Mterp/arm64: Add CFI directives.\""
    },
    {
      "commit": "112aa1088cf283d57c533be17d79c4b638665651",
      "tree": "7b6f8338d9f574efdacdeaf1144cd538306335c5",
      "parents": [
        "626b839f881f09a1481377a76712d08580c47a16"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 11:53:54 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Dec 01 12:43:38 2016 +0000"
      },
      "message": "Mterp/arm64: Add CFI directives.\n\nAlso add two bug 31975598 workarounds to arm64 entrypoints.\n\nTest: m ART_TEST_INTERPRETER\u003dtrue test-art-target\nBug: 31456348\nBug: 31975598\nChange-Id: Ibf64160cf3b3f1ef644ff8f051ab7dc89643acf3\n"
    },
    {
      "commit": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\n"
    },
    {
      "commit": "35b6546b0a4fe423ed6f27d8c5b709d5191e99ef",
      "tree": "24c39209f4ae8340791965866ed847d9e65808c5",
      "parents": [
        "d162cfe794c9d4e6d9aa6b5f207db2ebd91a2113",
        "fef0664fa7b480032f17c60f767bcca43a659d8a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Nov 28 09:39:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Nov 28 09:39:45 2016 +0000"
      },
      "message": "Merge \"ART: Throw InternalError rather than VirtualMachineError\""
    },
    {
      "commit": "1c87878ca87b0c5dde08416ef75615632eace7ac",
      "tree": "2e5e16040024115d75baebdbf064987961e36e5f",
      "parents": [
        "5ee771615a7e7752abb8b0d53122ca44137c4286"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 15:46:49 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 17:04:20 2016 +0000"
      },
      "message": "Revert \"Revert \"Method Handles: Add VarargsCollector.\"\"\n\nThis reverts commit 12af7a41c224923fb55699305008214636a1a3da.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\nChange-Id: Ia820093bab919667729daba5b14330de51a63f79\n"
    },
    {
      "commit": "fef0664fa7b480032f17c60f767bcca43a659d8a",
      "tree": "5b1f812aef3e300b7bef0bd5ad5a2fa5a8d5c38a",
      "parents": [
        "5ee771615a7e7752abb8b0d53122ca44137c4286"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 16:07:11 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 16:07:11 2016 +0000"
      },
      "message": "ART: Throw InternalError rather than VirtualMachineError\n\nInstantiate InternalError instead of VirtualMachineError as the latter\nis abstract and not instantiable.\n\nChange-Id: I3e90b28a34bef02dd1c200c02cb832aa8dce10b3\n"
    },
    {
      "commit": "12af7a41c224923fb55699305008214636a1a3da",
      "tree": "a93fcd7a973d0fd2b5dd7619858ca1e84a96408d",
      "parents": [
        "ab52ce1480d9c4701bfe3ff3530596ec0c5760ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 14:27:07 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 14:27:07 2016 +0000"
      },
      "message": "Revert \"Method Handles: Add VarargsCollector.\"\n\nThis reverts commit ab52ce1480d9c4701bfe3ff3530596ec0c5760ee.\n\nChange-Id: Idc6dd28b58a61cbd2c9ee72e8a0eeb07b2ca0edf\n"
    },
    {
      "commit": "ab52ce1480d9c4701bfe3ff3530596ec0c5760ee",
      "tree": "e1966edd05b7e7ca8e0e90ea2c2b90b3b9d10a32",
      "parents": [
        "bbf33111444f1c7665eb6ad21438f2ca97cd488e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 11 11:11:31 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 23 16:56:15 2016 +0000"
      },
      "message": "Method Handles: Add VarargsCollector.\n\nEnable support for methods with variable arity arguments.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\n\nChange-Id: I205724ddacc6c9840e18093a3984c1ad6e54394a\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": "6beced4c017826f7c449f12fac7fa42403657f2b",
      "tree": "f53614eeeaa92be9a7398e262d9440f59e3384a5",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 15 15:51:31 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 16 10:41:40 2016 -0800"
      },
      "message": "Change iftable to never be null\n\nSimplifies code generation by removing a null check. The null case\nis rare.\n\nRitzperf code size: 13107624 -\u003e 13095336\n\nAlso addressed comments from previous CL.\n\nBug: 32577579\n\nTest: test-art-host, run ritzperf both with CC\n\nChange-Id: I2b31e800867112869d7f0643e16c08826296979e\n"
    },
    {
      "commit": "39ce7d2907edb978f1ab6cd75884be48ab11cd77",
      "tree": "7d2f0c56bd8a7dd483b5c1ede7047b623d0e35d7",
      "parents": [
        "5302bd999afee6db5b0cfd63e6a49b0fcbf92dd4",
        "3049324f4ef71b5d7a3de49bd77c75f07dbf8f3a"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Nov 11 18:44:44 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 11 18:44:44 2016 +0000"
      },
      "message": "Merge \"Make empty checkpoint work while weak ref access is disabled.\""
    }
  ],
  "next": "1a06f9f67a4e91610d2a050093b36de264904916"
}
