)]}'
{
  "log": [
    {
      "commit": "3320cf46afd082398aa401b246e6f301cebdf64d",
      "tree": "99ef2b240ad81fa7cafa0bca51ca2364120fa762",
      "parents": [
        "4f0d07c783afef89703dce32c94440fc8621a29b"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 04 14:58:28 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 07 11:59:20 2011 -0700"
      },
      "message": "Move rest of code related blobs from Method to oat\n\nChange-Id: I55041b564ab65317c8b1f863005f20ba650a0322\n"
    },
    {
      "commit": "4f0d07c783afef89703dce32c94440fc8621a29b",
      "tree": "f6f4b68d5afc6551c61d3e86153878d9891ea13a",
      "parents": [
        "3ddac99d4dc6a036fac59d8f0bdc664ef619fb04"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 06 23:38:47 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 07 11:40:56 2011 -0700"
      },
      "message": "Spill possibly reference holding registers for runtime calls.\n\nLive references may be in registers when we crawl a stack for GC during\na runtime call. Whilst an exception won\u0027t occur we need to save the\ncallee save registers into the frame so the stack crawl can find their\nvalues. Create variants of the callee save method to save just the\nregisters that are necessary.\n\nChange-Id: I6fa479bffcbc333fe846f9bd3ef2e626e0209ed9\n"
    },
    {
      "commit": "3ddac99d4dc6a036fac59d8f0bdc664ef619fb04",
      "tree": "6c54efd6041912f1676ac9b43dddcfdd7684560a",
      "parents": [
        "418dfe7849f45535b5388a91bd7a16cfc20a612b"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Fri Oct 07 00:48:09 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Fri Oct 07 00:48:09 2011 -0700"
      },
      "message": "Fix the PC. And we pass the unit tests on host and target again.\n\nChange-Id: I44a8db00269471bacd4031259f57358670583e49\n"
    },
    {
      "commit": "418dfe7849f45535b5388a91bd7a16cfc20a612b",
      "tree": "60af35d2d9352910c782d2ce90f63a4d89d4a516",
      "parents": [
        "1cb0a1dfc32531c79a968aeac26ccb5525862497"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 06 18:56:27 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 06 18:56:27 2011 -0700"
      },
      "message": "Enable AllocWithGrowth and OutOfMemoryError throwing.\n\nAlso fix a bug where we weren\u0027t correcting the pc for the first stack frame.\n\nChange-Id: Ic4196987eac85eff2f6d14171b19b4f5890b6c4d\n"
    },
    {
      "commit": "f57c47c29cd3388d1d78008a71c4e18f2217b70c",
      "tree": "346cbf0cdfa1367d42343cdd3aa98a10bb1bf189",
      "parents": [
        "aeac7543ca481bf84922c1f50df75a27f9fb7163"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 06 00:06:17 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 06 00:08:46 2011 -0700"
      },
      "message": "Fix vmap handling. Adjust all PCs by -2 in WalkStack.\n\nVmap handling didn\u0027t increment the register when it got the first hit in\nthe core spill mask (bug exposed by register promotion). Adjust PCs by -2\nin WalkStack so that ToDexPc calls don\u0027t need adjustment. This corrects\nline number information on \"run-test 054\".\n\nChange-Id: Iebfb4109b5234bb7357b5ba538883c28dfc7cb26\n"
    },
    {
      "commit": "ad25ac568407ceb14334e8551dd1c4dd0fd6993c",
      "tree": "f1e2edb4b87d0b5ce35f94069db2f6cdb77db210",
      "parents": [
        "8c2f6414e1cff9a024a14369352f7ce112528b9e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 04 19:13:33 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 05 22:40:00 2011 -0700"
      },
      "message": "Static and direct resolution stub.\n\nEnsure that invoke static and direct go through a stub that causes\nresolution and initialization.\n\nChange-Id: I872900560322817d8f4378b04ac410d9ea0b3b17\n"
    },
    {
      "commit": "adb460d96702573de6e732ad58ca0380405cd928",
      "tree": "f70ad27d5fc007b70765a76644519234466dee61",
      "parents": [
        "68e76526e98432625464022cb26f66b9ef6f5af4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 05 17:02:34 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 05 17:02:34 2011 -0700"
      },
      "message": "Implement finalization.\n\nAlso make System.gc no longer a no-op. This replaces some of the\nMemberOffsets exposed by Heap with intention-revealing functions\nthat we\u0027ll want to share between all the actual GC implementations,\nbut there\u0027s still more to be done.\n\nChange-Id: I57ba26c0416fbbfe20142b7b6e27108684add7f9\n"
    },
    {
      "commit": "68e76526e98432625464022cb26f66b9ef6f5af4",
      "tree": "e657a389a34e5c14f0be60621b71124f15c2be4d",
      "parents": [
        "99f272349671e14ceada1cc795ce4c66a38ddd3e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 05 13:22:16 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 05 13:22:16 2011 -0700"
      },
      "message": "Start moving stack-related stuff out of thread.h.\n\nThis was in preparation for implementing \"SmartFrame\", which is back on hold\nwhile I finish finalization.\n\nChange-Id: I006c9cfbc34520b9b0a72972611036d908a1d84b\n"
    },
    {
      "commit": "99f272349671e14ceada1cc795ce4c66a38ddd3e",
      "tree": "ebd4a5c4c1ac47d837174daaf4684ae7b26c7b60",
      "parents": [
        "3ddc0d1108a00e14b60c60edcdeff3b81f9e35f9"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Oct 05 12:56:36 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Oct 05 13:11:35 2011 -0700"
      },
      "message": "Special-case Object.\u003cinit\u003e invoke\n\nIdentify direct invokes to Object.\u003cinit\u003e and handle them similar\nto the old-word OP_INVOKE_OBJECT_INIT_xxx.  Also, added missing\nnull check for range-style invoke-direct and invoke-interface.\n\nChange-Id: I5789db4e85609b780063c4788fa40d627a6988c4\n"
    },
    {
      "commit": "ce30293d222c864fa281da98bc896dd1c98a9a16",
      "tree": "b56c3a7f8be3349aa50c78675e6959e51344938d",
      "parents": [
        "20cde9033d51103f31e21436e88f80e1170c78ad"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Oct 04 14:32:18 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Oct 05 09:22:57 2011 -0700"
      },
      "message": "Compiler cleanup\n\n  o Added slow path for string resolution\n  o Removed dead throw internal and runtime error\n  o Restructured debug and optimization disable flags for make it easier\n    for command-line option support.\n  o Removed/converted #if 1/0 blocks\n\nChange-Id: I65fc561a55437b3f74d0dfff5af87f938008d70e\n"
    },
    {
      "commit": "b408de744566a5c5a80be1ba7f5c88407e816945",
      "tree": "fa282edb7134f16de6e3ff81181e6d9724039ab3",
      "parents": [
        "4377a7e93b47386de1e0c2e472a6e3e99d235331"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 04 14:35:05 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 04 14:51:27 2011 -0700"
      },
      "message": "Implement the \"unreasonable array allocation\" OutOfMemoryError.\n\nThis doesn\u0027t fix test 061 because we still need AllocWithGrowth, but at least\nit gets us far enough to need that.\n\nChange-Id: Ia7b4a1f91a31e25d439f36b17280ce21c9ed8933\n"
    },
    {
      "commit": "7502e2a419f84808518cf212b3d7145c7b959c76",
      "tree": "0eb3a05d72305db9b758ffc2d283ac5e428f9026",
      "parents": [
        "5cb5ad27944efb08d4556b3c0d362302e37e832b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 02 13:24:37 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 02 13:24:37 2011 -0700"
      },
      "message": "Fix the 051-thread test.\n\nThis changes Thread::Create to clean up the requested stack size before\npassing it to pthread_attr_setstacksize.\n\nI modified the test to work around the inherent raciness in the test, which\ncurrently causes us trouble because with all the debug logging, the thread\nthat initializes System.out takes longer than 1ms, so the first 40 or so\nthreads all get woken in non-numeric order.\n\nChange-Id: I8047bf00330aaf4210dcb53a4437b1fe0562179e\n"
    },
    {
      "commit": "5cb5ad27944efb08d4556b3c0d362302e37e832b",
      "tree": "63334f19072ca2ba7179973f0ce62101ee89605d",
      "parents": [
        "d6fe38d96b6116bd53cf2cb14734af8d69e08661"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 02 12:13:39 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 02 12:13:39 2011 -0700"
      },
      "message": "Fix exception throwing to support no detail message.\n\n(The empty string as a detail message is distinct from a NULL detail message,\nand is treated differently by Throwable.printStackTrace.)\n\nChange-Id: I8c65deac9f18c5782dcf6e72e4c37e6dd4174fe9\n"
    },
    {
      "commit": "991e3ac0daf35d23f7c5e602d113c12ff3971544",
      "tree": "2bf5a081893dc38805dbdc107ce0b8031f0ea179",
      "parents": [
        "2d831014d88e38c0c499ce8597dcdb17b9d4c4b9"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 29 15:44:22 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 30 09:19:51 2011 -0700"
      },
      "message": "Clean up instanceof codegen in compiler.\n\nChange-Id: I0179a0746bc5aaef02129169b6a6b1bbbe30dc7e\n"
    },
    {
      "commit": "2d831014d88e38c0c499ce8597dcdb17b9d4c4b9",
      "tree": "793b222f8005580af855692045f7fe2804dca8d4",
      "parents": [
        "5d1ac920fdaef5d4ec8f66bb734488cd9660b024"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Sep 28 22:06:53 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Sep 29 18:39:13 2011 -0700"
      },
      "message": "Code refactoring: Split thread.cc into thread.cc and runtime_support.cc.\n\nChange-Id: I8484ee2993a2eb927ebba1f7b9db4709d16dad00\n"
    },
    {
      "commit": "8dfc9d551a9603eb8bc8463621b7bc73c3035169",
      "tree": "0b2b29321943e40c718ae63f0fe4fdf1bb651a40",
      "parents": [
        "4f894e385e8ac018f078be75fea0a45696626b15"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Sep 28 18:06:15 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Sep 28 18:07:36 2011 -0700"
      },
      "message": "For Stack Indirect Reference Table, visit roots in the table.\n\nChange-Id: Ib2574c54b080944e0be3c498578520d52df4d9ec\n"
    },
    {
      "commit": "4f894e385e8ac018f078be75fea0a45696626b15",
      "tree": "ce10f5891f700c6535091984c251730e8e50d02c",
      "parents": [
        "d1422f81bf9b35cb2aad3fb5615d3f5209014709"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Sep 27 21:33:19 2011 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Sep 28 15:47:56 2011 -0700"
      },
      "message": "Fix stack scanning bugs: Add PC OFFSET before retrieving Registermap.\n\nGC passes for the MemUsage of 5 MB * 100.\nNote that RegisterMap is uncompressed. Also add new GC test.\n\nChange-Id: I7a7afc845d4582f8f2f3ba95e4716266ec46c635\n"
    },
    {
      "commit": "d1422f81bf9b35cb2aad3fb5615d3f5209014709",
      "tree": "bdea10294cf3bf8f26c1f63b2df5b40ce15f7a12",
      "parents": [
        "5cfd6fb2730b13c86c885215784080e15fa6ccf4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 28 11:37:09 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 28 14:07:33 2011 -0700"
      },
      "message": "Remove extra lock and racy assert in class initialization\n\nChange-Id: Idaf68cbf888b5edc5e05877da6a20b86bdfb4762\n"
    },
    {
      "commit": "d6b1f6190c8ec42facb08aca34b093244774b318",
      "tree": "698b54670a3935e2d6065b79ab9300e9b2364c3d",
      "parents": [
        "f153fe1ff3c901a1c63b6ec5495c5046869a60e3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 27 13:38:14 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 27 16:29:18 2011 -0700"
      },
      "message": "Support for stack scanning of roots.\n\nChange-Id: Icbb02959725735faaa230e0fd00e8039b2f9c1b2\n"
    },
    {
      "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"
    }
  ],
  "next": "55df06be4369f5d8ab5eb61a5d22809255171036"
}
