)]}'
{
  "log": [
    {
      "commit": "5d40f182181488eb39ccd19ffd306bb1fb9740c9",
      "tree": "f76c0593d7be5975543411a3d85134e846774ba5",
      "parents": [
        "1ff230d113d25fbcd2986773799ac1ef504a6af0"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 26 22:29:18 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 27 01:24:39 2011 -0700"
      },
      "message": "Fixes for \"null instanceof\" and class initialization\n\nFirst issue was that the codegen seemed to expect r0 to contain 0 for\na false result in the null object case. This is a quick fix to make\nthat true. Given that the code is doing the work of a null check and\npulling out the object\u0027s class, the code should probably just pass the\nclass to the helper function, making this a case of IsAssignableFrom,\nnot instanceof.\n\nSecond issues were related to missing EnsureInitialized calls in two\ndifferent code paths, one coming from reflection, one coming from\nmanaged code. New Class::AllocObject assert should help keep us out of\ntrouble in the future in this area, although perhaps Heap::AllocObject\nshould have a check as well.\n\nChange-Id: Ib7975b6457481c1ac85135d38f42c6061e6443a0\n"
    },
    {
      "commit": "8e4aac52962d54cb4be2078b9cd95685e067133a",
      "tree": "bb85a52e0326bef05acf9abe5e3d3b396c1d3795",
      "parents": [
        "03f034949fa7b44aa49e6603d8d5e7a55bf07795"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 26 17:03:36 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 26 17:03:36 2011 -0700"
      },
      "message": "Add the \"- waiting on\"/\"- waiting to lock\" lines to the SIGQUIT output.\n\nChange-Id: I0a8ab2e9e54c390e0d499ef464d82c2f2c628cbe\n"
    },
    {
      "commit": "14357e842b611279d467b64d450c569af33a6936",
      "tree": "1160c2071afdde8cbf3d9eee2ea3b12a0bc98d03",
      "parents": [
        "c0dd312b4ae5d11c59145f86a327c799877fbf53"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 26 10:42:15 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 26 10:42:15 2011 -0700"
      },
      "message": "Add a -verbose:thread option.\n\nChange-Id: Ie9bbe2195d7c427379e4a27d3fe51f1a71e58597\n"
    },
    {
      "commit": "7a3aeb4d7580164c6a6905c63b96823b77ff5a64",
      "tree": "be2ab3919e39b1a96c36ca138bfc9af63005107c",
      "parents": [
        "15fdb8cfb5b2e3fc882113ec0648d492cebf852c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 25 17:39:47 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 25 17:39:47 2011 -0700"
      },
      "message": "Thread state fixes.\n\nAttaching a native thread should give you a thread in the kNative state.\nTo be able to run managed code when a thread detaches, we need to be in\nthe kRunnable state.\n\nChange-Id: I9c8048469d0e2d2a53e8fd85261975bbffe16b4f\n"
    },
    {
      "commit": "c0c8dc8e677957d167066a2d06973126f108a6aa",
      "tree": "98242f7d64d09b85bee3c021e6d66a3cbcaf19b3",
      "parents": [
        "2a20cfd0b7fc81099f5de0da782ebcc1cb262792"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 24 18:15:59 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Sep 25 11:57:24 2011 -0700"
      },
      "message": "Support for currently untested exceptions/errors.\n\nReplace place holder implementations of exception/error code with code\nthat is likely mostly correct. Testing and creating detail messages are\nTODO items for each of these exceptions/errors and warning are created\nto reflect this need.\n\nAs we don\u0027t currently generate code to throw these exceptions, they are\nuntested.\n\nChange-Id: I75876a9cca37892fa065eccdf34f9868b4142ec9\n"
    },
    {
      "commit": "65ca077378935beb113bb5aec5e890054ca3286e",
      "tree": "d077a7d7953fc3ffa08b3570623ee4f0ee5ea437",
      "parents": [
        "ed3e930109e3f01804ca32cee4afe4f2d4b3f4d8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Sep 24 16:03:08 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Sep 24 17:37:33 2011 -0700"
      },
      "message": "Tolerant compilation of classes with missing super classes\n\nChange-Id: If64f25ae36204ab2ea5499f27601696dea9d4016\n"
    },
    {
      "commit": "8060925c45cc2607ab92390d7366c6c0cfdfe4bb",
      "tree": "42a50d2de4cc7622b19d6cd7a20b3d99d60a00a2",
      "parents": [
        "bc2f3e3e41d02eb2896dc16390c5c4023a7b5649"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 23 17:24:51 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 23 18:08:21 2011 -0700"
      },
      "message": "Implement Class.getDeclared(Constructors|Fields|Methods).\n\nThis required making sure that a Method* that represents a constructor\nhas java.lang.reflect.Constructor as its class.\n\nChange-Id: I25908845a2b8d686d5404ac584693db0edd5853c\n"
    },
    {
      "commit": "bc2f3e3e41d02eb2896dc16390c5c4023a7b5649",
      "tree": "1f229465f28c2178a7fe849e45bc2fd91d3dab4a",
      "parents": [
        "21d9e8323124a832a21679ca83808bc9c68ed365"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 22 17:16:54 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 23 17:11:55 2011 -0700"
      },
      "message": "Add support for oat_process for use as a wrap.* launcher\n\nAdd test support for running Calculator\n\nChange-Id: I7ec0681febe6f6c836452e8afb4c12a2ebfa0ea8\n"
    },
    {
      "commit": "21d9e8323124a832a21679ca83808bc9c68ed365",
      "tree": "d41c36c06524f913761f3b2e107d48d668feb660",
      "parents": [
        "31cc62d259b86844b505c3bfe15b44e372f705b8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 17:05:09 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 17:05:09 2011 -0700"
      },
      "message": "Exception support for object allocation.\n\nStrengthen asserts, no extra unit tests as expect good coverage on this\nalready.\n\nChange-Id: Ie8786932667b70d20c0cdf69b4b6b721b6244ded\n"
    },
    {
      "commit": "b886da8e3c26443ab4d2aa63268bd673c354c3d2",
      "tree": "26f01b0d92a79dea97fe80ccc580a7cbcd0178ac",
      "parents": [
        "e51a511ccee3f3c0120807321bcc160fcaa664be"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 16:27:54 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 16:27:54 2011 -0700"
      },
      "message": "Support for exceptions from array allocation.\n\nAdds support for exceptions during array allocation and checked array\nallocation (used by filled-new-array). Adds more unit tests.\n\nChange-Id: I3438b257a1cf19538d8b72529097a74347ac3b99\n"
    },
    {
      "commit": "e51a511ccee3f3c0120807321bcc160fcaa664be",
      "tree": "24ae359ac6331afbfabcfb8b938bfad2e4d44ce6",
      "parents": [
        "382ece5707c7b7c61f44a01f57ac22df9a8197d0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 14:16:35 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 23 15:24:10 2011 -0700"
      },
      "message": "Exception support for CanPutArrayElementFromCode.\n\nAlso a unit test.\n\nChange-Id: I6fb4b4180d36ea2d8447a9b4d5cf28cf410960cd\n"
    },
    {
      "commit": "418d20fc407052d4152157f61e7453359f902383",
      "tree": "250a190e03cb4c8d509dc3a13fd4607f888965ca",
      "parents": [
        "c41e5b5ae1befe2c602d55de1dbc04d1914f4a6c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 22 14:00:39 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 23 13:58:05 2011 -0700"
      },
      "message": "Implement reflective method invocation.\n\nChange-Id: Ib3af9d7e00bf226398610b5ac6efbfe3eb2d15e8\n"
    },
    {
      "commit": "932746a4f22951abcba7b7c4c94c27b1bf164272",
      "tree": "4a841e3990467b22c36c74cca1e7a952754e49e6",
      "parents": [
        "a0841a83323a82e3bed3d0b5f2e6ec3795f496be"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 18:57:50 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 20:05:44 2011 -0700"
      },
      "message": "Stack overflow error and unit test.\n\nChange-Id: Ie7198569207b1b87c50d986df002c551ad5d7d3a\n"
    },
    {
      "commit": "a0841a83323a82e3bed3d0b5f2e6ec3795f496be",
      "tree": "de2812c45564635af1445260ad52dd42272104e9",
      "parents": [
        "cbba6ac9bf9a6c630a7aafae6d8767b5ddbb6fd5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 14:16:31 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 16:59:56 2011 -0700"
      },
      "message": "Abstract Method Error unit test and fixes.\n\nChange-Id: I14015ffd9f8adca9d0b2d90b91811c920b13716d\n"
    },
    {
      "commit": "cbba6ac9bf9a6c630a7aafae6d8767b5ddbb6fd5",
      "tree": "c0d4c56f7062c95100ea644fbf3385b9c09c8399",
      "parents": [
        "98fb41647a5664922a196fd1f6b343e6bad8e51e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 16:28:37 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 16:42:02 2011 -0700"
      },
      "message": "Implement stub for initialize static storage base.\n\nAlso fix a race in thread list.\n\nChange-Id: Ice35c2fa14e7a9a0585e89d558815ab99bbdd6b9\n"
    },
    {
      "commit": "ff1ed4770bf7ff024a807b9f909b1a26abb78341",
      "tree": "40cda83cda306f4ade883141d3e0a40fb0790100",
      "parents": [
        "49de87b5c118cc536f2bd68c4fd46fce3d3abcfc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 20 13:46:24 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 22 11:08:56 2011 -0700"
      },
      "message": "Class cast, fill array and interface exception support.\n\nThis change uses the deliver exception mechanism to implement support\nfor a number of runtime exceptions. It also tidies up code in the\ncompiler and allocates a singular callee save method in the image.\n\nAlso adds a fix for JNI internal test where we weren\u0027t passing\nThread::Current() and that this value is now being used in generated code.\n\nChange-Id: I57eefd9afe40e92fa3a7e737f1a2ed7e1094b5c1\n"
    },
    {
      "commit": "c1f45048b90a85018c6b063c31bc088dc3dd993d",
      "tree": "fe2a976af407f8a77828306e9000837009150480",
      "parents": [
        "ae7cbf45460b472dbd159ab565d55b2880703abb"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 21 16:03:19 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 21 20:03:23 2011 -0700"
      },
      "message": "Suspend check reworking (ready for rewiew)\n\nI hate burning a register, but the cost of suspend checks was just too high\nin our current environment.  There are things that can be done in future\nreleases to avoid the register burn, but for now it\u0027s worthwhile.\n\nThe general strategy is to reserve r4 as a suspend check counter.\nRather than poll the thread suspendPending counter, we instead simply\ndecrement the counter register.  When it rolls to zero, we check.  For\nnow I\u0027m just using the counter scheme on backwards branches - we always\npoll on returns (which is already heavyweight enough that the extra cost\nisn\u0027t especially noticable).\n\nI\u0027ve also added an optimization hint to the MIR in case we have enough\ntime to test and enable the existing loop analysis code that omits the\nsuspend check on smallish counted loops.\n\nChange-Id: I82d8bad5882a4cf2ccff590942e2d1520d58969d\n"
    },
    {
      "commit": "4a2b41793d18d402286ae37e9de4fd392bc75a08",
      "tree": "1edc6171c4875fe88d3b93357c0c1fe5bd6caa99",
      "parents": [
        "64bf5a33d55aa779ef452552a466943002d39e4f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 20 17:08:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 20 17:08:25 2011 -0700"
      },
      "message": "Throw exceptions from ClassLinker.\n\nChange-Id: I0a00595d675af21c259639800c80dbd61ba721ff\n"
    },
    {
      "commit": "01158d7a57c8321370667a6045220237d16e0da8",
      "tree": "f62e0bef39f7f04c969327f6a8540d7cff6e373d",
      "parents": [
        "6699709cf27b706b5221527d9815dd9365911710"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 19 19:47:10 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 20 11:48:27 2011 -0700"
      },
      "message": "Implement most of VMStack and some of Zygote.\n\nChange-Id: I07e18259a0452a2a9b077148f4f1ca67d3f63427\n"
    },
    {
      "commit": "9651f425f7413772a7b5352da2b04eb7de7d416f",
      "tree": "bd72ec24dc9901a03c19cd93c72e80bbd3af0b89",
      "parents": [
        "845490bda68f7d025ea7f45775c847d2932e00dc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 19 20:26:07 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 19 20:58:22 2011 -0700"
      },
      "message": "Implement NPE, div by 0 and AIOBE.\n\nImplement runtime support for throwing NPE, divide by 0 and\nArrayIndexOutOfBounds excptions. Add simple unit tests.\n\nChange-Id: I69453c10b6692aa79512bcab1f68c5ab16c8c256\n"
    },
    {
      "commit": "845490bda68f7d025ea7f45775c847d2932e00dc",
      "tree": "2fc5c0f3fa40a491a3467dfc25d71fc2e23058f1",
      "parents": [
        "9d5ccec86d60c9ddd811836b9a2bc28d0b3d11fe"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 19 15:56:53 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 19 16:18:27 2011 -0700"
      },
      "message": "Cleanup resolution of type, field, method indexes\n\nWhen resolving a type_idx of a static field, you cannot assume the\ntype_idx refers to the class that actually provides the storage, it\nmight be a subclass. The compiler now resolves to the storage class if\npossible at compile time, otherwise it reverts to the slow path.\n\nWhen resolve field and method indexes, you need to know if a field is\nstatic or instance and if a method is direct or virtual. Previously we\ntried to guess, which led to problems in classes that had one of\neach. Now the compiler resolves which kind of field and method based\non the context of class definitions and dex instructions.\n\nChange-Id: I31826dc90562057eadd81f39d6369aa1216509af\n"
    },
    {
      "commit": "9086572fa809d1a19d886b467e4da3ce42016982",
      "tree": "15e28b57d4500d7daff225f993affabbbd22cefb",
      "parents": [
        "47d913865f35576b39a3b7f17720c344a6b99fa5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 19 11:11:44 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 19 13:06:22 2011 -0700"
      },
      "message": "Fix for implicit null test for oat.\n\nThis change also cleans up the notion of the callee save method with a\n\"IsPhony\" call. Stack visitors check whether the frame they are on has a\nlegitimate method with \"HasMethod\".\n\nChange-Id: I8ac0fdd595c1e764fdc22cfa9c6a394595f7e141\n"
    },
    {
      "commit": "25c3325bf95036bf325fc7cb21b4fd6d40282857",
      "tree": "58d95f906ca62f9cf69106c459db972e32af01a0",
      "parents": [
        "e5de95b3f9609e02fefd7cda7b21f30c9412eb4c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Sep 18 15:58:35 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 19 09:31:34 2011 -0700"
      },
      "message": "Fix compiler class initialization to properly deal with super classes\n\nAlso moving active parts of compiler_test to be oat tests including\nIntMath and Invoke. Added an interface invocation test case to Invoke\ntest. Changed Compiler to CHECK that it is not used once the\nRuntime::IsStarted, forcing some jni_compiler_test to have two phases,\none for compiling before Runtime::Start and one for JNI operations\nafter the Runtime::IsStarted.\n\nFinally, fixed Class::CanPutArrayElementFromCode by removing\nCanPutArrayElement and calling IsAssignableFrom directly.\n\nChange-Id: I52ca4dbc0e02db65f274ccc3ca7468dce365a44e\n"
    },
    {
      "commit": "081be7fcd72490937e188e9ef56e72df06b7b006",
      "tree": "02037944700df5c68c209fefb2bd00b0bc1c60fa",
      "parents": [
        "29f2742a478e4f5bd2ec7473410c5e5e7134a6f2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 18 16:50:26 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 18 17:21:57 2011 -0700"
      },
      "message": "Implement Object.clone.\n\nAlso add a conditional to Thread to keep tests running.\n\nChange-Id: I02145973af0fca823acb689e04912c2020d9c650\n"
    },
    {
      "commit": "29f2742a478e4f5bd2ec7473410c5e5e7134a6f2",
      "tree": "aad7a0ddf57e680fa9a9049648e1d0f3a58d7cb3",
      "parents": [
        "fa3baf7998f0af9de067eadf1f3b9a0b45d13349"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 18 16:02:18 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 18 16:06:07 2011 -0700"
      },
      "message": "Uncaught exception handlers and automatic removal from thread groups.\n\nAlso fix exception stack traces to only include what they should.\n\nChange-Id: I9aebc48515b60bfb2b93710192d9a1407936e04a\n"
    },
    {
      "commit": "fa3baf7998f0af9de067eadf1f3b9a0b45d13349",
      "tree": "a28ef389b6bb31d1a15a0a53eca5fd6f11a9b27a",
      "parents": [
        "bbf1e41e8d9b2446756e729f30c2501fb3e682c1"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Sep 18 15:44:15 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Sep 18 15:44:15 2011 -0700"
      },
      "message": "Store return address before performing a thread dump\n\nChange-Id: Ifabe65cba60bb0d01b70346b923a09c48f90d9ba\n"
    },
    {
      "commit": "038a806df72f884d22283a84a31c9a1d35ba1fdf",
      "tree": "c980ef0f8dbfb35dfedcd9faa0804df3f3e03f84",
      "parents": [
        "3101efb8f0e02fcfa70229c15631755cad758536"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 18 14:12:41 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 18 14:12:41 2011 -0700"
      },
      "message": "Thread.join, GC daemons, suspend daemons on shutdown, and wait for non-daemon threads to exit.\n\n(I\u0027ve been testing with a modified SystemMethods test that does various thread\noperations.)\n\nChange-Id: I3087087546f90c43da7a0e63fae918ff0a6e7005\n"
    },
    {
      "commit": "93dd9660955f1c0f068c57199c1945fc51fb84a7",
      "tree": "bb22f1aa51d295e7b18f39e4ce3c6e6933408edc",
      "parents": [
        "b6db9d29038a0e8dea8a399b155bd60448ec5e97"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 17 23:21:22 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Sep 18 13:08:32 2011 -0700"
      },
      "message": "Implicit NPE support when no exception given to throw.\n\nThis change adds support for creating an implicit NPE when throw is used\nwithout giving an exception object. It extends the CatchTest to check\nthe functionality is correct. It also weakens a too strong assertion\nabout when an address lies within code.\n\nChange-Id: I33742cce4deb31b4e0e9b7bd386f78e8cba3e53a\n"
    },
    {
      "commit": "ad42e1327fca837531e4feac8841de3960c4df45",
      "tree": "de7c955804ac46da7988638e9aa478899457c4f8",
      "parents": [
        "3a7b4f26387b3529899f3cf16cdd6f1e200ded80"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 17 20:23:33 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 17 20:23:33 2011 -0700"
      },
      "message": "Exception work clean up.\n\nChange-Id: Ide71ba25ea70b39651f80d9ff469019898a929e6\n"
    },
    {
      "commit": "c228252eb1bf859c6b976b9493269ea31b3c14c9",
      "tree": "f09c7d1cc28e10d33aabd61acf64da88bead3651",
      "parents": [
        "dc33ad5db2dc6ed9b76d5219888626a604debbe1"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Sep 17 10:33:14 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Sep 17 10:35:52 2011 -0700"
      },
      "message": "Fix order CheckCastFromCode and enable Fibonacci test\n\nChange-Id: I6dc589df3a328777678ac407110810cec9bf5480\n"
    },
    {
      "commit": "dc33ad5db2dc6ed9b76d5219888626a604debbe1",
      "tree": "8b9e612cd44b77ae26c44bc23615f34ecded1004",
      "parents": [
        "7011e675bf585909aa9f6599102afcd66e0a6738"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 19:46:51 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Sep 17 10:27:12 2011 -0700"
      },
      "message": "Initialize all of class Thread\u0027s fields.\n\nChange-Id: I28f1539bbcfebe06e62de692d306b479ed3eaead\n"
    },
    {
      "commit": "67375acd9fec74cc2054554fe1ed0a7d213e1e47",
      "tree": "0ac0bc114bbd9f0eef75d5d12e062554122d52f4",
      "parents": [
        "f867b6f706818c886087f61b89d1e8f5fc4653cf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 14 00:55:44 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 17 03:31:50 2011 -0700"
      },
      "message": "Support for exception throwing from JNI.\n\nThis change modifies the exception throwing JNI unit test to be\nrealistic and implements the missing exception throwing pieces on X86.\nIt also corrects some issues on ARM including methods with arguments\nLJII (such as compareAndSwapInt).\n\nChange-Id: I375f6efe2edeebb8007d7aa12c10b49742a8f119\n"
    },
    {
      "commit": "85d1545e985ac689db4bad7849880e843707c862",
      "tree": "dbda9214657085a3cbb77b323766da585e133a36",
      "parents": [
        "dcb3dd8bfd6e2d5935442fe8671a2f6326a1e4e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 17:33:01 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 17:38:56 2011 -0700"
      },
      "message": "Add packing to class Thread.\n\nOtherwise, code compiled on the host can use different offsets than\nwe need for the same structure on the target.\n\nAlso add commented-out code to start up the various GC daemon threads.\nMore Class native methods need to be implemented before that will work.\n\nChange-Id: I618b647b92378eec1b25cee469c8cfccf42f21fd\n"
    },
    {
      "commit": "38933579b15c74baa09b8713ee8bf715529d05eb",
      "tree": "e08a9db5f56adc37e815265092b96bc10e727486",
      "parents": [
        "141e68b26eddbb83d243797d3e1c99ed00c7828d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 12:29:03 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 12:29:03 2011 -0700"
      },
      "message": "StackTraceElements really want PrettyDescriptor, not PrettyClass.\n\nChange-Id: I69dc735da0148c0c40805e6cd0c5662ced40f607\n"
    },
    {
      "commit": "54e7df1896a4066cbb9fe6f72249829f0b8c49c6",
      "tree": "c7889163c116637001c98270f897d41ca02ce8a5",
      "parents": [
        "a0a764a1f5757f0f7ffa695b855b9d0ac8c2e455"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 11:47:04 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 11:47:04 2011 -0700"
      },
      "message": "Various bits of cleanup.\n\nMost notable: PrettyField now includes the type (but, like PrettyMethod,\nlets you turn this off), and there\u0027s a new PrettyClass, and PrettyType\nhas been renamed to PrettyTypeOf.\n\nI\u0027ve also moved the dalvik \"sync\" stuff into files named \"monitor\", and\nmade some of the implementation details private.\n\nChange-Id: I39ea79b45e173f9ebbf9878bcead207766a5653f\n"
    },
    {
      "commit": "5f79133a435ebcb20000370d56046fe01201dd80",
      "tree": "974c4610e30e8cc950e6e461e66b939361cb2bbe",
      "parents": [
        "78128a63b2615744760b7f8ab83df9764a5d4a95"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 15 17:45:30 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 10:56:44 2011 -0700"
      },
      "message": "Implement monitors.\n\nChange-Id: Ifc7a801f9cbcdfbc1e1af5c905261dfadaa60f45\n"
    },
    {
      "commit": "78128a63b2615744760b7f8ab83df9764a5d4a95",
      "tree": "544b24f88e1f8d3df2ab28ec2973476ad1b85a97",
      "parents": [
        "d03935aea5192b32e3ca60a94db90b78c6702046"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 15 17:21:19 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 16 10:07:10 2011 -0700"
      },
      "message": "oatdump\n\nFROM MAKE:\nmm dump-boot-oat\n\nON HOST:\noatdump --dex-file\u003d$ANDROID_PRODUCT_OUT/system/framework/core.jar --image\u003d$ANDROID_PRODUCT_OUT/system/framework/boot.oat --strip-prefix\u003d$ANDROID_PRODUCT_OUT\noatdump --boot-dex-file\u003d$ANDROID_PRODUCT_OUT/system/framework/core.jar --boot\u003d$ANDROID_PRODUCT_OUT/system/framework/boot.oat --dex-file\u003d$ANDROID_PRODUCT_OUT/system/framework/art-test-dex-HelloWorld.jar --image\u003d$ANDROID_PRODUCT_OUT//system/framework/art-test-dex-HelloWorld.oat --strip-prefix\u003d$ANDROID_PRODUCT_OUT\n\nON TARGET:\nadb shell oatdump --dex-file\u003d/system/framework/core.jar --image\u003d/system/framework/boot.oat\nadb shell oatdumpd --boot-dex-file\u003d/system/framework/core.jar --boot\u003d/system/framework/boot.oat --dex-file\u003d/system/framework/art-test-dex-HelloWorld.jar --image\u003d/system/framework/art-test-dex-HelloWorld.oat\n\nChange-Id: Iad2ae40a9cf2dc28799ff5dc5222d50f1bc6b39f\n"
    },
    {
      "commit": "bdb0391258abc54bf77c676e36847d28a783bfe5",
      "tree": "e00cac49de8a85562716557c84532dd3fff08e5b",
      "parents": [
        "a5a97a2bc1dfed70869da34650a5a2a3a3a06ac4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 14 00:55:44 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 15 18:20:44 2011 -0700"
      },
      "message": "Support for exception throwing.\n\nThese changes start to add support for a long jump style of exception throw.\nA Context is added to build up the registers that will be loaded by the long\njump from callee saves that are on the stack. Throws are reworked slightly to\ngive the PC for the frame of the method being looked at, rather than the return\nPC (that previously led the trace\u0027s PC to be off by a frame). Callee save\nsupport is added to the JNI compiler which then no longer needs to spill\nincoming argument registers as it may reuse the callee saves.\n\nCurrently the code is lightly tested on ARM and doesn\u0027t support\nrestoring floating point callee save registers.\n\nAlso clean up some PIC TODOs.\n\nChange-Id: I9bcef4ab3bf4a9de57d7a5123fb3bb1707ca8921\n"
    },
    {
      "commit": "161928613d3f097108319de60494fab1aab8d48a",
      "tree": "4a77aeca94c70e008ff7e1921e0104df9cb1ce92",
      "parents": [
        "93868217589caa3302a3886f55b99447db78e093"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 12 17:50:06 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 15 10:04:31 2011 -0700"
      },
      "message": "Add oat file generation and tests to build\n\n- Currently builds boot.oat for host and target\n  and target oat files for art tests.\n- Added cross compilation support via --strip-prefix option to dex2oat\n- Reduced output to prevent build log spam (Compiler::verbose_)\n- Added image roots for recovering important pointers on image load\n- Redid JNI stub creation and made the stub array an image root\n- Fixed JNI stub test by making JNI stub array executable\n- Fixed JNI UnregisterNative to having it reinstall the JNI stub\n- Fixed ARM JNI stub to generate PIC code (with irogers)\n- Fixed JniCompiler to generate PIC code (with irogers)\n- Fixed FindNativeMethod to handle recursive calls\n- Finished checkFieldType to use Object::InstanceOf\n- Fixed thread unsafe access to ClassLinker::{dex_files_,dex_caches_}\n- Added ResolvedMethod variant for use with Method* for context\n- Fixed ImageWriter to call FixupMethod\n- Fixed ImageWriter to rewrite JNI stub references\n- Improved error reporting on lack of ANDROID_DATA dir or art-cache dir\n- Fixed Runtime::Start to InitLibraries before creating thread peer\n- Implemented Space::IsCondemned to skip spaces loaded from images\n- Implemented artFindInterfaceMethodInCache,\n  allowing interface invocation from managed code\n\nChange-Id: I603e97fa0ac44508ae05a2e47c1cdb4481678d7b\n"
    },
    {
      "commit": "8d768a954b101a9532f980253ac46be2c53aba11",
      "tree": "ba6fa0be68a2289d5de3eb6c4de6fe93f6cd858a",
      "parents": [
        "43a364291dcdfe08e530e9568748359735dd7442"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 14 16:35:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 14 16:35:25 2011 -0700"
      },
      "message": "Thread suspension.\n\nIncludes SuspendAll/ResumeAll, and uses them in Heap and SignalCatcher.\n\nChange-Id: Ie39b868ca5961f5016f367acade5071392bb723e\n"
    },
    {
      "commit": "93e74e8d879270071c3aa163f8495ada8d21f42f",
      "tree": "6efbb3203ab055168a613df128f7742edb3c0e29",
      "parents": [
        "c74255fffb035001304c9a058a2e730a5a1a9604"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 13 11:07:03 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 13 11:34:52 2011 -0700"
      },
      "message": "More of the thread infrastructure.\n\nWe can now run managed code on multiple threads.\n\nChange-Id: Ia4ce9c94602773db238c967c15194a6db780d12f\n"
    },
    {
      "commit": "d369bb76dee0df2d2a106e9bf7f4e6446ed6deaa",
      "tree": "fbcfe2341a78a860b97649f719406709a8c87341",
      "parents": [
        "aaa208006d7c8cc0f381c4aa9b525be24066c495"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 12 14:41:14 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Sep 12 15:10:49 2011 -0700"
      },
      "message": "Various things.\n\nThis patch:\n\n1. adds good-enough implementations for a couple of Class native methods we\nneed.\n\n2. removes a fixed TODO from image_test.\n\n3. adds missing null checks to the Thread native methods, and forwards\nThread.nativeCreate to Thread::Create.\n\n4. stops jni_compiler from overwriting already-registered native methods\nwith the dynamic lookup stub.\n\n5. adds workarounds to Thread::CreatePeer so we can cope better without\ncode, attempts to initialize thread groups correctly, dumps thread state\nfrom the managed peer (where one exists), and implements Thread::DumpStack\nfor debugging (and SIGQUIT dumps).\n\nChange-Id: I3281226dd22ec852dca5165748fc75a254904ac0\n"
    },
    {
      "commit": "aaa208006d7c8cc0f381c4aa9b525be24066c495",
      "tree": "7a19bb527abaa56a98462d2c212ebe043b9435d2",
      "parents": [
        "31384c59bb4b387f29f2b6d4d3db886c29b81170"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Sep 11 21:47:37 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 12 10:53:58 2011 -0700"
      },
      "message": "Implement Throwable::nativeFillInStackTrace and nativeGetStackTrace.\n\nRefactor stack trace into compact internal form which is then used to\ncompute larger and more verbose StackTraceElement[] form. Fix some\npotential problems with GC.\n\nChange-Id: I4a4308c1ec5b82fd95b649d5ec0504b9607e688f\n"
    },
    {
      "commit": "8daa0929f08a3080ea64dbd4e997e72f411e6fc9",
      "tree": "cecee23131d5e0357c17c44bcccc7ddcfb31b925",
      "parents": [
        "4b620ffb1b4d0c96a94bb3afe314f35d53990ec6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 13:46:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 11 14:01:57 2011 -0700"
      },
      "message": "More threads work.\n\nAdds stubs (and sometimes implementations) for dalvik.system.VMStack and\njava.lang.Thread native methods. There was a bug in the dalvik\nthread priority setting code, where the current thread and the passed-in\nthread were confused.\n\nI\u0027ve also pulled Mutex and ThreadList out into their own files, and\nmoved some functionality around (with the aim of having more stuff\nprivate, especially locks).\n\nChange-Id: Ieb0f22669cac3df44ca34f7868f8e7d4dfa09ab6\n"
    },
    {
      "commit": "4b620ffb1b4d0c96a94bb3afe314f35d53990ec6",
      "tree": "47cc36e7921d3dabbcd44d9f5a763199c67bf2c3",
      "parents": [
        "c396efc1baec875160afe34a3e65c46cce2bd72f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Sep 11 01:11:01 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Sep 11 12:04:34 2011 -0700"
      },
      "message": "Finish moving state to managed heap\n\nChange-Id: I8a3b0e353b30268a05d6ed8ea0a6a4bead100660\n"
    },
    {
      "commit": "c396efc1baec875160afe34a3e65c46cce2bd72f",
      "tree": "ef07aec980e23bb17c20ad3e1f0c6c6d4b665db8",
      "parents": [
        "d3932bb7ce2b4ac6a808cf6bc7d0fc1cd7863a80"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Sep 11 09:36:41 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Sep 11 09:36:41 2011 -0700"
      },
      "message": "Build fix: move target-indepent code out of __arm__\n\nF2L and D2L are target independent, so the function pointer\ninitialization should be outside of the arm-only section.\n\nChange-Id: I979b39d25a7d49c47e4fbbf6c0d5e50a460c2e43\n"
    },
    {
      "commit": "5ade1d255ef1b5022321ac20493208703b34d2b1",
      "tree": "60098d280b1b5be925d431654cba4b14d5756eec",
      "parents": [
        "1240dade91d6c4bbf4e367ca608fcdc15348da45"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 09 14:44:52 2011 -0700"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Sep 10 15:21:01 2011 -0700"
      },
      "message": "Complete compiler portion of exception handling\n\nWill still need much testing once the runtime portions are in place.\n\nChange-Id: I90fc7c1fd89bfae89dfd19a6e422024b6b5454ec\n"
    },
    {
      "commit": "cefd1878e09fb0fb519a175545a99eb8c4a375b2",
      "tree": "6a1624e0cc03a93efdaf575a24bbc0214fa0e243",
      "parents": [
        "449b4bdf90b527ef7a42faaf087494538e62363c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 09 09:59:52 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 09 12:30:27 2011 -0700"
      },
      "message": "Add stack overflow check\n\nChange-Id: I67fcb5ad4bda304879ce05561b03aa7cd46e9990\n"
    },
    {
      "commit": "449b4bdf90b527ef7a42faaf087494538e62363c",
      "tree": "1fb2ea7c95ce4cf06cf3c1c18d972a3b8a4821b4",
      "parents": [
        "dbc0525b23653a425fcd7532d04eecc32d138b9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 09 12:01:38 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 09 12:01:38 2011 -0700"
      },
      "message": "Take into account that our stacks grow down.\n\nAnd lose the term \"high water mark\", since it confused everyone who\nlooked at the previous change. The netural \"stack end\" seems like our\nleast worst choice.\n\nChange-Id: Ic9587c1ed72b671249904ac8688b7ddd38a99648\n"
    },
    {
      "commit": "be759c63c6bb58b76ac71cad2c5a736bd31f374d",
      "tree": "60c5ab8fdb9d47bb0db5bda996aaac21caa4b1f3",
      "parents": [
        "92b3b5623ec8b65f3e099c076e247bb8273692f8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 19:38:21 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 19:50:39 2011 -0700"
      },
      "message": "Add a heap HWM to the Thread*, for compiled code.\n\nAlso fix a bug in thread detach, and implement the thread exit callback.\n\nDestroy our pthread_mutex_t instances, and check for success. (This will\ncatch us deleting locked Mutex instances.)\n\nChange-Id: I26cf8117b825234f6c790e0cf70b2c025a743f84\n"
    },
    {
      "commit": "92b3b5623ec8b65f3e099c076e247bb8273692f8",
      "tree": "94f85f0a8d33884b41227a1a560a755deccfffa2",
      "parents": [
        "15041f433341f111665943ecfb9ca88c77d5c19a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 16:32:26 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 18:11:55 2011 -0700"
      },
      "message": "Add locking to the heap.\n\nNow tsan is happy with us too, at least on the host.\n\nChange-Id: Ib4657f56be2014de832dff8886b63843a40ea788\n"
    },
    {
      "commit": "0d966cff87464544a264efdbfba6c379474d5928",
      "tree": "74ce88ebfdb902c90700b20b6b4e82290b77e70b",
      "parents": [
        "34cd9e58431504c36d0cb2a8fd0f3fac16dcb406"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 08 17:34:58 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 08 17:54:29 2011 -0700"
      },
      "message": "Add suspend check \u0026 stub\n\nChange-Id: I017653026ca95166cbc4b6b94b5da1fef2597804\n"
    },
    {
      "commit": "34cd9e58431504c36d0cb2a8fd0f3fac16dcb406",
      "tree": "a0f2966c88787aa9b44c385b5ced02c59a512307",
      "parents": [
        "693267ad474039981e9be20a592ac2e4e3bd742e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 08 14:31:52 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 08 16:45:16 2011 -0700"
      },
      "message": "Add run-time resolution paths for iget/iput.\n\nChange-Id: I1bd26286a39d057aebbb0d847bc58ecd656af458\n"
    },
    {
      "commit": "5fe594f576225dd7d333835e39c448a71ea9b433",
      "tree": "f9b6203abaf07df1421f6e7cadcbb2c307cef5b2",
      "parents": [
        "4ef765227a0098b6f4dfe47d2d7a6f084cec9560"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 12:33:17 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 08 14:26:18 2011 -0700"
      },
      "message": "A bit further along the track of multiple threads.\n\nThis also makes valgrind happy, and tsan mostly happy. (The heap, it turns out,\ndoesn\u0027t have a lock yet.)\n\nThe DexVerifier changes are just to make valgrind happy, and the code a little\nless unidiomatic.\n\nChange-Id: Ic5d436b4863b9d7088eb0b8fe9d32308919899d8\n"
    },
    {
      "commit": "4ef765227a0098b6f4dfe47d2d7a6f084cec9560",
      "tree": "ccb19f4a5e238ec6ecd4fc62f515107c138ba8a2",
      "parents": [
        "2a475e7b93d754e0a7525bb5c7059386307ea63a"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 08 10:00:32 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 08 13:54:16 2011 -0700"
      },
      "message": "Transmit mapping table to runtime\n\nPass the \u003cnative offset,dalvik offset\u003e mapping table to the\nruntime.  Also update the MonitorEnter/Exit stubs to optionally\ntake the thread pointer.\n\nChange-Id: Ie1345fbafc6c0477deed44297bba1c566e6301f6\n"
    },
    {
      "commit": "2a475e7b93d754e0a7525bb5c7059386307ea63a",
      "tree": "000c5f4483de6c4e90ba5bcdee5f616c1e499b50",
      "parents": [
        "a475f392df7a66211056a8dc57a2aff92b0b8ceb"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Sep 07 17:19:17 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 08 07:57:25 2011 -0700"
      },
      "message": "Check-cast, instance-of, misc fixes\n\nSupport for check-cast and instanceof (largely untested).  Added a bunch of\nhelper stubs, a debugging option to show the method name if we try to branch\nto an uncompiled method, new tests and a missing call to reset the compiler\u0027s\narena storage.\n\nChange-Id: I933ad1fbdbca110f92c9201cae2353bf4862a8ac\n"
    },
    {
      "commit": "02b48d1dae0c3adc01ef6668226fb648fb52990a",
      "tree": "c06c4986e1d1c65fbc39225fe330e301f803af24",
      "parents": [
        "6108953a145c1affcadc1e0a91b17e647ee52a02"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 17:15:51 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 17:15:51 2011 -0700"
      },
      "message": "Sketch out detaching threads (with partial implementation).\n\nChange-Id: Iafe5f91c8170d4f90155f509ba9e2e3d921af66f\n"
    },
    {
      "commit": "dcc247493fd8fb243e335c3ec08e5e625896a47c",
      "tree": "5eedb27fb6a295a1daec4cee276ba05c28abe483",
      "parents": [
        "f5ecf06388960bc1424ed0a8652c78e345d82106"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 14:02:44 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 07 14:02:44 2011 -0700"
      },
      "message": "A little bit more of the threads implementation.\n\nThe most important change here is understanding that Thread\u0027s id_ field\nwas unrelated to java.lang.Thread\u0027s id field.\n\nChange-Id: I832b92145332e1ded63a7824033dae684eeacf28\n"
    },
    {
      "commit": "42ee14279065352a4b9a3e8028d02c567e847d05",
      "tree": "55b1ba08ff4202f13cfa0a0b303b62e48183805e",
      "parents": [
        "82f3e09e27284056a4007a6c38fce832d877f672"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 06 12:33:32 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Sep 06 12:47:47 2011 -0700"
      },
      "message": "Log line-at-a-time to work around Android logging lossage.\n\nAlso deduplicate the two copies of gettid, and switch image_test over\nto using SignalCatcher\u0027s SIGQUIT dumping rather than rolling its own\nsubset.\n\nChange-Id: I8b70aaa3a3b9258c8258728c6a66e5dc4fa6399e\n"
    },
    {
      "commit": "0f4c41d75c821162184501cd4b510a93f6eb580f",
      "tree": "01afed2e082c398cd655e31485215ed82ef591c0",
      "parents": [
        "1da522de18ac6e4c2913c3233529e9dd115059f8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 04 14:58:03 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Sep 04 15:03:48 2011 -0700"
      },
      "message": "Various fixes.\n\nCHECK_xx arguments should be the \"right\" way round, not backwards like\nASSERT_xx and EXPECT_xx.\n\nUse /mnt/sdcard/ rather than /sdcard/ to bypass FUSE and avoid getting\nintermittent mkdir(2) \"Device or resource busy\" failures.\n\nBetter diagnostics when methods not found by test helpers.\n\nRemove the whitelist from oatCompileMethod.\n\nLeave evidence in the log of what we\u0027ve compiled and where we put it.\n\nDisable card marking by generated code until we have a cards to mark.\n\nDistinguish between CanPutArrayElementFromCode and CanPutArrayElement.\nImplement both.\n\nAdd a new test to see how much of the basic System and String/StringBuilder\nfacilities are working.\n\nChange-Id: Ie24f2859e404ab912e6cc77d170ceb4df5ecdf19\n"
    },
    {
      "commit": "1da522de18ac6e4c2913c3233529e9dd115059f8",
      "tree": "d64473583896cb02f6d5bad52cbac940059bdefa",
      "parents": [
        "193a44d9637b51724274b1de384245776e264a46"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Sep 04 11:22:20 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Sep 04 12:46:26 2011 -0700"
      },
      "message": "Complete static field accesses; clear TODO\u0027s\n\nThis adds the fast path for static field accesses.  Miscellaneous\nchanges include adding dummy helper for filled array allocation,\nelimination of redunant arg1/r1 load, deleting TODO\u0027s that I\u0027m not\ngoing to do, and altered compiler_test to use System.out.println\ninstead of System.out.printf.\n\nChange-Id: I560aa6093c98f1d288d64f346c8fd9ab7f180994\n"
    },
    {
      "commit": "4a3164faefd255b1c1e911e7ad7c3d57749caaf6",
      "tree": "f9594eb97a19358ba3ba5b050c61c5234214ba3d",
      "parents": [
        "9baa4aefc370f48774b6104680193d9a7e4fb631"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Sep 03 11:25:10 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Sep 03 20:31:41 2011 -0700"
      },
      "message": "Codegen for invoke-super, invoke-interface\n\nCompleted fast \u0026 slow paths for invoke-super and the single path for invoke-interface.  Added test\nfor invoke-super, but invoke-interface is untested (needs runtime-support routines to be fleshed\nout).\n\nSome trickiness in the invoke-interface code-generation.  Because they are going to be\nglacially slow anyway, inline code has been minimized and all interesting work pushed\noff to TODO runtime support routines.  However, we can\u0027t simultaneously pass the arguments\nneeded by the final destination and the arguments needed by the runtime lookup helpers.  So,\nI\u0027ve added a trampoline to save the target args, load the args needed by the helpers, call\nthe lookup routines, restore the final target arguments and continue on the journey.\n\nMore detailed comments in the code.\n\nChange-Id: Ice2343798a91a37da982811fd1c6384f584a3c0b\n"
    },
    {
      "commit": "561227c80077bbb4147f778043f1a836af6b9248",
      "tree": "ebce6fd50c988843de3e92f15dfae911d9ae1a73",
      "parents": [
        "3e465b1a72d89f7c30f18efb90dc688d33d46c16"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 02 15:28:19 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 02 18:30:37 2011 -0700"
      },
      "message": "Complete direct, static \u0026 virtual invoke\n\nReworked direct/static invoke to use code_and_method_ structure.  Removed\nslow/fast path distinction for direct/static (because there is only\na single path).  Added fast and reworked slow path for virtual invokes.\n\nChange-Id: I037aee26b63244d03ac2bd8720d8c55e256b9b4d\n"
    },
    {
      "commit": "d92bec457dc6c506c80e9da6b8e0c958266b5cdc",
      "tree": "50f28fd96411f68d4b91cc5943d159a00fcf88cb",
      "parents": [
        "4cdeec9686e1cd2d0118c96443e8c882dc849b7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 17:04:36 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 17:40:19 2011 -0700"
      },
      "message": "More SIGQUIT handling, various Thread fixes.\n\nChange-Id: I3233c300d1c838c2eee0ba9be6018b7fbd907386\n"
    },
    {
      "commit": "0cfe1fb7060576d047f7f894fc0d8b87de84fcab",
      "tree": "4255eae2034dcb0febe28411c50cba76189f39ae",
      "parents": [
        "a09576416788b916095739e43a16917e7948f3a4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 26 03:29:44 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 02 14:48:01 2011 -0700"
      },
      "message": "Use accessor methods for Object fields.\n\nEnsure that Object fields are modified via accessors so that it\u0027s easy\nto insert barriers (make all fields within Objects private). Add validity\nchecks to Field and Method accessors to ensure they are accessed when a\nClass is in a suitable state. Add validity checks to all Object\naccessors to check heap isn\u0027t corrupted. Remove hacked in strings from Field\nand Method; make type fields used the dex cache that is lazily initialized.\nClean up various other TODOs and lint issues.\n\nChange-Id: Iac0afc515c01f5419874d9cdcdb9a7b45443e3fb\n"
    },
    {
      "commit": "a09576416788b916095739e43a16917e7948f3a4",
      "tree": "63c4c7b9726817a51a9dc514dc68fb16287748cd",
      "parents": [
        "410c0c876f326e14c176a39ba21fc4dd3f7db8ab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 14:27:33 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 02 14:27:33 2011 -0700"
      },
      "message": "Add back the dalvik-style JNI logging and tracing.\n\nChange-Id: I3f8f50c9f9f2cb36f1668150c5e19f6225d15bbb\n"
    },
    {
      "commit": "410c0c876f326e14c176a39ba21fc4dd3f7db8ab",
      "tree": "e4b77ac5ed99b7206c51f6519689fdbc623e843d",
      "parents": [
        "1b4c85959b3d9a4a33bc2160c46c1bbde67350c7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 17:58:25 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 22:16:18 2011 -0700"
      },
      "message": "Mark more roots.\n\nThis is most of the stuff. (Everything that currently exists, though there\u0027s\nmore to come.)\n\nChange-Id: I235a21b006820a027c494374a5b52ffefed89c32\n"
    },
    {
      "commit": "1b4c85959b3d9a4a33bc2160c46c1bbde67350c7",
      "tree": "d92052beeb7a5e29f955d91b0a4ba3b15d2e4a8d",
      "parents": [
        "cf4c6c41b0084dc4567ff709fb8ce9ebd72b26ac"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Aug 31 10:43:51 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 01 15:59:35 2011 -0700"
      },
      "message": "Complete OP_CONST_STRING, OP_CONST_CLASS\n\nAdded dummy ThrowException \u0026 ResolveTypeFromCode routines.  Fix\nOP_CONST_STRING and OP_CONST_CLASS to be position independent.  Misc.\nbug fixes.\n\nCreated a dummy ThrowException compiler run-time helper function.  It\nshould be replaced with the real version.\n\nChange-Id: Iba6a11cf110d3da4fa36ca434fe1b2675b68434d\n"
    },
    {
      "commit": "cf4c6c41b0084dc4567ff709fb8ce9ebd72b26ac",
      "tree": "ca3d0314b5c4111d7ab6fd97b4e68d5b2679e237",
      "parents": [
        "2f0ce9d60a4a9371c63a32a3764320fb02341acb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 15:16:42 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 15:51:43 2011 -0700"
      },
      "message": "Fully implement string interning.\n\nAlso, more const.\n\nChange-Id: I09cae88d677e8e6e42d0fa9b5d1093c79d225e66\n"
    },
    {
      "commit": "2f0ce9d60a4a9371c63a32a3764320fb02341acb",
      "tree": "39c8ff85adb10f7b8ea2888d608562f6b96ae051",
      "parents": [
        "82da44b625a1af03c0b768c71f1cef29831127c3"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Sep 01 02:07:58 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Sep 01 13:37:28 2011 -0700"
      },
      "message": "Fix another jni_compiler bug. \"\u003e\u003d\" should be \"\u003c\u003d\".\n\nChange-Id: I428e26addb9b2b5f0102281209ed08a396897ea1\n"
    },
    {
      "commit": "bf86d0438e9ef9c145ebcf16a2e74c4efaa2686a",
      "tree": "e8641925dd68c6e03b41ceb3de58108436f988a0",
      "parents": [
        "ad7c2a3b4daa2abd707375444f4b0db7d69a3838"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 31 17:53:14 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 01 08:51:12 2011 -0700"
      },
      "message": "Start adding implementations for runtime-provided native methods.\n\nThe library can\u0027t do everything...\n\nChange-Id: Ib808c00570c7214aeb2ca058b1a66cacbeb372f1\n"
    },
    {
      "commit": "1f87008b165d26541d832ff805250afdc89c253d",
      "tree": "a84122b3757b8f856eb0656a951ed6621b6d01a8",
      "parents": [
        "c5bfa8f49d8548d7c685a99b411311ef56bedffa"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 23 16:02:11 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 31 09:46:57 2011 -0700"
      },
      "message": "Add HeapTest and make GC work enough to pass it\n\nChange-Id: If06eaef2921b64b3226bfd347acaec60ec993e67\n"
    },
    {
      "commit": "c5bfa8f49d8548d7c685a99b411311ef56bedffa",
      "tree": "3f58bb3dce3bcaa03a6d3da27d0a2f85d1da1b0b",
      "parents": [
        "90a3369d3b6238f1a4c9b19ca68978dab1c39bc4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 14:32:49 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 30 14:42:22 2011 -0700"
      },
      "message": "Add back the work-arounds for broken apps that assume JNI uses direct references.\n\nNote that we\u0027ll need to add support for this to jni_compiler too.\n\nChange-Id: I7e31ab4314ba913cde4629544addd0aad9a89b3b\n"
    },
    {
      "commit": "a2501990dd0f68baf38ce19251949d7bb3ecfe5a",
      "tree": "3f72ceee0297d213dac66a9ce2c72592906c1803",
      "parents": [
        "82870720a9a2709fcde4a03d96be383cee4b25d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 19:39:54 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 29 22:06:55 2011 -0700"
      },
      "message": "Add -Xcheck:jni.\n\nI think this is as complete as possible right now. The remaining\ntwo #if 0 sections require:\n\n1. a way to get the Method* of the current native method.\n2. a way to get the Class* of the type of a given Field*.\n\nChange-Id: I331586022095fb36ccc10c9ac1890a59a9224d01\n"
    },
    {
      "commit": "9b576b4ed1dbe035952f3106d8f4b6993125ed6f",
      "tree": "8505c2429b204e799caa045bcb805e70e6e2ea87",
      "parents": [
        "9f30b38d74990286ce27c3a45368f73dbe3638f0"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Aug 29 01:45:07 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Aug 29 12:59:51 2011 -0700"
      },
      "message": "Add StackVisitor, CountStackDepthVisitor, BuildStackTraceVisitor for EH.\n\nIn addition to EH, GC can use StackVisitor too.\n\nCrawl stack in 2 passes, using CountStackDepthVisitor and\nBuildStackTraceVisitor, respectively. Note that Pass 1 computes\nthe depth with a doubly-nested loop.\n\nChange-Id: If1e3d3212037426b10ac5e6a01138acfab710e6b\n"
    },
    {
      "commit": "4417536522fd2a9d8215d8672331984769c9520b",
      "tree": "422d8cc5cbe04b0025e75a5f48e87cd891a97655",
      "parents": [
        "e1931749814dbb80c5a756f9842e9c261bb2e8f6"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Aug 28 16:59:17 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Aug 29 09:47:17 2011 -0700"
      },
      "message": "Add AllocStackTrace(). Move InternalStackTrace to managed heap.\n\nReplaces trace.method and trace.pc with IntArray and ObjectArray\u003cMethod\u003e.\nException_tests pass.\n\nChange-Id: I54431bbf8031b186fdd360ec27a31b11c8eff052\n"
    },
    {
      "commit": "e1931749814dbb80c5a756f9842e9c261bb2e8f6",
      "tree": "6e0d28df7394cd1921643032ed2030c3e0bc113c",
      "parents": [
        "48a35d0cc5cf5dec38808d147862e165e9d67163"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 28 21:15:53 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 28 21:39:17 2011 -0700"
      },
      "message": "Use slow-path static field accessors; added tests\n\nModified the compiler to always take the slow path for static\nfield accesses.  Still need to implement the fast path, but this\nallows us to test the slow path now.\n\nIt\u0027s also about time we added command-line (or other) options for\ncompiler control.  We\u0027ll want to have a testing option to force slow\npaths for testing, and also an option to control the compiler\u0027s\ndebug output (which is starting to get annoying).\n\nChange-Id: I9c1bc6faea0042894270d242366c688f1662842b\n"
    },
    {
      "commit": "dfd3d70e58c37b5d56eded3a4469082d8bb26ee0",
      "tree": "3e1a15f133e5e72710e71bc4989a74319ee60442",
      "parents": [
        "9cc262e2ad5cb507c21cc83b8dc954e9354a469c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 28 12:56:51 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Aug 28 13:10:06 2011 -0700"
      },
      "message": "Enable virtual invokes, use new alloc, misc\n\nMake use of the new alloc routines.  Extended the filter to allow\nsimple virtual invoke test to get through.  Fixed a register allocation\nproblem.\n\nNote that the invoke sequeces are still the verbose \u0026 long path.\nWill start using the new CodeandDirectMethods mechanism in upcoming CL\n\nChange-Id: I8ff79f6392ff3da14d7679dcf65029ae48f18eba\n"
    },
    {
      "commit": "439c4fa0db980fb19e4a585723a64a3461e4c278",
      "tree": "b8173fa296eaf53b5b1bc2b2fd743998446fcfb1",
      "parents": [
        "e6d6196822952a9ccbb6ac2a97f4e3ae5e59705b"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 27 15:59:07 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 27 15:59:07 2011 -0700"
      },
      "message": "Move 64-bit multiplication to helper\n\nWe\u0027re right on the edge for supporting inline 64-bit arithmetic\nwith our current temp register pool allocation.  Moving 64-bit multiplication\nout of line to sidestep the problem, and added some temp frees to\n3-operand long ops.  In the latter case there was a potential problem\nif the result long was located in a part of the frame not in the range\nof a single base+displacement store.\n\nChange-Id: I6f8e0a11b440ed35e08f2e3457de6cbea89cfccc\n"
    },
    {
      "commit": "e6d6196822952a9ccbb6ac2a97f4e3ae5e59705b",
      "tree": "4ddf77ae5db6672b29a0ac205809287a5980b78e",
      "parents": [
        "7b1b86d68244b0bb4ea3f43505eb45fdd46814d6"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 27 11:58:19 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Aug 27 11:58:19 2011 -0700"
      },
      "message": "Various bug fixes.\n\nThe most amusing fix was the wierd NaN test failure.  After spending way\ntoo much time debugging, it turned out to be a missing comma in the argument\nlist of the test launcher.\n\nChange-Id: I76253575d7fbe2c2c260f1839a517c1b93dc9224\n"
    },
    {
      "commit": "7b1b86d68244b0bb4ea3f43505eb45fdd46814d6",
      "tree": "86752301153593796b515d8167fb5b3df3ac2636",
      "parents": [
        "83db7721aef15df6919c0ec072e087bef6041e2d"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Aug 26 18:59:10 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Aug 26 19:15:41 2011 -0700"
      },
      "message": "Various bug fixes and new tests.\n\nAmusingly realized that many tests believed to be passing were in fact not\nrunning at all.  The test harness returned 0 if the test wasn\u0027t run, but some\nof the tests used 0 as a success code.  Will change the tests later.\n\nMost were failing only because the function pointer table in Thread wasn\u0027t\nfully initialized with the math helper functions.\n\nChange-Id: If2e42f06139f219a423eef475b599258ccfc82d4\n"
    },
    {
      "commit": "55df06be4369f5d8ab5eb61a5d22809255171036",
      "tree": "32515b13b01ac3d359a6c171377f5c95599049bb",
      "parents": [
        "e27955ca3ca960928d4dbd6cb79711fce06950b3"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Fri Aug 26 14:39:27 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Fri Aug 26 16:45:52 2011 -0700"
      },
      "message": "Stack Trace Element with its unit test added too.\n\nThe unit test passes.\n\nChange-Id: I6f6af771cae1387c60c3b511148a347fe3237345\n"
    },
    {
      "commit": "e27955ca3ca960928d4dbd6cb79711fce06950b3",
      "tree": "bbf56dbaecba643099e5831ea502d57901dcb714",
      "parents": [
        "ba5ebb944b7c5c6a1b754b6dd47eed96f39aea29"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 15:21:24 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 26 16:30:02 2011 -0700"
      },
      "message": "Add the signal catcher (for SIGQUIT and SIGUSR1).\n\nAlso fix some of the thread implementation.\n\nChange-Id: If2d1b59a149ba1ac192ad9bc74319c8dff228549\n"
    },
    {
      "commit": "c1674ed06662420213441ff2b818f2f71f9098dc",
      "tree": "2799982a5059feab2a680ce5d91c276e5852983c",
      "parents": [
        "bafc342a37e423a19ac05f14800006ea9d67a941"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 18:09:09 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 18:48:47 2011 -0700"
      },
      "message": "Make valgrind happier and stop us leaking so much we can can\u0027t run the tests on a device.\n\nChange-Id: Id8f45dde788fd84c10b0b5807b2d12eae529ba5e\n"
    },
    {
      "commit": "79082e367845bbd68ec44ef2ddd1be8ef0e1550f",
      "tree": "71334eaf121c7662949464f7a8e7ca65bb78d73d",
      "parents": [
        "04ec7f0f244ef36fac1c7e590d2ea14e35dfe95a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 12:07:32 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 25 12:07:32 2011 -0700"
      },
      "message": "Add the runtime lookup of native method implementations.\n\nPlus other bits of cleanup.\n\nChange-Id: I8584001d7eeb118f8e29c4a62652a18b94333be8\n"
    },
    {
      "commit": "7577075b147fd8fa37ca41e7a32d1124676776ce",
      "tree": "f140e662b61200fe3ee4ba86c1fc05e9f4a96791",
      "parents": [
        "b465ab0e103d7760df903c1fddf4fa6b89d5d1f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 24 17:52:38 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 24 17:52:38 2011 -0700"
      },
      "message": "Finish off the new JNI implementation.\n\nThere are a handful of remaining TODOs, but this gives us complete coverage.\n\nChange-Id: Ibee38e6a87a0fcfae769d991125b0551243c8eeb\n"
    },
    {
      "commit": "69f5bc6759f256a146eefd8a7141d39fcc3b0421",
      "tree": "40e1560f51f346b21fbbf89c0a0e83f88f07f2ec",
      "parents": [
        "d11af152ff36b06883364d9728735ed8162ee306"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 24 09:26:14 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 24 09:26:14 2011 -0700"
      },
      "message": "If JNIEnvExt is-a JNIEnv, we can lose a bunch of reinterpret_casts.\n\nLikewise with JavaVM.\n\nChange-Id: I505e42e9197951b6c82e6dbf8dcc1fc4dd5aad31\n"
    },
    {
      "commit": "d11af152ff36b06883364d9728735ed8162ee306",
      "tree": "f021a574b7a2b7dde410b0cccc6be459cfdd4877",
      "parents": [
        "408f79aeb676251ba35667a64e86c20638d7cb0b"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Aug 23 16:02:11 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Aug 23 20:54:16 2011 -0700"
      },
      "message": "Change FrameSize to FrameSizeInBytes.\n\nAvoid confusion that it\u0027s in words.\n\nChange-Id: Ic7bfa3e00eec4ba49a4abf351913625e33529846\n"
    },
    {
      "commit": "408f79aeb676251ba35667a64e86c20638d7cb0b",
      "tree": "419c9dca6bc1fd5c13a997d4fad62f92960e5e45",
      "parents": [
        "72025e5f8f2743b4af33453df5b3bddada2078db"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 23 18:22:33 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 23 18:56:54 2011 -0700"
      },
      "message": "Add validate object, clean up stack indirect reference table.\n\nChange-Id: Ifb329ae7d3bede3e95d48e6761cee1412a33d867\n"
    },
    {
      "commit": "5433072f589b61413e042eddf76e8190a048f71d",
      "tree": "02ff83e20b1b0bc9dbbf387768d118a4d7aa6dbc",
      "parents": [
        "3ea4ec5629613013ad9b0d7a69abdb94491ac46f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Aug 23 16:46:55 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Aug 23 16:46:55 2011 -0700"
      },
      "message": "Added support for 64-bit shifts, fix const-wide\n\nChange-Id: I4823056d83652ecc7d3e391e905d480d73fab718\n"
    },
    {
      "commit": "3ea4ec5629613013ad9b0d7a69abdb94491ac46f",
      "tree": "43274b3154f0b2cf58fe1abbe21151652a6bf8fc",
      "parents": [
        "5174fe6e4e931c423e910366ff22ce0838567940"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Aug 22 17:37:19 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Aug 23 16:21:20 2011 -0700"
      },
      "message": "Misc fixes, new compiler unit tests\n\nFixed disassembly logging, miscellaneous codegen bugs and added a\nset of unit tests (most of which fail because array allocation isn\u0027t quite\nthere yet in the codegen).\n\nFailing tests conditionally compiled out for now.\n\nChange-Id: I39c148f9a7686fac21c844a7a7f5ec86d4e0e1c5\n"
    },
    {
      "commit": "762400c72e9c2491fb66364908c3717f8f1289ec",
      "tree": "b8e8988d7c122f70eef4e118540e14499a3c3b71",
      "parents": [
        "e5b0dc83537bf915c6abe4efeae6e501daf75a27"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 23 12:14:16 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 23 12:14:16 2011 -0700"
      },
      "message": "Support for return PC offset and frame size in JNI compiler.\n\nFor stack crawls we need the return PC and the size of frames, store\nthis information in the Method.\n\nChange-Id: Ic616b4f78ca571c837e5c8473607285a7e8b58f0\n"
    },
    {
      "commit": "e5b0dc83537bf915c6abe4efeae6e501daf75a27",
      "tree": "09b9ed8051636953f46f33c1e736dcdaee506711",
      "parents": [
        "1a18c8c1c0e4ea1ff06177e93c7ff703376dcee2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 09:59:02 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 10:52:37 2011 -0700"
      },
      "message": "Add \"class Throwable\" and rewrite exception throwing to use JNI.\n\nChange-Id: I79836075337eedfc5923ebff028176615ffd3598\n"
    },
    {
      "commit": "1a18c8c1c0e4ea1ff06177e93c7ff703376dcee2",
      "tree": "1a37b77910cbb6c628113b61175d7011b7e6a6cd",
      "parents": [
        "37f7a40f6789bb287f287a9af00777af9d6428ee"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Aug 14 17:47:36 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Aug 23 10:17:07 2011 -0700"
      },
      "message": "Initial implementation of throw+unwind+Frame.\n\nUnit tests on Exception Handling pass.\n\nChange-Id: I33505dacc6648e72e2ed80c2cca83643cfaef86b\n"
    },
    {
      "commit": "37f7a40f6789bb287f287a9af00777af9d6428ee",
      "tree": "edb907134b656748decd1ca894836326a50518bc",
      "parents": [
        "885c3bd4d7adcc7f60f656b4f7247e7065feadf3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 22 18:56:01 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 22 18:56:01 2011 -0700"
      },
      "message": "Implement more of the exception/object/class JNI functions.\n\nChange-Id: Id835c1a37e5034d11e2fc43ccf49e578510abfc1\n"
    },
    {
      "commit": "4873d465a1eb6dfbdeddb085c81239d39db60c42",
      "tree": "8eb73bf441d631b34252d8e358eff66718b63aab",
      "parents": [
        "94496d37e42dbbbcf515f43ccb9a03ac82e48927"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Aug 21 15:23:39 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 22 09:27:33 2011 -0700"
      },
      "message": "Move static field storage to end of Class instance\n\nChange-Id: I90061999c9eef9d900e4269508b983a61f48b264\n"
    },
    {
      "commit": "9cff8e13d41825c4f3f0127af061e94b06114fc8",
      "tree": "3425941132a8b1406126015cf9c45fd661b574a2",
      "parents": [
        "67bf885d62b1473c833bece1c9e0bb624e6ba391"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 18 16:47:29 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 19 22:01:22 2011 -0700"
      },
      "message": "Convert Class::descriptor_ from StringPiece to String (as part of image loading)\n\nChange-Id: Iab5ffa353661a7c06ee79af1f40d399a53777174\n"
    },
    {
      "commit": "f4c21c9f6440c3980c47a297519f758796dbc039",
      "tree": "edf57389c14f8f4e1082bf3969c13e70279731e3",
      "parents": [
        "ed8952fbf6b8d74fdd741cdfe76867a5a01e161c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 19 17:31:31 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 19 18:30:29 2011 -0700"
      },
      "message": "Initialize classes in GetFieldID/GetMethodID.\n\nChange-Id: I2ccf5d021067e4d18803bd505d5bdc1fcbbb3433\n"
    },
    {
      "commit": "a8cd9f4a849835af7856f9c9782ea59e11ddef85",
      "tree": "f194c58f4a6f491a6fc123c0873bde2ae06a5ecc",
      "parents": [
        "cdf53120cd5a73cbedc1654e22542848468c0d2f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 19 16:43:41 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 19 17:02:14 2011 -0700"
      },
      "message": "Support for local references allocated in SHBs.\n\nLocal references passed in the stack handle block by the managed to\nnative bridge code generated jni_compiler need support for decoding. Add\nsupport and extend jni_compiler_test to check the validity of jobject\narguments in the stack handle block.\n\nChange-Id: Ibba60451c21f6e41023b8d837310f15ea69c44f8\n"
    },
    {
      "commit": "bfaadc83460726b049614a8616effbb03a247552",
      "tree": "b90f575044f6bf74509769b7d3e4efbd3c936c3f",
      "parents": [
        "de69d7f8c32be83c405bf5a9c5f15fc655f578fa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 17:36:58 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 18 17:36:58 2011 -0700"
      },
      "message": "Replace a dangerous function with the convenience function callers actually want.\n\nChange-Id: Ic22dc4db36850507760a917033c254b88749b657\n"
    }
  ],
  "next": "c5f7c91ab89055cffb573fff7e06dbdd860bcced"
}
