)]}'
{
  "log": [
    {
      "commit": "fb6b0b1b04081f9ef7a240f702d8ce4e61a02e9f",
      "tree": "ae24c7d7bf4493ab9dc881c7b3b95ef8f706974d",
      "parents": [
        "680e88ba30d1c599c5eaab4a207db3e39bf2d57f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 11 20:47:56 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jan 08 18:48:47 2018 -0800"
      },
      "message": "ART: Add support for VMStack.getAnnotatedStackTrace\n\nAdd Thread.CreateAnnotatedStackTrace to return an array that\ncontains an AnnotatedStackTraceElement for each stack frame,\nwith the StackTraceElement describing the frame, an array\ncontaining all objects that are locked at the described location,\nand optionally for the top frame an object the thread is blocked\non, waiting for or sleeping on.\n\nAdd a test.\n\nBug: 70538431\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py -b --host -t 168\nChange-Id: I0d92e3d8182c4a592549a6445854816f71afd29e\n"
    },
    {
      "commit": "71a7b36894114d02860d2e64b9396dbd5e0b9b38",
      "tree": "ceb72fb04618577004707042f4f7a9086da0dbeb",
      "parents": [
        "bf84c1bbdbfd8d1e071ac8f3d6cc09e934212b5b",
        "4131d1096ac57a29ba1939c1cf2cb74144c16c92"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Mon Jan 08 08:10:48 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 08 08:10:48 2018 +0000"
      },
      "message": "Merge \"ART: Additional Atomic methods\""
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "4131d1096ac57a29ba1939c1cf2cb74144c16c92",
      "tree": "d3ac7e0732eac24602718ee2d2af33641b4cf13e",
      "parents": [
        "bd018439d78f89c84df061173521dbd91666c02e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 14:04:42 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 05 09:34:26 2018 +0000"
      },
      "message": "ART: Additional Atomic methods\n\nA few additional methods on the Atomic class to support the\ninterpreter VarHandles implementation.\n\nMinor renaming of Atomic::FetchAnd{Or,And}.* to\nAtomic::FetchAndBitwise{Or,And}.*.\n\nMinor updates for consistency in the choice of argument names and doc\ncomments.\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: Iae35286935fbb270478082fed2fe74abb7b68c57\n"
    },
    {
      "commit": "4557b3858a66aa20e42bce937e1f0620aad880a2",
      "tree": "8f34d8f014b11f17c6351bb955fcc74c940b8d16",
      "parents": [
        "90f20973356900e340998e8e2b34230e5c4c8fb0"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 11:47:54 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 03 12:45:40 2018 +0000"
      },
      "message": "ART: Rename Atomic::CompareExchange methods\n\nRenames Atomic::CompareExchange methods to Atomic::CompareAndSet\nequivalents. These methods return a boolean and do not get the witness\nvalue. This makes space for Atomic::CompareAndExchange methods in a\nlater commit that will return a boolean and get the witness value.\n\nThis is pre-work for VarHandle accessors which require both forms.\n\nBug: 65872996\nTest: art/test.py --host -j32\nChange-Id: I9c691250e5556cbfde7811381b06d2920247f1a1\n"
    },
    {
      "commit": "1d32a16f93d8bb479523fd237277ecbbff5bf1f4",
      "tree": "399e9c129d6d1bc6ca761026654711ba774879a4",
      "parents": [
        "9ad08a3ea53487066cd39fafa46b98bb70685b14",
        "55256cb60e11d4fac71affb4b9760a2931a3598d"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Dec 22 20:09:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Dec 22 20:09:22 2017 +0000"
      },
      "message": "Merge \"Extensions to check JNI.\""
    },
    {
      "commit": "55256cb60e11d4fac71affb4b9760a2931a3598d",
      "tree": "fc1ed6885b013e0aa2bcfd9ef4dd94fec29bd382",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 21 17:07:11 2017 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 22 10:11:39 2017 -0800"
      },
      "message": "Extensions to check JNI.\n\nEnsure critical lock isn\u0027t held when returning from a down-call.\nLog a warning if the critical lock is held for a significant period of\ntime.\nRefactor JNIEnvExt to be a class rather than a struct.\n\nTest: mma test-art-host\n\nChange-Id: I4d149cb04d3a7308a22b92b196e51e2f1ae17ede\n"
    },
    {
      "commit": "808c7a57bb913b13c22884f57cdacd59bf1fdb3f",
      "tree": "d7f0d7cabaac5a7646c25bae584a82a9aa279cc0",
      "parents": [
        "64bae9fb677aa0e2406d13ea9f8ebaa92e16f978"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 15 11:19:33 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 22 09:41:17 2017 -0800"
      },
      "message": "Make CodeItem fields private\n\nMake code item fields private and use accessors. Added a hand full of\nfriend classes to reduce the size of the change.\n\nChanged default to be nullable and removed CreateNullable.\nCreateNullable was a bad API since it defaulted to the unsafe, may\nadd a CreateNonNullable if it\u0027s important for performance.\n\nMotivation:\nHave a different layout for code items in cdex.\n\nBug: 63756964\nTest: test-art-host-gtest\nTest: test/testrunner/testrunner.py --host\nTest: art/tools/run-jdwp-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I42bc7435e20358682075cb6de52713b595f95bf9\n"
    },
    {
      "commit": "9ff1251fed35356bf74dc875ae9b0cea9e50a3b0",
      "tree": "ff371b868daeb8092f879b8c29bf93f819b09494",
      "parents": [
        "192cf6e300316d3fbbead115b1ca50ed3dc2f4b3"
      ],
      "author": {
        "name": "Kazuhiro Inaba",
        "email": "kinaba@google.com",
        "time": "Mon Dec 04 16:26:38 2017 +0900"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 15 09:33:37 2017 +0000"
      },
      "message": "ART: Null thread_name check for loggings in rare occasions.\n\nPassing null char* to ostream::operator\u003c\u003c is undefined and can cause\na crash (for instance when libc++ is used) instead of printing the log.\n\nBug: None (crbug.com/531282)\nTest: None\n\nChange-Id: Ieb1f0fc50723b06e72b66b1da7b6abe58d5b9a02\n"
    },
    {
      "commit": "9310495f3bb601058a3b6dedc298ad9f5275510e",
      "tree": "14472899a051a890a429c687836e15407f76cb74",
      "parents": [
        "ed416f76ae679d92f0bc648581de2684ff93e29a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 13 17:13:15 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 14 17:11:22 2017 -0800"
      },
      "message": "ART: Factor out stack dumping with monitor objects\n\nFactor out generic stack walking with monitor object visitation into\nMonitorObjectsStackVisitor. Rewrite StackDumpVisitor in terms of this,\nremoving Monitor::DescribeWait on the way.\n\nBug: 70538431\nTest: m test-art-host\nTest: manual (SIGQUIT dumping)\nChange-Id: I6f359f9a5f665f308328ad466bc7a437f52aea24\n"
    },
    {
      "commit": "b6f309e4e9b7c0531f8d09998b48d82b45714173",
      "tree": "da2e45e4ef317fbd9ff1e9ef2913c407332689fa",
      "parents": [
        "ba3a790338725a37ecd4cb314c4a6147e29aef38"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 11 20:45:41 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 14 11:17:41 2017 -0800"
      },
      "message": "ART: Factor out StackTraceElement creation\n\nMove to a helper function to aid future reuse.\n\nBug: 70538431\nTest: m test-art-host\nChange-Id: Ia7c26d707abbae3a9d5cc5db99007e34a8ab6b62\n"
    },
    {
      "commit": "7919db947bc41f6f5d194c50b88d0cba47319a1c",
      "tree": "ae1aa7fed4e9a6c6bbec3fc1c2b85cef173e737c",
      "parents": [
        "50f90a44f8cd1928054245cab4cd3bd47a1a6347"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 29 09:00:55 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Dec 01 08:55:08 2017 -0800"
      },
      "message": "Speed up MterpShouldSwitchInterpreters check\n\nWe were often performing a pair of TLS reads in order to determine in\nthe current thread has any pending asynchronous exceptions (exceptions\nthrown by the JVMTI StopThread function). This is quite slow and was\nimpacting some benchmarks. Since it is expected that asynchronous\nexceptions are extremely rare we will first check to see if any\nasynchronous exceptions have been sent on the current process. Only if\nat least one asynchronous exception has been thrown will we do the\nexpensive TLS lookups to determine if one has been thrown on the\ncurrent thread.\n\nUsing a global instance value without synchronization or atomics is ok\nhere since the checkpoint that actually sets the async_exception_thrown\nflag provides synchronization by either occurring on the target thread\nor passing the checkpoint.\n\nAccording to go/lem this gives us a 7% increase on the caffeine\nstring benchmark.\n\nTest: go/lem runs\nTest: ./test.py --host -j50\nBug: 68010816\nChange-Id: I62684a5b3a7fc7cc600f5efd2a2393d9c4025917\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": "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": "98ac0cce960ed7df71def630871aec04ac878dfa",
      "tree": "0ca17af216cd1a4846e05bbfbac89244afc1468d",
      "parents": [
        "ca4e1014634aefb9c2dbb431d6b312e4ad912ca2",
        "df00a1ed1a0b633a1e66f1f650f53c22ea260e5b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Nov 01 20:42:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 01 20:42:05 2017 +0000"
      },
      "message": "Merge \"Prevent abort in situations with recursive checkpoints\""
    },
    {
      "commit": "df00a1ed1a0b633a1e66f1f650f53c22ea260e5b",
      "tree": "82b965a44ce46f51def31e1e311a26ee991ee868",
      "parents": [
        "a2cbb2b0723a3fa05cc44e13cbe90543b3236883"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 01 09:29:53 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Nov 01 11:47:01 2017 -0700"
      },
      "message": "Prevent abort in situations with recursive checkpoints\n\nIn situations where there were multiple checkpoints queued and the\nfirst one causes the thread to suspend itself again then the\nRunCheckpointFunction function will hit a LOG(FATAL) and abort. This\nis because the recursive checkpoint will clear out the checkpoint\nbacklog and the first RunCheckpointFunction invocation will\nunexpectedly find itself without any more checkpoints to run and\nabort.\n\nTo fix this, and simplify the code at the same time, we have changed\nthe RunCheckpointFunction method to (as its name suggests) only run a\nsingle checkpoint function. It will pop this function off the stack of\npending checkpoints and run it relying on the caller to ensure that\nall pending checkpoints are handled. This is fine since, due to the\nmultithreaded nature of checkpoints, the caller must call\nRunCheckpointFunction in a loop anyway to ensure it does not advance\nuntil all checkpoints have been handled.\n\nWe add test 203-multi-checkpoints that tests that the checkpoint\nsystem does not fall over if there are multiple checkpoints some of\nwhich can suspend.\n\nBug: 67838964\nTest: ./test.py --host -j50\nChange-Id: Ib6a3e083e6069d4839647d194bee6849d973633e\n"
    },
    {
      "commit": "891a50e9dc0f02ee34bd7348f80b621249153af5",
      "tree": "6af57b3aa8961ed8e6cd39fdf5a0ac335905b4c6",
      "parents": [
        "13e6f2935d67742e9eec14b412d33bf71b20697b"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Oct 27 17:01:07 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Nov 01 11:39:19 2017 -0700"
      },
      "message": "Separate file utilities from utils.cc\n\nReduce the dependencies from utils.cc to arch/ subdirectories, etc.\n\nBug: 22322814\nTest: make test-art-host\nChange-Id: I4decd15ff4ec460735bfb58cebb1c6a1bf32b68f\n"
    },
    {
      "commit": "373a9b5c718a45ac484afcf4fe6ce84f4bb562b3",
      "tree": "52a3e78fa8bc94a76674caaae837c728332d05dc",
      "parents": [
        "d0332e01ac26c2fd0a900de000a55ed5768ff936"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 18 09:01:57 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 25 10:13:59 2017 -0700"
      },
      "message": "ART: Depend on libnativehelper headers only\n\nDepend on header-only versions where possible. Move projects\nexcluding libart to libnativehelper_header_only.\n\nBug: 65522645\nTest: mmma art\nChange-Id: I53dd3b2a97e94ee685f72de007ed3858f7f5c6b6\n"
    },
    {
      "commit": "b1e31a8337b9cce2f3160a972123886b355dce27",
      "tree": "30413acc04bd03c385b3b6023e332ecc535ff4ee",
      "parents": [
        "8cdfac752808784d29185710095ad104922cd861"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 04 16:57:36 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Oct 18 17:01:37 2017 -0700"
      },
      "message": "Change RequestSynchronousCheckpoint to release thread_list_lock_\n\nThe RequestSynchronousCheckpoint function in some cases needs to\nrelease the thread_list_lock_ as it waits for a checkpoint to be\nexecuted. This means that the thread being checkpointed might be\ndeleted. Previously it was not obvious this was the case since the\nthread_list_lock_ seemed to be held throughout the execution of the\nmethod.\n\nIn order to prevent bugs we make RequestSynchronousCheckpoint\nexplicitly release the thread_list_lock_ when executed, meaning code\nwill be aware that threads might die during its execution.\n\nBug: 67362832\nTest: ./test.py --host -j50\nChange-Id: I1cbdf7660096dc1908b0eeabc1062447307bc888\n"
    },
    {
      "commit": "f1671357148b0ed205c93d051efd03f49e774885",
      "tree": "3a54ee282a807d5f2ee6a878945aa9e896131288",
      "parents": [
        "844a4edc7f72e33a3b328c3d53ef710909d2273d",
        "54d39dc42630cd83f2d1bec5704805febb894819"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Oct 03 18:29:28 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 03 18:29:28 2017 +0000"
      },
      "message": "Merge changes from topic \"thread-stop\"\n\n* changes:\n  Implement JVMTI can_signal_thread capability.\n  Implement asynchronous exception support\n"
    },
    {
      "commit": "f67f115423c9ef5aa62a33c12670cd8f89457c9c",
      "tree": "9381a1f2a0d5d8c7a52bcbce3c09c819177972a3",
      "parents": [
        "2cda354d7fcd4e0a32462d4aaa448869a93b20a3",
        "df13240f4b9325b34d09e20cdac4e9a0b12ead61"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Sep 29 21:38:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 29 21:38:44 2017 +0000"
      },
      "message": "Merge \"Send ThreadEnd after clearing ThreadGroup.\""
    },
    {
      "commit": "df13240f4b9325b34d09e20cdac4e9a0b12ead61",
      "tree": "ed2e646165904d2e8c15210ddc84bfd98b8c8d9f",
      "parents": [
        "05727c50c8c329d03692ffe51dce453c54379d70"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 29 12:54:33 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Sep 29 13:09:58 2017 -0700"
      },
      "message": "Send ThreadEnd after clearing ThreadGroup.\n\nThe removal of a thread from it\u0027s thread group does cause managed code\nto execute so it could cause additional events to trigger in agents,\npotentially causing deadlocks. This changes where the event is\ntriggered to put it after the thread has been removed from its group.\n\nTest: ./test.py --host -j50\nBug: 67104807\n\nChange-Id: I53f53b2823835a9629842fb5c22079b3e42042d5\n"
    },
    {
      "commit": "a78f5b6da738d38b0833b223b42d4486273f05bd",
      "tree": "0d43fc24fbe1e8fb10e380124e1954cd7961d0b6",
      "parents": [
        "eb5bedd1ac81597aa9448f329d0269780f329aa3"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Sep 29 13:50:44 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Sep 29 13:50:44 2017 +0100"
      },
      "message": "Refactor conditional uses of ReadBarrier::AssertToSpaceInvariant.\n\nTest: m test-art-host\nBug: 12687968\nChange-Id: Idf7de149bc0d0dcfc9efe01918aa026754f9070d\n"
    },
    {
      "commit": "848574ca50bb7e2d109608359d1086b3ca6bb4b3",
      "tree": "6a3d55ae8b66279c1e417c7c5116394613037ae8",
      "parents": [
        "9c0a6ce0a41eaf78f3fc3224fc34195601b6e0b3"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Sep 25 16:59:39 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Sep 28 12:56:13 2017 -0700"
      },
      "message": "Implement asynchronous exception support\n\nThis CL implements async exception support in the switch interpreter.\nIt also adds support for the MTerp to detect and switch back to the\nswitch interpreter in cases where an async exception is detected.\n\nTests follow in next CL.\n\nTest: ./test.py --host -j50\n\nBug: 62821960\nBug: 34415266\n\nChange-Id: Idb53711a40c20f962de8aa6b74662676b8bd25c6\n"
    },
    {
      "commit": "b77b698f4550458725b72d3a451adca765f369cc",
      "tree": "edfc6a5b96325a6b4cdaa1a4e4428f1b677c7745",
      "parents": [
        "e5b35ed787fbfb388d162361310bae5b0e7682a7"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jun 08 18:03:48 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Sep 28 18:05:39 2017 +0100"
      },
      "message": "Check the to-space invariant on a delivered exception.\n\nTest: art/test/testrunner/testrunner.py\nBug: 62339341\nBug: 12687968\nChange-Id: Ida5e91031cd94429a72fcc9d4d1333d21dd07421\n"
    },
    {
      "commit": "4d159807a4854caa6396b708a38bbd6fa49d736f",
      "tree": "25c2ea8ce12881cf26c933c89a0a3096d260de46",
      "parents": [
        "08601a494e87dfba9b06f9fdea37c9342e4896d1",
        "0882af2e3ca253184b6ab56a8966a2f37407144e"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Tue Sep 19 16:37:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 19 16:37:30 2017 +0000"
      },
      "message": "Merge \"Shrink ART Mutex exclusive_owner_ field to Atomic\u003cpid_t\u003e\""
    },
    {
      "commit": "e2abbc604ce003c776c00ecf1293796bb4c4ac5a",
      "tree": "f7d124d1861cad2162c30dfe932bb4e1beaf41ef",
      "parents": [
        "7090dfe84f78b1928fcbdfd664d0dd9ea52633ff"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Sep 15 11:59:26 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 18 11:36:24 2017 -0700"
      },
      "message": "ART: Move kDexNoIndex to dex_file_types.h\n\nDefine the constant with the types to allow lowering the dependency\non DexFile.\n\nTest: m\nChange-Id: I3c61421db45be96d2057e01b1a7825883d8bd178\n"
    },
    {
      "commit": "0882af2e3ca253184b6ab56a8966a2f37407144e",
      "tree": "dc61cf0d66ec576c6b2e3b78b5fb304afd6994c9",
      "parents": [
        "6b411fc9fd94da3c552d8b96cee14f6414e7b734"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Thu Aug 31 15:21:57 2017 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed Sep 13 13:15:12 2017 -0700"
      },
      "message": "Shrink ART Mutex exclusive_owner_ field to Atomic\u003cpid_t\u003e\n\nThe old volatile uint64_t version had a data race, and was thus\ntechnically incorrect. Since it\u0027s unclear whether volatile uint64_t\nupdates are actually atomic on 32-bit platforms, even the informal\ncorrectness argument here already effectively assumed that the upper\n32 bits were zero. Don\u0027t store them. Explicitly complain if a pid_t\nmight be too big to support lock-free atomic operations.\n\nRemove many explicit references to exclusive_owner to avoid\nlittering the code with LoadRelaxed calls.\n\nThe return convention for GetExclusiveOwnerTid() was unclear\nfor the shared ownership case. It was previously treated\ninconsistently as 0 (pthread locks), (uint64_t)(-1U) and\n(uint64_t)(-1). Make it as consistent as easily possible, and\ndocument remaining weirdness.\n\nBug: 65171052\n\nTest: AOSP builds. Host tests pass.\n\nChange-Id: Ia99aca268952597a90b3c798b714cddbdc2c365e\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": "8ef4b6121ea496d38c0b8aeebad3f1227f819b17",
      "tree": "37847d1e1637ecf43cc11017c03f6cd626769311",
      "parents": [
        "8ee58600c368b7b00e54aff09c575d4e2904316e",
        "07c7028e518b98d3267a77dfe0d149db1adbe858"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Aug 30 09:49:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 30 09:49:52 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\"\""
    },
    {
      "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": "0b5cb35e40901303a4d4283722025d20f2e68e17",
      "tree": "1fc1d1de751e8587218c79291e09bdbfc4ab19df",
      "parents": [
        "5575513f1529ea43371a6d4d9a495b57e7d68409",
        "047abb20d02546d3dd6e8630befc31e5568fa90e"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Aug 28 16:30:48 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 28 16:30:48 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Allow deoptimization when returning from a runtime method.\"\"\""
    },
    {
      "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": "6e1607e247d979a1671a1fd5a98de3f1031fe719",
      "tree": "1174cdcce601419dcd5d1563777f721477d5cb6a",
      "parents": [
        "2ee17e69110a9ef98ea8c94219c7da23b918ef3f"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 10:06:18 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Aug 23 13:15:17 2017 -0700"
      },
      "message": "Rename instrumentation ExceptionCaught to ExceptionThrown\n\nThe instrumentation ExceptionCaught event was badly named since it is\nactually sent at the time the exception is thrown and is sent even if\nthe exception is never actually caught. Rename it and associated\nmethods/fields to ExceptionThrown to more accurately reflect the\nevent\u0027s semantics.\n\nTest: ./test.py --host -j50\nChange-Id: I1e9c401ab619259b25928dbf19f62d3fa9573d47\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": "331f4c4e287791611733120c1a1c2afd55ecdd65",
      "tree": "1fcf7810c6c8e2df8b6191bb14a69084f3c7cf11",
      "parents": [
        "13c8343a3394414c90f2fcd1e8efff70e7d2387e",
        "ba118827465d12177f3996e50133960087b1c916"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 20 14:09:32 2017 +0000"
      },
      "message": "Merge \"ART: Change method lookup to be more consistent to JLS and the RI.\""
    },
    {
      "commit": "ba118827465d12177f3996e50133960087b1c916",
      "tree": "f39728cdafc7810004d51c0bef2728b98993daa9",
      "parents": [
        "64a102dde8c5daad83b991710decb418ce43aac5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 12 15:41:56 2017 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 20 13:35:06 2017 +0100"
      },
      "message": "ART: Change method lookup to be more consistent to JLS and the RI.\n\nThe method lookup for different invoke types was previously\nwidely different and didn\u0027t work well with the dex cache\nmethod array where we have only a single slot for each\nMethodId. The new behavior is to perform the same lookup for\nall cases, distinguishing only between interface and\nnon-interface referencing class, and to further align the\nbehavior with the JLS and the RI. Where the JLS conflicts\nwith the RI, we follow the JLS semantics.\n\nThe new lookup for class methods first searches the methods\ndeclared in the superclass chain (ignoring \"copied\" methods)\nand only then looks in the \"copied\" methods. If the search\nin the superclass chain finds a method that has not been\ninherited (i.e. either a private method or a package-access\nmethod where one of the classes in the chain does not belong\nto the same package, see JLS 8.4.8), we still search the\n\"copied\" methods as there may actually be a method inherited\nfrom an interface. This follows the JLS semantics where\ninherited methods are included in the search (JLS 15.12.2.1)\nbut conflicts with the RI where the private or\npackage-access method takes precedence over methods\ninherited from interfaces.\n\nNote that this search can find an accessible method that is\nnot inherited by the qualifying type, either for a package\naccess method when the referrer is in the same package but\nthe qualifying type is in another package, or for a private\nmethod where the referrer is in the same class but the\nqualifying type is actually a subclass. For the moment we\nallow such calls and we shall consider whether to throw\nan IncompatibleClassChangeError in this situation in future\nto comply with JLS 15.12.4.3.\n\nThe new lookup for interface methods searches the interface\nclass, then all the superinterfaces and then the\njava.lang.Object class, see implicitly declared methods in\ninterfaces, JLS 9.2. The search for the maximally-specific\nnon-abstract superinterface method is not yet implemented,\nbut the difference should be difficult to observe as the\nusual subsequent call to FindVirtualMethodForInterface()\nshould yield the same result for any matching method.\n\nThe new test 162-method-idx-clash exposes several cases\nwhere we previously completely messed up due to the effects\nof the DexCache, or where we were out of line with the RI.\nIt also tests a case where the JLS and the RI disagree and\nwe follow the JLS.\n\nTest: art/test/run-test --host --jvm 162-method-resolution\nTest: m test-art-host-gtest\nTest: testrunner.py --host\nTest: testrunner.py --host --interp-ac\nTest: Nexus 6P boots.\nTest: testrunner.py --target\nBug: 62855082\nBug: 30627598\nChange-Id: If450c8cff2751369011d649c25d28a482a2c61a3\n"
    },
    {
      "commit": "e431e2758d62cf56f7f347f5a8c9d79e41b6dcd7",
      "tree": "b8733533e2478069aabbdc3a34d0f40aff33e1b1",
      "parents": [
        "b98d384eb424ad7e1dc9816392ded33dce0e0372"
      ],
      "author": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 16:53:49 2017 -0700"
      },
      "committer": {
        "name": "Steven Moreland",
        "email": "smoreland@google.com",
        "time": "Tue Jul 18 18:25:55 2017 -0700"
      },
      "message": "art: use proper nativehelper headers\n\nlibnativeheader exports headers under nativeheader. These were\navailable before incorrectly as global headers in order to give\naccess to jni.h.\n\nTest: modules using art find headers\nBug: 63762847\nChange-Id: I5c820d677e94e07b2859e78610bc997fe51b41dc\n"
    },
    {
      "commit": "5e7eb2faccf8f4a28e9fcda26053a5b388f2190a",
      "tree": "12b2936d445607d1bd7294d3f4a6ba19c27d8951",
      "parents": [
        "6e875347976b1f332731be775dfd066fda730085",
        "88fd720b6799184c8ad61e766a6d37af33ed30ef"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jul 14 15:13:41 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 14 15:13:41 2017 +0000"
      },
      "message": "Merge \"Add Jvmti Suspend/ResumeThread functions\""
    },
    {
      "commit": "88fd720b6799184c8ad61e766a6d37af33ed30ef",
      "tree": "80e49456eafd44b0ad8790be456ae06949fcc506",
      "parents": [
        "1cba8d219331e4d6994359e8f9104e5db2c8f8a9"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 08:31:59 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jul 13 09:11:03 2017 -0700"
      },
      "message": "Add Jvmti Suspend/ResumeThread functions\n\nEnable the can_suspend jvmti capability and implement all required\nfunctionality associated with it.\n\nTest: ./test.py --host -j40\nBug: 34415266\nBug: 62821960\nBug: 63579748\n\nChange-Id: I83b92de7f81622e1658114b034918e8295805b6e\n"
    },
    {
      "commit": "08dd84adab79f98b2f2e7dfbccf8ef6b07cd3f2e",
      "tree": "f171c11372ad3826d91853a0e125be14e12d029d",
      "parents": [
        "8ea20746896a5930d99b74d54213ff5a742ae937",
        "97c46466aea25ab63a99b3d1afc558f0d9f55abb"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 12 10:38:10 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jul 12 10:38:10 2017 +0000"
      },
      "message": "Merge \"Introduce a Marking Register in ARM64 code generation.\""
    },
    {
      "commit": "8c5e2dad9f585562f6a5b3ed2242a5d4a11fce3c",
      "tree": "b5e05e9b6fc2a2682d26c27d873c719fda03fd63",
      "parents": [
        "733e441e3bcaa6efb8248fe3429b18d3199ee30e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 11 10:32:20 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Jul 11 17:55:33 2017 +0000"
      },
      "message": "Move ThreadDeath event before clearing Thread.nativePeer\n\nWe were clearing the Thread.nativePeer field prior to calling\nThreadDeath event. Since this event can call into user-supplied code\nwe want to call it before we do any real cleanup.\n\nTest: ./test.py --host -j40\nBug: 62117833\n\nChange-Id: I6b93d82d23946c07dfbeb837d841339108e4b084\n"
    },
    {
      "commit": "97c46466aea25ab63a99b3d1afc558f0d9f55abb",
      "tree": "afd225f51d28a77329bc2590a025400e088f260c",
      "parents": [
        "00cca3a275562d110a8b35094b9b12fac37f67ab"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu May 11 14:04:03 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 11 17:43:27 2017 +0100"
      },
      "message": "Introduce a Marking Register in ARM64 code generation.\n\nWhen generating code for ARM64, maintain the status of\nThread::Current()-\u003eGetIsGcMarking() in register X20,\ndubbed MR (Marking Register), and check the value of that\nregister (instead of loading and checking a read barrier\nmarking entrypoint) in read barriers.\n\nTest: m test-art-target\nTest: m test-art-target with tree built with ART_USE_READ_BARRIER\u003dfalse\nTest: ARM64 device boot test\nBug: 37707231\nChange-Id: Ibe9bc5c99a2176b0a0476e9e9ad7fcc9f745017b\n"
    },
    {
      "commit": "6f1c7517a9e411e4000aa7b13743ed49e0c38bc0",
      "tree": "958355c402c445b531d8c6a219c69e6406d1b094",
      "parents": [
        "71bde0dff0159976fdad4b6a45e903a96bd51aca"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 05 19:18:31 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 05 19:22:08 2017 -0700"
      },
      "message": "ART: Make Touch\u0027s stack array smaller under ASAN\n\nUnder ASAN, especially on x86, there\u0027s a lot of overhead. To keep\nbelow a single page, add a multiplier to the deduction.\n\nBug: 31098551\nBug: 62952017\nTest: m\nTest: SANITIZE_HOST\u003daddress SANITIZE_TARGET\u003daddress m ; manual assembly inspection\nChange-Id: I8c80181e0fc5c6f4a1d3c6544f1a0e1089bb0631\n"
    },
    {
      "commit": "dfcf10b92330164f8af6c82c8232e85cfff1ae3c",
      "tree": "1cf419939a816a1ab2d1b5de68083ece7ec7c5c1",
      "parents": [
        "dd3240ce699129007935ba0bae4872e28652b90c",
        "46f9340f2a055a8fdfebbfbb739c697c20d83e7c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jun 30 16:18:22 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 30 16:18:22 2017 +0000"
      },
      "message": "Merge \"Add SuspendReason enum and change Suspension functions.\""
    },
    {
      "commit": "46f9340f2a055a8fdfebbfbb739c697c20d83e7c",
      "tree": "acb172f74723e4ea9ac7ded73b94c661217ec90d",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Jun 29 11:59:50 2017 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jun 30 14:24:56 2017 +0000"
      },
      "message": "Add SuspendReason enum and change Suspension functions.\n\nMore self-documenting and more type safe.\n\nBug: 62821960\nTest: ./test.py\nChange-Id: Ic7a1ae6a25e687d65f5aa10c1aad54a7b80dd086\n"
    },
    {
      "commit": "6c63f863f9dbf734732ff837c1e772b3482e59ff",
      "tree": "cf2844dac5603567763f439fe5db650dccc993ad",
      "parents": [
        "fe9a4f061841a3c597aac6817a47c799c54fcad7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 28 17:20:15 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 29 12:13:55 2017 -0700"
      },
      "message": "ART: Change main-thread thread paging scheme\n\nModify the code that ensures we can install a stack guard page into\nthe main thread.\n\nA recent kernel change means that our previous approach of using a\nfree pointer does not work. It is important to actually extend the\nstack properly. For portability, use a function with a large stack\nframe (suggested by and adapted from hboehm).\n\nBug: 62952017\nTest: m\nTest: m test-art-host\nTest: Device boots (x86_64 emulator)\nTest: Device boots (bullhead)\nChange-Id: Ic2a0c3d6d05a1ea9f655329d147b46949e1b9db3\n"
    },
    {
      "commit": "117f9b3a821e5a81673a9859488a5c05cdf901ac",
      "tree": "c5b7a108bac7d1a096d49694bfe56dfbef7952f8",
      "parents": [
        "721276bf926bdd5e3097830e20f6b6015409e28f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 13:33:50 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 13:41:16 2017 -0700"
      },
      "message": "ART: Fix issues in RequestSynchronousCheckpoint\n\nDo not run the checkpoint for another thread while being suspended.\nOnly suspend while waiting for that thread to become suspended.\n\nAfter decreasing the suspend count, broadcast on the resume condition,\nto tell the thread that it may progress.\n\nBug: 62353392\nTest: m test-art-host\nChange-Id: I63082b1fac5ec1db6ac31199548b9ae3cb30ea47\n"
    },
    {
      "commit": "28c4a233681040de4b2785ab5beef0a6d150e46a",
      "tree": "c05b8402deb757aaabc989ddc8fd3c0a051529cd",
      "parents": [
        "f1221a1f39987b94a54dc57b824fcf360c890ed0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 21 21:21:31 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 21 21:24:22 2017 -0700"
      },
      "message": "ART: Fix RequestSynchronousCheckpoint\n\nFix the known races in the code by requiring more locks on entry.\nThis helps ensure there is no time in the caller where the thread\ncan die while requesting the checkpoint.\n\nFix up GetStackTrace, GetFrameCount and GetFrameLocation.\n\nBug: 62353392\nTest: m test-art-host\nTest: art/test/testrunner/testrunner.py -b --host -t 911\nChange-Id: Ia0c5e920599b58098dc4b3a3d09c5284045f2947\n"
    },
    {
      "commit": "36a296ff674e0aea16b29db965f84f81866b1375",
      "tree": "9d940463852089016a0d0932368923d04da2c3fe",
      "parents": [
        "77c7d1093281bec76d3055541fe41145cdc5f807"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 13 14:11:11 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 19 16:21:58 2017 -0700"
      },
      "message": "ART: Refactor stack.h\n\nFactor out LockCountData, ShadowFrame and JavaFrameRootInfo and leave\nstack.h for the StackVisitor. Move single-use function to user to remove\nDexFile dependency.\n\nTest: m test-art-host\nChange-Id: I53d2880917bdf6782856fd2b16f38a0293f3aefc\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "d49012909625c3bf87bf51138fe79315ce1b1bdc",
      "tree": "349ef2cdcb7255d042244046601bd0fd5eb3a092",
      "parents": [
        "726e1793d3f54470705e5b84e7860074e029b0ed"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 18:41:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 30 20:44:33 2017 -0700"
      },
      "message": "ART: Clean up heap headers\n\nUse more forward declarations for accounting structures and spaces.\nFactor out structs to reduce header surface. Remove heap include where\nunnecessary. Fix up transitive users. Move some debug-only code out\nof line.\n\nTest: m test-art-host\nChange-Id: I16db4aaa803f39e155ce6e1b0778b7e393dcbb17\n"
    },
    {
      "commit": "365719c23d809e595cf320bfba40e76bb4e87940",
      "tree": "0939f0d8dc47723978a665fa11dd637f6976d521",
      "parents": [
        "d6705a0586377f1b0d7d14d3abe2b270bb0adb18"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 08 13:11:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 16 01:58:03 2017 +0100"
      },
      "message": "No need to lock when calling Thread.interrupted.\n\nAlso intrinsify the Thread.interrupted call.\n\nThe rationale behind this optimization is that the flag can only\nhave two values, and only self can set it to false.\n\nTest: libcore, jdwp, run-tests, 050-sync-test\nChange-Id: I5c2b43bf872ba0bfafcb54b2cfcd19181864bc4c\n"
    },
    {
      "commit": "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": "c83dd7bfde2171c879efb92a31a363505385ffb9",
      "tree": "3539033c43497e7d8bfd01cc4c4983a02957016a",
      "parents": [
        "a7c6a23cc96a24ccb1b32bd4397e4a8bdde58e16"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 02 04:14:17 2017 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 01 21:26:23 2017 -0700"
      },
      "message": "Revert \"Add concurrent card graying for immune spaces\"\n\nBug: 37876887\n\nThis reverts commit 88d329a698ba186aeb1f1ef8794355512ada84a9.\n\nTest: mm\n\nChange-Id: I93880fb7cd8c4c27c65777079d48947075f8cb64\n"
    },
    {
      "commit": "88d329a698ba186aeb1f1ef8794355512ada84a9",
      "tree": "bb34e52fde853941b0e17f08cbcdc07b9b7e527d",
      "parents": [
        "3f5f85d9382416b053359c3c1f11ab824843f3b4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 27 11:32:14 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 01 09:37:01 2017 -0700"
      },
      "message": "Add concurrent card graying for immune spaces\n\nWe now age the cards and gray the objects before the GC pause. This\nis done to reduce how much work is required during the pause and\nallows increasing the card size without regressing the GC pause\ntime.\n\nWe rescan the cards in the pause and only process the cards that were\ndirtied since the concurrent graying.\n\nPause time spent graying objects on maps (Pixel). The average is the\nper GC metric.\n\nDisabled entrypoint switching for x86 and x86_64. This is to fix a\ncase where the gray bit is set but the entrypoint is null, resulting\nin crashes.\n\nAlso reverted to checking \"is gc marking\" for x86 and x86_64 codegen\nto prevent performance regressions.\n\n128 byte cards without the change:\nSum: 1.912ms 99% C.I. 125us-244us Avg: 159.333us Max: 244us\n\n512 byte cards without the change:\nSum: 12.027ms 99% C.I. 0.940ms-1.495ms Avg: 1.202ms Max: 1.495ms\n\n512 byte cards with concurrent graying:\nSum: 1.385ms 99% C.I. 51us-239us Avg: 86.562us Max: 239us\n\nBug: 36457259\nBug: 12687968\nBug: 31022084\n\nTest: test-art-host\n\n(cherry picked from commit a3856d0d801f066b9b09649b3a17bdbb747f012d)\n\nChange-Id: I7e8f8a5716f96dde827377234f854482452bc9cd\n"
    },
    {
      "commit": "a62b453e6fe8a606ae9239051802e6a8190d5970",
      "tree": "d56f481a1444e34d7ad34bb9fd6fad839b20af9f",
      "parents": [
        "18457f487316b2ed2dd584f3e1f07e939e18aef5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 26 13:16:25 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 26 16:03:42 2017 -0700"
      },
      "message": "Use stack allocated context for VisitRoots\n\nPrevents allocation of contexts for threads that do not throw\nexceptions.\n\nSaves up to 544 per thread on arm64.\n\nBug: 36457259\n\nTest: mm test-art-host on with N6P target (build covers arm32, arm64)\nChange-Id: I782a1115d624edcc1279fa2317d026408dfa8a10\n"
    },
    {
      "commit": "c15a2f4f45661a7f5f542e406282c146ea1a968d",
      "tree": "50ad6104b0b8739f272782c35a7022cca64d2601",
      "parents": [
        "9ae527f615f61aec4aaca310c52f373e8c3d8d58"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 12:09:39 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 21 16:48:00 2017 -0700"
      },
      "message": "ART: Add object-readbarrier-inl.h\n\nMove some read-barrier code into a new header. This prunes the\ninclude tree for the concurrent-copying collector. Clean up other\nrelated includes.\n\nTest: mmma art\nChange-Id: I40ce4e74f2e5d4c692529ffb4df933230b6fd73e\n"
    },
    {
      "commit": "6bc7774426cc0b6bbab5566fa62b3c509455e583",
      "tree": "06c47a48c43924e8cdc80ed3ec31b8fddb4b39b6",
      "parents": [
        "8d0f3aaf28358697ec812955cdf975ca6c6ff901"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 18 17:46:23 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 19 21:26:56 2017 -0700"
      },
      "message": "Use partial TLAB regions\n\nInstead of having 256K TLAB regions, have 256K TLABs split into\n16K regions. This fixes pathological cases with multithreaded\nallocation that caused many GCs since each thread reserving\n256K would often bump the counter past the GC start threshold. Now\nthreads only bump the counter every 16K.\n\nSystem wide results (average of 5 samples on N6P):\nTotal GC time 60s after starting shell: 45s -\u003e 24s\nAverage .Heap PSS 60s after starting shell: 57900k -\u003e 58682k\n\nBinaryTrees gets around 5% slower, numbers are noisy.\n\nBoot time: 13.302 -\u003e 12.899 (average of 100 runs)\n\nBug: 35872915\nBug: 36216292\n\nTest: test-art-host\n\n(cherry picked from commit bf48003fa32d2845f2213c0ba31af6677715662d)\n\nChange-Id: I5ab22420124eeadc0a53519c70112274101dfb39\n"
    },
    {
      "commit": "0d8cf9106c1db0c9544ae018c9e2ff02152330f4",
      "tree": "16cfd15d9d84cc3cbe8fa003fe11dee4b01edbe1",
      "parents": [
        "ea24e09568d695593af1f896c5630a589ab44944",
        "1c8f4ff04062407db3d2dd834dd6bc24f6662c4d"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 19 07:23:36 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 19 07:23:38 2017 +0000"
      },
      "message": "Merge \"Always check result of Thread::ModifySuspendCount\""
    },
    {
      "commit": "1c8f4ff04062407db3d2dd834dd6bc24f6662c4d",
      "tree": "a116c7d55fc1bcff2b451028f46a1196ee15d990",
      "parents": [
        "c1be9f2b776b4900e0603013f7c4d84e534f0bb0"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 14 15:05:12 2017 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Apr 18 18:06:54 2017 +0200"
      },
      "message": "Always check result of Thread::ModifySuspendCount\n\nEnsures that we never ignore the result of ModifySuspendCount so that\nwe can react if the suspend count is not updated as expected.\n\nThis CL does the following:\n* Adds __attribute__((warn_unused_result)) on the method to raise an\n  error at compilation time if the result is ignored.\n* Wraps calls with DCHECK where the result used to be ignored.\n\nBug: 27385848\nTest: make -j test-art-host\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nChange-Id: I2d0e1ab7158c70ec8076c8bae6e4b814aee75af6\n"
    },
    {
      "commit": "21cf95d8f34dc9cc20c75896a0cc4df9a8fd77e6",
      "tree": "0f0e14c2f3f1f6637558b5221deab4568665e0bb",
      "parents": [
        "36831abc29f76baee9a7673a2c18465f33df3f05"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 17 20:19:14 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 17 21:16:29 2017 -0700"
      },
      "message": "ART: Call ThreadGroup.add in Thread::FinishStartup\n\nART should add the main thread to the main ThreadGroup. Behavior\nof the Thread constructor changed.\n\nBug: 37444210\nTest: art/test/testrunner/testrunner.py -b --host -t 051\nTest: m test-art-host\nTest: m build-art-host \u0026\u0026 art/tools/run-libcore-tests.sh --mode\u003dhost\nChange-Id: I92cf2f9a6c5c3fdf385eb7925addc38b64fa4d98\n"
    },
    {
      "commit": "640a104d25db5a46a53c45e7132db577188729cc",
      "tree": "0fca534117b2794ab3dcb3d437a49141124f6d3d",
      "parents": [
        "211d0cdee08c7fe98ea64d6c5f117859fda8bde0"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 20 15:03:42 2017 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 21 09:27:40 2017 -0700"
      },
      "message": "Avoid use of pthread_getschedparam (except on the Mac)\n\nSquashed commit of two cherry-picks:\n\n    During Thread::DumpState the pthread may have exited.\n    We have the tid, use that instead.\n\n    Test: m -j50 test-art-host -k\n    Test: adb shell kill -3 `pid system_server`\n    Bug: 36445592\n\n    (cherry picked from commit 08e762782a1e352c329945e0df3f35da7e71ad8a)\n\n    Restore broken code for the Mac\n\n    Test: m -j48\n    Bug: 36445592\n\n    (cherry picked from commit 4b16f0b860f4d59601706305b2949b98db586a47)\n\nTest: m -j48 \u0026\u0026 flashall \u0026\u0026 m -j8 test-art-host\nBug: 36445592\nChange-Id: I96d51614f569338d85de0fd59188445df3289dfd\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": "dfe9c30c7214c0874edacfd3bb602df86369c7e0",
      "tree": "90a96d151b5f01c5fd5961a67b2368175074c091",
      "parents": [
        "078221e529275a5ab576eeabfb9efbc8c038290d",
        "374cd2c4262a718f9e2e984b14553885f1e5e255"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 21 09:38:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 21 09:38:46 2017 +0000"
      },
      "message": "Merge \"Emit the dex_pc if the line number is absent.\""
    },
    {
      "commit": "45d942662883a0c5106b85b54e87be0f0610b394",
      "tree": "c5fc69b1d327ac7479eb2b6f90f9d45c4246689d",
      "parents": [
        "3fb852a88d2a8ffaa87089752f4b1d5f9d6ce3c1",
        "bad529da18122c7044fbfd7d56153535d34367b1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 15 21:02:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 15 21:02:27 2017 +0000"
      },
      "message": "Merge \"ART: Add currentThread cutout to Unstarted Runtime\""
    },
    {
      "commit": "374cd2c4262a718f9e2e984b14553885f1e5e255",
      "tree": "50b29ab7d17a64c5557182401b249bb963bd35da",
      "parents": [
        "be2cfabab221613b60c7f4cafb7eb00aa1e69d43"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 15 15:38:52 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 15 16:12:03 2017 +0000"
      },
      "message": "Emit the dex_pc if the line number is absent.\n\nbug:30183883\nTest: test-art-host run-libcore-tests run-jdwp-tests\nTest: art/test/638-no-line-number/\n\nChange-Id: I5ab54620b2bfba1059543696ff7310b8496b1893\n"
    },
    {
      "commit": "8dc12b1546c7409be19a7b5dc48932011db13067",
      "tree": "a157d2fb7bee08f7c0290e8a41f0c7c9c883794d",
      "parents": [
        "e92ba687f9ab2a3cd9724f494b6899e8e6e472ec",
        "ffc8cad04135192a8d10e7f38bd97c48101294a8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 15 09:39:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 15 09:39:06 2017 +0000"
      },
      "message": "Merge \"Add a DCHECK in thread::GetPeer.\""
    },
    {
      "commit": "bad529da18122c7044fbfd7d56153535d34367b1",
      "tree": "44982bc9ec345be1e96ba6c66e22e5c08fcaed56",
      "parents": [
        "1fb51268b78f55b345ea951a73eae5194ec71b91"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 13 18:52:10 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 17:43:52 2017 -0800"
      },
      "message": "ART: Add currentThread cutout to Unstarted Runtime\n\nAdd currentThread() and getThreadState() cutouts to the unstarted\nruntime to allow further compile-time initialization. The cutouts\nare protected by call-stack checks.\n\nAdd tests.\n\nBug: 34956610\nTest: m test-art-host-gtest-unstarted_runtime_test\nChange-Id: I6335bccda8bedae90376fc7c47b303576f1ac78b\n"
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "ffc8cad04135192a8d10e7f38bd97c48101294a8",
      "tree": "fb90432ea5e6d218891c0b3fcccc0fa77d202f7d",
      "parents": [
        "4e4b62e21672dbacf5d5abb688a126aabad29269"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 10 10:59:22 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 14 15:42:29 2017 +0000"
      },
      "message": "Add a DCHECK in thread::GetPeer.\n\nMotivated  by https://android-review.googlesource.com/#/c/333205/.\n\nTest: test-art-host run-jdwp-test.sh\nChange-Id: I173c060324aa0dc39144db55e3a97e672c012ba8\n"
    },
    {
      "commit": "23d7c8590bea7f24b301d1dff79e09a4a9a8a51e",
      "tree": "132e735766807d4b4f09a266b8c1184751f31a74",
      "parents": [
        "6347ea975cd80e7344c8d04909e211685b9a32ad",
        "02f365f0fb74acf09ffb8f04a80d32ca1152ed8b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 07 07:10:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 07 07:11:00 2017 +0000"
      },
      "message": "Merge \"Force stack dump to diagnose empty checkpoint timeout (2).\""
    },
    {
      "commit": "02f365f0fb74acf09ffb8f04a80d32ca1152ed8b",
      "tree": "7658baab9ac5c3c86b974d8dd5238f3cf2d9f2f0",
      "parents": [
        "7b220d60e3cb58c384a0d245106406080c6f3e37"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Feb 03 15:06:00 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Feb 06 16:06:58 2017 -0800"
      },
      "message": "Force stack dump to diagnose empty checkpoint timeout (2).\n\nBug: 33006388\nBug: 12687968\nTest: test-art-host\nTest: Thread dumping in a simulated empty checkpoint timeout.\n\nChange-Id: I06641396b8f3d7a1a98366a01807aab2e6f31bd5\n"
    },
    {
      "commit": "202f85a54bfd1844664a18c18a4c0494763c6b82",
      "tree": "7f24ae09a96a91d4ad41a4cc8de18c9b9a79a6c0",
      "parents": [
        "df04fda5638aa1fb9956808f1cd497b49f62088e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 06 10:23:26 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 06 13:44:54 2017 -0800"
      },
      "message": "ART: Add marking to thread peer gathering in TI\n\nWhen CC is marking, we may get stale references due to a missing\nmark.\n\nBug: 34760612\nTest: ART_TEST_JIT\u003dtrue ART_TEST_GC_STRESS\u003dtrue test-art-host-run-test-924-threads\nTest: ART_TEST_JIT\u003dtrue ART_TEST_GC_STRESS\u003dtrue test-art-host-run-test-925-threadgroups\nChange-Id: I1becfc188b59a3c99cc7eea07c63abaaf108fd15\n"
    },
    {
      "commit": "90b936ddda63139ff46a6755c3b83ad6e4ab4ac5",
      "tree": "c7ce2c3004eecc16ab41ed7cde105c3019638d4b",
      "parents": [
        "b78a8af993e877d74c5938f65f95feaf2fa01321"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 31 08:58:55 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 03 10:03:52 2017 -0800"
      },
      "message": "ART: Refactor verify_object.h\n\nMove the actual VerifyObject check into a new cc file, as we\ncommonly don\u0027t enable the check at all. This allows to cut the\n-inl include from almost all current users.\n\nThis also exposes missing -inl includes. Also fix up some of our old\nmess where .h defined functions require -inl.h defined functions.\n\nTest: m\n\nChange-Id: I3dd821bbe2015564a29bf1ed9be00f7a7276ad61\n"
    },
    {
      "commit": "65b8bb2f5948d2a80a347472293f6ef3c7f7f766",
      "tree": "6a122aabba739b45112f971548815922477c4788",
      "parents": [
        "3cb871ab1af47576959fd24a99d370381b8f193e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 01 11:03:50 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 01 16:52:25 2017 -0800"
      },
      "message": "Faster stack trace creation\n\nCache stack frames from the counting visitor to avoid needing to\nwalk the stack twice in the common case.\n\nSpeeds up pmd benchark by 20%.\n\nTest: test-art-host\n\nChange-Id: I81e4e55280d9c1ccf1937a7ea12abff75e9abb94\n"
    },
    {
      "commit": "1a20b6801f2432a42b906f0de01e7e9586526aec",
      "tree": "ae3faaf42a2b560601fc024ae16898a5dfa42261",
      "parents": [
        "357dcb73934356239292c46d6fbedba734da5e00"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 31 14:25:16 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Feb 01 12:46:43 2017 -0800"
      },
      "message": "Deduplicate register masks\n\nData is commonly shared between different stack maps. The register\nmasks are stored after the stack masks.\n\nOat size for a large app:\n96722288 -\u003e 94485872 (-2.31%)\n\nAverage oat size reduction according to golem -3.193%.\n\nBug: 34621054\n\nTest: test-art-host\n\nChange-Id: I5eacf668992e866d11ddba0c01675038a16cdfb4\n"
    },
    {
      "commit": "50a676848d644bbfafa9f47eff0ca9d2ccba6e4b",
      "tree": "18cdb23c75a82c675146463a31e84cc155d952de",
      "parents": [
        "318797a758f81e7f8a0b440129238b9b5eb1b74e",
        "45aa598cd1773f5eb1705dec13bea059238e054d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 31 22:24:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 31 22:24:45 2017 +0000"
      },
      "message": "Merge \"Deduplicate stack masks\""
    },
    {
      "commit": "318797a758f81e7f8a0b440129238b9b5eb1b74e",
      "tree": "4d8558ec590cb1938c7e9cefcb983615a177437d",
      "parents": [
        "44790fe8b33c7a80da2e77787d5f8d4d4549114b",
        "13c1635e07b8ee09120e267e2abe860aee05db7c"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Jan 31 20:18:59 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 31 20:19:00 2017 +0000"
      },
      "message": "Merge \"Force stack dump to diagnose empty checkpoint timeout.\""
    },
    {
      "commit": "13c1635e07b8ee09120e267e2abe860aee05db7c",
      "tree": "f9f8464c9ba62af15213afc91879751af6959045",
      "parents": [
        "a0305a27fc2da2bff16415e2edf733db2adf202f"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 31 10:15:08 2017 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 31 10:37:14 2017 -0800"
      },
      "message": "Force stack dump to diagnose empty checkpoint timeout.\n\nBug: 33006388\nBug: 12687968\nTest: test-art-host\nChange-Id: Ida149c98eeb05ca4ad8d0f7ef49228c9b45a6312\n"
    },
    {
      "commit": "45aa598cd1773f5eb1705dec13bea059238e054d",
      "tree": "f5a6fd7445a74218547cd6c4e28dc835821c355e",
      "parents": [
        "f2042db1b41cc21cc540c5ad7d353cbe1e3a32df"
      ],
      "author": {
        "name": "David Srbecky",
        "email": "dsrbecky@google.com",
        "time": "Fri Mar 18 02:15:09 2016 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 31 10:15:26 2017 -0800"
      },
      "message": "Deduplicate stack masks\n\nThe stack masks repeat often enough so that it is worth deduplicating\nthem.\n\nOat size for a large app:\n98143600 -\u003e 96722288 (-1.44%)\n\nBug: 34621054\n\nTest: test-art-host\nChange-Id: If73d51e46066357049d5be2e406ae9a32b7ff1f4\n"
    },
    {
      "commit": "500d4918e5fb6eafb76b36c4ec736f974835b94c",
      "tree": "5c6be88b473e60296ae9df22bfc55cfca85a3d28",
      "parents": [
        "fdd869faca8dff54a456ccb5f1a68ecb44143721",
        "433b79a9130df5f2375b9d3d7518c1f3fb84a467"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:56:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 20:56:11 2017 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Make --debuggable rely on JIT code.\"\"\""
    },
    {
      "commit": "433b79a9130df5f2375b9d3d7518c1f3fb84a467",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "81356645157af44152c7b7db383596b5cf3479b5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "message": "Revert \"Revert \"Make --debuggable rely on JIT code.\"\"\n\nFixed by https://android-review.googlesource.com/#/c/330165/\n\nThis reverts commit 81356645157af44152c7b7db383596b5cf3479b5.\n\nChange-Id: Ifb74e1cc90ab6dea621f7f54a00b540d6ccd0cf6\n"
    },
    {
      "commit": "d7c4ad030c2c316f5e1b2049ff8fa925b56bee2b",
      "tree": "fee68e3431cd62d6f5d6da89c1e105993bfb5528",
      "parents": [
        "f22bf9f809def57c96a19d932467a175bbd9c08c",
        "81356645157af44152c7b7db383596b5cf3479b5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:20:19 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 20:20:20 2017 +0000"
      },
      "message": "Merge \"Revert \"Make --debuggable rely on JIT code.\"\""
    },
    {
      "commit": "81356645157af44152c7b7db383596b5cf3479b5",
      "tree": "59aca3792abfa47c7424e4dac13248651e4662b2",
      "parents": [
        "a0619e25aacf8b8074132f4951f75fdbcfd42925"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:18:02 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:19:28 2017 +0000"
      },
      "message": "Revert \"Make --debuggable rely on JIT code.\"\n\nBreaks 137-cfi with ART_TEST_RUN_TEST_DEBUGGABLE\u003dtrue\n\nThis reverts commit a0619e25aacf8b8074132f4951f75fdbcfd42925.\n\nbug: 28769520\nChange-Id: Ifd7b8fc7c9b72c0a523fd57c4b1b80edd3547caa\n"
    },
    {
      "commit": "8f28bd479af445293474867191a0bf1cf0f08a4f",
      "tree": "2bf92d368a6ad5b766bef70a3ee9c35d7af6db71",
      "parents": [
        "ab5afeedfcb496026d8fe0774de99ee895888119",
        "a0619e25aacf8b8074132f4951f75fdbcfd42925"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 15:09:44 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jan 30 15:09:45 2017 +0000"
      },
      "message": "Merge \"Make --debuggable rely on JIT code.\""
    },
    {
      "commit": "a0619e25aacf8b8074132f4951f75fdbcfd42925",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "ca21dc47adeed92a15a9d3fd090bdd0e6654679c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 20 13:57:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 12:41:52 2017 +0000"
      },
      "message": "Make --debuggable rely on JIT code.\n\nRemoves -Xfully-deoptable in the process, which was added as a\ntemporary workaround until this CL.\nPartial revert of https://android-review.googlesource.com/#/c/302232/\n\nMakes things consistent with existing infrastructure:\n\n- Parse the --debuggable from the compiler options, just like\n  --compiler-filter.\n\n- Add DEBUG_JAVA_DEBUGGABLE, passed by the zygote, for debuggable apps.\n\n- Java debuggable now solely relies on JIT for simplicity.\n\n- Debugging under userdebug for non-java-debuggable apps is still\n  best effort.\n\nTest: test-art-host, jdwp\n\nbug: 28769520\nChange-Id: Id0593aacd85b9780da97f20914a50943957c858f\n"
    },
    {
      "commit": "12f1b99775bbf7dd82d0a897587ab6ed0e75ee22",
      "tree": "f8cb3a7334652e59577b7ff97a1805d1bf4ddd94",
      "parents": [
        "d8f6e6430b26bf199f4a52f0624becb7c29f3c19"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 19 18:00:45 2017 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jan 27 10:04:05 2017 -0800"
      },
      "message": "Remove alignment bits in between stack maps\n\nSaves 0.65% of boot.oat size, probably similar on apps. Added\nBitMemoryRegion to avoid requiring adding state to StackMap. Added\ntest to memory_region_test.\n\nTest: clean-oat-host \u0026\u0026 test-art-host\n\nBug: 34621054\n\nChange-Id: I40279c59e262bd5e3c6a9135f83e22b5b6900d68\n"
    },
    {
      "commit": "b048cb74b742b03eb6dd5f1d6dd49e559f730b36",
      "tree": "b1f663cbb343488a548cce4db352dbc4af720a89",
      "parents": [
        "f34077c96af3389e8eae65252d4c5d51cf630039"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 23 22:50:24 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 26 09:56:36 2017 +0000"
      },
      "message": "Add per array size allocation entrypoints.\n\n- Update architectures that have fast paths for\n  array allocation to use it.\n- Will add more fast paths in follow-up CLs.\n\nTest: test-art-target test-art-host.\nChange-Id: I138cccd16464a85de22a8ed31c915f876e78fb04\n"
    },
    {
      "commit": "7cd7b964e28ba9985565e7c3154357ed7d153fdf",
      "tree": "f1dbee29af9bde819b913f52d63b69ef5b10165c",
      "parents": [
        "03042d54563657ca4904cb35a6cd8092b37b2001",
        "ac30fa2151095d2b5fe42f169a02ed09fea312b4"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Fri Jan 20 01:49:00 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 20 01:49:01 2017 +0000"
      },
      "message": "Merge changes Ib5a3632c,I871f6b3c,I6ce0f71d\n\n* changes:\n  ART: Make RuntimeCallbacks unique_ptr\n  ART: Add ClassLoadCallback\n  Revert \"Revert \"ART: Start RuntimeCallbacks\"\"\n"
    },
    {
      "commit": "732b0aca4fb8e5ffbd518ca913cb82810b6b2061",
      "tree": "ee3b509a39400af3cac5be5f6a8974290374123d",
      "parents": [
        "07e56f3e1d1d6d7cca3a8819cb8429a65f0507f2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 18 15:23:39 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 17:13:21 2017 -0800"
      },
      "message": "ART: Add Agent Thread API\n\nAdd support for RunAgentThread. Add test.\n\nBug: 31684593\nTest: m test-art-host-run-test-931-agent-thread\nChange-Id: I5deb213fb06eedc5ee78a340458cf0dff615d0ac\n"
    },
    {
      "commit": "ac30fa2151095d2b5fe42f169a02ed09fea312b4",
      "tree": "e8ec1355dd7a307c696c1d38775aba5656ac33c6",
      "parents": [
        "0f01b583c3952d0219696480654a0db8fac4b661"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jan 18 21:02:36 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 15:14:19 2017 -0800"
      },
      "message": "ART: Make RuntimeCallbacks unique_ptr\n\nReduce the transitive closure of headers on runtime.h\n\nTest: m\nChange-Id: Ib5a3632c28b08bf07773f217a7ad711c1f12af6b\n"
    },
    {
      "commit": "04bbb5be5b9c0f0b3a72116353d23ea63c8bc5e9",
      "tree": "51ee41e14d6bfccc88ccde91938cac901c0e39a9",
      "parents": [
        "a58bc2e74441ac89cb706b49c5a6d096df97080b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 17:49:03 2017 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jan 19 15:12:06 2017 -0800"
      },
      "message": "Revert \"Revert \"ART: Start RuntimeCallbacks\"\"\n\nThis reverts commit bf6331a45f730e1f1044af2ce43bceda660ae6fc.\n\nSwitch to using the mutator lock.\n\nBug: 31684920\nTest: m test-art-host-gtest-runtime_callbacks_test\nTest: art/tools/run-jdwp-tests.sh --mode\u003dhost --debug\nChange-Id: I6ce0f71de2aa9f90cd23cfca7723a793b560b16b\n"
    },
    {
      "commit": "8d91ac31ccb92557e434d89ffade3372466e1af5",
      "tree": "37fd364ba6c9a6cf5e6a60a00c2542c5ffb12528",
      "parents": [
        "2f670ccba022fe557c637571ac781519f0e84463"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jan 18 18:07:15 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 11:56:43 2017 +0000"
      },
      "message": "Remove unused array entrypoints.\n\nTest: test-art-host test-art-target\nChange-Id: I910d1c912c7c9056ecea0e1e7da7afb2a7220dfa\n"
    },
    {
      "commit": "44751efea1d5457f8eaf1b685ac9a09be1fd7c3e",
      "tree": "920e59513f690dd13f8a5edf7e043d418d95b192",
      "parents": [
        "b0355130e38034db6b904783a00f74a3524e1881",
        "bf6331a45f730e1f1044af2ce43bceda660ae6fc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:03:12 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jan 19 09:03:13 2017 +0000"
      },
      "message": "Merge \"Revert \"ART: Start RuntimeCallbacks\"\""
    },
    {
      "commit": "bf6331a45f730e1f1044af2ce43bceda660ae6fc",
      "tree": "66013474dc85b2a868d5fad2506c8674a086fa1a",
      "parents": [
        "13093d455b8266338fd713b04261c58e9dc2b164"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:02:50 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jan 19 09:02:50 2017 +0000"
      },
      "message": "Revert \"ART: Start RuntimeCallbacks\"\n\njdwp tests failing with:\n    STDERR\u003e dalvikvm32 E 01-18 23:14:50 12180 12198 thread-inl.h:137] holding \"runtime callbacks lock\" at point where thread suspension is expected\n\nBug: 31684920\n\nThis reverts commit 13093d455b8266338fd713b04261c58e9dc2b164.\n\nChange-Id: I94e4154e273d006eecdd485607dcfd96392d6a00\n"
    },
    {
      "commit": "a7e64f00df89dfd984a8798548af46c7d0657511",
      "tree": "fc87511672825a99a034c2955efd7cd38d16f283",
      "parents": [
        "5d61614eda1ec69d46584605b439c56b6f3fd5e0",
        "13093d455b8266338fd713b04261c58e9dc2b164"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jan 18 22:52:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jan 18 22:52:26 2017 +0000"
      },
      "message": "Merge \"ART: Start RuntimeCallbacks\""
    }
  ],
  "next": "13093d455b8266338fd713b04261c58e9dc2b164"
}
