)]}'
{
  "log": [
    {
      "commit": "c6f3bb87ffbb44d902c4a1f67a71bb108bd01560",
      "tree": "c423db1d6e7914e57559ab5a4325094e6f1ea5c0",
      "parents": [
        "e5b7894351ecc5ef99442eea0700c913178c95ce"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 21 20:40:33 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 21 20:41:16 2012 -0700"
      },
      "message": "Further x86 progress and image creation.\n\nChange-Id: Idafadfc55228541536f25d2c92d40d9e0510b602\n"
    },
    {
      "commit": "e62076c20b83f5983953d9526882250f3d5df87f",
      "tree": "b664b4af1f4a02adf951530fa020540b7abd8e87",
      "parents": [
        "f24132c3320cca583e69edbc19491f82c1c7466a"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 21 14:26:16 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 21 14:50:45 2012 -0700"
      },
      "message": "Fix special method codegen\n\nTightened up the conditions under which we can generate frameless\nmethods.  Added and renamed test case.  Added special handling for\nidentity functions.\n\nChange-Id: I5b04ea222becefc151ef7ff6b255e58922ccd6f2\n"
    },
    {
      "commit": "f24132c3320cca583e69edbc19491f82c1c7466a",
      "tree": "1ab789c94762e046836ba47d406ddc077a41132d",
      "parents": [
        "087b2419f432c7d1c32da27c528af4701adb6abd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 21 01:34:31 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 21 01:34:31 2012 -0700"
      },
      "message": "Fix setter trivial pattern matching.\n\nAdd extra rule to match \"return null\". Don\u0027t permit \u003e 3 ins for the\nsetter pattern due to a bug in register allocation.\n\nChange-Id: I3c0c0d9055021a68ce3454be7661c6ce047329cb\n"
    },
    {
      "commit": "16da88c70c4bdbd97b8482be8b42103a52f22d59",
      "tree": "905c1bfc68c7a301706a5cd2b7a3d7d9084a06b3",
      "parents": [
        "b41b33b5e5f08083e35f84818b4f44d26feb4a8b"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 20 10:38:17 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 20 14:36:11 2012 -0700"
      },
      "message": "Custom codegen for small frameless methods.\n\nAdded a general mechanism that will allow pattern matching of\nsmall methods and (generally) frameless code generation.  Prevously,\nall frames were at least 16 bytes, not you can have zero-length\nframes (and thus some old asserts had to go).\n\nChange-Id: Ic786940a602e25b48cbc317ac601ac84cc307762\n"
    },
    {
      "commit": "b41b33b5e5f08083e35f84818b4f44d26feb4a8b",
      "tree": "a888c3c40bd6070acc459700ed5c79055c6984f4",
      "parents": [
        "49ac9bfa63aea6d331e4c9aa5011953777bf98ad"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 20 14:22:54 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 20 14:24:39 2012 -0700"
      },
      "message": "Add 3rd argument register to X86.\n\nImplement more instructions.\n\nChange-Id: I3af7bbaf18eedc6537f1cfc2d57c4f6106fb5164\n"
    },
    {
      "commit": "bdf6c3d6728f563a143862f1909cb0e6717a8b23",
      "tree": "b01ccf0fef8880e4e273d858134090d919ee2fb9",
      "parents": [
        "0637e27af8e54f39634024dc77e8b094f21782f9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 20 13:43:53 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 20 13:43:53 2012 -0700"
      },
      "message": "Trivial cleanup of typos and fixed-length buffers.\n\nChange-Id: I4ea3bb51320160c5ebda8b2a8ba3ca81452915b5\n"
    },
    {
      "commit": "f582258f0e296223a091fd64231a203ad71e9649",
      "tree": "23049122f075220421803a1745cf634337360a40",
      "parents": [
        "a7c12688da57ea052e127776ad3043ca5079488d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 19 22:34:31 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 19 22:59:13 2012 -0700"
      },
      "message": "oat file patching\n\nChange-Id: Idbbdf19f3a77498d79d043fd33ca12ce39cafbb7\n"
    },
    {
      "commit": "a7c12688da57ea052e127776ad3043ca5079488d",
      "tree": "a34c72a35f260e0680a486e3b98e7965dfcdc687",
      "parents": [
        "b3ab25b58945f1bd22da1be2eb49dc3eb121011e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 19 13:13:53 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 19 13:17:53 2012 -0700"
      },
      "message": "Restore card marking, minor tuning\n\nRestore GC card marks that were mistakenly dropped during an\nearlier retructuring.  Add debugging to code to gather opcode\nfrequency statics.  Minor tuning for code size.\n\nChange-Id: I117f62c29e29250277166e7f005706e27998f77a\n"
    },
    {
      "commit": "b3ab25b58945f1bd22da1be2eb49dc3eb121011e",
      "tree": "e17de76e6be5e2b1bbeea8c66cecc782bc7fb417",
      "parents": [
        "19daac61b9e73c0c805538e77f6e75ef273caa0f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 19 01:12:01 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 19 08:39:59 2012 -0700"
      },
      "message": "Enable compiler_test on host.\n\nChange-Id: I67a745ba78567af6c967cc44cd9c9640ef5ba398\n"
    },
    {
      "commit": "9c044ce5f76e9bfa17c4c1979e9f8c99ae100695",
      "tree": "6eefdf59583cd75f1e77814b85bbf1222addd395",
      "parents": [
        "3fa13791c51985d9956d01bc465de6d36c3390d3"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 18 13:24:07 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 18 18:17:16 2012 -0700"
      },
      "message": "Support for promoting Method* and compiler temps\n\nThis CL completes the support for allowing compiler-generated\ndata to be treated as a Dalvik register and become subject to\nthe normal register promotion and live temp tracking machinery.\n\nAlso:\n   o Removes some vestigal and useless Method* loads from\n     range argument setup.\n   o Changes the Method* pseudo vReg number from -1 to -2 to\n     avoid a conflict with the 0xffff marker in the register map.\n   o Removes some experimental code for CSE at the basic block\n     level.\n\nChange-Id: I112a8bbe20f95a8d789f63908c84e5fa167c74ac\n"
    },
    {
      "commit": "3fa13791c51985d9956d01bc465de6d36c3390d3",
      "tree": "b7c5e7a8e3462edd64e141e9de9f3e170333748d",
      "parents": [
        "10fa929276fc069f882783174fda7af8194d41cf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 18 15:53:45 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 18 15:55:17 2012 -0700"
      },
      "message": "Patch support for the boot image.\n\nRequires oat and image writer support.\n\nChange-Id: Ic87dd481a4f86d15faa1e830ea1dd0b3d664c220\n"
    },
    {
      "commit": "ab2b55dfcf630fdf8d03b5f506386f114fa2874c",
      "tree": "288b6e463a5eb13d78bb0a1a511233ddf1259124",
      "parents": [
        "b2793375d42b5d90d9a0111581c4314abe11ca4c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 18 00:06:11 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 18 00:06:11 2012 -0700"
      },
      "message": "Refactor callRuntimeHelper\n\nChange-Id: I87c5f592a931c98c4b5b693b72216f4e71990162\n"
    },
    {
      "commit": "239c4e72b5a69754e1d6879be5ba1f85150655c1",
      "tree": "45404157d7a684a739d218dc5a9ee3c0a6cdab19",
      "parents": [
        "8ed14528fb70a9ba7cc5e471317d08dc629cbc23"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 16 08:42:29 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 17 16:52:32 2012 -0700"
      },
      "message": "Loop detection, improved reg allocation\n\nDetect loops and loop nesting depth, and use the latter to\nweight register uses (which are then used to determine which\nregisters to promote).\n\nAlso:\n\n   o Fixed typo that prevented squashing of useless fp reg copies\n\n   o Rescheduled array access checks to hide latency of limit load.\n\n   o Add basic-block optimization pass to remove duplicate range\n     checks.\n\n   o Fixed bug that prevented recognition of redundant null\n     checks following iput-wide and aput-wide.\n\nChange-Id: Icfbae39e89b1d14b8703ad6bbb0b29c0635fed1e\n"
    },
    {
      "commit": "2ed3b9536ccfd7c7321cc18650820b093b22d6c9",
      "tree": "c0e211414d0fed674ed2d1fbb340433b49adb57b",
      "parents": [
        "e9dc4c0beae58d7d6d4cf43140c233251e06bbb7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 17 11:49:39 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 17 12:34:56 2012 -0700"
      },
      "message": "Implement direct apk -\u003e boot calling\n\nAlso sharpen super calls.\n\nChange-Id: Ie4d3ab2cbf2961a06ec86762a53132f49a4ed922\n"
    },
    {
      "commit": "98dc5d7692591b7e9d4e576407f138f80c0a1e64",
      "tree": "c69c1d9cb6fcf975c7284c49290e5052a45c08db",
      "parents": [
        "594e76f8d5fc7c8e419ead1185cfe91dd9036d0c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 16 19:12:11 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 16 19:12:11 2012 -0700"
      },
      "message": "Fix out-of-bounds memory access\n\nValgrind flagged a pair of out-of-bounds memory accesses.  Reorder\nthe compound statement to correct.\n\nThanks Valgrind!\n\nChange-Id: I9cd9c4287640f5b4eaade76f921bf9fd33b07075\n"
    },
    {
      "commit": "6cbb2bd8ba9a52de7e50a5da1f4e98dd7a460f1b",
      "tree": "1ab9f2f8e6c056b799d389a38a6b9abd052459a7",
      "parents": [
        "0512f02dd6623c0870c11fbf3274d7462f732136"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 16 13:45:30 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 16 13:45:30 2012 -0700"
      },
      "message": "X86 invocation tidy up.\n\nChange-Id: I5bbea741e6434f9172e4041e562a5b15e2f37f95\n"
    },
    {
      "commit": "141b0c75986949da0adbf9c07ad92bc675f1bfed",
      "tree": "97890a3e1ce19a143a003b64814dc56fb033c70a",
      "parents": [
        "e9896e9ff852f2e69d8a0b3bd7e8f970fb4ed809"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 15 18:18:52 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 15 18:18:52 2012 -0700"
      },
      "message": "Enable all tests on x86, add assertions\n\nEnable jni_internal_test tests that were only enabled on ARM.\nEmit \"safe\" unimplemented instructions that will die if run.\nAssert that instruction sizes emitted by the assembler agree with the\nexpected size.\n\nChange-Id: I5a99d473a7f4675142b17ad03132c1df55cb2c8f\n"
    },
    {
      "commit": "f7d9ad39541dd09030e26d54d3b73a076f90cc74",
      "tree": "aa0a9bc7b422ecc31432471fedd1b5fb496866b1",
      "parents": [
        "f320b639eee1ec0e9d99e8d6c2a805892d016807"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 13 18:45:39 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 14 23:25:39 2012 -0700"
      },
      "message": "Enable all JNI internal compiler tests on the host.\n\n(cherry picked from commit abda43c90f70963909128c1cc495190d60fd8372)\n\nChange-Id: I0a7fc96e84dacf34108551271760aae13d5ee010\n"
    },
    {
      "commit": "3d661949dba4a2f3311e6f74a3c42b5addf1f534",
      "tree": "d8fd2c903fe425bb65a92a7ee9f72a1e57cf5045",
      "parents": [
        "fb84494fc1888b92e938ece850990668073a276b"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 14 17:37:27 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 14 17:53:18 2012 -0700"
      },
      "message": "Real fix for 064\n\nThe recent ssa cleanup CL surfaced a somewhat subtle bug in\nlive register tracking.  The code generation register utilities\nattempt to remember and reuse live Dalvik register values for future\nuse.  This remembering takes place in the storeValueXX() code.\nFor this to work, though, storeValue may only be called once during\nthe compilation of any single Dalvik instruction.\n\nHowever, the code generation routine for CONST_CLASS included a\nsomewhat complicated slow path with iternal branches and two\ngenerated \"storeValue\" locations.  This resulted in downstream\ncode expecting to find a live value in the wrong place.\n\nThis fix is to note this special case and do a \"clobber\" on the ssa name.\n\nThis CL also includes some sanity checking code that can detect\nmultiple calls to storeValue during one intruction compilation to\ntry to catch this situation in the future.\n\nChange-Id: I66a279140accd80cda83f66efe570c9702fb351b\n"
    },
    {
      "commit": "e196567b50a084b163937ea9605b51ee1e48adeb",
      "tree": "709964fc09a36132490d9a3a4805983ec80c57e3",
      "parents": [
        "13b835a45f3dccff1c6d024ad82a2044831c7c41"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 11 18:39:19 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 13 20:59:18 2012 -0700"
      },
      "message": "SSA rework and support compiler temps in the frame\n\nAdd ability for the compiler to allocate new frame temporaries\nthat play nicely with the register allocation mechanism.  To do this\nwe assign negative virtual register numbers and give them SSA names.\nAs part of this change, I did a general cleanup of the ssa naming.\nAn ssa name (or SReg) is in index into an array of (virtual reg, subscript)\npairs.  Previously, 16 bits were allocated for the reg and the subscript.\nThis CL expands the virtual reg and subscript to 32 bits each.\n\nMethod* is now treated as a RegLocation, and will be subject to\ntemp register tracking and reuse.  This CL does not yet include\nsupport for promotion of Method* - that will show up in the next one.\n\nAlso included is the beginning of a basic block optimization pass (not\nyet in a runable state, so conditionally compiled out).\n\n(cherry picked from commit f689ffec8827f1dd6b31084f8a6bb240338c7acf)\n\nChange-Id: Ibbdeb97fe05d0e33c1f4a9a6ccbdef1cac7646fc\n"
    },
    {
      "commit": "b5d09b2f87202bc132ac3991d4b6d71f4f6d9264",
      "tree": "e9d805a956b42fd9958163a1f5feef68e8c7d97b",
      "parents": [
        "79ab9e32c6880e7b342c192a479c858c9dccf496"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 06 22:14:17 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 12 16:01:37 2012 -0700"
      },
      "message": "Method prologue and epilogues, add missing x86 functionality.\n\nEnables compiling and running a number of JNI internal managed code\nmethods on the host.\n\nChange-Id: I56fceb813d0cb24637bc784ba57f2d1d16911d48\n"
    },
    {
      "commit": "ab058bb04d11ed086116d95f2d55bf6b35e8cc35",
      "tree": "eb6d9f03207431ce9bcb262fe661765cfcca8b5e",
      "parents": [
        "49c4894f76f6a7aec4d6a1ec2c901700c9108944"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 11 22:19:38 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 11 22:40:50 2012 -0700"
      },
      "message": "Make code buffer units 8bit rather than 16bit.\n\nChange-Id: I1ca087c4f7f820a8816388095405603f4163b354\n"
    },
    {
      "commit": "efccc565091b3409ed1372615b4ea4e2f6c39323",
      "tree": "c0987fb6051a0c4abe2129dc3564c51274fab7e1",
      "parents": [
        "904667a58fa38437d1be6907beb3fb76d1982e0b"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 11 11:19:28 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 11 11:19:28 2012 -0700"
      },
      "message": "Frame layout change\n\nThis CL slightly changes the frame layout to remove an old unnecessary\nslot, allow for the inclusion of compiler-generated temps and\nunifies all variable offset calculation into a single function shared\nby the compilers and the runtime system.\n\n   o Update the GetVRegOffset function in stack.cc to understand the\n     new layout.\n\n   o Remove compiler-private offset calculation code and route\n     everything through the shared GetVRegOffset in thread.cc.\n\n   o Remove \"filler word\" that existed immediately after the last\n     Dalvik local.  This was there to address an initial concern that\n     I had about a single argument register being reused later as a\n     long.  Now convinced that it won\u0027t happen.\n\n   o Extend the old \"padding\" region to include compiler-created temps\n     that can appear to the rest of the rest of the system as\n     Dalvik registers.  The new temps will have Dalvik register numbers\n     of -2 and lower.\n\n   o Treat Method* for the current method as a special Dalvik register\n     denoted by reg number -1.\n\nChange-Id: I5b5f3aef9c6a01d3a647ced6ec06981ed228c785\n"
    },
    {
      "commit": "55c02cd377ada856e4ca12f8a433da0f9888a667",
      "tree": "bae180877d1c35451000bdb2a1e61ed82a011174",
      "parents": [
        "73666be63d30f9af5487982f69600be38caaed1b",
        "05eba3650f876c5f39e92d1b9646c9aea00df4a2"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 10 21:14:27 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 10 21:14:27 2012 -0800"
      },
      "message": "Merge \"Monitor enter/exit cleanup\" into dalvik-dev"
    },
    {
      "commit": "05eba3650f876c5f39e92d1b9646c9aea00df4a2",
      "tree": "e191716e3364927a44fd3413ca377dfe2dcd3679",
      "parents": [
        "d13d11f07bc50c60fa9c9049e593f279725d8f72"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 10 20:11:27 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 10 20:11:27 2012 -0800"
      },
      "message": "Monitor enter/exit cleanup\n\nIf-conversion of the arm monitor enter/exit logic to avoid\nmispredicted forward branch.  Small, but measureable improvement\nin synchronization benchmark.\n\nChange-Id: I88154a9690258099ec1d6de6297e9a7bade97d88\n"
    },
    {
      "commit": "719ace4734f519c67fd2c1ff7a232c079309a615",
      "tree": "ccce9abb445238e4a00c9d4bfba093fb16bc8c7c",
      "parents": [
        "b3cd1229e6904365ca0ca2a7bbc4701ad1908154"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 18:06:03 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 18:06:03 2012 -0800"
      },
      "message": "Stop saying \"typedef struct\" and \"typedef enum\".\n\nSeeing new instances of this C-ism go in makes me a sad panda.\n\nChange-Id: Ie3dd414b8b5e57a4164e88eb2d8559545569628d\n"
    },
    {
      "commit": "b3cd1229e6904365ca0ca2a7bbc4701ad1908154",
      "tree": "d499bee2134f38253118461070e6e11b2b33c4fc",
      "parents": [
        "e7825db4cfe76eabf5e3ebc0358b5e067ca3f484"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 16:00:38 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 16:00:38 2012 -0800"
      },
      "message": "Really fix build.\n\nChange-Id: I09c76b8fede9e926519b206010ba6c7ab44c3216\n"
    },
    {
      "commit": "e7825db4cfe76eabf5e3ebc0358b5e067ca3f484",
      "tree": "cacc5b5d3c41e30943df6edaadb614c0cfff78ee",
      "parents": [
        "b3bd5f07884f5a1f2b84224363b1372d7c28d447"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 15:46:57 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 15:46:57 2012 -0800"
      },
      "message": "Fix build.\n\nThe compilers had drifted a bit while I was away.\n\nChange-Id: I938a5992e8e100f512db4c7934ac4b3ec80e8138\n"
    },
    {
      "commit": "b3bd5f07884f5a1f2b84224363b1372d7c28d447",
      "tree": "6e2997ab64b4a4f32d7ef539a4649adc736ea553",
      "parents": [
        "ddbd01ac1660d57416879d5a576482f1048dde64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 08 21:05:27 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 15:37:46 2012 -0800"
      },
      "message": "Refactor the compilers out of libart.\n\nThis builds three separate compilers and dynamically links with the right one\nat runtime.\n\nChange-Id: I59d22b9884f41de733c09f97e29ee290236d5f4b\n"
    },
    {
      "commit": "680b1bdd7e5d112ba4b95d6c81a43b65119b3b9c",
      "tree": "21514b638db9b28cf26b4b452c3e5f9449568812",
      "parents": [
        "d8af8bd46c13347ca15558999db4da85dbc31818"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 07 20:18:49 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 07 20:18:49 2012 -0800"
      },
      "message": "Unify branch flags, pretty printer for OpKind.\n\nLIR operand 0 is always an offset for a branch. This is clear in\nconditional branches that are binary and have the 2nd operand as the\ncondition codes of the branch. This changes unconditional branches to be\nunary and therefore more intention revealing that the 1st operand will\nbe used by the assembler to hold an offset.\n\nA \u003c\u003c operator for OpKind allows easy pretty printing.\n\nChange-Id: I933b8e0bf43f5be3eff13f93c3fc1539ae526840\n"
    },
    {
      "commit": "86a4bce32e2aaf3d377c0acf865f0630a7c30495",
      "tree": "98517211fdb1309f461e3fe3c41a34739ad121c1",
      "parents": [
        "6150d9889b56e95f1267d9200c5702b16e0d32d5"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 06 18:15:00 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Mar 07 12:10:21 2012 -0800"
      },
      "message": "Fix branch bug (showed up in codegen for debug)\n\nThere are a few \"safe\" optimizations in the compiler - removing\nregister copies where source and target are the same, deleting\nbranches to the next instruction, etc.  One of the redundant\nbranch optimizations, however, was incorrect and resulted in\na good branch being deleted.  This one showed up in the debug\nbuild, and resulted in a failure to do a suspend check (because\nthe branch to the suspend check was deleted).\n\nI had hoped that this but might also be the case of some\nother unexpected failures, but unfortunately I was only able\nto trigger it when doing a \"codegen for debug\" build.\n\nThe source of the bug was a confusion around 16 v/ 32-bit\nunconditional branch encodings.  For a 32-bit unconditional\nbranch, going to the next instruction means an displacement\nof zero.  However, for 16-bit branches, the next instruction\nis represented by a displacement of -1.\n\nTo help track down this sort of thing in the future, this CL\nalso adds a new optimization disable flag: kSafeOptimizations.\nThis will allow us to really turn off all optimizations for A/B\ntesting.\n\nAlso in this CL we are re-enabling the ability to promote argument\nregisters and improving somewhat the code sequence for suspend\ncheck when debug is enabled.\n\nChange-Id: Ib6b202746eac751cab3b4609805a389c18cb67b2\n"
    },
    {
      "commit": "adb8c67f6d87a160d4e3a8afea7cb93f6c14568b",
      "tree": "93b265743b7fd7a831803f6bc84e2aa8ce338156",
      "parents": [
        "731b2abfccd8704d129e3b8e46a086660161fef3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 06 16:49:32 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 06 17:21:07 2012 -0800"
      },
      "message": "Move the compiler away from libdex.\n\nChange-Id: I0c5fdc38d94f1199023cfc6aab3060b927ad2383\n"
    },
    {
      "commit": "de797834a282bf913e144f83ff044efd6d77b278",
      "tree": "2d4e91dfc5065b1b046c22972739129c48ad5a2d",
      "parents": [
        "96ab420e2a78f9832a094254354062b8bc54bf72"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 06 10:18:10 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 06 10:41:21 2012 -0800"
      },
      "message": "Dummy up MOV instructions, add/tweak comments.\n\nAlso reorder some things to help me see them on screen at the same time.\n\nChange-Id: I398b46410f73d7853b5a1734f5c2a9e256b981bf\n"
    },
    {
      "commit": "96ab420e2a78f9832a094254354062b8bc54bf72",
      "tree": "6430fd7a7009d3de261995af55253970756c7a28",
      "parents": [
        "95ba0dc516531776813c426e85ce868ead564a7b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 05 19:51:02 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 06 09:06:14 2012 -0800"
      },
      "message": "Beginning of X86 encoding map and instruction size routine.\n\nChange-Id: Idaa0d5e0852d7bcfeabff443a45223a078ad02d2\n"
    },
    {
      "commit": "a7678db092ac6bb79f7cad490099a1015fbbc714",
      "tree": "95181107e5ef16068298cbec717b605f54748ca4",
      "parents": [
        "e88dfbf138bc204b1ce21911f1c34098ea74af7c"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 05 15:35:46 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 05 15:35:46 2012 -0800"
      },
      "message": "x86 source code hack and slash\n\nMade a pass over the compiler source to get it into a compileable\nstate for the x86 target.  Lots of temporary #ifdefs, but it\ncompiles and makes it to oatArchInit().\n\nChange-Id: Ib8bcd2a032e47dcb83430dbc479a29758e084359\n"
    },
    {
      "commit": "e88dfbf138bc204b1ce21911f1c34098ea74af7c",
      "tree": "c7ca47856bf4b47563cb31b455f299871f7b7a6f",
      "parents": [
        "9831bfac0d2ef54a996ae02e0755600ecb5f66ea"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 05 11:19:57 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 05 11:22:32 2012 -0800"
      },
      "message": "x86 codegen source file skeletons\n\nAdd source files for x86 code generation.  These are basically just\nthe MIPS versions with all bodies ifdef\u0027d out and replaced with\nUNIMPLEMENTED(WARNING).\n\nThere is also one real change in this CL related to the way the\nassembler computes instruction size.  We now set the initial\ninstruction size into the LIR during flag generation.  For x86, this\nsize may be changed during assembly when we detect the ability to\nsubstitute a general instruction for an equivalent one with a shorter\nencoding.\n\nNOTE: the new files are not yet ready for compilation.  That will be\nthe next CL.\n\nChange-Id: Id94fbeeb7c3e36ba4a8d93c3807351ea20c74133\n"
    },
    {
      "commit": "9831bfac0d2ef54a996ae02e0755600ecb5f66ea",
      "tree": "0931a3b4b09af073876805bde7f0784ab6503d4e",
      "parents": [
        "4455f7816c697b36fc3c158234770c6f1176b41e",
        "e32ca23c21187f62aaef70d33de3c362e2bbd0e3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 05 10:28:57 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Mar 05 10:28:57 2012 -0800"
      },
      "message": "Merge \"Start of X86 LIR description.\" into dalvik-dev"
    },
    {
      "commit": "e32ca23c21187f62aaef70d33de3c362e2bbd0e3",
      "tree": "3534e61e1742bb496df5bac7ae15602a0d111d17",
      "parents": [
        "cad9606ee40300d19d9e135065f8ffe29d970c29"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 05 10:20:23 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 05 10:23:19 2012 -0800"
      },
      "message": "Start of X86 LIR description.\n\nChange-Id: I34298bf9cf6bfdb022064bc7fdabffae857c8c5c\n"
    },
    {
      "commit": "4455f7816c697b36fc3c158234770c6f1176b41e",
      "tree": "015a112589bea82b5b04f21c76fd961e3e95d31a",
      "parents": [
        "cad9606ee40300d19d9e135065f8ffe29d970c29"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 05 10:14:28 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 05 10:16:02 2012 -0800"
      },
      "message": "Fix type in README.mips\n\nChange-Id: I0089fba3a0e04573043f3805180c8785342a6862\n"
    },
    {
      "commit": "cad9606ee40300d19d9e135065f8ffe29d970c29",
      "tree": "d43c03c0a5e677353a499077e720d62974cb28dd",
      "parents": [
        "fb6adba0d5d5505610fbd325e7911db700a2f1e8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 04 10:33:52 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 05 09:07:56 2012 -0800"
      },
      "message": "Fix MIPS comment typo.\n\nChange-Id: I0235350b4d5204e6c3a63b7f73b83c85628067f3\n"
    },
    {
      "commit": "a2ebdd74eb2f36e6efa7a482bc11c7b93d97c2c3",
      "tree": "2d63c98a1f729f1e17969bfbc4b7dc1da48f4567",
      "parents": [
        "11f9d2130e938511efceb6d2a4793cee7dfdde35"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 04 14:57:06 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 04 15:00:36 2012 -0800"
      },
      "message": "Complete MIPS code generation support\n\nWith this CL code generation for MIPS is complete (though untested on\nactual hardware).  Core and the boot classpath compile without issue.\n\nThe primary thrust here was to support expanding of short branch\nsequences to long form during assembly if the displacement field overflowed.\nThat led to a general cleanup of creation on LIR nodes outside of the\nnormal flow.\n\nAlso introduced is a README to describe the state of MIPS support, as well\nas memory barrier handling.\n\nChange-Id: I251a2ef8d74bc7183406dce9493464be24a9d7f7\n"
    },
    {
      "commit": "11f9d2130e938511efceb6d2a4793cee7dfdde35",
      "tree": "cf6a63ad64a66c5ee225c789adc15ba4962d526c",
      "parents": [
        "e8267506ac2d64351e21ce90e8643b9247e1803c"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 03 20:03:18 2012 -0800"
      },
      "committer": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 03 20:03:18 2012 -0800"
      },
      "message": "Mips portable floating point support\n\nFleshing out the portable floating point.\n\nChange-Id: Ie7a6dcb168a4eb2a61a52e6d747da4118d54f3aa\n"
    },
    {
      "commit": "c5159d55ca8e9022b748176f9f53676e8e9d4cd2",
      "tree": "d407a682788fbbca4dbd0821350058a3c2901617",
      "parents": [
        "5b455485c1deda58959fdc410050e01448c032c2"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 03 11:48:39 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Mar 03 16:32:24 2012 -0800"
      },
      "message": "MIPS switch table support\n\nAnd 64-bit neg/add/sub (ouch! Mips has no carry bit...)\n\nChange-Id: Ifb94324a0052d6069977fb8f22679b95890445d8\n"
    },
    {
      "commit": "41f05df8aeba13e853a22820a0f4bf094233e2d9",
      "tree": "0f107dd37b06d85ee3cf4261b855d836f1f4ba6a",
      "parents": [
        "be00364d260ea96323a070723af0bd61e3ea703a",
        "0398c42cd64682d18120a26c6c39b193fdf97658"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 02 15:40:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Mar 02 15:40:30 2012 -0800"
      },
      "message": "Merge \"More MIPS support\" into dalvik-dev"
    },
    {
      "commit": "be00364d260ea96323a070723af0bd61e3ea703a",
      "tree": "065731f9d2f41c68f4d7dea0a642857f2ab8a69d",
      "parents": [
        "bc6ba404efa7bec4ca5d9fdee890cba7beaaee5a"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 02 15:28:37 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 02 15:28:37 2012 -0800"
      },
      "message": "Another attempt to fix the mac build\n\nChange-Id: Ib005ee782085e809f97ffb1a8fb843bca29d2e2d\n"
    },
    {
      "commit": "0398c42cd64682d18120a26c6c39b193fdf97658",
      "tree": "f5a60c8bca5d4acd7b31d21239f3c74bf7c7d42c",
      "parents": [
        "82488f563e7f72f8c626052893c1792d76ab3faf"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 02 15:22:47 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 02 15:22:47 2012 -0800"
      },
      "message": "More MIPS support\n\nWorking through the unimps.\n\nChange-Id: Ie088d2061ca9a77f42ebd75e2936159465deed10\n"
    },
    {
      "commit": "bc6ba404efa7bec4ca5d9fdee890cba7beaaee5a",
      "tree": "f309b72db67250d828d5db168834c9167c2b4e80",
      "parents": [
        "1f729aac2e3a4924d09cdb1a17f72ee2e22745b4"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 02 14:52:47 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 02 14:57:37 2012 -0800"
      },
      "message": "Fix the mac build - tweak the display format\n\nChange-Id: I6c89ba96556f0db847d3426544adeeac98e14051\n"
    },
    {
      "commit": "82488f563e7f72f8c626052893c1792d76ab3faf",
      "tree": "e17e3bc62adf8b57bfeb86a3a879dfb099d3d1d7",
      "parents": [
        "013b6f296ff7c0cb6aa5aeb6868df05995eeadb7"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 02 08:20:26 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 02 13:02:52 2012 -0800"
      },
      "message": "Multi-target Codegen cleanup\n\nTrying to get a bit more consistent in the abstraction layer\nnaming:\n\n     genXXX   -\u003e high-level codegen, for ex: genIGet()\n     opXXX    -\u003e instruction-level output, for ex: opRegImm()\n\nAlso more fleshing out of the Mips codegen support.\n\nChange-Id: Iafdf397cbb5015bfe3aa2c38680d96c7c05f8bc4\n"
    },
    {
      "commit": "71ac99485e79ad7eb1ba3ea2d404d53bb5784c13",
      "tree": "1a3a853d1b3b64f3d99b4b8f8dd9d2f85cd13d92",
      "parents": [
        "5de3494e4297c0d480409da3fecee39173f1d4e1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Mar 01 17:23:10 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Mar 01 17:23:10 2012 -0800"
      },
      "message": "Change assembler to use byte instruction lengths\n\nChange the Arm \u0026 Mips instruction templaces to record instruction\nsize in bytes rather than half-words.  Also includes a few Mips\nchanges to get us in compilable state.\n\nChange-Id: I5a4f6cbd0cb0569805d9dfbd341c244152e59ac7\n"
    },
    {
      "commit": "5de3494e4297c0d480409da3fecee39173f1d4e1",
      "tree": "269cd3447925d0b474d47fb056da4730f288ee12",
      "parents": [
        "6edfde4ae89f3a16d22ca82c928a5dd420e9fce9"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Mar 01 14:51:57 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Mar 01 16:43:54 2012 -0800"
      },
      "message": "Another step towards a Mips target\n\nUpdating the MIPS target to use the now common codegen routines.\nStill much to do, but the general structure is sufficient to allow\nwork to begin on the other target.\n\nChange-Id: I0d288fdfb59c8e76fad73185fdd56b345e87b604\n"
    },
    {
      "commit": "31a4a6f5717f645da6b97ccc1e420ae1e1c71ce0",
      "tree": "de07c7175bcda6c2e3f11329d72d142319354f3f",
      "parents": [
        "32c9a2decebe7b736e1f05b53b5822affea5e81d"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Feb 28 15:36:15 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Feb 29 18:52:47 2012 -0800"
      },
      "message": "More target-independence\n\nContinuing to move target-specific code from the Arm\ncode generator into the independent realm.  This will be\ndone in multiple small steps.\n\nIn this CL, the focus is on unifying the LIR data structure and\nvarious enums that don\u0027t really need to be target specific. Also\ncreates two new shared source files: GenCommon.cc (to hold\ntop-level code generation functions) and GenInvoke.cc (which\nis likely to be shared only by the Arm and Mips targets).\n\nAlso added is a makefile hack to build for Mips (which we\u0027ll\neventually remove when the compiler support multiple targets\nvia the command line) and various minor cleanups.\n\nOverall, this CL moves more than 3,000 lines of code from\ntarget dependent to target independent.\n\nChange-Id: I431ca4ae728100ed7d0e9d83a966a3f789f731b1\n"
    },
    {
      "commit": "4dd96f56909ec35c83a3d468b0e47769988c1a1d",
      "tree": "99fde7aab07e550864860825b7732a37fce81d81",
      "parents": [
        "45619fcc01fb6db1ac9481a91608eb46f90829e4"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Feb 29 01:26:58 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Feb 29 11:53:18 2012 -0800"
      },
      "message": "Extract method-related information from CompilationUnit.\n\nExtract method-related information, such as class_loader,\nclass_linker, dex_file, dex_cache, code_item, method_idx,\nand access_flags from art::CompilationUnit, so that we\ncan use them in 2 different code generators.\n\nChange-Id: I20631cc73b6f01e9646a983156f3fcb066d732db\n"
    },
    {
      "commit": "a15e67d5ee5aa9615596cee2be42c2b2caf128c6",
      "tree": "cd126ce1e809688011385d521abf19c9c302d1b1",
      "parents": [
        "9b5ee8837b4864b6ac114e9fead17bdeb04c6d55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 28 13:51:55 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 28 15:21:27 2012 -0800"
      },
      "message": "Remove pad word from arrays\n\nThis change removes the 4 byte pad from all arrays except longs and\ndoubles. It saves 76kb from the boot image, and will also reduce the\nsize of arrays in the heap (and thereby reduce garbage collection).\n\nChange-Id: I3ff277d5bf14c57c0f7552215818e588ec6cc275\n"
    },
    {
      "commit": "1984651929744dd603fd082e23eacd877b9bc177",
      "tree": "ffa10973a88f0f2743f3fbfaf5e7e4235d5f262d",
      "parents": [
        "f3c01c530ab3a645bd5a980522df4d396dcbf228"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 24 11:42:47 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 27 16:08:56 2012 -0800"
      },
      "message": "Invoke static/direct dispatch change.\n\nThere was a subtle race in static/direct dispatch via the code and methods\ntable. This patch removes the table in preparation of architectures like\nx86 which will more aggressively sink loads.\n\nRemoves unused fields, code.. Brings back resolved methods table\nshort-cut and associated fast paths to use this (such as in Proxy). Adds\na resolution method that is used as the trampoline for static and direct\nmethods.\n\nAdd source file and line number to Throwable::Dump.\n\nMethodHelper knowledge of runtime methods.\n\nChange-Id: Ieae1b74c24072e6327a5bb2cad466f04e3c46c4d\n"
    },
    {
      "commit": "513c64a22fc80764d6dbb9af1aba02547e1ba1ae",
      "tree": "0c7d8db6f68962e311f533dca984dfe4118046d0",
      "parents": [
        "d1f1bf03e30320e5730790678f470ac8a610b6b6"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Feb 26 15:16:23 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 27 14:18:10 2012 -0800"
      },
      "message": "Fix load/storeBaseDispWide bug with large offests.\n\nIncludes new JIT regression test.\n\nChange-Id: I39ef4fc40e7408036a47966a6186a80ca5d7d83e\n"
    },
    {
      "commit": "e3acd07f28d5625062b599c2817cb5f7a53f54a9",
      "tree": "d38696b0235dab5d8ef791cdb9fb311a6705e03b",
      "parents": [
        "55b796c6f1fdc36494463a3deeb1e248800695e9"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Feb 25 17:03:10 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Feb 26 20:44:46 2012 -0800"
      },
      "message": "Multi-target support\n\nThis CL represents a step towards splitting out the target dependent\nand target independent portions of the compiler, and also adds in the\nbeginning of a MIPS compiler based on the MIPS AOSP Jit submission.\n\nMore polish is clearly needed, but the split is here probably pretty\nclose.  The MIPS code will not compile at this point (and there is no\nmakefile target at present), but it\u0027s pretty close.\n\nThere should be no changes in functionality of the Arm compiler in this\nCL - just moved stuff around.\n\nChange-Id: Ia66b2847e22644a1ec63e66bf5f2fee722f963d4\n"
    },
    {
      "commit": "80c4d575cb217f30460e8df210185f6282ec2727",
      "tree": "55afb84cb8e69bc7fed063c95f40e59bf064818a",
      "parents": [
        "6b00e189defc8a6b1acbd736c65d46bbfaaa2cd6"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 24 13:35:44 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 24 13:35:44 2012 -0800"
      },
      "message": "[Compiler] Exit-path bug fix\n\nSurprised that we haven\u0027t run into this before.  The exit code for\na method involves stripping the frame.  For frame sizes \u003c 1024 this\ncan be accomplished with an add sp,#imm.  For larger frames we need\nto materialize the frame size in a temp register and then do a\nregister to register add.\n\nThe exit path code was failing to ensure that r0/r1 were not used\nas temps in the large frame case - otherwise the return value could\nbe clobbered.\n\nChange-Id: If2618e9522fb10597f0f8c8e8afffd20d73b5d37\n"
    },
    {
      "commit": "8cd6ddaeb78cc904e13bac88753654a04b2e15b8",
      "tree": "005ebbe14563bb3ec5bfc9837bf3fd4284427cec",
      "parents": [
        "a656a0f6fbcf2ba3f15cae54a773b9c636dd32c1"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 22 10:15:34 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Feb 23 15:55:20 2012 -0800"
      },
      "message": "Numerous fixes to compiler and verifier for cts vm-tests.\n\nClassNotFoundExceptions in ResolveType are converted to\nNoClassDefFoundErrors.\n\nCompiler checks for puts into final fields.\n\nMethod resolution searches direct methods if an appropriate virtual\nmethod can\u0027t be found.\n\nInvocations of \u003cclinit\u003e are rejected by the verifier.\n\nInvoke-super and invoke-virtual can\u0027t be used on private methods.\n\nUsing invoke-interface on non-interface methods and not using\ninvoke-interface on interface methods leads do an error.\n\nChange-Id: Ia589f1ffccf91b62812ee34c8c5fae1aaf3798c6\n"
    },
    {
      "commit": "c8b306f5221658c7e4b5516be8917dc8c9288e7e",
      "tree": "d8d3499030152361129f002e99d2b4a10d36660d",
      "parents": [
        "6c6f12d0ed64e0f4bcbb7139eca8fe564302f385"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 17 21:34:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 17 23:52:39 2012 -0800"
      },
      "message": "Run time illegal access checks on static and direct methods\n\nFixes test 075.\n\nChange-Id: I28b20451dcae8000dc0e2cb9068dfa5166659d43\n"
    },
    {
      "commit": "f3773f0913f8b76eee2088bfd999aaca6a50e750",
      "tree": "d9c2f8ce0736a6260d96586cbb3fcdb75430d4b2",
      "parents": [
        "a32a6fd4a781262dff4fec102da053d16b7ef6c0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 16:45:29 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 16:56:22 2012 -0800"
      },
      "message": "Move finalizer registration into managed code\n\nAlso move Object.getClass into managed code.\n\nChange-Id: If32674ac496116aaa82c461d8e6196e27fa7b591\n"
    },
    {
      "commit": "a32a6fd4a781262dff4fec102da053d16b7ef6c0",
      "tree": "5c2a35aec522902cfdf508a74898ee091c91f7ab",
      "parents": [
        "d08547a802e6dbb71fde3ed3dac9aa0b03a5b17b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 06 20:18:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 15:41:26 2012 -0800"
      },
      "message": "Runtime access checks on virtual method calls\n\nAt verification time we may not know that an illegal access or method\nnot found exception should be raised and so we defer the decision to\nruntime. When the decision is deferred we perform an appropriate slow\npath method invocation that can check for access violations.\n\nThis change also attempts to reduce code duplication, improve the\ndiagnostic information in exceptions, clean up field slow paths slightly\nand to move the slow path calls lower in the Thread class so that they\ndon\u0027t effect the offsets of data items when calls are added or removed.\n\nChange-Id: I8376b83dcd7e302cbbddf44c1a55a25687b9dcdb\n"
    },
    {
      "commit": "44b412bb795fa6999129b2bc16f5eec1ea97e8f8",
      "tree": "bf2a45463f46c506130f319b1a176b49db4d5252",
      "parents": [
        "959f8ed11ef9493a89b90a1f9a82a811dbc7ae0e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sat Feb 04 08:50:53 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Feb 07 18:19:52 2012 -0800"
      },
      "message": "Codegen support for debugger\n\nAdd the ability to generate code with support for debugging.\nThis involves generating a callout to an equivalent of the\nold \"updateDebugger()\" before each Dalvik opcode, method\nentry and method exit.\n\nThe added code is fairly compact - 8 bytes per Dalvik opcode,\nplus 4 additional bytes per safe point.\n\nI dislike the idea of always making this call, so I\u0027m reusing\nthe dedicated register rSUSPEND to hold the address of the callout.\nrSUSPEND is normally used to reduce the frequency of full suspend\nchecks, but when debugging this isn\u0027t necessary - allowing\nus to resuse this register to hold the address of the callout.\nIf it is non-null we make the callout, otherwise we continue.  I refresh\nthis register from a slot in the Thread structure on method entry\nand also following the return of taken suspend checks.  In this way,\nthe debugger has the ability to control updates on a per-thread basis,\nand the performance penalty is greatly reduced for threads that don\u0027t\nhave any pending debugger requests.  Once the debugger attaches,\nit would suspend all threads, walk through the thread list, set\nthread-\u003epUpdateDebuggerFromCode to art_update_debugger and then\nturn everything loose.\n\nOne thing I\u0027m not doing, though, is debugger updates before and after\ncalls to native methods.  This is something that will have to be done\nby the stubs, because I don\u0027t know which invokes are native.  Oh, and\nthere will also need to be an artUpdateDebugger call on the exception\npath.\n\nI\u0027m passing the DalvikPC to the stub, and am using special\ncodes (-1 and -2) to denote method entry and exit.  The stub\nrecovers the current Method* and Thread* and passes them on to\nartUpdateDebugger().\n\nWhen we\u0027re compiling in this special mode, all optimizations which\nmight result in code motion or suppressed load/store of a Dalvik\nregister are turned off.  No register promotion is done, so everything\nwill be in its home location.\n\nChange-Id: Iaf66f4d0d094a1699269d0a1ad1ed33e7613aef8\n"
    },
    {
      "commit": "1bddec3a6521f16df37499754000a3b1787a52e9",
      "tree": "f605d0f642f2a62012d0f5a1bd0351afbaa8fa5a",
      "parents": [
        "223f20fa939c386c695977263780dea2195093db"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Feb 04 12:27:34 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Feb 05 03:02:00 2012 -0800"
      },
      "message": "Add access check slow paths to field accesses\n\nThis check makes the verifier, compiler and runtime agree with who\nshould perform access checks and fixes compliance for these\ninstructions.\n\nIntroduce new \"fast\" sget/sput that just get the static storage base\nfrom a method\u0027s declaring class when the static field is within the same\nclass. Saves a load and branch in the common case.\n\nFold gen routines for wide and not wide together.\n\nFix bug where sub-classes could appear intialized in the image but their\nparents were only verified.\n\nExtra debug output for test case 075.\n\nChange-Id: I934da3624ed8fa8e026b2c95d936d04b1af022ef\n"
    },
    {
      "commit": "d4135901d12fd6073603aa6fd96e587dada70cb4",
      "tree": "e527dcea253d9c17d2cbf2a4db1fef7bbd76c813",
      "parents": [
        "5523ee070b005576c6f889415205d49ea77cf243"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 18:05:08 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 18:32:33 2012 -0800"
      },
      "message": "Check instantiability at runtime when inconclusive at compile time\n\nChange-Id: I40e4a3da05936fee77e074d5dc4d0fec1a1c5526\n"
    },
    {
      "commit": "ba938cbb8d73a0dcf151dfaec4662496da6afdbf",
      "tree": "09ad41fc5851a22e8c11935edc83c7ece546f856",
      "parents": [
        "763d5fb2f83d9c93b5b764533005865a3d1034e1"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 03 14:47:55 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 03 15:02:55 2012 -0800"
      },
      "message": "Make the compiler threadsafe\n\nThe compiler inherited a simple memory management scheme that\ninvolved malloc\u0027ng a clump of memory, allocating out of that\nclump for each unit of compilation, and then resetting after\nthe compilation was complete.  Simple \u0026 fast, but built with the\nexpectation of a single compiler worker thread.\n\nThis change moves the memory allocation arena into the\nCompilationUnit structure, and makes it private for each method\ncompilation.  Unlike the old scheme, allocated memory is returned\nto the system following completion (whereas before it was reused\nfor the next compilation).\n\nAs of this CL, each compilation is completely independent.\n\nThe changes involved were mostly mechanical to pass around the\ncUnit pointer to anything which might need to allocate, but the\naccretion of crud has moved me much closer to the point that\nall of this stuff gets ripped out and replaced.\n\nChange-Id: I19dda0a7fb5aa228f6baee7ae5293fdd174c8337\n"
    },
    {
      "commit": "f16600bd3676f098567f723602f02dd013af178c",
      "tree": "184cc070ee6ee515e36096d19f1db8eb9dba399f",
      "parents": [
        "054f6c19573100b29ce4139822bb496ba3d8e4d0"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 02 18:19:29 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 02 18:19:29 2012 -0800"
      },
      "message": "Minor compiler tuning.\n\nAssembling is an iterative process because we don\u0027t know final\ncode offsets until the end (and they can change during assembly).\nAvoid some unnecessary work on assembly passes that must be\nredone.  Small, but measurable, improvement.\n\nChange-Id: I42b48e4be6d9364bc0dfc290c4e711d264e4ab52\n"
    },
    {
      "commit": "5abfa3ea35781464df8fae60aaf03f48a295e965",
      "tree": "3db19d0ecfc1031f86d77964de636ec45d4ba690",
      "parents": [
        "6c7d244058b74cdd61533968dd6cddd7003d2671"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Jan 31 17:01:43 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 02 15:56:41 2012 -0800"
      },
      "message": "Compiler tuning\n\nSignificant reduction in memory usage by the compiler.\n    o Estimated sizes of growable lists to avoid waste\n    o Changed basic block predecessor structure from a growable bitmap\n      to a growable list.\n    o Conditionalized code which produced disassembly strings.\n    o Avoided generating some dataflow-related structures when compiling\n      in dataflow-disabled mode.\n    o Added memory usage statistics\n    o Eliminated floating point usage as a barrier to disabling expensive\n      dataflow analysis for very large init routines.\n    o Because iterating through sparse bit maps is much less of a concern now,\n      removed earlier hack that remembered runs of leading and trailing\n      zeroes.\n\nAlso, some general tuning.\n    o Minor tweaks to register utilties\n    o Speed up the assembly loop\n    o Rewrite of the bit vector iterator\n\nOur previous worst-case method originally consumed 360 megabytes, but through\nearlier changes was whittled down to 113 megabytes.  Now it consumes 12 (which\nso far appears to close to the highest compiler heap usage of anything\nI\u0027ve seen).\n\nPost-wipe cold boot time is now less than 7 minutes.\n\nInstallation time for our application test cases also shows a large\ngain - typically 25% to 40% speedup.\n\nSingle-threaded host compilation of core.jar down to \u003c3.0s, boot.oat builds\nin 17.2s.  Next up: multi-threaded compilation.\n\nChange-Id: I493d0d584c4145a6deccdd9bff344473023deb46\n"
    },
    {
      "commit": "0eb7d7e2a0c2767b5fd86bd52436c618fd4c3120",
      "tree": "a446a35a4dfc5d258bb2817b92319b2f8ea84b20",
      "parents": [
        "09cc2d39b3073ab0c613a9f660983e781693d958"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 31 21:12:32 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 31 21:14:59 2012 -0800"
      },
      "message": "Implement array allocation with access checks.\n\nChange-Id: I0b2c0274087f3f7ed5b0b71c441e5d7e5a25f819\n"
    },
    {
      "commit": "85d8c1ef43adec4f57c5ce372ef7816d13c98420",
      "tree": "049faf14d49353d39cfceb67183b4a0124318c2a",
      "parents": [
        "748382f38dfe7a0d9a426a4b72fcfc399ba1a5da"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Jan 27 15:52:35 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Jan 27 15:52:35 2012 -0800"
      },
      "message": "Minor compiler tuning\n\nLarge switch statements were getting bogged down in a linear search.\nAdded a map for fast lookup (which may also be useful for debug\nsupport).\n\nChange-Id: I00e5956ea7e98ff2c870fb2d3e299e8d4c88f598\n"
    },
    {
      "commit": "11d1b0c31ddd710d26068da8e0e4621002205b4b",
      "tree": "8d9c9c0dd5741214466775b86069032d609fd91c",
      "parents": [
        "bbdb1437f55948e5395b4dcb306e25605539a444"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 23 16:57:47 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 23 17:26:10 2012 -0800"
      },
      "message": "Reduce namespace pollution.\n\nThis leaves us with just the mspace stuff and three libdex functions to clean\nup. We deliberately expose the JII API, and I don\u0027t think there\u0027s anything we\ncan really do about the art_..._from_code stuff (and at least that starts with\n\"art_\").\n\nChange-Id: I77e58e8330cd2afeb496642302dfe3311e68091a\n"
    },
    {
      "commit": "e7d856b911222aa000ca2be0f8f63f5b292141c3",
      "tree": "9628ef94e879c7ae026dd37ec05e1ab3251d830a",
      "parents": [
        "a51dc5b0a57fdf0574c069a15e065ccc96958f02"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 11 18:10:55 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 17 17:42:34 2012 -0800"
      },
      "message": "Add GC map to oat file\n\nChange-Id: Ied0462c711a09e2542f231c3b2fa31239958bd28\n"
    },
    {
      "commit": "c44c822849e283a668364850517801f21f0709b0",
      "tree": "acd02d46a318ed128cdfa36ec04b94e9ca7ff297",
      "parents": [
        "6368967dc8a06835891b2e8925a45ee1af4e880e"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Jan 14 10:22:14 2012 -0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Jan 15 11:52:31 2012 -0800"
      },
      "message": "Fix another Mac build error.\n\nCurrently, Mac build failed with this message:\n\"art/src/compiler/codegen/arm/ArchUtility.cc:459: warning: format \u0027%d\u0027\nexpects type \u0027int\u0027, but argument 5 has type \u0027size_t\u0027\"\n\nChange-Id: I9bbbd2e9bc36ee99cbd3448cbf2e6b548cefeaed\n"
    },
    {
      "commit": "13ac45a8313dada6cf1d85b11198810831c88add",
      "tree": "2486a90fbffce59cf1ddcd832875f1f5f7b08064",
      "parents": [
        "63efec135fa63c00dd7360afb319bee875c5d5e7"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jan 12 12:30:16 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jan 12 12:32:44 2012 -0800"
      },
      "message": "Fix invokeSuper range check (cts blocker)\n\nThe generated range check for the slow/slow path of invoke super\nhad the operands backwards, with predictable results.  With this fix,\ncts testing can proceed.\n\nA new slow-path testing mode will be added in an upcoming CL to exercise\nthis path.\n\nChange-Id: I36bba5bc5484fc7aaa0aca5ad394c10ea5efd0b1\n"
    },
    {
      "commit": "48d7222d2f543752ffb17db05e0b9e891061135c",
      "tree": "cf0295a04e1d32dce700620900bdc15a09d9913a",
      "parents": [
        "34c77ad4fc67de52463544b78a35b86d15b496e4"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jan 11 15:19:51 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jan 11 15:33:27 2012 -0800"
      },
      "message": "Add unimplemented artResolveMethodFromCode\n\nChange-Id: I1ba804c56413477451abff82939e27579494e1f9\n"
    },
    {
      "commit": "34c77ad4fc67de52463544b78a35b86d15b496e4",
      "tree": "583a249e4c6d49473b4ecc6b9ac70273f5b0deac",
      "parents": [
        "ef94857c7a33c467c55ac45a6aeb064eb4b8b7c7"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jan 11 13:01:32 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jan 11 14:01:54 2012 -0800"
      },
      "message": "Add stress-test mode for  ResolveMethodFromCode\n\nTo force call to artResolveMethodFromCode prior to each virtual or\nsuper invoke, add (1 \u003c\u003c kDebugExerciseResolveMethod) bit to the\ncompiler\u0027s debug flags.\n\nChange-Id: If14e4bcc8073c8ac7a7a8d0d92bc49444528f77e\n"
    },
    {
      "commit": "95f0879b74dfa4df6e69ff6d028539ef8a016c9e",
      "tree": "b554e4575a22aae3d9f09e6a9a92249d3137b788",
      "parents": [
        "761bfa80704937024fdbe58c2b6fd4599760efaf"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jan 11 10:51:30 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jan 11 10:51:30 2012 -0800"
      },
      "message": "Fix launch code for artThrowNoSuchMethodFromCode\n\nWas passing the size of the vtable, rather than the method-idx.\n\nChange-Id: I48932e50fc1b4dc5b78ddedc0d0f2c4851a73519\n"
    },
    {
      "commit": "2e3d1b262af0839380e1d60e86d8b281943ef944",
      "tree": "f703c068e2a037d12dac592e1ebc6f1849ce4fbf",
      "parents": [
        "d170fc48b0895ee98ec0d6e3cf1987c8260af95d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jan 09 18:01:56 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jan 09 21:20:50 2012 -0800"
      },
      "message": "Changes to compile with gcc 4.6\n\nChange-Id: I55908b3b98b49373ce948fd1f12e0a5cd56ae4f7\n"
    },
    {
      "commit": "955724179c6c739524f610023287f56b24dc31de",
      "tree": "64f751693e72173ae0d044d8c54989b01f1195af",
      "parents": [
        "b87f73ea7524f6eb9da6da1af931a3d3fbb833ff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 18:14:20 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 18:14:20 2011 -0800"
      },
      "message": "Don\u0027t default-construct std::strings and then assign them.\n\nChange-Id: I8c994d1e6a8d2ebe52eaa4f0132e0deb2ecfa5f3\n"
    },
    {
      "commit": "6d4d9fcb4f01e287ee29e81cd1c941ee5d11d379",
      "tree": "4c715bef86a3c5a47f9cea43c4a092cf4766ed4b",
      "parents": [
        "86b0010c79ef95b5333cd540b7d3af34a9f1a643"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 30 16:24:48 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 06 14:02:09 2011 -0800"
      },
      "message": "Reduce meta-data object sizes, introduce meta-data helper classes.\n\nChange-Id: Id14ad218f1c74c659701352fdf1a45bf6444daa3\n"
    },
    {
      "commit": "c1f143de3d0370a17a4561eb83bf10a5d7908aa3",
      "tree": "a4839595b944473d3bd2c06e83dcb276a460de2f",
      "parents": [
        "c5b734a27a64c81590015dd12a7901c396818a99"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 17:31:10 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 17:31:10 2011 -0800"
      },
      "message": "Remove some lint.\n\nChange-Id: Ieecd7c10e62bce27e2db38f96d5df9782ef0cff6\n"
    },
    {
      "commit": "4965b661a6edc7f263b6fef1439b03ca8c95da49",
      "tree": "8a9feb389cf37293929a329634efac2629be63a5",
      "parents": [
        "2f6bd951af6ef1e2baedd38fa02908121c5f3d9d"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Nov 28 16:06:57 2011 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Nov 28 16:06:57 2011 -0800"
      },
      "message": "Compiler fix for issue #5649968\n\nSee http://b/issue?id\u003d5649968 for details.\n\nAdd definition of lr to resource masks for vldrs and vldrd to\nprevent bad scheduling operation.\n\nChange-Id: Ib108dd1a280d699fd929754ce7ee2dd62a04991e\n"
    },
    {
      "commit": "a3760aad59f41bb0b1d46733165a2d7219ecca73",
      "tree": "28c031bac11cc172f04b8943e189bf1d065acd9c",
      "parents": [
        "169c9a7f46776b235d0a37d5e0ff27682deffe06"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 14 14:32:37 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 14 15:40:11 2011 -0800"
      },
      "message": "Refactor the use of Method by the oat compiler.\n\nChange-Id: Ib0ee18ed06846f82567f746edc7a5049dc6215df\n"
    },
    {
      "commit": "0571d357843c53e042f370f5f2c2e9aa3fe803a9",
      "tree": "197e5b1c0b1bf0ee8cc0e1960470d0a8d203b4af",
      "parents": [
        "33dc7717cd16592bcc825350bea6305be9eb2ea1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 03 19:51:38 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Nov 13 11:57:18 2011 -0800"
      },
      "message": "Refactor the use of Method by the compiler.\n\nRemove the dependence on the Method object in dex2oat, allowing lazier\nresolution.\nIntroduce new find and iterators in DexFile to simplify common\noperations and avoid misuse of class data items.\n\nChange-Id: I39fb8252190f543d89d8b233076355cec310fe08\n"
    },
    {
      "commit": "a50638ba8b983616da3cf1aa941038bea56159e5",
      "tree": "db7d9f0080d264ab3735bc7495da9dd9df929f9e",
      "parents": [
        "5d76c435082332ef79a22962386fa92a0870e378"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Nov 02 15:15:06 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Nov 02 15:15:06 2011 -0700"
      },
      "message": "Register allocation fixes.\n\nThis fixes the calculator button problem, but let\u0027s leave optimization\noff until we\u0027ve passed more tests.\n\nChange-Id: I79b71687a1651e83f16037dead768c43f55d65da\n"
    },
    {
      "commit": "5d76c435082332ef79a22962386fa92a0870e378",
      "tree": "db8fdd7bfba3617494157b483e9df979f76dfdcc",
      "parents": [
        "4b6fe5a568ca2bc5e8fa110bf7af692cab220a15"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 21:42:49 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 02 01:25:57 2011 -0700"
      },
      "message": "Mark non-image spaces and use write barrier for image spaces.\n\nDon\u0027t mark string and class roots that are in the image, alloc space\nreferences will be caught by the write barrier.\n\nChange-Id: Idcf9e4ede3b83556d4f8a01276273726dc6eea46\n"
    },
    {
      "commit": "6a9967818deb13e31846cce083227e32517edf38",
      "tree": "2fda2d77ab6a4e0169c9fff07d2236fa338c7300",
      "parents": [
        "b093c6b27f8ea9bbe2d49c03ebe345203a121199"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 17:06:39 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 17:06:39 2011 -0700"
      },
      "message": "Ensure r0/ref isn\u0027t clobbered by call.\n\nChange-Id: Ic45dac1feb0b45cccfd72589ecee9ea74ee6d869\n"
    },
    {
      "commit": "b093c6b27f8ea9bbe2d49c03ebe345203a121199",
      "tree": "34e49f46eb30a2aee8590dbf11365c8b5824c16b",
      "parents": [
        "95e4ef7cebf2e33b6e73a3957089f958e41771f5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 16:19:55 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 16:19:55 2011 -0700"
      },
      "message": "Support for access check in checkcast and instanceof.\n\nChange-Id: Ie15216618b35cace7d351be2b0a1c466ed6db489\n"
    },
    {
      "commit": "bd4413541ba7bcd837032fee8f02ab05d252c75c",
      "tree": "5a0838872f1175eee5bae9d56a0e33969aa91a6a",
      "parents": [
        "90f2b3096ae603d81767f83eda073a1b8901cb24"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 10:49:47 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 10:49:47 2011 -0700"
      },
      "message": "Clear exception if we failed to resolve method.\n\nChange-Id: I8766b228139cd5344db0eb830c4dc5fa64b80705\n"
    },
    {
      "commit": "28ad40dc3ec2f09b0ffd4f6d6787bf1b532ccd5d",
      "tree": "f5628e47948a0d255112a3a7a01b67db41c8d424",
      "parents": [
        "e0918556e7551de638870dcad3f2023f94f85a50"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 27 15:19:26 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 28 23:14:15 2011 -0700"
      },
      "message": "Support for unresolved types in new-instance during verification.\n\nAlso, ensure that classes that don\u0027t load are erroneous, warn early\nabout exceptions left on a thread by the verifier/compiler, factor out\nslowpath checks for the compiler and fix the slowpath selector for\nconst-class.\n\nThis change causes more dex cache misses at runtime (more slowpath\nexecution). It also requires a \"mm clean-oat\".\n\nChange-Id: I014b49ebdd7d8f7dd2e39cc0958fc0b708d58c4c\n"
    },
    {
      "commit": "cc4540ece917ef4b5c81ee684e3294e47e49ff5b",
      "tree": "a43560b6c3f70708cad676476e7aca395c10e337",
      "parents": [
        "baba887a4f5d2a454ab3f8f36a26346f8fdd0670"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 27 13:06:03 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 27 13:10:05 2011 -0700"
      },
      "message": "Add slow path for OP_NEW_INSTANCE\n\nIf the type is unresolved at verification time, we can\u0027t be sure\nit\u0027s a valid new.  The compiler will now check for type resolution\nat compile time.  If unresolved, we\u0027ll call out to the slow path,\nwhere the access check will take place.\n\nThis CL only contains the compiler portion of this change.  For\nnow, the slow path code just calls out to the normal routine.\n\nChange-Id: Ia568a164389baedaa695a44f6845a0fdfe585b56\n"
    },
    {
      "commit": "510c605443e8b0f28ba7c434142b9f1498664606",
      "tree": "8d39d304cfa299c351995bce6e78b2ed75b610a6",
      "parents": [
        "9fdfc1808f2a3845ee7e890a4e5d22a10f2ee93d"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 27 10:47:20 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 27 11:02:31 2011 -0700"
      },
      "message": "Workaround for cfg building failure\n\nCurrently the compiler expects well-formed control flow graphs -\nno dead code (though infinate loops are allowed).  This is the\ncase for all dx output (but might not be for custom tools).\nHowever, when the verifier replaces an instruction with\nOP_THROW_VERIFICATION_ERROR, it can create dead code from a\npreviously well-formed graph.  This CL works around that\nproblem by not treating OP_THROW_VERIFICATION_ERROR as a\ndirect branch.\n\nA future CL will alter the CFG builder to be resiliant in the face\nof dead code.\n\nAlso, removes a spurious DCHECK, and adds a few where they are\nneeded.\n\nChange-Id: I68554a2a8b88e857faeff3300f2ebbf2d0323693\n"
    },
    {
      "commit": "8febc5828219a933d2b702f002030ac11e48480b",
      "tree": "22fb15eda62a5a5a4c40bf9e2e52c4c2911a33f9",
      "parents": [
        "6b4ef025af12b158d117fc80fc79acf620f411a0"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Oct 25 12:39:20 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Oct 25 12:39:20 2011 -0700"
      },
      "message": "Fixes for GoogleEarth \u0026 Streek.apk failed DCHECKS\n\nA old version of dx had an unfortunate bug that caused it to\nreuse incoming argument storage of static methods, possibly with\ndifferent types and sizes.  The compiler needs precise type\nand size knowledge, and was asserting that this case could not\nhappen.  It can.  Fixed for legacy support.\n\nChange-Id: I889983bb7f26a37ca64d4bae63d686c8ec0cfc62\n"
    },
    {
      "commit": "3181345d4492017c26b1774be8f0554ad3f04dbf",
      "tree": "6d94935fa4cedf4468c0dc78a299a60d0e7395f3",
      "parents": [
        "63f86de9b9444072922872ff08f3653f2920238d"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Oct 16 14:33:08 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Oct 16 14:33:08 2011 -0700"
      },
      "message": "Fix off-by-one error in OP_FILLED_NEW_ARRAY_RANGE\n\nNow 003-omnibus-opcode makes it to the UnresTest section, where\nit dies with a segfault doing something verifier-related.\n\nChange-Id: I8c2c746e16d951f297ecc61402907d70c68d09c1\n"
    },
    {
      "commit": "3b6baaa203fa63f1522b2172a1645f90412afdae",
      "tree": "7de428a7d53f2b2b9c2274d49181befd5786b8fa",
      "parents": [
        "7abe9c933402f01d638086b2715b09b64b8595e0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 14 19:13:56 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 16 11:01:28 2011 -0700"
      },
      "message": "Bring our native stack usage down.\n\nI\u0027d have preferred to have a 512-byte limit, but there are some monsters\nin the verifier; 2000-line functions and the like. I\u0027m also not policing\ntests (except for one silly one). They can use all the stack they like.\n\nThis fixes the IntMath test (the stack overflow test was failing because\nwe were using more than 4KiB to throw!).\n\nChange-Id: I7e53e2fde2b39fde1910f8ee5b1712e8a66069c7\n"
    },
    {
      "commit": "67bc236a207852d652f6ddeab0a90efc1bd111bb",
      "tree": "eea13fcb90ad8ce5b2b3819fb8caf0281583cd61",
      "parents": [
        "95caa791e560da97363c0c0d22bfda4a7e7377c3"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Oct 11 18:08:40 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 14 10:54:03 2011 -0700"
      },
      "message": "Register promotion fix\n\nRestructured the type inference mechanism, added lots of DCHECKS,\nbumped the default memory allocation size to reflect AOT\ncompilation and tweaked the bit vector manipulation routines\nto be better at handling large sparse vectors (something the old\ntrace JIT didn\u0027t encounter enough to care).\n\nWith this CL, optimization is back on by default.  Should also see\na significant boost in compilation speed (~2x better for boot.oat).\n\nChange-Id: Ifd134ef337be173a1be756bb9198b24c5b4936b3\n"
    },
    {
      "commit": "928bf02d2172afdc7162101aa9fa70b0d02243c3",
      "tree": "1015194cd625ac231e356b15a7b302f08811c9b6",
      "parents": [
        "582a7d16bb0db323d8bd730beb61578aa3765f43"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 11 02:48:14 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 11 02:48:14 2011 -0700"
      },
      "message": "Ensure getConstString uses slow path for non-image compilation\n\nChange-Id: If7f0eeb277e1ddc9028c90d4b8fab1621f1ea77e\n"
    },
    {
      "commit": "fe2e17f424584ad6969c6fcf7cf6364c69355d53",
      "tree": "ad4b5837bcc7f2d346adbe5b8aff46833d0aa1a8",
      "parents": [
        "bf7dca57e51e85a647c63cec984048ca03c5f071"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Oct 10 09:35:02 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Oct 10 09:35:02 2011 -0700"
      },
      "message": "Simplify compiler\u0027s suspend check mechanism.\n\nMove to a single mechanism for suspend checks.  Previously backwards\nbranches only checked the suspend count when an internal counter\nreached zero, while returns always checked.  Now all checks use\nthe counter.\n\nChange-Id: Ibca2881e102babbd134bb9b41d798e9e4a3b522c\n"
    },
    {
      "commit": "e70708051e06119c04be33ca49fb16bef8162059",
      "tree": "f1ebe2ed4af44c28216642f7b32d6c20d6100d91",
      "parents": [
        "c10717a0b86d5719556ac3286fcb47aa2f2416fc"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Oct 09 17:56:06 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Oct 09 18:19:46 2011 -0700"
      },
      "message": "Compiler/assembler fix\n\nThere are three Thumb encodings for push and pop, and one of\nthem (Thumb2/t2) requires at least two registers in the push/pop\nlist.  This CL adds the single-register encoding (which is really\njust another name for a standard base-modifying load/store).\n\nChange-Id: I963c472a0d5f288654417dbd85758d6b5cc61388\n"
    },
    {
      "commit": "f5a7a476e7ea63e094ff0f011dccc170607e6f6b",
      "tree": "4f07e57d5e3d2a82eeefcb7c6409f36b383b1d96",
      "parents": [
        "c2858561314513cc7bce2da7e13664aefef5a2ac"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 07 14:31:02 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Oct 07 15:08:48 2011 -0700"
      },
      "message": "Enhance CHECK_EQ and friends to allow extra detail to be appended (like CHECK).\n\nChange-Id: Iaa980892ab31621c8bcca9ea7c6c4ee743333f45\n"
    },
    {
      "commit": "6825326abfef92d4e1bf6afddef1a319aa18d08c",
      "tree": "1706bf3e0bbdb9f7a704140f70011c1b362fa294",
      "parents": [
        "a43cb5e8fb29989dbb986b9b91a68cda150aa3c8"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 07 14:02:25 2011 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 07 14:16:01 2011 -0700"
      },
      "message": "Reg utility fix\n\nLong ago in a galaxy far away, there was a trace compiler that\nhandled short code fragments with a small, sparse and variable\nset of temp registers.  In that situation, doing linear reg\nlookups wasn\u0027t terrible.  In the new world that has a fixed and\npacked set of registers, a linear search is unnecessary, foolish\nand wasteful.  [P.S. perf showed that roughly 25% of all\ncompilation time was spent doing register manipulation!]\n\nChange-Id: I6f23d9f70367fb4139cc28a27fd9fdf8beffa270\n"
    }
  ],
  "next": "4f0d07c783afef89703dce32c94440fc8621a29b"
}
