)]}'
{
  "log": [
    {
      "commit": "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986",
      "tree": "e6f2bd0e62c7bd72753499140a854a1c4e5a976a",
      "parents": [
        "1d9314c989114f330297d52dae3fe0cd4848b183"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 24 15:32:56 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 24 18:19:28 2013 -0700"
      },
      "message": "Enable devirtualization for abstract and sub-class methods.\n\nIf we know the type of a receiver in the verifier we record devirtualization\ndata. Currently we only use this data to avoid virtual method dispatch when\nwe know the receiver of a method isn\u0027t a sub-class. This change allows\ndevirtualization of virtual and interface methods when we know the receiver\u0027s\ntype and the method the we\u0027d find via dispatch is either known within boot or\nhas a reference from the current dex file.\n\nPass the receiver through to the method resolution trampoline as\ndevirtualization may mean the dex method index needs to be made more accurate\nfor the receiver.\n\nTidy up method devirtualization and related statistics.\n\nPush the devirtualization map lookup into a less common case to avoid\ntaking its lock.\n\nMake MethodReference a struct rather than a typedef of a pair, so the members\ncan have more meaningful names than first and second.\n\nRough statistics show that we devirtualize using this change around 2.5% of\nthe time, whilst some apps like GMS core devirtualize over 3.4% of the time.\n\nChange-Id: Ieed3471dbedfc4cc881d652631b67176bb37d394\n"
    },
    {
      "commit": "02c42237741b5573f9d790a5a0f17f408dceb543",
      "tree": "293d72039e2e1a0e56fbcb572c6d92ccedc5581a",
      "parents": [
        "cf9773a7adff883012dbd519a66e85f1f7aaaa11"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Tue Apr 30 12:09:45 2013 -0700"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Thu May 02 14:19:17 2013 -0700"
      },
      "message": "Supporting de-virtualization for precise types.\n\nSharpening invoke-virtual and invoke-interface calls to invoke-direct for cases\nwhere the type of \"this\" pointer in the invoke- params is precisely known.\n\nInstructions that have an invoke opcode are marked as interesting, for each invoke-virtual/interface\nwe come across with a precise type for \"this\" we mark the location as a candidate for sharpening,\nresolve the concrete method and save its method reference \u003cDexFile, DexMethodIndex\u003e to be sharpened\nin CompilerDriver::ComputeInvokeInfo().\n\nAdded a new entry to AOT statistics showing the percentage of sharpened calls that were based on\ntype analysis.\n\nFix a minor bug in type creation for GetSuperClass(). Previously super class of a precise reference\nhad precise types created which is not necessarily the case.\n\nFixed DCHECK in Class::FindVirtualMethodForVirtual to handle cases for Miranda methods.\n\nSharpening only takes place for cases where no soft failures happen at verification time.\n\nChange-Id: Ic027d0226d6f95260c1918014cb6313f2e0ca455\n"
    },
    {
      "commit": "8447d84d847d4562d7a7bce62768c27e7d20a9aa",
      "tree": "46aad5bf1bc3d3ce28b24ef1fcc5463224083991",
      "parents": [
        "88fc036842eb3c48acd5d3b01e75b3012c996d90"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Apr 30 17:27:40 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Apr 30 20:32:59 2013 -0700"
      },
      "message": "Compile filter for small applications and methods\n\nAdds a filter per method and program size (in method count). Right now, options are treated\nas runtime options...but we might want to change this and separate options for compilers and\nruntime.\n\nChange-Id: I8c3e925116119af8ffa95ff09f77bcfdd173767b\n"
    },
    {
      "commit": "88fc036842eb3c48acd5d3b01e75b3012c996d90",
      "tree": "932d35c7dc03161f81f87dd1654b0330f942668c",
      "parents": [
        "5d29a81465a973c66e479f8edf2a55f09a83fc9c",
        "f4da60751631f8bc098fbd04517f305bf7f20ae3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 26 22:57:41 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 26 22:57:41 2013 +0000"
      },
      "message": "Merge \"Revert \"Supporting de-virtualization for precise types.\"\" into dalvik-dev"
    },
    {
      "commit": "f4da60751631f8bc098fbd04517f305bf7f20ae3",
      "tree": "5a359b033ee308154ffbdcfea47708bacd1c9cb3",
      "parents": [
        "b0682d5f7970470130f43d35f37ae7605a8a9bb8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 26 22:53:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 26 22:53:05 2013 +0000"
      },
      "message": "Revert \"Supporting de-virtualization for precise types.\"\n\nThis reverts commit b0682d5f7970470130f43d35f37ae7605a8a9bb8\n\nChange-Id: I2b0dc3e716ee5c23b89d9fa6eb0ef05c24784b3e\n"
    },
    {
      "commit": "dfe0a24ff341e1758d00f2d51ca38eda8e58c705",
      "tree": "35648fda0fa0c8608a3b8def0be22996e18a0841",
      "parents": [
        "79fe539587d4c09244172d0168eeed0ec9770466",
        "b0682d5f7970470130f43d35f37ae7605a8a9bb8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 26 22:03:46 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 26 22:03:46 2013 +0000"
      },
      "message": "Merge \"Supporting de-virtualization for precise types.\" into dalvik-dev"
    },
    {
      "commit": "79fe539587d4c09244172d0168eeed0ec9770466",
      "tree": "4fb8fbd03727a74acb4dfde7e969adf32ee32750",
      "parents": [
        "09b55e1df3b0bcecee25882e45e882887cc8654f"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 24 18:41:58 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 26 14:50:52 2013 -0700"
      },
      "message": "Removing remaining compiled stubs from image.\n\nAbstract method error stub and jni dlsym lookup stubs are gone.\nAfter this change, the image no longer needs to be executable.\n\nChange-Id: Ic75d72bf7e76e3b8ecc596e82af68ab592dde15e\n"
    },
    {
      "commit": "b0682d5f7970470130f43d35f37ae7605a8a9bb8",
      "tree": "3bf3d9e1b3ed5da8e7db5c9e736e6cde7c5e30c8",
      "parents": [
        "ba1814eeac6adb44f2f78317556b3484b19e02fc"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Fri Apr 05 19:13:07 2013 -0700"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Fri Apr 26 10:12:52 2013 -0700"
      },
      "message": "Supporting de-virtualization for precise types.\n\nSharpening invoke-virtual and invoke-interface calls to invoke-direct for cases\nwhere the type of \"this\" pointer in the invoke- params is precisely known.\n\nInstructions that have an invoke opcode are marked as interesting, for each invoke-virtual/interface\nwe come across with a precise type for \"this\" we mark the location as a candidate for sharpening,\nresolve the concrete method and save its method reference \u003cDexFile, DexMethodIndex\u003e to be sharpened\nin CompilerDriver::ComputeInvokeInfo().\n\nAdded a new entry to AOT statistics showing the percentage of sharpened calls that were based on\ntype analysis.\n\nFix a minor bug in type creation for GetSuperClass(). Previously super class of a precise reference\nhad precise types created which is not necessarily the case.\n\nChange-Id: Iee61858e84242dfc82be363ee221d2747a1ac86a\n"
    },
    {
      "commit": "58df32711162823647356afe25ae2cde04133563",
      "tree": "df1b2b43b90f4861b475f1452b175353a56ec3d7",
      "parents": [
        "ede1807e3481a6937416964bb7556364f2d428e1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 22 15:28:53 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 23 16:34:16 2013 -0700"
      },
      "message": "Removed compiled resolution trampoline.\n\nCreated assembly versions of resolution trampoline for portable and\nquick. Removed compiled version from the image.\n\nChange-Id: I183e110c4e102fb45ce6e7f4e855f8bed7986251\n"
    },
    {
      "commit": "c4f105d75cd0cbc5145620068bbb8a819148e535",
      "tree": "f34fce100c4fcd351e0de0bbccb4293df94d0804",
      "parents": [
        "ed1790e83352e54420018d1495eb010f7cd48a64"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Wed Apr 10 16:12:11 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Apr 16 10:24:36 2013 -0700"
      },
      "message": "Compile less stuff\n\nDon\u0027t compile class initializers, compile programs with fewer than\ncommmand-line specified number of methods, mildly refactor SLOW_MODE,\nrename into LIGHT_MODE.\n\nAlso, walks the image for uncompiled methods and fixes up with pointers to the\ninterpreter entry point.\n\n(Removed hot method list and light method limit as these are experimental.)\n\nChange-Id: I2ae33d8add84ab9f4d76f9d910cae422c81a7832\n"
    },
    {
      "commit": "9609cb6ee479d5853aaf170d55b60715491c5db5",
      "tree": "4b227a7c81ee685ee542eae97208a15fa2266eee",
      "parents": [
        "5fa60c3db4208df407113b5a69d295a9c93d53b1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 05 16:48:22 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 08 10:23:45 2013 -0700"
      },
      "message": "Remove remaining code related to compiled invoke and proxy stubs.\n\nChange-Id: Ib0b2829fed9d7efee09d098ce4db9d13f2fa2eac\n"
    },
    {
      "commit": "1fd3346740dfb7f47be9922312b68a4227fada96",
      "tree": "6e4c16fbaaaa8bb4a9129806bd3f3c7472e1365d",
      "parents": [
        "58805e4974fcc73c3a2830608679e051f9e5f78f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 25 13:40:45 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Apr 01 14:01:06 2013 -0700"
      },
      "message": "Compiler: LIR restructuring\n\nContinuing restructuring of the compiler.  In this installment,\nall LIR reverences are moved from compiler_ir down to quick.  Further,\nall Portable data is moved to from compiler_ir down to portable.\n\nIn short, the great dumping ground of CompilationUnit has been\nsplit into three smaller dumping grounds of MIRGraph, Codegen\nand MIRConverter.  From here, subsequent CLs will repartition\nthose smaller dumping grounds into (hopefully) more coherent classes.\nAs a result, most function signatures have been altered to remove\nthe passing around of a CompilationUnit* pointer.\n\nChange-Id: I7195f7baecd81e87786a952e18bbce0b6ceeaac4\n"
    },
    {
      "commit": "74180cad94848107cf297d37e72437c5a6eecf1b",
      "tree": "9dfa6f7183bc7d6085a2753483b0f7a93c3ce486",
      "parents": [
        "857fe960a02834c0d6b8792dcc0af8143995cb1f"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 27 15:29:11 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 27 15:29:11 2013 -0700"
      },
      "message": "Remove code related to compiled invoke stubs.\n\nNote that the oat file version is now bumped to 004. A clean-oat will be\nnecessary after syncing this change.\n\nChange-Id: If8875335b7fcc39b6b40c6f95de07da50da7b6b8\n"
    },
    {
      "commit": "311ca169f4727d46a55bdc8dfa0059719fa72b65",
      "tree": "c92882e4bb34029bcc71495045e062accea10ced",
      "parents": [
        "2af52e76dc76b41969b6147d7bd6925d0f61e932"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Feb 28 15:56:43 2013 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 19 19:14:52 2013 -0700"
      },
      "message": "Compiler: Spring cleaning\n\nSignificant restructuring of the Quick compiler to break out the\ncommon frontend more cleanly.  Additional C++\u0027ification.\n\nThe goal is to move from the monolithic structure of the old\nJIT towards a more modular model in which components - in\nparticular the compiler backend - can be replaced.  This CL\nfocuses on moving MIR-related data from the CompilationUnit\nstruct into a new MIRGraph class.  The next CL will isolate all\nLIR-related data and code down into the Quick backend.\n\nThis change will happen in multiple steps, and may look uglier\nbefore it starts looking better.\n\nAmong the changes:\n\n   o Moved all mir-related fields from CompilationUnit to new\n     MirGraph class.\n\n   o Moved the register promotion stuff into the Quick backend.\n\n   o Deleted the GBC to LIR conversion code.\n\n   o Replaced with old C-style function pointer dataflow analysis\n     dispatcher with a basic block iterator class.\n\n   o Renamed some files to make the name more consistent with what\n     the code actually does.\n\n   o Added the foundation for future inlining support.\n\n   o Stripped out the remains of the old fingerprinting mechanism.\n\nChange-Id: I6c30facc642f8084b1c7b2075cf7014de387aa56\n"
    },
    {
      "commit": "4f6ad8ab428038129b2d0d6c40b7fd625cca15e1",
      "tree": "d1025ed9203d0cdf7aa959d9cecd8dc1f0c0bfeb",
      "parents": [
        "aabe8adacc7bf3a8ab6f6f3dd37fc839b6fd762f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:27:28 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:29:59 2013 -0700"
      },
      "message": "Various performance improvements.\n\nPerformance had regressed due to verify object and method invocation changes.\nAvoid trampolines for static calls in same class.\nVarious inlining changes.\nMake verify object something that\u0027s only compiled-in in debug builds.\n\nChange-Id: Ia261a52232c3b10667c668f8adfadc0da3048bc5\n"
    },
    {
      "commit": "3f47c12487250f61f3be95e9f275e3b08e2c49fb",
      "tree": "940732d0835af1cf80e8ec41eac6cafaca102a4c",
      "parents": [
        "650d7a60716a05680f13d2bd9190b633507e958f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 07 00:02:40 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 07 00:02:40 2013 -0800"
      },
      "message": "Fix portable build on build server by removing depenency on ANDROID_HOST_OUT\n\nChange-Id: I713a156468d14e07c784013c3c37a18c3c075a71\n"
    },
    {
      "commit": "265091e581c9f643b37e7966890911f09e223269",
      "tree": "ae493ce6c3537aebc3a85f59a73500fa819a7baf",
      "parents": [
        "4c1c283a7410784e9cab309f868248690b788a9c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 30 14:08:26 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 06 14:08:46 2013 -0800"
      },
      "message": "Remove ExtractCodeAndPrelink and switch Portable to MCLinker\n\nChange-Id: Ia2459c7da6b79e0a1c0f1148c6e28ad9cbbe27a2\n"
    },
    {
      "commit": "89756f21c107d96e6d1bbc75811bd33078c8ceee",
      "tree": "952c5df22b0eaf6c4a01b78259db04f3797c8c17",
      "parents": [
        "219b5a847ef74be5d3de4c16a29ec6413cc42af1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 16:40:02 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 16:44:57 2013 -0800"
      },
      "message": "Rename OatCompilationUnit to Dex.. move to compiler.\n\nSome other clean-up to make fields const and private.\n\nChange-Id: Icad66e2969385ab1f4125162bcbf8d5fa92d3ed5\n"
    },
    {
      "commit": "219b5a847ef74be5d3de4c16a29ec6413cc42af1",
      "tree": "0a80ee424406c288abcd7e9185428c6b32e1cb9c",
      "parents": [
        "8550c9c0eed90dedaf1c9062b246693528efe21d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 13:48:24 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 13:48:24 2013 -0800"
      },
      "message": "Rename CompilationContext to ParallelCompilationManager.\n\nWe have a large number of things named context as well as context generally\nbeing for things that are local.\n\nChange-Id: I667322790e49a3432fd0f697803ebedcb9b5b56f\n"
    },
    {
      "commit": "1212a022fa5f8ef9585d765b1809521812af882c",
      "tree": "67ebdc1d3274c78978b3d06630874d7641d858d1",
      "parents": [
        "8e6960569e9de6350d7da89aa02efe0e4b924d6f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 10:48:41 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 11:54:04 2013 -0800"
      },
      "message": "Move the Compiler to CompilerDriver.\n\nChange-Id: I0bb4d3c2b79b45fd8ef180688c767712b0c55978\n"
    },
    {
      "commit": "c928de90ad22ecdf83c18a07008409595f13d3b1",
      "tree": "065a08f379960f7ba946318aaa742d7ddd0c94bd",
      "parents": [
        "0f827169742aad6209d830db773a101849c32a83"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "message": "Remove Iceland.\n\nART_USE_LLVM_COMPILER is removed and when necessary ART_USE_PORTABLE_COMPILER\nis used in #ifdefs.\n\nChange-Id: Iffa9ce5b0246c7c427ccc4e67ecc134624632e55\n"
    },
    {
      "commit": "2dd0e2cea360bc9206eb88ecc40d259e796c239d",
      "tree": "9d619dc9508cbe73e4793bf6f08cbc761abfb48a",
      "parents": [
        "ac21b797b3a425975d656d6b84a7b24401d35f42"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 24 12:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 30 16:48:31 2013 -0800"
      },
      "message": "Directory restructuring of object.h\n\nBreak object.h into constituent files.\nReduce number of #includes in other GC header files.\nIntroduce -inl.h files to avoid mirror files #include-ing each other.\nCheck invariants of verifier RegTypes for all constructors.\n\nChange-Id: Iecf1171c02910ac152d52947330ef456df4043bc\n"
    },
    {
      "commit": "700c8d31733534a3d978b75a03f6f7e177dc7e81",
      "tree": "6b9d8d93a70e31dba3b0a880f886ce408776314c",
      "parents": [
        "9adbff5b85fcae2b3e2443344415f6c17ea3ba0a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Nov 05 10:42:02 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jan 25 14:28:43 2013 -0800"
      },
      "message": "Move .oat files to ELF format\n\nGenerates .oat in ELF file format using MCLinker\n- Uses MCLinker IRBuilder to create a synthetic .o from OatWriter output.\n- Uses new ElfFile for prelinking to support art image optimizations.\n\nAdapted OatFile to load using dlopen, ElfFile, or memory, removing raw MemMap mechanism.\n\nChanged image code to not assume oat data will be immediately after\nimage to allow space for ELF headers.\n\nPasses test-art and works with installd.\n\nChange-Id: Idc026eddb5de93f4b97490c405f3ed7b39589749\n"
    },
    {
      "commit": "fffdb023275613612a22ec62b3421ffe4d2b73fe",
      "tree": "eb24cffd6ad7a50a11e9b3c3bcad3688865192e7",
      "parents": [
        "c8253caa7045a7683666725a6d8aeba96a8f9c7a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 04 15:14:08 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 04 15:31:42 2013 -0800"
      },
      "message": "Add memory barrier for final instance fields.\n\nChange-Id: I1a02f0f75e974f4c84d61254da05480c20ff881c\n"
    },
    {
      "commit": "76b6167407c2b6f5d40ad895b2793a6b037f54b2",
      "tree": "5c433a0907ddf401f4078b6703253b1ae75e723e",
      "parents": [
        "f66330a747eff155eb571b634fc9d901c55a78a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 17:47:30 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:11:44 2012 -0800"
      },
      "message": "Move mutex.h into base/mutex.h.\n\nWe don\u0027t actually need any hackery to get the right mutex.h any\nmore, but since we planned on having the google3-like stuff\nin google3-like locations, this is an easy one to fix.\n\nChange-Id: Ie27464ebbc208a6f4e694a97cf26b1cee0737009\n"
    },
    {
      "commit": "2f66382fdb5e98537f724eba43ef1c7162c71b0e",
      "tree": "ff277695e4aad975427f4441c3a45f90c448f7aa",
      "parents": [
        "a0a641c5c47ef37a5d9467582c3dbc4cd3d29529"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Nov 07 22:49:06 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Nov 07 22:51:33 2012 -0800"
      },
      "message": "Restrict Compiler ThreadPool lifetime to compile-time\n\nThe Compiler object continues to exist after compilation is done so we\ncan get the state after compilation, but we don\u0027t need to keep the\nthreads alive. Now they have the same lifetime as the TimingLogger\nwhich seems appropriate.\n\nChange-Id: Idcf871c699563cd239f16418fb83a8d9bffe8c52\n"
    },
    {
      "commit": "64b6d145fa53b8dfb07a8fc2426af13f155d5a4d",
      "tree": "727647da235e21508d6661c7e2a780ff8ee2003e",
      "parents": [
        "0f79d728370ab51b9b16a356b058c48330f43148"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 29 16:34:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 01 17:26:15 2012 -0700"
      },
      "message": "Interpret class initializers when building image.\n\nWe initialize all image classes with the interpreter if they have a\nclass/static initializer.\nBlack list classes whose initializers need access to on device native\ncode. If such classes are added to the image classes they will fail when\nthey attempt to enter JNI code. A number of \"intrinsic\" style JNI\nroutines are special cased to allow more than just trivial class\ninitializers to run.\nAdd a lock for initialization in the compiler to serialize the execution\nof class initializers and avoid deadlock.\nRemove InSourceSpace from image writer (cruft) and teach the image writer\nto fix up referent fields in references.\nFix bugs in the interprerter and implement filled-new-array.\nFactor some VM code to more easily share between the interpreter and\nJNI entry points.\n\nChange-Id: I6bb811dea84f1b82260b1a4e73ac7412179c0b41\n"
    },
    {
      "commit": "6ed960d260d0ec3cbbef455c646ccd47f4e78119",
      "tree": "73c5db413bab25b3462ddc35e10fd6392123b525",
      "parents": [
        "bf90dbe0ad99b91dc20f6e35ee32a05884c5c481",
        "0e4627e593bc39f8e3d89c31f8977d55054c07cc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 26 12:01:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 26 12:01:17 2012 -0700"
      },
      "message": "Merge \"Add thread pool class\" into dalvik-dev"
    },
    {
      "commit": "0e4627e593bc39f8e3d89c31f8977d55054c07cc",
      "tree": "1d69558732c0c916e51a530985a26d4235ef0e6c",
      "parents": [
        "9281f004db3f194930ef34d31e5d80c98341f38f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 23 16:13:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 26 12:00:03 2012 -0700"
      },
      "message": "Add thread pool class\n\nAdded a thread pool class loosely based on google3 code.\n\nModified the compiler to have a single thread pool instead of creating new threads in ForAll.\n\nMoved barrier to be in top level directory as it is not GC specific code.\n\nPerformance Timings:\n\nReference:\nboot.oat: 14.306596s\ntime mm oat-target:\nreal    2m33.748s\nuser    10m23.190s\nsys 5m54.140s\n\nThread pool:\nboot.oat: 13.111049s\ntime mm oat-target:\nreal    2m29.372s\nuser    10m3.130s\nsys 5m46.290s\n\nThe speed increase is probably just noise.\n\nChange-Id: If3c1280cbaa4c7e4361127d064ac744ea12cdf49\n"
    },
    {
      "commit": "c531cefbfb5394413122e9f57d211ba436cff012",
      "tree": "f1a7183c0aa17414df90409e99dc24e84aaa2562",
      "parents": [
        "9281f004db3f194930ef34d31e5d80c98341f38f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 18 07:09:20 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 26 10:13:33 2012 -0700"
      },
      "message": "Eliminate #ifdef ART_USE_QUICK_COMPILER\n\nOne of several steps towards having a single compiler build.\nIn this CL, we introduce a compiler_backend command-line option\nto select between Quick, Quick w/ GBC, Portable and Iceland\nback ends.  The Iceland option is temporary, and will go away once\nwe combine with Portable.  The Quick variants are with\nand without GBC conversion.  In time, those will converge to a\nsingle option.\n\nAll uses of \"#if defined(ART_USE_QUICK_COMPILER)\" are eliminated.  All\nprevious uses in the Quick compiler have been converted to runtime\ntests.  On the llvm side, ART_USE_QUICK_COMPILER was previously\nused to differentiate between Portable and Iceland builds.  Those\nusages have been replaced with ART_USE_PORTABLE_COMPILER, and in\na following CL will also be converted to run-time tests.\n\nAs of this CL, we\u0027re still generating separate libraries for\nQuick and Portable/Iceland.  Next up is elminating the target-specific\nlibraries for Quick-arm, Quick-x86 and Quick-mips.  Once that is\ncomplete, we will consoldate Quick and Portable into a single build.\n\nTo build either Iceland or Portable, touch USE_PORTABLE_COMPILER or\nUSE_LLVM_COMPILER as usual.  Otherwise, the build will default\nto Quick (non-GBC).\n\nChange-Id: Ic86c56f51710c9b06d4430b71a429ae12903cc47\n"
    },
    {
      "commit": "4df2bbdfe6602ce5f141b7b44028b95faa0bd8ef",
      "tree": "9c23dad1023ccd1bf710825e6115892291232dae",
      "parents": [
        "1aae273f8827bcbfff6b00c5babd77a111852272"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 11 14:46:06 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 11 15:33:23 2012 -0700"
      },
      "message": "Enable multi-threaded Quick compilation\n\nReuse thread-local copies of llvm context data for Quick compiler\n(while continuing to regenerate fresh ones per method for Portable).\nThis is a transitional CL - the upcoming compiler driver change\nis expected to pass pass a thread context structure to each compiler\nworker thread rather than use the pthread_key mechanism.\n\nChange-Id: I277920a5c2705748c3a9f37ceace53c903747ec2\n"
    },
    {
      "commit": "81d425b0b232962441616f8b14f73620bffef5e5",
      "tree": "cd1e46656269acf20e78817d675e56d9b9133e6c",
      "parents": [
        "bfaf917edbb1de8d158c3615e0da8ac3143d10c8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 16:03:43 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 17:19:25 2012 -0700"
      },
      "message": "Pass self to lock methods.\n\nThis avoids frequent recomputation of\nThread::Current/pthread_getspecific.\n\nAlso add a futex based reader/writer mutex that is disabled.\n\nChange-Id: I118fdb99ef1d1c4bfda6446ba3a0d8b6ab31eaee\n"
    },
    {
      "commit": "3d1548debdaf8a1915fa432a4d267f7c0145654d",
      "tree": "431569a031e654e24c6cccd79671adbc70cf6d87",
      "parents": [
        "e0f0cb3d855cb5e926452b5e1ec8457adc4e454e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 24 14:08:03 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 24 14:42:57 2012 -0700"
      },
      "message": "Make compiler initialization of classes parallel.\n\nFix hang where super class initialization could fail to notify threads\ntrying to initialize sub-class.\nUnify logging to log file being compiled in all occurances.\nRemove empty PostCompile method.\nRemove experimental ForAllDexFile \u0026 Class code.\n\nChange-Id: I471e9414f94d468d53b401e086f0fb65e36cc27c\n"
    },
    {
      "commit": "66f19258f9728d4ffe026074d8fd429d639802fa",
      "tree": "fd94009774c6cbbb1528ea096e606133bd35f104",
      "parents": [
        "a5e1e3d153990845d80cb8d013157210f11a473c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 18 08:57:04 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 21 17:32:56 2012 -0700"
      },
      "message": "Change dex cache to be java object instead of array, add pointer to dex file in dex cache.\n\nGeneric clean up to facilitate having GDB macros for Pretty* helper functions.\n\nImproved cleanliness of DexCache since having it as an object array was not the best solution.\n\nFixed a bug in InOrderWalk caused by ResolveType sometimes allocating classes.\n\nRename C++ Method to AbstractMethod and add two new classes Constructor, Method which both inherit from AbstractMethod.\n\nRename done to have the C++ code be closer to the java code.\n\nChange-Id: I4995b4c5e47a3822192b08afa24a639d3b1f4da9\n"
    },
    {
      "commit": "0c7abda482f53db3d153c073d1c7a145f84e0626",
      "tree": "837b89c75f0047cbcd16c9121739069a36b4f22a",
      "parents": [
        "ba0b9c55adce3f533845ab1b25c552589e5b4118"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 19 13:33:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 20 15:26:35 2012 -0700"
      },
      "message": "NativePcOffsetToReferenceMap\n\nRather than translate a native PC to a Dex PC and then to the reference\nbitmap, just go straight from the native PC to the reference bitmap.\nEncode the native PC offsets using a hash rather than linearly\nsearching.\n\nChange-Id: Iee1073d93c941c0a31f639e5f23cea9e9f747bee\n"
    },
    {
      "commit": "55e5e6c5702e3f1f68bd83ae741af769740d9a74",
      "tree": "5f08ced0306436fdfdae2977d643aa5f1f3e09f6",
      "parents": [
        "920be7cac2aa06f9d5c8b2db87db116b1cad3159"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Tue Sep 11 15:14:42 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Sep 15 04:51:25 2012 -0700"
      },
      "message": "Fix quick fly2iceland after rebase.\n\nChange-Id: I844f005782b3ecdcb52dc2484d44f4ae34e1c670\n"
    },
    {
      "commit": "b726dcb581bf72da46527378ccb6889020f0e6e9",
      "tree": "c0383ed788652926e93147e50d659ed226519548",
      "parents": [
        "fd678beb171a4686a4f2d53ca4188a4ade8fa54e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 08:57:23 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 09:06:19 2012 -0700"
      },
      "message": "Rename GlobalSynchronization to Locks\n\nAlso address some review comments in common_throws relating to\nToStr\u003cInvokeType\u003e and exception detail messages.\n\nChange-Id: Ibf2c0f147689fa236d349bd7f01eed3c2522552b\n"
    },
    {
      "commit": "08f753d5859936f8d3524e9e4faa6cee353873ea",
      "tree": "5679a9ad8be6827e2a10de282cd28e3d000917de",
      "parents": [
        "b0b2be7688109cff548d2ddc8f02eecbad49ecd2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 24 14:35:25 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 28 11:34:56 2012 -0700"
      },
      "message": "Avoid compile time rewriting of dex code by verifier.\n\nCompile time rewriting of dex code leads to dead code that is causing\nissues with the LLVM compiler. Make instantiation and incompatible class\nchange errors be detected in slow path field and invoke logic so its\nsafe for the compile time verification just to softly fail the effected\nclasses.\n\nThis change places incompatible class change logic into the class\nlinkers ResolveMethod and consequently changes a number of APIs.\n\nChange-Id: Ifb25f09accea348d15180f6ff041e38dfe0d536e\n"
    },
    {
      "commit": "00f7d0eaa6bd93d33bf0c1429bf4ba0b3f28abac",
      "tree": "6a2172ece15c4699e6c2a67ce76f019db0a9a21d",
      "parents": [
        "634ea28f78c4a138e6a1de54eae8696095422415"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 19 15:28:27 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 10:45:52 2012 -0700"
      },
      "message": "Global lock levels.\n\nIntroduce the notion of the mutators/GC being a shared-exclusive (aka\nreader-writer) lock. Introduce globally ordered locks, analysable by\nannotalysis, statically at compile time. Add locking attributes to\nmethods.\n\nMore subtly, remove the heap_lock_ and split between various locks that\nare held for smaller periods (where work doesn\u0027t get blocked). Remove\nbuggy Dalvik style thread transitions. Make GC use CMS in all cases when\nconcurrent is enabled. Fix bug where suspend counts rather than debug\nsuspend counts were sent to JDWP. Move the PathClassLoader to\nWellKnownClasses. In debugger refactor calls to send request and\npossibly suspend. Break apart different VmWait thread states. Move\nidentity hash code to a shared method.\n\nChange-Id: Icdbfc3ce3fcccd14341860ac7305d8e97b51f5c6\n"
    },
    {
      "commit": "50b69e30ef69e72a48b1789622caaab4de203cfb",
      "tree": "336cb5ac90bfb80666870474e2df8c82a1ffbf49",
      "parents": [
        "0b130de5e6d8fda5f621f87223fa8d0117e6e5a2"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Tue Jun 26 18:11:27 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 27 04:07:40 2012 -0700"
      },
      "message": "Fix build. Remove unused declaration.\n\nChange-Id: I3efef12c816518aa2753d7019de113e68966e760\n"
    },
    {
      "commit": "971bf3f9184010d68b9a3ad30b396fa401af91a3",
      "tree": "493e80309ce41fd21359da8093fbebfd21b7936c",
      "parents": [
        "468a7b1fcb2114ec973e31b5276daea0be62c198"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue May 01 15:47:55 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 27 03:47:58 2012 -0700"
      },
      "message": "Compile method one-by-one.\n\nChange-Id: Ic56fb397f3bd6dee32372eb875261a3383eaf30c\n"
    },
    {
      "commit": "365c10235438607541fa2259a5fec48061b90bd8",
      "tree": "26516a4985a8bbef4c8da36b99bf1e54af3ad24d",
      "parents": [
        "147440427984816b6ed5235a9b1fb2cbf99496d0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 22 15:05:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 15:21:01 2012 -0700"
      },
      "message": "Increase use of ScopedJniThreadState.\n\nMove the routines for changing Object* to jobject and vice-versa\n(AddLocalReference and Decode) to ScopedJniThreadState to enforce use of\nObject*s in the Runnable thread state. In the Runnable thread state\nsuspension is necessary before GC can take place.\n\nReduce use of const ClassLoader* as the code bottoms out in FindClass\nand with a field assignment where the const is cast away (ie if we\u0027re\nnot going to enforce the const-ness we shouldn\u0027t pretend it is).\n\nRefactor the Thread::Attach API so that we\u0027re not handling raw Objects on\nunattached threads.\n\nRemove some unreachable code.\n\nChange-Id: I0fa969f49ee6a8f10752af74a6b0e04d46b4cd97\n"
    },
    {
      "commit": "0399dde18753aa9bd2bd0d7cf60beef154d164a4",
      "tree": "ea88327c01ca321074aaa59b97e4c54348802937",
      "parents": [
        "de5705dcf4ab5f92d48e144bcd7b59f7bcd18e16"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 17:09:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 21 22:11:24 2012 -0700"
      },
      "message": "Remove Frame, merge shadow and quick representations.\n\nChange-Id: I5ae03a5e52111792d2df7e83cbd89ab25777844b\n"
    },
    {
      "commit": "a21039c3ae2b20e44ceb2735251c04d0aac89afd",
      "tree": "66b6fa437e7e4286b50bdef224500f9049633701",
      "parents": [
        "3d9d49fa2d025a041f57ea306ea551ef990177db"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 12:09:25 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 13:04:41 2012 -0700"
      },
      "message": "Fix a bunch more lint.\n\n(If you ignore the compilers, we\u0027ve got relatively little lint now. Fits on\na single screen.)\n\nChange-Id: I51389002894d4fd8cf46f79d2bac57079322a030\n"
    },
    {
      "commit": "f8349361a16a4e2796efe9f3586b994e8d4834e4",
      "tree": "0a3474cde4028e1915c59393f49c147dd76ad766",
      "parents": [
        "44335e189951a863607049a33571932fb6a2a841"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 15:00:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 18 15:16:21 2012 -0700"
      },
      "message": "Use static thread safety analysis when available, and fix the bugs GCC finds.\n\nIt\u0027s impossible to express the Heap locking and the ThreadList locking with\nGCC, but Clang is supposed to be able to do it. This patch does what\u0027s possible\nfor now.\n\nChange-Id: Ib64a890c9d27c6ce255d5003cb755c2ef1beba95\n"
    },
    {
      "commit": "2cfc639fc803bf67e3d2a961f2b637220c86d5f7",
      "tree": "dfb184dc35b3a534fcd54a420378f29f30011f3a",
      "parents": [
        "a9719eb4167b544438268d46692389761652fc5d"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon May 07 14:51:40 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jun 07 16:29:03 2012 -0700"
      },
      "message": "Foundation for Quick LLVM compiler\n\nReady for review - probably better get this cleaned up and\nchecked in even though much work remains.\n\nBasic conversion from MIR to GreenlandIR and from GreenlandIR\nback to LIR.  Support sufficient to run Fibonacci test.\n\nNote some structural changes in MIR to support this work:\n    o  retaining incoming label for phi nodes\n    o  constant propagation\n    o  include object reference detection in type inference pass\n\nChange-Id: I8ba63c73e76d071aa40cae0f744e598b96f68699\n"
    },
    {
      "commit": "7a2a23a44d27f769718e28327af671f4e486c49a",
      "tree": "345a05da812927dafe13af82a4926257c3b368e9",
      "parents": [
        "95dfa6a8c522ad84a492d88666ea69fe7a3852c5"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Jun 06 11:01:00 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 06 21:22:11 2012 -0700"
      },
      "message": "Cleanup proxy stub compiler code.\n\nChange-Id: I2a5815cc2a38f5cea9e9c36e5e6db92c1a861eaa\n"
    },
    {
      "commit": "08e1ba3c5899213e63007b0158e0a491f2449ea4",
      "tree": "f53f9352a3c9e6fe6e6e9a3f0a90f58bae69ac8a",
      "parents": [
        "e0e4024b2e3f6fa6feb3ef42f0f072ffb004f8f7"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue May 08 15:08:51 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue May 08 11:53:40 2012 -0700"
      },
      "message": "Don\u0027t fork dex2oat process on target device.\n\nChange-Id: I35370d328aaa1aaaed5b56e62e51c4c74afa9cba\n"
    },
    {
      "commit": "a0e180632411f7fe0edf454e571c42209ee7b540",
      "tree": "97dc85e76c5449ec1a901226c44e0f68fec89870",
      "parents": [
        "e5eb1914de86129d78e965fb9f2e1bfb2aa68640"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 13 15:59:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Apr 14 11:44:21 2012 -0700"
      },
      "message": "Add a SafeMap equivalent to std::map but without the error-prone operator[].\n\nChange-Id: Iae5ba2091c55a34dbd1005cf3d25fce2a8d5c1f9\n"
    },
    {
      "commit": "0f3c55331439970e01af67f80ac117c473bc04cf",
      "tree": "cfa28ad2a58af1ffddb0a2ce90443ad4606743c3",
      "parents": [
        "273cf36d199cf73de3cf61a559ad27c9d23f9825"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:51:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:51:51 2012 -0700"
      },
      "message": "Kill constants.h and fix some copyright headers.\n\nChange-Id: I51c04d731d6de035328781d8ac134ad6fcf49897\n"
    },
    {
      "commit": "57b86d47b66322693a070185fadfb43cb9c12eab",
      "tree": "81d53304a63a660a683917a19f7dd83723a397ad",
      "parents": [
        "68aefb06c449df0bd8a34f3491f7594ee3f9dd0b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 27 16:05:41 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 29 11:51:44 2012 -0700"
      },
      "message": "Refactor runtime support.\n\nChange-Id: Id7470a4105838150d5ceb73ab2c8c83e739660df\n"
    },
    {
      "commit": "de08e84143f7339d5bad24f252681207abbe0951",
      "tree": "6a810189c3fb29f24c8e057b5fdfc824012f0b2d",
      "parents": [
        "0cc6ab6c5104f565a0a3256b5b2b31c6383be189"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Mar 21 00:34:12 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 21:10:46 2012 -0700"
      },
      "message": "Remove ELF filename argument.\n\nWe are embedding the ELF image in the Oat file.  We don\u0027t\nneed ELF filename anymore.\n\n(cherry picked from commit b245ccacf447b014838535a7d8a58365642f0c3d)\n\nChange-Id: I235429222401100c09381ba44a3978f38d5b499c\n"
    },
    {
      "commit": "df57614aa99801a50202e284ee8e8497d8e92621",
      "tree": "c58b9f0294f2c4e3d0e5d0517eee2e4d8fad8daa",
      "parents": [
        "0f0899ac8fbaa470922976d058bbb144fb9eea06"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Mar 20 17:36:32 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 21:09:36 2012 -0700"
      },
      "message": "Add GetElfImages() method to CompilerLLVM.\n\n(cherry picked from commit 950fc6e6a6b568f0cf511c092bee3d31547dc857)\n\nChange-Id: I1ded5909bae4d87ed05b2c192fcb2362eaa37461\n"
    },
    {
      "commit": "f7015fd55a8dc969ac2440ffc829a6b4d942fb5a",
      "tree": "735c4ba7aed0089c073effd5e530e6f53fcdf720",
      "parents": [
        "106b2a03be66748a25b9019e4c222cee498d559f"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Sun Mar 18 01:19:37 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 21:01:20 2012 -0700"
      },
      "message": "Add ELF loader to load the executables.\n\n(cherry picked from commit 8c9ca414a7ed05c3530973c63496e477e9ca5eb7)\n\nConflicts:\n\n\tsrc/compiler.cc\n\nChange-Id: I950749625d5b266990c617e2d8cea688fbdc11fb\n"
    },
    {
      "commit": "106b2a03be66748a25b9019e4c222cee498d559f",
      "tree": "c949a5948b6c4fedba020de206c334dec04b0f10",
      "parents": [
        "aeb53035febaaa186b3abdac55e21579a8988d84"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Sun Mar 18 04:41:38 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 20:56:51 2012 -0700"
      },
      "message": "Create an instance of CompilerLLVM in the constructor of Compiler.\n\n(cherry picked from commit 120539c9a333789f52dd75aa3ec2d303c7cf2119)\n\nChange-Id: I43d10f712e515cffd2f97e628a9d2aa2ff994f5b\n"
    },
    {
      "commit": "b25c3f6a86dc634ce44fb2849385b49465caa84d",
      "tree": "f359c72d821d913f78b977d8dde0fc7023afb511",
      "parents": [
        "fc9e6fabed89d948fa8c0e9d673e430076712c60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 16:35:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 17:11:59 2012 -0700"
      },
      "message": "Fix cpplint\u0027s whitespace complaints.\n\nChange-Id: I11fd2db2badf7bd98e7866ca2155d8ef1e112408\n"
    },
    {
      "commit": "ba0668ecd2a6459ed7c77012995ad08d27f88725",
      "tree": "4840d42598b7a30d5e41636d979be28390dee93e",
      "parents": [
        "1ac29447d6053b142f257330d6e237660076911e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 26 13:14:07 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 26 13:14:07 2012 -0700"
      },
      "message": "Make non-debug dex2oat omit timing and stats information\n\nThis is to try and avoid logcat rollovers during startup in stability monkey runs\n\nChange-Id: I32a84517fdb97829d7efa3067cb99e2f38b049ae\n"
    },
    {
      "commit": "6c403e12aee630d7dc2a31444d49fda2cf81538e",
      "tree": "b45f9ec8333790549a3430d2a33b97334c84e753",
      "parents": [
        "0637e27af8e54f39634024dc77e8b094f21782f9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 20 13:22:55 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Mar 20 13:22:55 2012 -0700"
      },
      "message": "Add DISALLOW_COPY_AND_ASSIGN to PatchInformation\n\nChange-Id: I1802e461f46b1f567b87c20960f859739ef6a101\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": "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": "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": "6f4976c1a9fdaf108974143cd11e6b46037fd24e",
      "tree": "f0c21b703eab0039f5c31e1b272144c5228b8fa3",
      "parents": [
        "13b835a45f3dccff1c6d024ad82a2044831c7c41"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 13 21:19:01 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 14 11:27:16 2012 -0700"
      },
      "message": "Replace some LLVM-specific code with something more general.\n\nThis basically gives any compiler a place to hang extra private data\noff art::Compiler, even though only LLVM needs it right now.\n\nChange-Id: I408778ea1010ab2ad9ec4810e5c53d468a8772c2\n"
    },
    {
      "commit": "3fa1b7e7a7fc9785ba4e8335d730e5caf6343322",
      "tree": "b20075991a2f9260d043accf818f629d368baec0",
      "parents": [
        "2f1deb5753ef39b82752fd01e7bc0fc4c15004b1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 13 17:06:22 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 13 18:33:25 2012 -0700"
      },
      "message": "Unify the invoke stubs and replace \"oat\" with \"Art\" in the API.\n\nChange-Id: Ic1529d7568bd5297fdce4da69ede67c2f48487a4\n"
    },
    {
      "commit": "c4c9881e5d22432f3f1a30eeec5aa109dfc08a7d",
      "tree": "98f1125db961451699880019c8663d76e7b94d02",
      "parents": [
        "1580379bb02ee7866ca94d54851a4d08de12a5a4"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Mar 10 21:55:51 2012 -0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Mar 13 10:26:51 2012 -0700"
      },
      "message": "Fix the LLVM build. Separate out libart-compiler-llvm.so.\n\nAfter this refactoring:\nIf (!USE_LLVM_COMPILER), I pass the test-art and boot the phone alright.\nThe behavior is the same for non-LLVM builds as before. Multi-target\nart-compiler shared libraries are generated as before.\nIf (USE_LLVM_COMPILER), I generate libart-compiler-llvm.so successfully.\n\nNote that the ideal refactoring for the next step will be to always build\nart-compiler and LLVM-[arm|mips|x86] shared libraries. Currently, we\nhaven\u0027t removed all the ifdefs for libart.so yet, so this is not ideal yet.\nReason for not-done-yet is that the next step requires discussions.\nI can remove all the ifdefs today, but then the (!USE_LLVM_COMPILER)\nbuild will incur extra fields and overhead.\n\nThis refactoring allows us to restore the LLVM build situation to be before\nthe breakage yesterday, so we can continue making forward progress again.\n\nOne difficulty in the refactoring is that LLVM is not a method compiler\nin default, unlike (!USE_LLVM_COMPILER). LLVM actually compiles an LLVM module\nat a time normally. So we need to do more call backs and tell\nlibart-compiler-llvm.so in each invocation where we are in terms of\nOatCompilationUnit.\n\nAnother difficulty is that currently our LLVM compiler is not\nmultithreaded and requires locking, unlike (!USE_LLVM_COMPILER). So more\ncallbacks are needed. This will be fixed when we fix the multithreading\nissue.\n\nChange-Id: I93bce21b6d673254188f2a60b1a7f91b508e497f\n"
    },
    {
      "commit": "46f060a53fffc14333096f0a48f95730ee4768ee",
      "tree": "e29bd9d927e315191840e81fd1ddbcfbddaa04cc",
      "parents": [
        "b3cd1229e6904365ca0ca2a7bbc4701ad1908154"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 17:36:50 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 17:36:50 2012 -0800"
      },
      "message": "Move other compiler bits into the compiler shared libraries.\n\nChange-Id: I288337af4c70716709217ff2d21050ba5f858807\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": "9787ac4a18e71a57ed2b559759e9903b557a65dd",
      "tree": "57f673ba508c0fea41b9a231866ecd4b47f42adf",
      "parents": [
        "bc615a1d16969196168d5d4632f2cb1aa8b6664b"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Mar 06 18:24:03 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Mar 06 14:38:23 2012 -0800"
      },
      "message": "Skip src/jni_compiler.cc from llvm backend\n\nLLVM backend has llvm-specific JNI compiler, which\nis using different calling convention and being\nincompatible with src/jni_compiler.cc, thus we are\nnot using src/jni_compiler.cc in the llvm backend.\n\nChange-Id: I68a3beb2668b4bcc8ed36aed57fa252907ad2453\n"
    },
    {
      "commit": "fb6adba0d5d5505610fbd325e7911db700a2f1e8",
      "tree": "84ad8f9cc55a2ae87f80c05927126af7e75604d7",
      "parents": [
        "123e8a7fdf69b40603f7df95f08d62c69ee1c07e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Mar 04 21:51:51 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 05 08:56:55 2012 -0800"
      },
      "message": "Sharpen virtual calls to final methods.\n\nAlso remove unused instance resolution stub.\n\nChange-Id: I2abb988d107e98ac0148fb81464b22622a468382\n"
    },
    {
      "commit": "8b977d38483aaa08abcbdaa5fa888076c1142169",
      "tree": "ae61c7cb1c397582f22c5c585bb0b531fd8f59b0",
      "parents": [
        "88894ee835411de72025cd8a5d8d111a6f2a004a"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Feb 21 19:14:55 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Feb 29 17:11:27 2012 -0800"
      },
      "message": "Compile llvm.Module into ELF object file.\n\nChange-Id: I8faf7427944324c9bac12573d217cde2a2e658f1\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": "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": "de6e4cf1b63acd7032a52826d9df21ff649d7128",
      "tree": "00a44b884b33591e3a33512123484145bfee6ff0",
      "parents": [
        "408e41920549371079eecd6a6ba2b7ce0fa7e328"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 27 14:46:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 27 14:46:06 2012 -0800"
      },
      "message": "Add dex2oat -g to control whether the compiled code has debugger support.\n\nChange-Id: I69c83f707d874fee0464929769b1f1f28e9d97ee\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": "d1fec81868a3567560a3868350e0a945248e925b",
      "tree": "749615f244e92d7f18b1713950d8110322b7645f",
      "parents": [
        "0401b68ec5ddf2aface872d756558aafcada3655"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Feb 13 09:51:10 2012 -0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Feb 14 23:46:16 2012 -0800"
      },
      "message": "Beginning of LLVM backend for ART.\n\nChange-Id: I03466aed94670ac72d489ebc6e34d7ee1c9c857e\n"
    },
    {
      "commit": "996cc586ce76235ee3efa1eff86de51dabcc5d53",
      "tree": "b47d503da60ac10e52e9c09a6cb762aa6f959203",
      "parents": [
        "16f93671923979733cb46fc6f053c8f65754d5eb"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 14 22:23:29 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 14 22:37:35 2012 -0800"
      },
      "message": "Add compiler stats, fix super call slow path\n\nAdd statistics of when the compiler framework has allowed AOT\ncompilation to be optimistic.\nFix bug that was forcing many calls to be unnecessarily slow path.\n\nChange-Id: I8f0f6ab4738b11161855cf0dc424babed774c998\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": "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": "5523ee070b005576c6f889415205d49ea77cf243",
      "tree": "e96483994b5f5d747615673d06bb7b84302d16f0",
      "parents": [
        "5b332c89fa3fdd7dc184b22c2587d28af304d019"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 18:18:34 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 18:29:13 2012 -0800"
      },
      "message": "Add -j to dex2oat.\n\nChange-Id: I80f3f2605b8afcdf9adf9382716b041f10efa104\n"
    },
    {
      "commit": "c225caa9715eeaeff87f27d5b6a3e7d4f6b7efad",
      "tree": "4f24c99fdff30199dde44952cf6d88fd493a87ca",
      "parents": [
        "f42d81312b971ccc80e24c4708bd944e6e259d15"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 15:43:37 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 15:43:37 2012 -0800"
      },
      "message": "Compile classes in parallel.\n\nChange-Id: If7f03372f5094236a3dd0cfd638c39298b23c132\n"
    },
    {
      "commit": "9ada79cbe875dbcf7229b3f563303d21b0537d5f",
      "tree": "71ebc8e378e8c6a41e543048a57a5d091e167a57",
      "parents": [
        "47a058813f6bc448426d1037535c6a52c1079d15"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 14:29:52 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 14:50:27 2012 -0800"
      },
      "message": "Access checks may fail verification due to class loaders\n\nAt compile time we have incomplete class loader information. We need to\nbe tolerant and make this a runtime issue.\n\nChange-Id: I9e63b804ae68434753f0aea7a855014030a1542d\n"
    },
    {
      "commit": "d9c67be7c116875d96b31e640ad47d587b205605",
      "tree": "55ba94dde3916dfb88681e4967e4a45926436716",
      "parents": [
        "763d5fb2f83d9c93b5b764533005865a3d1034e1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 19:54:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 09:28:44 2012 -0800"
      },
      "message": "Start parallelizing dex2oat.\n\nThis is enough to perform type resolution and verification in parallel.\n\nThere appears to be a bug in InitCpu --- if you start enough threads\nat once, the CHECK at the end starts to fail, with self_check \u003d\u003d NULL; I\u0027ve\ncommented it out for now, but this will cause test failures until it\u0027s fixed.\n\nChange-Id: I4919682520bc01d3262c6b3d00c7bd2c2860a52e\n"
    },
    {
      "commit": "601a12302407d8199503d2cc6cc0829d5996696d",
      "tree": "fa72500fb24cb4d69a5c1e016db3ef4d57f0fd20",
      "parents": [
        "054f6c19573100b29ce4139822bb496ba3d8e4d0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 17:47:38 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 17:47:38 2012 -0800"
      },
      "message": "If dex2oat takes \u003e1s, show a breakdown of where the time went.\n\nTurns out that we spend nearly as much time verifying as actually compiling.\n\nChange-Id: Icf2e42b4cc77bd9a48a6d04a4fe19f57270c5927\n"
    },
    {
      "commit": "2faa5f1271587cda765f26bcf2951065300a01ff",
      "tree": "c59557857c36741cfcd1b6bf5ae039886a8ad6e7",
      "parents": [
        "0850c69c88d49efd4075288511b70d6c032bd0c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 14:42:07 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 16:46:29 2012 -0800"
      },
      "message": "Fix copyright headers.\n\nChange-Id: I5b7bc76a370238d810d78522bd5531600746700f\n"
    },
    {
      "commit": "bb551fa68ffc57f679b8c914ac856666f0348b77",
      "tree": "98bc7c51b0a8c20934bf6ae27574036b616566ae",
      "parents": [
        "2748b49cb889f6e2539c77a09064db0459508467"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 25 16:35:29 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 25 17:11:37 2012 -0800"
      },
      "message": "Collect and output a few dex2oat statistics.\n\nNot sure how useful this is. Suggestions welcome.\n\nChange-Id: I339de66a9964d18b11a482f549e891a57831e10e\n"
    },
    {
      "commit": "8add92dcf59568c72c17e9a979948b1a7a0b1264",
      "tree": "317c96fc2cc004f980d16b553d445b56fa9dc37d",
      "parents": [
        "e5448b5a12003b405b22cde3b94f962ab4888a87"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 18:18:43 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 18:20:30 2012 -0800"
      },
      "message": "Remove the rest of the unordered_ stuff.\n\nChange-Id: Ibfef4e807c1d2ce63887b6c67d1c1e60012d46a5\n"
    },
    {
      "commit": "e5448b5a12003b405b22cde3b94f962ab4888a87",
      "tree": "1192cf30e8b0132a9317290d18402ed9af8c4681",
      "parents": [
        "db9f4c08d8b23495796874158a56bdac612c7a6e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 16:44:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 16:44:06 2012 -0800"
      },
      "message": "Remove most of the unordered_ stuff and use the standard equivalents instead.\n\nChange-Id: I01c6f195fd2cf6edbe430fb31e99b2e2748c2088\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": "0755ec5ea1dce0b549fc1adefeb52d89f119ebec",
      "tree": "6565330f01612586ebbfa9b45dda6bd4720c3234",
      "parents": [
        "57e7600af0076bad4d7d3f255e72230d2c3be990"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 11 15:19:46 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 11 17:03:58 2012 -0800"
      },
      "message": "Record Class::Status information in oat file\n\nChange-Id: I328de86a89c7d84a211b3aed3d42b8c92c1f3464\n"
    },
    {
      "commit": "4dd9b4d95eec9db5338fb9bf132f9bb8facf6cf4",
      "tree": "f9dc6f6e6a55acea3a08f1f568ae6900c1dd7dd1",
      "parents": [
        "20a409c99a649a01cb7c65bd1089988445d8cdfd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 12 18:29:24 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 08:23:08 2011 -0800"
      },
      "message": "Clean up verbose logging.\n\nChange-Id: I6b01980e7145c4f8d25a5b50f620903f61a1b427\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": "ae826983f7903bc0a6bbbe8426bf393fb2f6d747",
      "tree": "6fb83f2b19a1a50ade3c93cbf10485cd8fbc793f",
      "parents": [
        "8aa6fc39f5cc0279d4ba2ee064de9758560dfedd"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Nov 09 01:33:42 2011 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Nov 29 13:46:50 2011 -0800"
      },
      "message": "Add --image-classes to dex2oat\n\nChange-Id: Ia88f9d302e0f9cd72be2199ee46d212d99864c67\n"
    },
    {
      "commit": "254db0ff7ea6509a1c2914b1d9532e2041a0c4c4",
      "tree": "2b76fd513207c6679a50a91638d95361e9a05ae6",
      "parents": [
        "9b1a4f425711c26d0465d54a1cb95ec4a813322a"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Wed Nov 16 16:44:11 2011 -0500"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Wed Nov 16 17:21:45 2011 -0500"
      },
      "message": "Pass the classpath to dex2oat.\n\nThis makes it possible to run applications that have multiple\ndex files on the classpath.\n\nChange-Id: I15264a001a46ddb253e87f2739e6b9644348f1be\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": "169c9a7f46776b235d0a37d5e0ff27682deffe06",
      "tree": "9bd38fe9508e827089d546f04b0b42020eef821e",
      "parents": [
        "0571d357843c53e042f370f5f2c2e9aa3fe803a9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Nov 13 20:13:17 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 14 09:27:23 2011 -0800"
      },
      "message": "Remove the use of Method from jni_compiler\n\nChange-Id: Ibf1c72a806e7f1ba7a2d83960c3d57f41937d336\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": "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": "aded5f7ab991f3c1132851599d3bc60ff6707eed",
      "tree": "7fb5e92c224adf98cadd67b7df99cc2d2851cbcb",
      "parents": [
        "bcbaaf3df56178263dbc110dcb0d1cf6c9d167c3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Oct 07 17:15:04 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 10 12:51:28 2011 -0700"
      },
      "message": "Working ClassLoader\n\nChange-Id: Ia1122165e47f846a1d4506111849f830d9f14c1b\n"
    },
    {
      "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"
    }
  ],
  "next": "1cb0a1dfc32531c79a968aeac26ccb5525862497"
}
