)]}'
{
  "log": [
    {
      "commit": "822266b9dc7d8dc9e084192ae0f4bc95af4e8cf8",
      "tree": "6f9b2470d9f1bfa74bf53da3b3794ec8e6bf8d6f",
      "parents": [
        "31e7fcb904f03a504f082d25814ac4644b5073e4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 29 16:55:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 29 16:55:06 2014 -0700"
      },
      "message": "Ignore catch blocks whose type can\u0027t be resolved.\n\nReverts change 72b3e430d880ef57eaa6a34a0822165994052202 but keeps unit test and\nmissing delete that would fail assertions on long jump context recycling.\n\nChange-Id: I926755e8b831b208aa7e1ce46421bef3793a1441\n"
    },
    {
      "commit": "72b3e430d880ef57eaa6a34a0822165994052202",
      "tree": "b102b12d67e6cbc5cf0e6dc4e4ca147325264a43",
      "parents": [
        "d0916f36d27b643bca970f3645c38f44270c74ef"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 13 21:42:05 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 14 17:33:52 2014 -0700"
      },
      "message": "ART: Fix typo in ArtMethod::FindCatchBlock\n\nThe thrown exception is always resolved, as we have an instance of\nit. What is potentially not resolved is the catch handler\u0027s exception\ntype.\n\nThe resolution failure will trigger a NoClassDefFoundError, which\nshould replace the original exception. For this, the API has to be\nchanged a little bit to tell callers that there was this change.\n\nChange-Id: Id51d54a15c732ed175eb617b3b0331b89cbb2051\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "fd3077e4b9ebadd281777310d26e64443858f653",
      "tree": "c63911af29580ab8c0fc8dd29171e626871449aa",
      "parents": [
        "a08ec9b372d4f5e918b3d68499fbd1731180cd98"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 23 10:32:43 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 25 10:36:05 2014 +0200"
      },
      "message": "Refactor exception handling for deoptimization\n\nThis CL refactors the exception handling (on the quick side) by isolating the\nsearch of catch handler and the preparation of deoptimization.\n\nWe rename the CatchFinder class to QuickExceptionHandler so it\u0027s less specific\nto catch handler search.\n\nFinding catch handler happens in QuickExceptionHandler::FindCatch. Since the\nCatchBlockStackVisitor resolves exception types, it may cause thread suspension\nand breaks the assertion current thread can\u0027t be suspended. Therefore, we place\nthe exception in a SirtRef (while it is detached from the current thread) and\nremove the thread suspension assertion.\n\nDeoptimization now happens in QuickExceptionHandler::DeoptimizeStack. It uses\nthe new DeoptimizeStackVisitor class to create shadow frames.\n\nWe also add the Thread::GetDeoptimizationException method to get the definition\nof the fake exception in only one place.\n\nChange-Id: I01b19fa72af64329b5c3b6c7f0c3339d2d724978\n"
    },
    {
      "commit": "aa961918da5142220029da2809287e0dd537a5d7",
      "tree": "93cdad41650f353e1c7d82aaa8894037b12bb2a0",
      "parents": [
        "82b1a81890970a8b07f9132aeae537a6c43df6b0"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 22 13:54:32 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 22 17:03:21 2014 -0700"
      },
      "message": "Fix FindCatchBlock to work in -Xverify:none mode.\n\nFindCatchBlock now uses ResolveType to get the exception type,\nsince it might not be able to find it in the dex cache.\n\nBug: 13948502\nChange-Id: Ia6f1c7dc743206ae1c8551bf6239f48ee4d3a784\n"
    },
    {
      "commit": "d45a1f5d1dd5bc9badfab3a8aee90c934d9f2227",
      "tree": "c4e92844452b5eabfbd936b8d83c54f58397475d",
      "parents": [
        "0adc680c388913a63666797e907f87c4c6b0b4ea"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jan 09 14:56:54 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jan 10 09:42:09 2014 +0100"
      },
      "message": "Avoid instrumentation stack corruption.\n\nWhile debugging a throwing exception, we may end up updating instrumentation\nstack frame after having already walked the native stack. This leads to not pop\ninstrumentation frames prior to catch handler (or upcall if exception is not\ncaught) and get it desynchronized with the native stack.\n\nTo solve this issue, we need to walk the stack again after having reporting the\nexception to the instrumentation listener (for example: the debugger) which\nmay push new instrumentation stack frames. However we do it only when we know\ninstrumentation is enabled to not slow down exception delivery when executing\ncode without instrumentation.\n\nHere are the main changes:\n- Creates InstrumentationStackVisitor to compute the number of instrumentation\nframes to pop (previously done in CatchBlockStackVisitor). We only count frames\nprior to catch handler (or upcall). Popping instrumentation frames is done\nafter having reported the exception to the instrumentation listener.\n- Updates the CatchBlockStackVisitor to remove instrumentation frame handling\nand focus only on finding the catch handler and prepare deoptimization.\n- Creates CatchFinder class to control both visitors and do the long jump.\n\nChange-Id: I29b3871403f297bfb8c087e27f1330b002f5d56d\n"
    }
  ]
}
