)]}'
{
  "log": [
    {
      "commit": "08d0984bfeaff1a1bc2db2d51ecf45f2867b3bc4",
      "tree": "3c8c47aae746f4057d541448f873d6e287a092d6",
      "parents": [
        "2d8b7f4ef7a305b98dd54d259e0c2b9f6aed4fd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 02 12:38:49 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Dec 02 15:44:20 2019 +0000"
      },
      "message": "Allow late lookup for @FastNative methods.\n\nAvoid failing a runtime state assertion.\n\nTest: Enable tests in 178-app-image-native-method\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nBug: 112189621\nChange-Id: I3eb5c9fd239743732866e8ea0863a84bf85f7b20\n"
    },
    {
      "commit": "e2a3aa988630b3c2952ac44943f03dde60454195",
      "tree": "acee7012af6e2b161c91e6cd8b7b4d12eb5aa927",
      "parents": [
        "a2c4d61e482a15974e3e220bcd62a64043ee536f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 25 17:52:58 2019 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 27 14:04:43 2019 +0000"
      },
      "message": "Baseline JIT: update inline caches in compiled code.\n\nIn trying to remove profiling from interpreter, to speed up\ninterpreter performance.\n\nBug: 119800099\nTest: test.py --baseline\nChange-Id: Ica1fa41a889b31262d9f5691b30a31fbcec01b34\n"
    },
    {
      "commit": "1ba7e8c10af4e270864a417044244d63db53ccf5",
      "tree": "5674e60920995f3520d85bf9e681f285ef87fbb6",
      "parents": [
        "849439ac18cc36972c145fef2e0f54dea36ff131"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Sep 03 17:10:42 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Sep 17 21:25:30 2019 +0000"
      },
      "message": "Fix uses of DW_CFA_restore_state in assembly code.\n\nThe specification does not define how DW_CFA_restore_state affects the CFA.\nThere is no de-facto consensus on the expected behaviour between tools and\nsometimes even the same tool might differ for different architectures.\n\nTherefore we must always explicitly set the CFA after the state restore.\n\nBug: 31975598\nBug: 140407634\nTest: \"test.py -r --gcstress --optimizing --host\" + extra backtrace checks.\nTest: \"objdump -Wf\" and manually check that all restores match saves.\nChange-Id: Ic1547149f2159e77887d48dedd4afb7e000066e8\n"
    },
    {
      "commit": "552a13415573da19eafa46e1ac00fb0eb68f2b23",
      "tree": "8cae5f3602d8f8e65cd3cbc349af17d785128605",
      "parents": [
        "0dda8c84938d6bb4ce5a1707e5e109ea187fc33d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Oct 31 10:56:47 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 16 14:44:09 2019 +0000"
      },
      "message": "ART: Optimize StringBuilder append pattern.\n\nRecognize appending with StringBuilder and replace the\nentire expression with a runtime call that perfoms the\nappend in a more efficient manner.\n\nFor now, require the entire pattern to be in a single block\nand be very strict about the StringBuilder environment uses.\nAlso, do not accept StringBuilder/char[]/Object/float/double\narguments as they throw non-OOME exceptions and/or require a\ncall from the entrypoint back to a helper function in Java;\nthese shall be implemented later.\n\nBoot image size for aosp_taimen-userdebug:\n - before:\n   arm/boot*.oat: 19653872\n   arm64/boot*.oat: 23292784\n   oat/arm64/services.odex: 22408664\n - after:\n   arm/boot*.oat: 19432184 (-216KiB)\n   arm64/boot*.oat: 22992488 (-293KiB)\n   oat/arm64/services.odex: 22376776 (-31KiB)\nNote that const-string in compiled boot image methods cannot\nthrow, but for apps it can and therefore its environment can\nprevent the optimization for apps. We could implement either\na simple carve-out for const-string or generic environment\npruning to allow this pattern to be applied more often.\n\nResults for the new StringBuilderAppendBenchmark on taimen:\n  timeAppendLongStrings: ~700ns -\u003e ~200ns\n  timeAppendStringAndInt: ~220ns -\u003e ~140ns\n  timeAppendStrings: ~200ns -\u003e 130ns\n\nBug: 19575890\nTest: 697-checker-string-append\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nTest: aosp_taimen-userdebug boots.\nTest: run-gtests.sh\nTest: testrunner.py --target --optimizing\nTest: vogar --benchmark art/benchmark/stringbuilder-append/src/StringBuilderAppendBenchmark.java\nChange-Id: I51789bf299f5219f68ada4c077b6a1d3fe083964\n"
    },
    {
      "commit": "20d1c942c0e841920eac92f68c6d3e7f2a2135b4",
      "tree": "931aed7f4639a4b0a6ab8e3cd7765295a1883be3",
      "parents": [
        "d32f8aadd37aab5b89ffccc86f7d8d07447a213a"
      ],
      "author": {
        "name": "jaishank",
        "email": "jaishankar.rajendran@intel.com",
        "time": "Fri Mar 08 15:08:17 2019 +0530"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 25 09:05:09 2019 +0000"
      },
      "message": "Patch supports Intel(R) AVX/AVX2 MOV Instruction\n\nThis patch enhances the existing ART-Compiler\nto generate Intel(R) AVX/AVX2 MOV Instructions for\ndoing SIMD Operations on Intel(R) Architecture CPUs.\nIt also provides the framework for AVX/AVX2 Instruction\nencoding and dissassembly\n\nBUG: 127881558\nTest: run-test gtest\nChange-Id: I9386aecc134941a2d907f9ec6b2d5522ec5ff8b5\n"
    },
    {
      "commit": "1eb5d8770a533b86269e503a842f6b45591e87cf",
      "tree": "222728b3902587c45ad7c294c7ba69393f8d7cfa",
      "parents": [
        "9b70ee0fdb1969a9a5cad2052b35c2fa04509bc2"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Wed Apr 03 13:56:22 2019 +0100"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Tue Apr 16 12:53:02 2019 +0000"
      },
      "message": "Prefix entrypoints with 0xFF so we can do extra checks.\n\nAdd check to ensure we do not read method header from libart.so\n\nBug: 123510633\nTest: m -j40 cts \u0026\u0026 cts-tradefed run cts \\\n  --test android.jvmti.cts.JvmtiHostTest1927#testJvmti \\\n  --module CtsJvmtiRunTest1927HostTestCases\nChange-Id: Ic3e42e3bd4fbda3b11c7e265ed114770139151b9\n"
    },
    {
      "commit": "7909e1e4cc741b38b25328e2f9077beb7ecd018b",
      "tree": "b59583aa7e9d865d46c5bc8dec00729c649d4756",
      "parents": [
        "ca3c6d9231aa8e4a9ca7c9040398d57f130441a0",
        "7f88c1a269754001bfcaf311b378cf1cc71acf84"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Feb 05 12:50:51 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 05 12:50:51 2019 +0000"
      },
      "message": "Merge \"ART: Enable ISA features run-time detection for ARM64\""
    },
    {
      "commit": "b87eedcec661cb2e3d4d4fb359f764f187580cac",
      "tree": "41116f0a5ad831fe7b4881a8f311a0b123165f1f",
      "parents": [
        "53a41ac9305f3c435cbb975d773bbdb5490d8321"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 31 16:58:51 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jan 31 17:45:46 2019 +0000"
      },
      "message": "x86/x86-64: Fix IMT conflict trampoline for obsolete methods.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nBug: 123693178\nChange-Id: I06c08151fc3045824610d3d2e177cc13243b7e0a\n"
    },
    {
      "commit": "7f88c1a269754001bfcaf311b378cf1cc71acf84",
      "tree": "147bb988929e8bd8827c4b148f28da4c28c0ea70",
      "parents": [
        "5247113f3277fd679e3e1beeb6fbfb30797aa481"
      ],
      "author": {
        "name": "xueliang.zhong",
        "email": "xueliang.zhong@linaro.org",
        "time": "Tue Nov 06 11:42:41 2018 +0000"
      },
      "committer": {
        "name": "Evgeny Astigeevich",
        "email": "evgeny.astigeevich@linaro.org",
        "time": "Wed Jan 30 14:09:25 2019 +0000"
      },
      "message": "ART: Enable ISA features run-time detection for ARM64\n\nOn a target run-time detected ISA features can be more accurate than\ninstruction set features based on a build-time information such as an\ninstruction set variant or C++ defines. Build-time based features can\nbe too generic and do not include all features a target CPU supports.\n\nThis CL enables instruction feature run-time detection in the JIT/AOT\ncompilers:\n\n- The value \"runtime\" to the option \"--instruction-set-features\" to try\nto detect CPU features at run time. If a target does not support run-time\ndetection it has the same effect as the value \"default\".\n- Runtime uses \"--instruction-set-features\u003druntime\" if run-time detection is\nsupported.\n\nThe CL also cleans up how an instruction set feature string is processed\nby InstructionSetFeatures::AddFeaturesFromString. It used to make redundant\nuses of Trim in subclasses. The calls are replaced with DCHECKs\nverifying that feature names are already trimmed.\n\nTest: m test-art-target-gtest\nTest: m test-art-host-gtest\nTest: art/test.py --target --optimizing --interpreter --jit\nTest: art/test.py --host --optimizing --interpreter --jit\nTest: Pixel 3 UI booted\n\nChange-Id: I223d5bc968d589dba5c09f6b03ee8c25987610b0\n"
    },
    {
      "commit": "639b2b1f3a675135d443fc380323fbc48639a7eb",
      "tree": "0aba54938e712e5dd95b525c92f836c59cca49c6",
      "parents": [
        "8764dc3b3eda7f6f13ed7b584475503fe5bedd59"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 08 10:32:50 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:30 2019 -0800"
      },
      "message": "ART: Remove instruction_set.h from thread.h\n\nMove the function definitions relying on it to the -inl. Some\nfollow-up transitive-include cleanup, as well as some more\nforward-declarations.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I820f395e6cb8343a4bb9bf02da271fbec067109f\n"
    },
    {
      "commit": "5a0430d0239481f4efb252d60ec9641703b8d456",
      "tree": "cd7bdb45d94e7af3aa3e1bbb5958f930bcee29f6",
      "parents": [
        "b9b995738c8f53d68446d14553c1befd487877e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jan 04 14:33:57 2019 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 09 12:38:20 2019 -0800"
      },
      "message": "ART: Introduce runtime_globals\n\nSplit libartbase\u0027s globals.h into actual globals, and runtime-\ndependent globals which should live in runtime.\n\nBlanket-convert all runtime/ inclusions.\n\nIn future CLs, the number of global constants should be reduced.\nFor example, GC types are only relevant to GC/alloc functionality.\n\nBug: 119869270\nTest: mmma art\nChange-Id: I2d8cd32e0e7ab4084d2f2e96864b5338a78da94e\n"
    },
    {
      "commit": "98ea9d9d82ab078ca10fa7f8e02eddda94cf1d98",
      "tree": "a848b7e41ff227a2d3d4d6795ec11089f39cb6ca",
      "parents": [
        "02338775e33b553be51d44ff60bb1ef8e527bd94"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 19 14:06:15 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 23 15:19:55 2018 -0700"
      },
      "message": "ART: Refactor for bugprone-argument-comment\n\nHandles runtime.\n\nBug: 116054210\nTest: WITH_TIDY\u003d1 mmma art\nChange-Id: Ibc0d5086809d647f0ce4df5452eb84442d27ecf0\n"
    },
    {
      "commit": "60c5bc1a273c3dc8828088c4336b410516e846d6",
      "tree": "67948b596d446bc92f819d05072c744d43a7d47b",
      "parents": [
        "df7c2a6ac8c49156c45e2c69c0dae5bddd67801f"
      ],
      "author": {
        "name": "Shalini Salomi Bodapati",
        "email": "shalini.salomi.bodapati@intel.com",
        "time": "Tue Oct 23 11:15:33 2018 +0530"
      },
      "committer": {
        "name": "Shalini Salomi Bodapati",
        "email": "shalini.salomi.bodapati@intel.com",
        "time": "Tue Oct 23 06:06:47 2018 +0000"
      },
      "message": "Add a new cpu variant named kabylake\n\nThis is needed to perform instruction simplification\non cpus that support AVX2 feature flag.\n\nTest: ./test.py --host --64, test-art-host-gtest\nChange-Id: I3e300dff56b8ec5d6f170f3c3840faafa87c3dd6\nSigned-off-by: Shalini Salomi Bodapati \u003cshalini.salomi.bodapati@intel.com\u003e\n"
    },
    {
      "commit": "f73cacaae3d8f89327d8886b37792a849cabd9ac",
      "tree": "79047e31d512d065db47af7e68fa155c1f638f11",
      "parents": [
        "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 17:19:07 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:09:40 2018 +0100"
      },
      "message": "Remove superfluous \u0027virtual\u0027 specifiers in ART.\n\nRemove \u0027virtual\u0027 specifier on methods already bearing the \u0027override\u0027\nspecifier.\n\nTest: mmma art\nChange-Id: I114930969a5ca048d88de9ecd18e2c6403593e31\n"
    },
    {
      "commit": "bbc6e7edb5fca4a61ac53dd9bce79cb4f0bb3403",
      "tree": "0fbce767bc383358cf4cd65aafc74140e1850982",
      "parents": [
        "19379b58bd433da91230e4fe6cd96e7416d16adc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 24 16:58:47 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 28 11:06:07 2018 +0100"
      },
      "message": "Use \u0027final\u0027 and \u0027override\u0027 specifiers directly in ART.\n\nRemove all uses of macros \u0027FINAL\u0027 and \u0027OVERRIDE\u0027 and replace them with\n\u0027final\u0027 and \u0027override\u0027 specifiers. Remove all definitions of these\nmacros as well, which were located in these files:\n- libartbase/base/macros.h\n- test/913-heaps/heaps.cc\n- test/ti-agent/ti_macros.h\n\nART is now using C++14; the \u0027final\u0027 and \u0027override\u0027 specifiers have\nbeen introduced in C++11.\n\nTest: mmma art\nChange-Id: I256c7758155a71a2940ef2574925a44076feeebf\n"
    },
    {
      "commit": "9d479254d0dc4043a15ab26205f40439eca15493",
      "tree": "af8a9c9c6f2c28e723a971c9d39c9d1cebd1f814",
      "parents": [
        "ca20fb6cc4dda392e63bdc8ec9de54d89793373e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jul 24 11:35:20 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Aug 03 11:43:30 2018 +0000"
      },
      "message": "Rename type resolution entrypoints.\n\nRename the InitializeType and InitializeTypeAndVerifyAccess\nentrypoints to Resolve* to better match their semantics.\nKeep the InitializeStaticStorage name for now as the most\nappropriate name InitializeType would clash with the old\nname of the ResolveType entrypoint.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: Ide55b58c490d085ab37d8536f90699f7ed571d59\n"
    },
    {
      "commit": "cdfc942e60032622b5a4379d0dd5ca914ba6393a",
      "tree": "823e767f6eba6fb2831f69753936bc0c35eea84e",
      "parents": [
        "ec1f1a91328f44d93cfc16e39160dbdfce2f7b9a",
        "f5f56c791c5853f43a2a9781c98d5776c7dd5a59"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 13 16:35:30 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 13 16:35:30 2018 +0000"
      },
      "message": "Merge \"Revert \"Emit vector mulitply and accumulate instructions for x86.\"\""
    },
    {
      "commit": "f5f56c791c5853f43a2a9781c98d5776c7dd5a59",
      "tree": "ed8270e3a5d0161ebe5bec0606a24cd5e3123e59",
      "parents": [
        "61908880e6565acfadbafe93fa64de000014f1a6"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 13 00:05:27 2018 +0000"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 13 00:05:27 2018 +0000"
      },
      "message": "Revert \"Emit vector mulitply and accumulate instructions for x86.\"\n\nThis reverts commit 61908880e6565acfadbafe93fa64de000014f1a6.\n\nReason for revert: By failing to round multiply results, it does not follow Java rounding rules.\n\nChange-Id: Ic0ef08691bef266c9f8d91973e596e09ff3307c6\n"
    },
    {
      "commit": "d109e30eab8ba25f8d89be2a83d9036e2d541af2",
      "tree": "24df91603efe9ce8c4a2efd09ac402aceb10df4e",
      "parents": [
        "c916736ca1e375c276df251446baf2ac8ff3eb13"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Jun 27 10:25:41 2018 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 10 08:44:51 2018 -0700"
      },
      "message": "Don\u0027t use StringFactory.newEmptyString in compiled code\n\nWhen compiling debuggable code we would compile a new-instance String\ninstruction into a StringFactory.newEmptyString invoke. This\nadditional invoke could be observed using tracing and is inconsistent\nwith the interpreter, where the string is simply allocated directly.\nIn order to bring these two modes into alignment we added a new\nAllocStringObject quick entrypoint that will be used instead of the\nnormal AllocObject\u003c...\u003e entrypoints when allocating a string. This\nentrypoint directly allocates a new string in the same manner the\ninterpreter does.\n\nNeeds next CL for test to work.\n\nBug: 110884646\nTest: ./test/testrunner/testrunner.py --host --runtime-option\u003d-Xjitthreshold:0 --jit\nTest: Manual inspection of compiled code.\nChange-Id: I7b4b084bcf7dd9a23485c0e3cd2cd04a04b43d3d\n"
    },
    {
      "commit": "61908880e6565acfadbafe93fa64de000014f1a6",
      "tree": "40b535db9175f3d959364d5bc30eaab4e2c4b4c4",
      "parents": [
        "b5271dd44a30f498689e503340d3c8d01bf31f07"
      ],
      "author": {
        "name": "Gupta Kumar, Sanjiv",
        "email": "sanjiv.kumar.gupta@intel.com",
        "time": "Fri Jun 29 13:06:35 2018 +0530"
      },
      "committer": {
        "name": "Gupta Kumar, Sanjiv",
        "email": "sanjiv.kumar.gupta@intel.com",
        "time": "Mon Jul 02 15:37:38 2018 +0530"
      },
      "message": "Emit vector mulitply and accumulate instructions for x86.\n\nThis patch adds a new cpu vaiant named kabylake and performs\ninstruction simplification to generate VectorMulitplyAccumulate.\n\nTest: ./test.py --host --64\n\nChange-Id: Ie6cc882dadf1322dd4d3ae49bfdb600b0c447765\nSigned-off-by: Gupta Kumar, Sanjiv \u003csanjiv.kumar.gupta@intel.com\u003e\n"
    },
    {
      "commit": "4c8e12e66968929b36fac6a2237ca4b04160161e",
      "tree": "d8bbfd72a978c69ef2eef98c37e7869673c52295",
      "parents": [
        "20c64f8d802cc575cc9a1a1f6c493a611b23e2ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 18 08:33:20 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jun 11 10:57:17 2018 +0100"
      },
      "message": "ART: Adds an entrypoint for invoke-custom\n\nAdd support for the compiler to call into the runtime for\ninvoke-custom bytecodes.\n\nBug: 35337872\nTest: art/test.py --host -r -t 952\nTest: art/test.py --target --64 -r -t 952\nTest: art/test.py --target --32 -r -t 952\nChange-Id: I821432e7e5248c91b8e1d36c3112974c34171803\n"
    },
    {
      "commit": "cd260ebf53e0e05bd75c37c4139f32782eb4ad97",
      "tree": "dab8e9054c59c16303ab9c8aeed01edeb0bb12da",
      "parents": [
        "408bdc604e4fe230bf90ffa6816bfbbb3786806e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jun 06 09:04:17 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jun 08 14:56:10 2018 +0100"
      },
      "message": "ART: Simplify invoke-polymorphic entrypoints\n\nMoves to pattern used by the interpreter bridge and writes the result\nin both the regular return register and the floating point result\nregister.\n\nAdd return value tests to 956-method-handles.\n\nTest: art/test.py --host -r -t 956\nTest: art/test.py --target --32 -r -t 956\nTest: art/test.py --target --64 -r -t 956\nChange-Id: I7389d04b70b88e149682f6d656ab185e48bcbf66\n"
    },
    {
      "commit": "d352156dfeadc72fda186ef8dcbeea4d06eee509",
      "tree": "64ff7c025cacac290e21beea27ef6533e4f04d79",
      "parents": [
        "cbe50e965be5bcc7e9e0bba8b52a9b1adb7c291f",
        "d3083dd15af1cb4ffc13d87a7d2c3be2edb9199d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 15:33:35 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 22 15:33:35 2018 +0000"
      },
      "message": "Merge \"Refactor runtime callee save frame info.\""
    },
    {
      "commit": "d3083dd15af1cb4ffc13d87a7d2c3be2edb9199d",
      "tree": "88dd2599ad89da5a4f2668a2c9debd0335669cd0",
      "parents": [
        "6623bc389c43efc87668ce7465e19b195e765e22"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu May 17 08:43:47 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 14:38:14 2018 +0100"
      },
      "message": "Refactor runtime callee save frame info.\n\nAnd avoid storing the info in Runtime.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nChange-Id: Ib14853fc06c420753993e1f9e82a1b01f5e35e8c\n"
    },
    {
      "commit": "c8b1d5e0f2112c78aeed0d114b0c4f8b6a234c10",
      "tree": "20b4fc7c62243a6616aa04661b8750cad9d4f1bc",
      "parents": [
        "6623bc389c43efc87668ce7465e19b195e765e22"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 15 16:07:12 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon May 21 10:02:23 2018 +0100"
      },
      "message": "ARM/ARM64: Improve lock/unlock entrypoints.\n\nDo the same in fewer instructions.\n\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing\nChange-Id: I8003481116fd3dc6a1559b84fdc776b92dba0c68\n"
    },
    {
      "commit": "dbaa5c7ba8935cf87ceb40a4054f9842929e9a51",
      "tree": "5037625c80cb97a0e13026dc450db28e59ff72ca",
      "parents": [
        "51dda39549033b3c50a7fce5522ffc81325db54b"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 08:22:46 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri May 11 11:55:30 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-handle\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I67f461c819a7d528d7455afda8b4a59e9aed381c\n"
    },
    {
      "commit": "18259d7fb7164a5e029df4f883b3a79ccc2403e8",
      "tree": "ba378bfdef4127bb0607215186e3b150fd38bcdf",
      "parents": [
        "922501b4bbf724e4259477a27764291684eedffb"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Apr 12 11:18:23 2018 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu May 10 15:04:09 2018 +0100"
      },
      "message": "ART: Compiler support for const-method-type\n\nImplemented as a runtime call.\n\nBug: 66890674\nTest: art/test.py --target -r -t 979\nTest: art/test.py --target --64 -r -t 979\nTest: art/test.py --host -r -t 979\nChange-Id: I4b3d3969d455d0198cfe122eea8abd54e0ea20ee\n"
    },
    {
      "commit": "1979c64214bd505c013d573bc8729ee94f7bdea5",
      "tree": "9b4b2298b8b9d15cd6ca0a1e06e3771f3db2163f",
      "parents": [
        "5a87e19e4bf1b6719c2aad3effde1b38d2c3085c"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 14:41:18 2018 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Apr 26 15:08:49 2018 -0700"
      },
      "message": "Clean up include paths\n\nRemove runtime/globals.h and make clients point to the right globals.h\n(libartbase/base/globals.h).  Also make within-libartbase includes\nrelative rather than using base/, etc.\n\nBug: 22322814\nTest: make -j 40 checkbuild\nChange-Id: I99de63fc851d48946ab401e2369de944419041c7\n"
    },
    {
      "commit": "175e7862dbdb44089ef327fc43ba00c791fd3838",
      "tree": "7b7ff4327b51b57e47e4b22af8d771edb9d462c1",
      "parents": [
        "77c6fc7341143dd27c74cddd786398688d7b4c91"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 27 09:03:13 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Mar 27 10:04:25 2018 +0100"
      },
      "message": "Revert^4 \"Compiler changes for bitstring based type checks.\"\n\nDisabled the build time flag. (No image version bump needed.)\n\nBug: 26687569\nBug: 64692057\nBug: 76420366\n\nThis reverts commit 3fbd3ad99fad077e5c760e7238bcd55b07d4c06e.\n\nChange-Id: I5d83c4ce8a7331c435d5155ac6e0ce1c77d60004\n"
    },
    {
      "commit": "3fbd3ad99fad077e5c760e7238bcd55b07d4c06e",
      "tree": "e8bc33fa60c38f7e1c85f8d4acf6a738df9b426a",
      "parents": [
        "3f41323cc9da335e9aa4f3fbad90a86caa82ee4d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 26 21:14:46 2018 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 26 21:14:46 2018 +0000"
      },
      "message": "Revert^3 \"Compiler changes for bitstring based type checks.\"\n\nThis reverts commit 3f41323cc9da335e9aa4f3fbad90a86caa82ee4d.\n\nReason for revert: Fails sporadically.\n\nBug: 26687569\nBug: 64692057\nBug: 76420366\nChange-Id: I84d1e9e46c58aeecf17591ff71fbac6a1e583909\n"
    },
    {
      "commit": "3f41323cc9da335e9aa4f3fbad90a86caa82ee4d",
      "tree": "ce41c620d2cd411da3c20aa95fb9a69328e77c42",
      "parents": [
        "9ec1e24ebc683b15bb9c6db5554ac2ff9458adae"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 12 18:39:15 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 22 12:12:39 2018 +0000"
      },
      "message": "Revert^2 \"Compiler changes for bitstring based type checks.\"\n\nAdd extra output for debugging failures and re-enable\nthe bitstring type checks.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: testrunner.py --host -t 670-bitstring-type-check\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nTest: testrunner.py --target -t 670-bitstring-type-check\nBug: 64692057\nBug: 26687569\n\nThis reverts commit bff7a52e2c6c9e988c3ed1f12a2da0fa5fd37cfb.\n\nChange-Id: I090e241983f3ac6ed8394d842e17716087d169ac\n"
    },
    {
      "commit": "946bb09a5adc7d591498b4504aa5d9354457953e",
      "tree": "3f1931a9117856c806b8371987700b5646a7d195",
      "parents": [
        "68f0680e83179cfe0127fda54a8e02a8552bf619"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 09 17:23:01 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 15 14:59:21 2018 +0000"
      },
      "message": "Support unwinding though the switch interpreter.\n\nWrap the switch interpreter in small assembly method which defines\nDEX PC in CFI and thus it allows libunwind to backtrace through it.\n\nBug: 22414682\nTest: testrunner.py --host -t 137\nTest: testrunner.py --target -t 137\nChange-Id: I31dad9f0fb446151baaa99234b64f25c8ca2fa87\n"
    },
    {
      "commit": "1f49d979a0a239ea33750e8d07073b4df8b5da6f",
      "tree": "76727676f4d1d2a8465ac029795e55e30883377d",
      "parents": [
        "79b144527bee5c384791fb826a45d5f411fd8b6d"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 09 23:23:36 2018 +0000"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 09 23:24:42 2018 +0000"
      },
      "message": "Fix mac build: Update cfi directives for art_quick_osr_stub.\n\nMac build doesn\u0027t like cfi directives.\n\nBug: 73954823\nTest: testrunner.py -t 570 --jit\nChange-Id: Idbe44646c20d17079528a82bdb0c915691ac2748\n"
    },
    {
      "commit": "79b144527bee5c384791fb826a45d5f411fd8b6d",
      "tree": "0498c71d665334fb0b0c0d4361b138a17c6b8414",
      "parents": [
        "398daffb3e216ff7d552e50f47f93523409bca6e"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 28 14:44:33 2018 -0800"
      },
      "committer": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Thu Mar 08 16:36:28 2018 +0000"
      },
      "message": "Update cfi directives for art_quick_osr_stub.\n\nBug: 73954823\n\nTest: testrunner.py -t 570 --jit\nTest: Check the backtrace works in gdb at every instruction.\nChange-Id: I7ad5463eca89851a0ce6fd4354e888ca5a0f9918\n"
    },
    {
      "commit": "bff7a52e2c6c9e988c3ed1f12a2da0fa5fd37cfb",
      "tree": "e281a8dde61e396ed5f20c31d41086b1b1b18389",
      "parents": [
        "83af48e9f4cdfcf3f0069c63561bab4c176bd2f1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 25 13:33:07 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 25 15:05:16 2018 +0000"
      },
      "message": "Revert \"Compiler changes for bitstring based type checks.\"\n\nBug: 64692057\nBug: 71853552\nBug: 26687569\n\nThis reverts commit eb0ebed72432b3c6b8c7b38f8937d7ba736f4567.\n\nChange-Id: I7daeaa077960ba41b2ed42bc47f17501621be4be\n"
    },
    {
      "commit": "be2b613f5a30cdf2291b9f4f5d0acc2c1bb0b4ae",
      "tree": "0ff068df6465b52458ecca3de96d119234415def",
      "parents": [
        "2e1791b74406fba9930bbe5dfa5358d2d2c07e1a",
        "eb0ebed72432b3c6b8c7b38f8937d7ba736f4567"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 23 14:59:45 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 23 14:59:45 2018 +0000"
      },
      "message": "Merge \"Compiler changes for bitstring based type checks.\""
    },
    {
      "commit": "eb0ebed72432b3c6b8c7b38f8937d7ba736f4567",
      "tree": "74d95eb4bfbf01ef6fd3a68695f5d7cec69338d7",
      "parents": [
        "e57043081e6b091a9fd23a84043373148ae72f1f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 10 18:26:38 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jan 23 13:02:59 2018 +0000"
      },
      "message": "Compiler changes for bitstring based type checks.\n\nWe guard the use of this feature with a compile-time flag,\nset to true in this CL.\n\nBoot image size for aosp_taimen-userdebug in AOSP master:\n  - before:\n    arm boot*.oat: 63604740\n    arm64 boot*.oat: 74237864\n  - after:\n    arm boot*.oat: 63531172 (-72KiB, -0.1%)\n    arm64 boot*.oat: 74135008 (-100KiB, -0.1%)\n\nThe new TypeCheckBenchmark yields the following changes\nusing the little cores of taimen fixed at 1.4016GHz:\n                               32-bit        64-bit\n  timeCheckCastLevel1ToLevel1  11.48-\u003e15.80 11.47-\u003e15.78\n  timeCheckCastLevel2ToLevel1  15.08-\u003e15.79 15.08-\u003e15.79\n  timeCheckCastLevel3ToLevel1  19.01-\u003e15.82 17.94-\u003e15.81\n  timeCheckCastLevel9ToLevel1  42.55-\u003e15.79 42.63-\u003e15.81\n  timeCheckCastLevel9ToLevel2  39.70-\u003e14.36 39.70-\u003e14.35\n  timeInstanceOfLevel1ToLevel1 13.74-\u003e17.93 13.76-\u003e17.95\n  timeInstanceOfLevel2ToLevel1 17.02-\u003e17.95 16.99-\u003e17.93\n  timeInstanceOfLevel3ToLevel1 24.03-\u003e17.95 24.45-\u003e17.95\n  timeInstanceOfLevel9ToLevel1 47.13-\u003e17.95 47.14-\u003e18.00\n  timeInstanceOfLevel9ToLevel2 44.19-\u003e16.52 44.27-\u003e16.51\nThis suggests that the bitstring typecheck should not be\nused for exact type checks which would be equivalent to the\n\"Level1ToLevel1\" benchmark. Whether the implementation is\na beneficial replacement for the kClassHierarchyCheck and\nkAbstractClassCheck on average depends on how many levels\nfrom the target class (or Object for a negative result) is\na typical object\u0027s class.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing --jit\nTest: testrunner.py --host -t 670-bitstring-type-check\nTest: Pixel 2 XL boots.\nTest: testrunner.py --target --optimizing --jit\nTest: testrunner.py --target -t 670-bitstring-type-check\nBug: 64692057\nBug: 71853552\nBug: 26687569\nChange-Id: I538d7e036b5a8ae2cc3fe77662a5903d74854562\n"
    },
    {
      "commit": "4d17987da58d9411adbed1a18203d76d6119612d",
      "tree": "f2953a0eb3ebc3f8533d22c14f4a09d7f0d4168d",
      "parents": [
        "e57043081e6b091a9fd23a84043373148ae72f1f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jan 19 14:50:10 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 22 18:35:16 2018 +0000"
      },
      "message": "ART: Add entrypoint and intrinsic for Math.pow().\n\nMathBenchmarks.java#timePow results on taimen\u0027s little cores\nfixed at frequency 1401600 with forced JIT compilation:\n  - before:\n    - X32: 356.33 (@FastNative), 315.39 (@CriticalNative)\n    - X64: 357.31 (@FastNative), 315.37 (@CriticalNative)\n  - after (LICM defeats the benchmark):\n    - X32: 2.88\n    - X64: 2.87\n  - after but with kAllSideEffects to prevent LICM:\n    - X32: 275.42\n    - X64: 275.67\n\nTest: Rely on TreeHugger.\nBug: 70727450\nChange-Id: Iaa31f70acabbd57c163cfeafe02eed67c1348861\n"
    },
    {
      "commit": "bf92b3f2d3374eab6bc40cc41574b51aae5a3718",
      "tree": "e61d010ac4ce27810d0d34ffeca694a46c2a2fd5",
      "parents": [
        "fa0b0db6fbdcbf20bf78c53500ac98cfc3a26208"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 17 18:11:30 2018 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 17 18:19:32 2018 +0000"
      },
      "message": "Clean up art_quick_check_instance_of entrypoints.\n\nTest: Rely on TreeHugger.\nChange-Id: I848b8b711ac6bfa90999701a518e2e70b42c3d57\n"
    },
    {
      "commit": "809f5b1652eb68ad496af138370d2cc198510322",
      "tree": "d88f0ef90b317ae1f6d8356d132f267fa40951a2",
      "parents": [
        "3165bb09dc04b61abd04bf8e263dd85d610694e4"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jan 04 14:05:59 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jan 04 14:32:51 2018 +0000"
      },
      "message": "Explicitly document functions generated with macro ART_GET_FIELD_FROM_CODE.\n\nThe ART_GET_FIELD_FROM_CODE macro is used to generate the following\nset of functions:\n\n  art{Get,Set}\u003cKind\u003e{Static,Instance}FromCode\n  art{Get,Set}\u003cKind\u003e{Static,Instance}FromCompiledCode\n\nwhere \u003cKind\u003e is in {Byte,Boolean,Short,Char,32,64,Obj}.\n\nHowever, finding the definitions of these functions from their names\nwas difficult, as these definitions (and their name) are\ngenerated. This change explicitly mentions the name of the functions\ngenerated with macro ART_GET_FIELD_FROM_CODE in a commment, in order\nto improve their grep-ability.\n\nTest: mmma art\nChange-Id: I22bf4851c562801c491ccdea2d9d9c9f965b9a6f\n"
    },
    {
      "commit": "57943810cfc789da890d73621741729da5feaaf8",
      "tree": "367677a982a45af98ffe3e79543615875e8550b4",
      "parents": [
        "d5153627778e71ef68b510ce03c77467fa4d85bd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 06 21:39:13 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 07 16:26:11 2017 -0800"
      },
      "message": "ART: Replace base/logging with android-base/logging\n\nReplace wherever possible. ART\u0027s base/logging is now mainly VLOG\nand initialization code that is unnecessary to pull in and makes\nchanges to verbose logging more painful than they have to be.\n\nTest: m test-art-host\nChange-Id: I3e3a4672ba5b621e57590a526c7d1c8b749e4f6e\n"
    },
    {
      "commit": "2196c651ecc77e49992c6c329dfce45f78ff46cb",
      "tree": "4eb151632fc7b851101b4264286ce5e900fa06b5",
      "parents": [
        "dc93cac66f1db225474cec5bf0350fd7a148085e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:16:07 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 30 16:20:39 2017 +0000"
      },
      "message": "Revert^4 \"JIT JNI stubs.\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhas a bug fixed in the Revert^2,\n    https://android-review.googlesource.com/550579 ,\nand this Revert^4 adds two more fixes:\n    - fix obsolete native method getting interpreter\n      entrypoint in 980-redefine-object,\n    - fix random JIT GC flakiness in 667-jit-jni-stub.\n\nTest: testrunner.py --host --prebuild --no-relocate \\\n      --no-image --jit -t 980-redefine-object\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 056d7756152bb3ced81dd57781be5028428ce2bd.\n\nChange-Id: Ic778686168b90e29816fd526e23141dcbe5ea880\n"
    },
    {
      "commit": "056d7756152bb3ced81dd57781be5028428ce2bd",
      "tree": "154ae8968a450a2e02d88207fa09e380fd380553",
      "parents": [
        "e7441631a11e2e07ce863255a59ee4de29c6a56f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 30 09:12:13 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT JNI stubs.\"\"\"\n\nStill seeing occasional failures on 667-jit-jni-stub\n\nBug: 65574695\nBug: 69843562\n\nThis reverts commit e7441631a11e2e07ce863255a59ee4de29c6a56f.\n\nChange-Id: I3db751679ef7bdf31c933208aaffe4fac749a14b\n"
    },
    {
      "commit": "e7441631a11e2e07ce863255a59ee4de29c6a56f",
      "tree": "a0488fac018ea391d01b751b7254719937bdee8f",
      "parents": [
        "aa25db7d2a6f7f507c27ce49c99a33daf3059f8f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 13:00:56 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 29 14:04:26 2017 +0000"
      },
      "message": "Revert \"Revert \"JIT JNI stubs.\"\"\n\nThe original CL,\n    https://android-review.googlesource.com/513417 ,\nhad a bug for class unloading where a read barrier was\nexecuted at the wrong time from\n    ConcurrentCopying::MarkingPhase() -\u003e\n    ClassLinker::CleanupClassLoaders() -\u003e\n    ClassLinker::DeleteClassLoader() -\u003e\n    JitCodeCache::RemoveMethodsIn() -\u003e\n    JitCodeCache::JniStubKey::UpdateShorty() -\u003e\n    ArtMethod::GetShorty().\nThis has been fixed by removing sources of the read barrier\nfrom ArtMethod::GetShorty().\n\nTest: testrunner.py --host --prebuild --jit --no-relocate \\\n      --no-image -t 998-redefine-use-after-free\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 47d31853e16a95393d760e6be2ffeeb0193f94a1.\n\nChange-Id: I06e7a15b09d9ff11cde15a7d1529644bfeca15e0\n"
    },
    {
      "commit": "47d31853e16a95393d760e6be2ffeeb0193f94a1",
      "tree": "344b0fddbbcc9a64bed2ba20dbe73fb227c2bdf4",
      "parents": [
        "3417eaefe4e714c489a6fb0cb89b4810d81bdf4d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 18:36:12 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 18:36:12 2017 +0000"
      },
      "message": "Revert \"JIT JNI stubs.\"\n\nSeems to break 998-redefine-use-after-free in\nsome --no-image configuration.\n\nBug: 65574695\nBug: 69843562\n\nThis reverts commit 3417eaefe4e714c489a6fb0cb89b4810d81bdf4d.\n\nChange-Id: I2dd157b931c17c791522ea2544c1982ed3519b86\n"
    },
    {
      "commit": "3417eaefe4e714c489a6fb0cb89b4810d81bdf4d",
      "tree": "fe97f5191d25d26ef4250280f4c599b3a50f2059",
      "parents": [
        "7bdc6e73fd97eb75f30b77f183e4fe6c2c599a09"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 21 18:14:28 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Nov 28 13:00:09 2017 +0000"
      },
      "message": "JIT JNI stubs.\n\nAllow the JIT compiler to compile JNI stubs and make sure\nthey can be collected once they are not in use anymore.\n\nTest: 667-jit-jni-stub\nTest: Pixel 2 XL boots.\nTest: m test-art-host-gtest\nTest: testrunner.py --host --jit\nTest: testrunner.py --target --jit\nBug: 65574695\nChange-Id: Idf81f50bcfa68c0c403ad2b49058be62b21b7b1f\n"
    },
    {
      "commit": "2ffb703bf431d74326c88266b4ddaf225eb3c6ad",
      "tree": "0552c3c76a42b18f9e7460d501fb71a6dc2e7f33",
      "parents": [
        "c4b6f3116f15c8e4fdf2e4f604ababdee12d8923"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 13:35:21 2017 -0800"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Nov 08 15:15:52 2017 -0800"
      },
      "message": "cpplint: Cleanup errors\n\nCleanup errors from upstream cpplint in preparation\nfor moving art\u0027s cpplint fork to upstream tip-of-tree cpplint.\n\nTest: cd art \u0026\u0026 mm\nBug: 68951293\nChange-Id: I15faed4594cbcb8399850f8bdee39d42c0c5b956\n"
    },
    {
      "commit": "33bff25bcd7a02d35c54f63740eadb1a4833fc92",
      "tree": "553db4f60878acf2a0fa7036a739d406df9a29b7",
      "parents": [
        "321b3ca9a36d769283c64d4bdee0798db80af524"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 01 14:35:42 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 02 10:11:02 2017 +0000"
      },
      "message": "ART: Make InstructionSet an enum class and add kLast.\n\nAdding InstructionSet::kLast shall make it easier to encode\nthe InstructionSet in fewer bits using BitField\u003c\u003e. However,\nintroducing `kLast` into the `art` namespace is not a good\nidea, so we change the InstructionSet to an enum class.\nThis also uncovered a case of InstructionSet::kNone being\nerroneously used instead of vixl32::Condition::None(), so\nit\u0027s good to remove `kNone` from the `art` namespace.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --optimizing\nChange-Id: I6fa6168dfba4ed6da86d021a69c80224f09997a6\n"
    },
    {
      "commit": "43f0cdbe3281cd5c9a33d5472b1538e5617f6691",
      "tree": "afed702b60c483bd5fa63be7cb3ad866b83d24d1",
      "parents": [
        "26ef34c01ae5db2d3c964844b3717b8974a612c9"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Oct 10 14:47:32 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 01 16:22:45 2017 +0000"
      },
      "message": "ART: Intrinsify polymorphic signature methods\n\nAdds VarHandle accessor method to list of intrinsics.\n\nAdds code to interpreter to ensure intrinsics with polymorphic\nsignatures are initialized.\n\nRename most uses of InvokePolymorphic to InvokeMethodHandle (and\nsimilar changes) to be clear that the particular code path applies to\nMethodHandle instances rather than VarHandle.\n\nChange-Id: Ib74865124a1e986badc0a7c4bb3d782af07225d4\nBug: 65872996\nTest: art/test.py --host\n"
    },
    {
      "commit": "2ee17909eadd7155f4a7751c38398b36fc267f04",
      "tree": "2d13de7e9aae9d24ceb4ff1e03f81e46a5aee54b",
      "parents": [
        "1accd636dc90edef2878f0b8e2716b078379842e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Aug 30 11:37:08 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Sep 05 13:22:15 2017 -0700"
      },
      "message": "Revert^4 \"Allow deoptimization when returning from a runtime method.\"\n\nThis reverts commit 07c7028e518b98d3267a77dfe0d149db1adbe858.\n\nNeed some special treatment of string init\u0027s shorty.\n\nTest: run-test/gtest on both host and target\nTest: 597-deopt-busy-loop, 597-deopt-invoke-stub\nBug: 33616143\nChange-Id: Id4c64910acfdd088835b6db6fc503e6ade0218e7\n"
    },
    {
      "commit": "80be041454871a9b72c39790a10954595d721a63",
      "tree": "19e23b45ff88c0b9639b873eba959c1cfec5e34a",
      "parents": [
        "8ef4b6121ea496d38c0b8aeebad3f1227f819b17",
        "5122e6ba34d46851cd89f2ad55bf6bb067e038d6"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 30 13:47:46 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 30 13:47:46 2017 +0000"
      },
      "message": "Merge \"ART: Remove ArtMethod::dex_cache_resolved_methods_.\""
    },
    {
      "commit": "07c7028e518b98d3267a77dfe0d149db1adbe858",
      "tree": "71fbc9572541cdf08c21c88e3a1d5ff92f1d9885",
      "parents": [
        "047abb20d02546d3dd6e8630befc31e5568fa90e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 30 08:09:42 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 30 08:09:42 2017 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\"\n\nBug: 33616143\n\ndeopt string test still failing on occasion.\n\nThis reverts commit 047abb20d02546d3dd6e8630befc31e5568fa90e.\n\nChange-Id: I89fc28696290da52317d0e3dd07ecf0d1bdac823\n"
    },
    {
      "commit": "5122e6ba34d46851cd89f2ad55bf6bb067e038d6",
      "tree": "e96ba37b6451be7a06d930b0274251cac35ce05e",
      "parents": [
        "02cb397857c979dffae95e2db2678a72ec407cf0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 17 16:10:09 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Aug 29 11:29:31 2017 +0100"
      },
      "message": "ART: Remove ArtMethod::dex_cache_resolved_methods_.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --target on Nexus 6P\nTest: Repeat the above tests with ART_HEAP_POISONING\u003dtrue\nTest: Build aosp_mips64-eng\nChange-Id: I9cd0b8aa5001542b0863cccfca4f9c1cd4d25396\n"
    },
    {
      "commit": "047abb20d02546d3dd6e8630befc31e5568fa90e",
      "tree": "dfe08cef1f53a7559f792221e3e06dccbe704380",
      "parents": [
        "95d9bdd36b7ae6682f8602292fd547a0faa73829"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Aug 23 15:26:57 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Aug 24 14:36:21 2017 -0700"
      },
      "message": "Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\n\nThis reverts commit 2b87ae0073256e909e15f464300912552e58ee48.\n\nFor an invocation runtime method such as quick-to-interpreter bridge,\nadd a special stack walk to get the shorty for the invoked method.\n\nTest: run-test/gtest on both host and target, and 597-deopt-runtime-method.\nBug: 33616143\n\nChange-Id: I53ae93880f62c95dcf48005239b925d7f7b11eb6\n"
    },
    {
      "commit": "2b87ae0073256e909e15f464300912552e58ee48",
      "tree": "0b9db32799d6efa93d3db6dca5170d185627e138",
      "parents": [
        "fc63babf6be7bdd96be1492391594ad628f1fd3c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 23 10:16:26 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 23 10:16:47 2017 +0000"
      },
      "message": "Revert \"Allow deoptimization when returning from a runtime method.\"\n\nReason for revert:\n    Some tests failing even after a minor fix.\n\nThis reverts commit edeba10d523c3e283ab939a16c7203af32c7707e.\n\nChange-Id: I6407c9b489c016d19a12c28d1da0efa55ad554a7\n"
    },
    {
      "commit": "edeba10d523c3e283ab939a16c7203af32c7707e",
      "tree": "88f13395178e7a17979dcb0666c65c024732be6b",
      "parents": [
        "c9d88538d73680563f7a6e73885acfff2c55ef58"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 12 13:43:15 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 21 16:44:57 2017 -0700"
      },
      "message": "Allow deoptimization when returning from a runtime method.\n\nThis CL patches the return pc of a runtime method to allow the top\nJava frame to be deoptimized. This should fix the issue that debugger\ncannot break in a busy loop. It also means we can now do full async\ndeoptimization, if we want to enable it by letting environment keep\nregisters live.\n\nart_quick_instrumentation_exit and art_quick_deoptimize now need to save\nall registers since some compiler slow paths assume runtime methods save\neverything.\n\nSome special handling needs to be done to decide whether dex_pc should\nbe advanced when deoptimized back to interpreter.\n\nTest: run-test/gtest on both host and target, and 597-deopt-runtime-method.\nBug: 33616143\nChange-Id: I2e2c199998825afd5057f7deadfc8fa203ce1936\n"
    },
    {
      "commit": "0a87a653a296854c9a0abacd9bb1557ee4c4d05d",
      "tree": "4763469d136f3879bbce93521827717dbe05bd5b",
      "parents": [
        "52a3c989f96984f9bc9e02620694fc44708a1df2"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 12 13:43:15 2017 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 07 11:49:38 2017 -0700"
      },
      "message": "Add two special runtime methods.\n\nThis is in preparation for being able to deoptimize upon returning\nfrom a runtime method. We need to identify two special runtime methods:\nclinit and suspend-check since if deoptimization happens when returning\nfrom these two methods, we need to execute the dex instruction that\ncorresponds to the dex pc of the deoptimization point. A clinit can\nbe implicit for an invoke-static, in which case the invocation hasn\u0027t\nhappen yet so we have to execute the invoke-static in the interpreter.\nFor a suspend-check, the dex instruction for it hasn\u0027t been executed yet.\n\nTest: full run-test/gtest on both host and target.\nBug: 33616143\nChange-Id: Id1bdfcfa84a9ca27d5ee9da4b4a99467b1a4a845\n"
    },
    {
      "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": "c73753f70ab4fc9a166637bee514b292f0fa0109",
      "tree": "a464e300d44b5a3eca10cb00cc42be7c1ab9da96",
      "parents": [
        "530a6b6902b50db43659757a6270b7d111d93a2c",
        "07bfbace6f835e6c748fd68ec7624992478b16c1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Jul 21 09:41:58 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 21 09:41:58 2017 +0000"
      },
      "message": "Merge \"Hash-based DexCache methods array.\""
    },
    {
      "commit": "07bfbace6f835e6c748fd68ec7624992478b16c1",
      "tree": "5d094a00fbc90455bd9b53e042cf8b4fe8433462",
      "parents": [
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 06 14:55:02 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 16:33:00 2017 +0100"
      },
      "message": "Hash-based DexCache methods array.\n\nTotal boot*.art size for aosp_angler-userdebug:\n  - arm64:\n    - before: 11603968\n    - after: 10129408 (-1.4MiB, -12.7%)\n  - arm:\n    - before: 8626176\n    - after: 7888896 (-0.7MiB, -8.5%)\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nTest: Build aosp_mips64-eng\nBug: 30627598\nChange-Id: I7f858605de5f074cbd7f0d9c4c072fbd44aee28f\n"
    },
    {
      "commit": "5354af9d047429b989bf42a4db2f8390cc3467e8",
      "tree": "25e0aaa3dcf4da018ad9bff7113ce6d66af6e937",
      "parents": [
        "6f7b23acfccd7ec0f13ad51747bd60c682655025"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 19 11:13:27 2017 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Wed Jul 19 11:17:20 2017 -0700"
      },
      "message": "Refined HasAtLeast() for x86 and x86_64.\n\nRationale:\nThis refinement is needed once we start passing in more\narchitecture specific flags on x86_* builds. This CL\nalso makes the arm version a bit more readable.\n\nTest: instruction_set_features_test\nBug: 63585550\n\nChange-Id: Ia6fe47654141feaf1899da225abaee8a5ea8249a\n"
    },
    {
      "commit": "be3d72300221e94bb1cb3acb9a2a06c6a0f6dac4",
      "tree": "50bcac9226f13d2f516bb67ac5f78e0dac50d523",
      "parents": [
        "b96ed2c271a56fb8be0c8f30231710095e66a201"
      ],
      "author": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Tue Jun 13 16:05:13 2017 -0700"
      },
      "committer": {
        "name": "George Burgess IV",
        "email": "gbiv@google.com",
        "time": "Thu Jun 22 21:41:19 2017 -0700"
      },
      "message": "Fix static analyzer warnings\n\nThis fixes warnings like:\n\nruntime/arch/*/context_*.h: warning: Call to virtual function during\nconstruction will not dispatch to derived class\n\nThese occur because clang can\u0027t tell whether these Context subclasses\nthemselves have subclasses. Since they\u0027re effectively final already, the\nsimplest fix is to mark them as final.\n\nBug: 32619234\nTest: test-art-host. Rebuilt ART with the analyzer to verify that these\nissues are gone.\nChange-Id: Idcdd8387e16869564999ca318692dfcc90006b8d\n"
    },
    {
      "commit": "d455b87f4805fcec6c78fbf9a48b0bf23bbc9467",
      "tree": "9d22ba4b91f3cf91c416d1310168932720508c0e",
      "parents": [
        "df2898236114f8fec51afe71a3b6f31868794e1b",
        "9877855b59abd42112fa799c143255d3f8d9da3d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:42:24 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 12 15:42:24 2017 +0000"
      },
      "message": "Merge \"x86/x86-64: Fix art_quick_instrumentation_exit CFI.\""
    },
    {
      "commit": "9877855b59abd42112fa799c143255d3f8d9da3d",
      "tree": "444a1080b52cf77926393515cbbc598e7a7b152f",
      "parents": [
        "fed9cb178be878f4e5ff862ac78ae2cf5ad305d3"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 14:04:52 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 14:07:10 2017 +0100"
      },
      "message": "x86/x86-64: Fix art_quick_instrumentation_exit CFI.\n\nTest: Rely on TreeHugger.\nBug: 62490325\nChange-Id: I1918cc21d67e61996224bec9a4ddf2e2098a649c\n"
    },
    {
      "commit": "4e44dcc82997cd0471946bceabd5a8477bfff118",
      "tree": "8effe3f25d49ff5860ae91453f8fc6cb07586e0d",
      "parents": [
        "9e20fd6376f846f474310b24525198c83ed7b660",
        "b8bff09cd5beb70b7598285ab4aea92115f0ade2"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 09 23:06:31 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 09 23:06:36 2017 +0000"
      },
      "message": "Merge \"X86: Add sandybridge microarchitecture\""
    },
    {
      "commit": "9e20fd6376f846f474310b24525198c83ed7b660",
      "tree": "0ff27ddb84ce36080823c7a9658e848607159b24",
      "parents": [
        "13600e9cd7536b7cd8d93c32270f5f08076f5d6d",
        "b7edcda968bb0cbaa69a3ad387fcd3194f5612be"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 09 22:07:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 09 22:07:43 2017 +0000"
      },
      "message": "Merge \"Add method tracing JVMTI callbacks\""
    },
    {
      "commit": "b8bff09cd5beb70b7598285ab4aea92115f0ade2",
      "tree": "88174f6a00528b8911277563d6bba09c1c35c364",
      "parents": [
        "58794c5c23f46a7476a58e5a10dbeebb6321aa90"
      ],
      "author": {
        "name": "Luis Hector Chavez",
        "email": "lhchavez@google.com",
        "time": "Fri Jun 09 12:33:04 2017 -0700"
      },
      "committer": {
        "name": "Luis Hector Chavez",
        "email": "lhchavez@google.com",
        "time": "Fri Jun 09 13:43:04 2017 -0700"
      },
      "message": "X86: Add sandybridge microarchitecture\n\nART was not aware of sandybridge CPU featureset, so it turned off all\nfeatures (ISA: X86 Feature string: -ssse3,-sse4.1,-sse4.2,-avx,-avx2,\n-popcnt). Meanwhile, the Android build does turn on the corresponding\ncompiler flags (ISA: X86 Feature string: ssse3,sse4.1,sse4.2,-avx,\n-avx2,popcnt). This change adds \"sandybridge\" to the relevant lists so\nit can detect the features correctly.\n\nBug: 62389235\nTest: Android runs on Chromebooks\nTest: m test-art-host-gtest-instruction_set_features_x86_test\n\n(cherry picked from commit 702e27249893104230f826b82b7a3723ec3b7240)\n\nChange-Id: Ie47aed190ac83b35b6d3994d703c463c9efd5e25\n"
    },
    {
      "commit": "58794c5c23f46a7476a58e5a10dbeebb6321aa90",
      "tree": "948368dd8d8376a50fe996da0438abe10da1322d",
      "parents": [
        "73321bfdd7e96e3ce62042c9e5be567ed0db1985",
        "5678db5b3a0275d04bc610236f89fac9f76b5b1e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 09 18:00:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 09 18:00:43 2017 +0000"
      },
      "message": "Merge \"ART: Refactor bit_utils and stl_util\""
    },
    {
      "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": "5678db5b3a0275d04bc610236f89fac9f76b5b1e",
      "tree": "efc4ffe5d59a0c6c5f4c15a886459962d24de4aa",
      "parents": [
        "83b140474aa1759739c8ee4464bf226c4fa0f6d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 14:11:18 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 14:11:18 2017 -0700"
      },
      "message": "ART: Refactor bit_utils and stl_util\n\nMove iterator code from bit_utils.h into bit_utils_iterator.h. Move\nIdentity into stl_util_identity.h. Remove now unnecessary includes,\nand fix up transitive users.\n\nTest: m\nChange-Id: Id1ce9cda66827c5d00584f39ed310b6b37629906\n"
    },
    {
      "commit": "8228cdf4ad6322ec8133564aaa51f966d36c0f17",
      "tree": "6d2f5cf4e742ad644ad30eb96a9f943c9ebcb34b",
      "parents": [
        "83b140474aa1759739c8ee4464bf226c4fa0f6d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 15:03:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 08 13:13:15 2017 -0700"
      },
      "message": "ART: Move CalleeSaveType to callee_save_type.h\n\nMove the type out of runtime to decrease dependencies. Make it\na proper enum class. Fix up usage.\n\nTest: m test-art-host\nChange-Id: Id84c44bf3c59f37c8a43548e720c5fb65707b198\n"
    },
    {
      "commit": "b486a98aadc95d80548953410cf23edba62259fa",
      "tree": "b113b7d50a4a015502873b7742c9ece00d293e84",
      "parents": [
        "1656ca9e6996cb555b4463e5efd4bd7e3f4fb816"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 13:45:54 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 02 08:24:02 2017 -0700"
      },
      "message": "ART: Introduce thread-current-inl.h\n\nFactor out Thread::Current() code into its own -inl file to remove\ntransitive includes.\n\nThis requires at the same time correcting mutex.h, i.e., moving\nsome functions into mutex-inl.h.\n\nTest: m test-art-host\nChange-Id: I88f888b604e0897368d9b483edce6ce4332dd9c9\n"
    },
    {
      "commit": "4e92c3ce7ef354620a785553bbada554fca83a67",
      "tree": "42029deff4d3ba7f89b5fdbf79ff410da575f431",
      "parents": [
        "549844e9ccf432d1396b19af890eedb602b8ba04"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 08 09:34:26 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 10 09:27:33 2017 +0100"
      },
      "message": "Add runtime reasons for deopt.\n\nCurrently to help investigate. Also:\n1) Log when deoptimization happens (which method and what reason)\n2) Trace when deoptimization happens (to make it visible in systrace)\n\nbug:37655083\nTest: test-art-host test-art-target\nChange-Id: I0c2d87b40db09e8e475cf97a7c784a034c585e97\n"
    },
    {
      "commit": "3768adec2f819cb506577618fdde158ba659ddd4",
      "tree": "38f929a1ec79088f1f4d3a205672acfb261af94b",
      "parents": [
        "55e8cd14fdbe257f4ecdd5d629eef6b8c93567c9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 02 14:04:39 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 02 19:42:39 2017 -0700"
      },
      "message": "Revert \"Revert \"Add concurrent card graying for immune spaces\"\"\n\nAdded an additional checkpoint before the concurrent graying to set\nthe mark entrypoints to non-null.\n\nBug: 37876887\n\nTest: test-art-host\n\nThis reverts commit c83dd7bfde2171c879efb92a31a363505385ffb9.\n\nChange-Id: I961c4631c9595c52cd7765f61b22b8291fef2088\n"
    },
    {
      "commit": "34ed966ae7e232817dd70afb924518b7cb8fb6a9",
      "tree": "5f49eeac52491dc7325105d669aa456fad61dd4c",
      "parents": [
        "2ad1894b9d85fb8d5f431762515b2ffdb1e16ab5",
        "afdcbcb56d0c2f985d0291c369bbc493eedb05b0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 27 17:30:40 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 27 17:30:41 2017 +0000"
      },
      "message": "Merge \"Remove some hardcoded cases of kCardShift\""
    },
    {
      "commit": "afdcbcb56d0c2f985d0291c369bbc493eedb05b0",
      "tree": "236266aadd25eff5f37ca08e5295ae4b96065dcb",
      "parents": [
        "8d0f3aaf28358697ec812955cdf975ca6c6ff901"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 26 16:43:35 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 26 16:48:27 2017 -0700"
      },
      "message": "Remove some hardcoded cases of kCardShift\n\nAlso added cpp-define-generator to do this. This makes it easier to\nchange the GC card size.\n\nBug: 36457259\nTest: test-art-host\n\nChange-Id: I03b59f2bbb9b483280bea34575f5373ec6b15b98\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": "91119d69f0736f6dbd350c433632af2618c7575a",
      "tree": "b38e77c02921bdf036809c6a102ebcefa39b5e89",
      "parents": [
        "682282eaac86202652e17752ef32f14c89e2ccda"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 18 11:18:56 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Apr 18 14:04:20 2017 -0700"
      },
      "message": "fault_handler: use SafeCopy to decode x86 instruction length.\n\nPrevent a crash in the x86 fault handler when pc points to garbage and\nwe try to figure out its instruction length.\n\nBug: http://b/30836730\nTest: m test-art-host\nChange-Id: Ic1fbb8856e30140f0e1ebc9caccf9559e88ff137\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": "fe102795cf1526e8b48c564a91d81ec218f3387a",
      "tree": "9d0a220268768ea55d121da86cd1fa39df674e69",
      "parents": [
        "63badfb7f155c6561ff3dd9aadd410e42836149d",
        "efd20cb2f63cf647c7d947d00e8987affefeb177"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Mar 10 02:49:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 10 02:49:49 2017 +0000"
      },
      "message": "Merge \"Catch signals that happen inside a fault handler.\""
    },
    {
      "commit": "5667f56867383fc4113aa4a6551efdf9f48ee5e7",
      "tree": "fed4de9fbacff02d86afdeb93cee54a7174d52b0",
      "parents": [
        "68948e01f56ad1996af77f4c0aab721940b0e18d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Feb 27 19:32:01 2017 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 08 16:46:37 2017 -0800"
      },
      "message": "Modify invoke interface trampoline to pass interface method.\n\nThis avoids touching the code item in the case that the interface method\nis resolved and in the dex cache. If it\u0027s not, the trampoline will still\nhave to go to the code item to try to resolve it.\n\nBug: 35800981\nTest: mm test-art-host\nChange-Id: Ia0e1d23429b3b928bcec727f4f2f16b7834408e5\n"
    },
    {
      "commit": "efd20cb2f63cf647c7d947d00e8987affefeb177",
      "tree": "666ea53832f1085378bcc75620f314ba1f46a330",
      "parents": [
        "caa348cee1312150a957bd308ce77ad406f3eb64"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Feb 28 16:53:59 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 08 15:07:49 2017 -0800"
      },
      "message": "Catch signals that happen inside a fault handler.\n\nUnblock some signals (SIGABRT, SIGBUS, SIGSEGV) that could happen\ninside of the ART internal fault handlers, to report crashes inside of\nthe signal handler. Because we can\u0027t use sigaction to change the\nhandler when this happens, because it modifies global state, add a new\nmember variable in Thread to track whether a call to the fault handler\nis reentrant or not.\n\nRemove the old nested signal implementation that attempted to do this.\n\nBug: http://b/35853436\nTest: changed the #if 0 to #if 1, ran a dummy process that\n      threw a NullPointerException, inspected logcat\nChange-Id: I04bb4a09433c6817933d64ec681ec433b528f2a5\n"
    },
    {
      "commit": "ea4c126a0165c5a4b997986e6e01c7f975642167",
      "tree": "0fdfd53472db379a1702846a89933ff1be7a4137",
      "parents": [
        "f8512f8515f7568984e1ca209929262ea88e4b59"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 06 19:59:33 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 08 21:24:01 2017 +0000"
      },
      "message": "Change type initialization entrypoints to kSaveEverything.\n\nAlso avoid the unnecessary read barriers for boot image\nclasses with kBssEntry or kJitTableAddress (the kBssEntry\nand JIT work missed the `read_barrier_option` flag), fix\nbit-rotten non-Baker read barriers on ARM and ARM64 and\nfix bit-rotten ARM64 relative patcher\u0027s IsAdrpPatch() used\nfor erratum 843419 workaround.\n\naosp_angler-userdebug with CC:\n  before:\n    arm boot*.oat: 35440420\n    arm64 boot*.oat: 43504952\n  after:\n    arm boot*.oat: 35222292 (-218128, -0.62%)\n    arm64 boot*.oat: 43389048 (-115904, -0.26%)\n\naosp_angler-userdebug without CC:\n  before:\n    arm boot*.oat: 31927412\n    arm64 boot*.oat: 39340512\n  after:\n    arm boot*.oat: 31708736 (-218676, -0.68%)\n    arm64 boot*.oat: 39211768 (-128744, -0.33%)\n\nTest: m test-art-host (non-CC, Baker CC, table lookup CC)\nTest: m test-art-target on Nexus 6P (non-CC, Baker CC, table lookup CC)\nTest: Nexus 6P boots (non-CC, Baker CC, table lookup CC)\nBug: 30627598\nChange-Id: Ida5bbce414844de9e4273e40334165d4494230d4\n"
    },
    {
      "commit": "d09584456559f669f5999fb1ff32aa89ebf6ef4e",
      "tree": "3820a5e6505823f8b92f1cc5dcde11995c025e3b",
      "parents": [
        "588ef19c89c8299362c952037a926078740f2090"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 14:57:16 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 03 09:10:57 2017 +0000"
      },
      "message": "Align allocation entrypoints implementation between arm/arm64/x86/x64.\n\nx64:\n- Add art_quick_alloc_initialized_rosalloc\n\nx86:\n- Add art_quick_alloc_initialized_rosalloc\n- Add art_quick_alloc_initialized{_region}_tlab\n- Add art_quick_alloc_array_resolved{8,16,32,64}{_region}_tlab\n\narm32:\n- Add art_quick_alloc_initialized_rosalloc\n- Add art_quick_alloc_initialized{_region}_tlab\n- Add art_quick_alloc_array_resolved{8,16,32,64}{_region}_tlab\n\narm64:\n- Add art_quick_alloc_initialized_rosalloc\n- Add art_quick_alloc_initialized{_region}_tlab\n- Add art_quick_alloc_array_resolved{8,16,32,64}_tlab\n\nTest: test-art-target test-art-host\nbug: 30933338\n\nChange-Id: I0dd8667a2921dd0b3403bea5d05304ba5d40627f\n"
    },
    {
      "commit": "79da138c1c2d6b9b0aba55f93399b4205e52ff66",
      "tree": "5109b8406c969104dbe10b290b99924ce66b746b",
      "parents": [
        "f6fe51ddf1e37597482928017856ae139595667e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 26 16:24:32 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 26 16:24:32 2017 +0000"
      },
      "message": "Forgot stack alignment on x86.\n\ntest: ART_TEST_RUN_TEST_NO_RELOCATE\u003dtrue m test-art-host test-art-target\nChange-Id: I1996c0d85228e5cad7bee4387260821d9d209b11\n"
    },
    {
      "commit": "6ebb7cc1b79eb4a133ada5e4f7a775c25bc8ca06",
      "tree": "1a60e5724314b0ea9dd778d2b184d45ae5dd9fc5",
      "parents": [
        "2dc330b52a405c56bc334c615116d7e76d46fe7f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 26 15:18:52 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 26 15:19:38 2017 +0000"
      },
      "message": "Forgot this change from last commit.\n\nTest: 529-checker-unresolved\nChange-Id: I14b6a8d81a7a885cff36d3361f83d891e3ff9956\n"
    },
    {
      "commit": "5b3c6c0fcca76d82a4c9acb03f7714457ae53dd9",
      "tree": "e1678dcd577abb63391a0cfcbb27a69a0ac4e769",
      "parents": [
        "c9569731061e560cb56116255b00a49d6a5daeb8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 14:22:26 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 26 10:37:58 2017 +0000"
      },
      "message": "Refactor code for unresolved field entrypoint.\n\n- Do macro magic to avoid source code duplication.\n- Do not fetch the referrer from the assembly, but\n  from the C entrypoint instead.\n\nTest: test-art-host test-art-target\n\nChange-Id: Ib139c94bc8f74686640cad538ba75dc56fa00e1d\n"
    },
    {
      "commit": "39cee66a8ddf0254626c9591662cf87e4a1cedc4",
      "tree": "be25df71e51ce03a8847c23934322b8f282a291b",
      "parents": [
        "a3974581751cd73a896f7c4fcab71beb17c4f9dc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jan 13 16:04:53 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 11:12:33 2017 +0000"
      },
      "message": "Entrypoints cleanup.\n\nRemove unused ones to facilitate the transition to compressed\ndex caches.\n\ntest: test-art-host, test-art-target\nChange-Id: I1d1cb0daffa86dd9dda2eaa3c1ea3650a5c8d9d0\n"
    },
    {
      "commit": "ac141397dc29189ad2b2df41f8d4312246beec60",
      "tree": "a2f481463a14695bf9327fd2f549878ecf30c77b",
      "parents": [
        "5c9f90c5ecf2ff6f93ada0f7b18b46d866c59ea1"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 13 11:53:47 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Sun Jan 15 15:18:07 2017 +0000"
      },
      "message": "Revert \"Revert \"ART: Compiler support for invoke-polymorphic.\"\"\n\nThis reverts commit 0fb5af1c8287b1ec85c55c306a1c43820c38a337.\n\nThis takes us back to the original change and attempts to fix the\nissues encountered:\n\n- Adds transition record push/pop around artInvokePolymorphic.\n- Changes X86/X64 relocations for MacSDK.\n- Implements MIPS entrypoint for art_quick_invoke_polymorphic.\n- Corrects size of returned reference in art_quick_invoke_polymorphic\n  on ARM.\n\nBug: 30550796,33191393\nTest: art/test/run-test 953\nTest: m test-art-run-test\n\nChange-Id: Ib6b93e00b37b9d4ab743a3470ab3d77fe857cda8\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": "c8144cdad955b77988a48777cfbdc6fd2e8c1916",
      "tree": "354e00610ec25279a8c4b77e8b685e380815813f",
      "parents": [
        "d1a277954284c4dd4b5b14fd4e58f1854daed848",
        "f7aaacd97881c6924b8212c7f8fe4a4c8721ef53"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jan 12 06:19:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 12 06:19:23 2017 +0000"
      },
      "message": "Merge \"Revert \"Make object allocation entrypoints only take a class.\"\""
    },
    {
      "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": "0fb5af1c8287b1ec85c55c306a1c43820c38a337",
      "tree": "66239e7f745fae54e1630e91fb44a859bff615d6",
      "parents": [
        "02e3092f8d98f339588e48691db77f227b48ac1e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 11 18:58:15 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 11 19:17:33 2017 +0000"
      },
      "message": "Revert \"ART: Compiler support for invoke-polymorphic.\"\n\nThis reverts commit 02e3092f8d98f339588e48691db77f227b48ac1e.\n\nReasons for revert:\n\n- Breaks MIPS/MIPS64 build.\n- Fails under GCStress test on x64.\n- Different x64 build configuration doesn\u0027t like relocation.\n\nChange-Id: I512555b38165d05f8a07e8aed528f00302061001\n"
    },
    {
      "commit": "02e3092f8d98f339588e48691db77f227b48ac1e",
      "tree": "127dd23346206b0547b7c6453a776253252b3c6e",
      "parents": [
        "bc7d0deda4549f314e68ee3e0e6afd68c4a8fd06"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Dec 01 10:33:51 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 11 16:26:43 2017 +0000"
      },
      "message": "ART: Compiler support for invoke-polymorphic.\n\nAdds basic support to invoke method handles in compiled code.\n\nEnables method verification for methods containing invoke-polymorphic.\n\nAdds k45cc/k45rc output to Instruction::DumpString() which\nwas found to be missing when enabling verification.\n\nInclude stack traces in test 957-methodhandle-transforms for\nfailures so they can be easily identified.\n\nBug: 30550796,33191393\nTest: art/test/run-test 953\nTest: m test-art-run-test\nChange-Id: Ic9a96ea24906087597d96ad8159a5bc349d06950\n"
    },
    {
      "commit": "bc7d0deda4549f314e68ee3e0e6afd68c4a8fd06",
      "tree": "66239e7f745fae54e1630e91fb44a859bff615d6",
      "parents": [
        "816988efb80dafc8c060d5bdc16687c878c29894",
        "b595b40c151c7e6de5e95944f6b993c57e780dd5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Jan 11 11:25:38 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 11 11:25:38 2017 +0000"
      },
      "message": "Merge \"Remove the unused SMP instruction set feature option.\""
    },
    {
      "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": "b595b40c151c7e6de5e95944f6b993c57e780dd5",
      "tree": "6b66aec7d041d5ab49b5061f0af2e5776284f596",
      "parents": [
        "6d2741f18be435c686bd774eecb7359c17ae2132"
      ],
      "author": {
        "name": "Serban Constantinescu",
        "email": "serban.constantinescu@linaro.org",
        "time": "Fri Sep 23 11:06:03 2016 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Mon Jan 09 15:18:41 2017 +0000"
      },
      "message": "Remove the unused SMP instruction set feature option.\n\nThe SMP option is currently not used in the ART codebase\n(and it rots away).\nSingle CPU systems that run SMP code should be able to deal\nwith it nicely (otherwise the CPU has some serious problems).\n\nTest: mma test-art-target \u0026\u0026 mma test-art-host\n\nChange-Id: Ifaab42b29de1062866a0af7525de2f834a4a5a57\n"
    },
    {
      "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": "9186ced255f2e7402646b5b286deebb540640734",
      "tree": "833c25fd3bbb47749265947705b4fc0f0c1ba796",
      "parents": [
        "aa2657d6d9dda2e44c6452e5f5901db78ef9b3cc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 12 14:28:21 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Dec 13 11:43:48 2016 -0800"
      },
      "message": "ART: Clean up utils.h\n\nRemove functionality provided by libbase. Move some single-use\nfunctions to their respective users.\n\nTest: m test-art-host\nChange-Id: I75594035fa975200d638cc29bb9f31bc6e6cb29f\n"
    },
    {
      "commit": "85b38bd1fdf4a3aaf073e0aa1f901271b7bab338",
      "tree": "c63fe08ec17c5682bdb86824d3a99905390cf30f",
      "parents": [
        "2ba0c377ec9e6cb9d59dbafdacc363b8a44e46c4",
        "fbc75db230ff393ea1d0f2dcacd7a6fb71556cce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 01 09:07:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 01 09:07:36 2016 +0000"
      },
      "message": "Merge \"Remove the fast path in art_quick_resolve_string.\""
    }
  ],
  "next": "5ace201d84adb7753680bf4c7877b3b71558da82"
}
