)]}'
{
  "log": [
    {
      "commit": "8cc5162f19d64eb6414e7e421cea4413debe671e",
      "tree": "b2b984bc01718a83f1a9fa9f0c8e0752b364ecd7",
      "parents": [
        "df6df99847fc8e4914755f9b2b7d18897254240b"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Fri Jun 21 09:20:34 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Fri Jul 12 15:52:11 2013 -0700"
      },
      "message": "Semi-pruned SSA support for sea-ir.\n\nAdded the following:\n\nPer file:\nsea_ir/sea.*: IDominator pass, dominance frontiers, global variables for ssa\n              transformation, phi-function insertion pass, SSA renaming pass.\nsea_ir/instruction_tools.*: These tools provide info needed by dataflow analysis\n                            that is dependent on dex format.\ncompiler/utils/scoped_hashtable.h: Scoped hashtable implementation that\n                                   allows fast SSA renaming.\nsrc/compiler/utils/scoped_hashtable_test.cc: Test for scoped_hashtable.h.\ndex_instruction.cc: Changed semantics of the VRegA,B,C function\n                    to return NO_REGISTER instead\n                    of aborting if the instruction does not\n                    have register operands.\nAndroid.common.mk: Added support for scoped_hashtable test.\n\nChange-Id: I990fe4c213d241a033e43a04a67c6083fca4b347\n"
    },
    {
      "commit": "51c2467e8771b56e25ae4f17f66522f979f57a7e",
      "tree": "16a66abbb45ea3fcc8c513c8511f34a46cd454c4",
      "parents": [
        "27c590edf6c24107b6473e84e526c432bd081f6e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 11 16:00:56 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 11 21:16:04 2013 -0700"
      },
      "message": "libart-compiler cleanup\n\n- Move compile-time code to src/compiler and libart-compiler\n  OatWriter, ImageWriter, ElfWriter, ElfFixup, ElfStripper, stub generation\n- Move ClassReference and MethodReference to remove MethodVerifier dependency on CompilerDriver\n- Move runtime_support_llvm.cc out of src/compiler and next to runtime_support.cc\n- Change dex2oat and gtests to directly depend on libart-compiler\n- Move non-common definitions from Android.common.mk to more specific makefiles\n- Add LOCAL_ADDITIONAL_DEPENDENCIES on appropriate makefiles\n\nChange-Id: I897027e69945914128f21f317a92caf9255bc600\n"
    },
    {
      "commit": "c64440528822281a7889aba9cebf96baa4235b87",
      "tree": "9c62cd2c56f0195f0095b3bcd62896700a10c7b6",
      "parents": [
        "2c3caadb48b066a0355cd3d2dcd5d5e9b48fc19c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 02 09:38:32 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 10 09:14:59 2013 -0700"
      },
      "message": "Update class_initializer_black_list for master\n\nChange-Id: Id8c69cc349290ba7d255ea214f8d1b51d3ce062a\n"
    },
    {
      "commit": "0b4e3ef67508a0b8c121b6b26ab5ea0a1d8e7141",
      "tree": "fc53640b73fb2f648e018a15bed8585818f3784f",
      "parents": [
        "3e089ee6ef1e33c5ff6405b209c4f14a123c0e7e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jul 01 09:29:04 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jul 01 09:29:04 2013 -0700"
      },
      "message": "Add StandardCharsets to the class_initializer_black_list\n\nChange-Id: Id13a58fc6da8a2c39f47bcee14a743c88fc899b7\n"
    },
    {
      "commit": "7467ee05012e1fd9834df74663c1ebda46f5636b",
      "tree": "d93d7b7f13440eff50c552ccdab8ce8e4e5a9547",
      "parents": [
        "b126134010ebeee771da0eec7fa76ad13fe9a9c9"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Fri Jun 21 09:20:34 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Jun 25 13:12:53 2013 -0700"
      },
      "message": "Added support for SEA IR.\n\n- Modified makefile to take the existance of SEA_IR_ART\n  file to mean \"switch to sea ir mode\".\n- Switching SEA IR mode on leads to the new compiler being\n  fed the fibonacci methods only, if they are used as input.\n- Added partial support for the control flow subgraph of\n  the SEA IR (instruction nodes and region nodes for\n  conditional and unconditional branches).\n\nChange-Id: I29020b8e2df5a00fde75715c3683cc25038589f4\n\nConflicts:\n\tsrc/compiler/driver/compiler_driver.cc\n"
    },
    {
      "commit": "2d6ba5158d7fd459db2870df47300b517dc4d08c",
      "tree": "51e306969d4d707aee7a6bc36481390721e0f81f",
      "parents": [
        "1e2ee7de9dff66f7ca2bdf83a7262e21d75b37d1"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 11:31:37 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 24 15:29:06 2013 +0200"
      },
      "message": "Quickening support.\n\nThis CL adds quickening support for methods which are interpreted at runtime.\n\nThis CL introduces a DEX-to-DEX compiler. A method is now compiled in one of\nthe two following modes:\n- Native compilation: the method is compiled by the Quick or Portable backends.\nAt runtime, the generated native target-dependent code is executed.\n- DEX-to-DEX compilation: the method is executed by the interpreter at runtime.\nIts DEX code is compiled so some instructions can be replaced by special\ninstructions only valid at runtime. No native code is generated.\n\nThe quickening adds special instructions to improve runtime performance. They\nare \"-quick\" versions of the following instructions:\n- iget/iput\n- iget-wide/iput-wide\n- iget-object/iput-object\n- invoke-virtual/range.\n\nThese special instructions cannot be treated by the verifier since they lose\nthe field/method index referencing the field/method being accessed/invoked.\nTo prevent this, the DEX-to-DEX compiler is run only on methods of preverified\nclasses (without verification error at compilation time).\n\nThe DEX-to-DEX compiler implements quickening support using the CompilerDriver\ninterface like the native compiler does (Quick or Portable backends).\nTo replace instructions, the DEX-to-DEX compiler must be able to modify the\nmmapped DEX file. Since it can be read-only protected, the DEX-to-DEX compiler\nmust be able to temporarily change its protection to read-write mmapped file.\nTo achieve this, this CL adds support for changing DEX file protection with\nDexFile::EnableWrite and DexFile::DisableWrite methods. Besides, it also adds\na dedicated lock (DexFile::modification_lock) to ensure thread-safety and avoid\nconcurrent DEX file protection change (from a parallel DEX-to-DEX compiler on\nthe same DEX file).\n\nChange-Id: Iaafd103b9766810d7fc94a2c424a8fafba66e26a\n"
    },
    {
      "commit": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\n"
    },
    {
      "commit": "b19fa800aab1c2731b12ff24696feca13901db3f",
      "tree": "04047f1f9f3ce4d1dd1d4be04e8d24023b59859a",
      "parents": [
        "45478f42a780d9852892c97c876d5d969d26533c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 20 11:17:03 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 20 11:17:03 2013 -0700"
      },
      "message": "Don\u0027t always slow-path array casts/instance-of.\n\nRecent changes to IsAbstract for arrays pushed us in to always generating\nslow-paths.\n\nChange-Id: I52fb50953949f337243961a308eabf0d684eacf3\n"
    },
    {
      "commit": "96391606d8adfc661e1c21703ded1e7a39377a76",
      "tree": "dd5dde6a3ff421d99797dd6ebe2fe9c6d1894e49",
      "parents": [
        "7a77d04afcc64756f21f4250fe5ff4615740046f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 13 19:49:50 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jun 14 16:07:02 2013 -0700"
      },
      "message": "Move image class computation to the CompilerDriver\n\nChange-Id: Ia51cdc199cdeaf409755ab8da23323e204ce041e\n"
    },
    {
      "commit": "78ffecc0ad1f47b1551ee575811c610b62e08d98",
      "tree": "d24c2777476f6ce7f0f57ab18a40c54cd8e8046e",
      "parents": [
        "ece6c6e7f31db4a25a6f1f95edffdf445032d8c5",
        "6fe568e16cea80dfe9ccb856c138a75da5f2a90d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 07 22:37:45 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jun 07 22:37:45 2013 +0000"
      },
      "message": "Merge \"Simplify CanAssumeTypeIsPresentInDexCache.\" into dalvik-dev"
    },
    {
      "commit": "6fe568e16cea80dfe9ccb856c138a75da5f2a90d",
      "tree": "91d17826bcd6de30d253d9cfd86ee8089e6e374d",
      "parents": [
        "16e3d2cee40f3305f29f3ce0d2857ecc815e57bc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 07 15:16:10 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 07 15:16:10 2013 -0700"
      },
      "message": "Simplify CanAssumeTypeIsPresentInDexCache.\n\nOnly use ScopedObjectAccess to check correct dex cache semantics.\n\nChange-Id: Ia4d3475368f92736c8a705b1b9a13175fc0af413\n"
    },
    {
      "commit": "0aba0ba155bef7346bde19e53581200b89ae8a7a",
      "tree": "6590f8a50bde7c30b57f1bb0ae67c6d88cea8116",
      "parents": [
        "515661b14b60ab9684efa1ab1d5124934406094e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 03 14:49:28 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Jun 07 14:43:24 2013 -0700"
      },
      "message": "Created compiled stubs in image.\n\nSaves class linker from having to set code pointers when loading\nfrom an image. Added stubs for quick and portable resolution\ntrampolines, and interpreter-to-interpreter and interpreter-to-quick\nentry points. Also added sizing stats output for oat writer.\n\nChange-Id: I3905fae81047742c23d1cf0ca001db798db971b1\n"
    },
    {
      "commit": "c9e463c8aa083a5ed20293f42363ebff93de5f84",
      "tree": "9664a0f909043f822437e804339c11eb77896db7",
      "parents": [
        "a7005960d536cbfd7ba82d2fa52ee1865516435b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 16:52:26 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 23:57:52 2013 -0700"
      },
      "message": "Faster instance-of for final classes.\n\nIf a class is final and not and array we can generate a 1/0 based on class\nequality.\nUse a method\u0027s declaring class if it matches the instance-of class (common in\nJava equals methods).\nDon\u0027t do a class pointer comparison in the case of an abstract or interface\nclass, just go straight into the slow-path.\nFix performance bug where peep-hole verifier pass didn\u0027t merge into the\nfall-through line if the next instruction wasn\u0027t interesting.\n\nChange-Id: Idb47ec6acebfd25a344ed74adaacba02fafc7df2\n"
    },
    {
      "commit": "fae370a044f5817f69937cccfd2d12a16b374266",
      "tree": "60af2a03b19e9bcca149e0519504da134d17f9ed",
      "parents": [
        "1b1e8da7287e199533bf63d72f16fdff99fe7f8e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 08:33:27 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 08:33:27 2013 -0700"
      },
      "message": "Don\u0027t apply instance-of peephole when vDest \u003d\u003d vSrc.\n\nBug: 9284898.\nAlso statistic to show check-cast ellision use.\nFix bug where the check-cast ellision was using wrong dex pc.\nAvoid a use of DecodedInstruction.\nOther formatting clean-up.\n\nChange-Id: Ibf67941a24148b615896d0be6f2f29ce5034e53a\n"
    },
    {
      "commit": "d0583802482a7b2f54749edc4faa00303459f9a8",
      "tree": "640fb56bfe465aeed281a6585dc12836c87858f9",
      "parents": [
        "8427a3db9efb1c67d581fdae006b9afc5c1283b2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Jun 01 10:51:46 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Jun 01 11:16:53 2013 -0700"
      },
      "message": "Allow type based sharpening for imprecise references.\n\nWhen a reference is imprecise we may still be able to devirtualize if the\nmethod that is dispatched upon may not be overridden (ie final).\nSome other tidying of the devirtualization code.\n\nFor boot this increases the frequency of type based devirtualization by a\nlittle more than 0.01%.\n\nChange-Id: I050efbcc78c6b89135a6432bd7c2e946d8efbab4\n"
    },
    {
      "commit": "637c65b1e431fd90195b71c141b3590bd81cc91a",
      "tree": "30097d990e442290bbb4ce94620390075b2dd624",
      "parents": [
        "207bb6548f96636b40ee62124b37d2d82c3ddc6b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 11:46:00 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 21:31:37 2013 -0700"
      },
      "message": "Verifier improvements.\n\nMake type hierarchy for unresolved and unitialized types explicit.\nTidy and comment code.\nAdd DexFile::FindStringId that takes UTF-16 to avoid unnecessary UTF-8\nconversions during image writing.\nExplicitly disable RTTI that causes problems in debug builds.\n\nChange-Id: I701f1c3be8be5854fcabf5ec39e9f9c5d388aab0\n"
    },
    {
      "commit": "39ebcb800aabedd0ffa6aa4aeac8aa4194c66e61",
      "tree": "3efbbafa4cc39683a8bcbc2d76103c3d5bfbf072",
      "parents": [
        "f89eccd509475cb1949c729e796b26a2a248ae04"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 16:57:23 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 11:43:42 2013 -0700"
      },
      "message": "More profiler driven tweaks.\n\nMake more code inlinable by moving to header files.\nUse reserve on std::vectors to avoid reallocation.\n\nChange-Id: I1bf67d32dd58ff5c06dec73a247fadc3de593e91\n"
    },
    {
      "commit": "1bf8d4dbe5cb9891e8a1125ff1928b544efc243a",
      "tree": "84b28ef4c8bdf7da73c16e891e2fe978b52d9a90",
      "parents": [
        "b29bbbc00071f56a4a98a2d94c3968a36763ed55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 00:18:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 10:20:05 2013 -0700"
      },
      "message": "Profiler directed clean-up of dex2oat.\n\nFix bad usage of std::string in: the verifier and compiler driver method\narguments, causing unnecessary boxing and allocations; in creating a symbol for\nthe dex compilation unit, that is only used in portable builds; in pattern\nmatching for intrinsics by name.\n\nMake class linker dex and classes locks reader/writer to allow concurrent\ndex cache or class querying. Refactor ComputeCompilingMethodsClass to pass in a\ndex cache hint, to avoid taking any locks when the dex file of the compiling\nmethod matches that of the field or method being resolved.\n\nMake the RegType\u0027s HasClass method virtual to avoid frequent virtual method\ndispatch. Make RegTypeCache GetFromId inlinable.\n\nVarious other bits of whitespace and formatting clean-up.\n\nChange-Id: Id152e1e5a6fed2961dad0b612b7aa0c48001ef94\n"
    },
    {
      "commit": "f8582c3b87efa0245d176f768fd373e5b4289da4",
      "tree": "f4d22c4682c2df247dea7b6a9b43f8adbb1cc1e0",
      "parents": [
        "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 29 16:33:03 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 29 16:33:03 2013 -0700"
      },
      "message": "Build fix.\n\nMIPS build exposed a latest bug in DexFile\u0027s binary search code.\nPortable build always requires a dex cache when using verifier based\nsharpening.\n\nChange-Id: I235c033d7eba0272b264f5dbda209ff5cd7cce93\n"
    },
    {
      "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": "aa4a793d7175ceeb1efa215c2af5e52e42b22f0a",
      "tree": "9c3db54a108d4327471c6d4890d28cdfe1f030ff",
      "parents": [
        "167436311a08a65dea28dda079a137893821c9c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 13 11:28:27 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon May 13 13:14:19 2013 -0700"
      },
      "message": "Rename abstract method code_ to entry_point_from_compiled_code_.\n\nChange-Id: I9b02d2df95bbeafa6e6387b461f574c57337a61e\n"
    },
    {
      "commit": "167436311a08a65dea28dda079a137893821c9c7",
      "tree": "4754f47306a0ffa0ad97635015d9596b427dd425",
      "parents": [
        "c44f68fb6a6d55c0df28dd05b93d8906ec20bd08"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 08 10:59:04 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 10 17:16:00 2013 -0700"
      },
      "message": "Improve interpreter to interpreter invokes.\n\nThe interpreter constructs a shadow frame instead of arg array to make\ninterpreter to interpreter transitions faster. This adds a pointer to\nan entry for the interpreter to each method.\n\nChange-Id: If48911d3aa3470847b8548a9e92090b829f4f254\n"
    },
    {
      "commit": "c44f68fb6a6d55c0df28dd05b93d8906ec20bd08",
      "tree": "fc4ac69b301b7461d285f440730909555fca1809",
      "parents": [
        "2c6de22d6dcdc6fe1a065480582989e15a47fcb5"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 10 13:24:54 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 10 13:24:54 2013 -0700"
      },
      "message": "Fixed Android.common.mk #define setting for small art\n\nWe were seeing things compile when they shouldn\u0027t have. This fixes it.  Plus added\na bit more documentation to options, set default values for the two small art related\nthresholds to zero.\n\nChange-Id: Id5db11962f3e30d8d4ee6b85d4cf7d6e66323adb\n"
    },
    {
      "commit": "bf47e5f28b1aa39748dce8ac5abbabca1baee093",
      "tree": "29b10c5d1ae32fc93ab02332c16ed76d469de78e",
      "parents": [
        "ff9c9950ffd12a8904aecfc71f7a1c590001d4fb"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat May 04 16:06:09 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat May 04 18:13:28 2013 -0700"
      },
      "message": "Tracking merge of JWR32E (#656244) to dalvik-dev\n\nChange-Id: I2c7baf8e3ccb7a0f05f767628917caed83720a2a\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": "cf9773a7adff883012dbd519a66e85f1f7aaaa11",
      "tree": "2202662f22597850bf03c5dbbb0305bfe46816a5",
      "parents": [
        "654d91957edb4d1f7534ed5d743cf914db763448",
        "8447d84d847d4562d7a7bce62768c27e7d20a9aa"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Wed May 01 17:03:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed May 01 17:03:06 2013 +0000"
      },
      "message": "Merge \"Compile filter for small applications and methods\" into dalvik-dev"
    },
    {
      "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": "e40f302f539dbca0a4b2cd7ee9eba6d37095b584",
      "tree": "661dcca0d82ce0598196ead391590fad291fb17f",
      "parents": [
        "302a72d6e0e99208db629053dd77dda85896f707"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 30 16:13:40 2013 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Tue Apr 30 16:13:40 2013 -0700"
      },
      "message": "Track rename of JSSE\n\nChange-Id: I1e038e63ccad098a5812bbb1532ca4dd839d4be0\n"
    },
    {
      "commit": "302a72d6e0e99208db629053dd77dda85896f707",
      "tree": "932d35c7dc03161f81f87dd1654b0330f942668c",
      "parents": [
        "31d4b8e0058b33e2c5ce792a69e5e897583652e2"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 30 09:45:06 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 30 09:45:06 2013 -0700"
      },
      "message": "Revert \"Supporting de-virtualization for precise types.\"\n\nThis reverts commit 31d4b8e0058b33e2c5ce792a69e5e897583652e2.\n"
    },
    {
      "commit": "31d4b8e0058b33e2c5ce792a69e5e897583652e2",
      "tree": "8b981aa8c0dcb2e540f5ba26951302f720299f8e",
      "parents": [
        "88fc036842eb3c48acd5d3b01e75b3012c996d90"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Mon Apr 29 11:31:03 2013 -0700"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Mon Apr 29 13:06:07 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\nChange-Id: I0626d5cd1bc70a685db71abec067370ebdaf6edc\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": "1f55ea0d5cfea943ec11dd1be9ddb163e4e325b2",
      "tree": "d9308a490b3aeb9630410618829b24d41c323abb",
      "parents": [
        "cfa9cfa3a94b33d300e1b08b48b3cb72de343dbd"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Wed Apr 17 07:02:40 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Wed Apr 17 07:02:40 2013 -0700"
      },
      "message": "minor cleanup\n\nChange-Id: I92dda15aaa2626821befcb9a5db3801b0ab074e5\n"
    },
    {
      "commit": "ee9889502a34a08741a6f8ecc02917202de9d773",
      "tree": "cdcfd55a15efe64b9acc14c9f0ab7d901f5a07c9",
      "parents": [
        "3e13ae7b85cc559f72bde6d2a3de61b9792f7de5"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 16 14:23:47 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 16 14:41:14 2013 -0700"
      },
      "message": "Add bool to verifier to allow soft failures.\n\nWhen false, soft failures in the verifier become hard failures. It should\nonly be false when not compiling, and calling the verifier from the class\nlinker.\n\nChange-Id: I664e5cbe491784b280aa5bfdb7e7fc0b771814f5\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": "4b4d711852982716ac478288f210bb2a2f504589",
      "tree": "39c344290c382770f3c6317401877c37306ab9c6",
      "parents": [
        "9d6589c2744835bf946e52b3dfcbcec7099e343e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 11 10:16:48 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 11 10:16:48 2013 -0700"
      },
      "message": "Remove SLOW_ART output spam in compiler driver.\n\nChange-Id: I3a0961be43dc366552b8f1f2219b16cf7d20fac9\n"
    },
    {
      "commit": "f08e473519dc5c7ccb85eb2b333f9d0aff23a329",
      "tree": "796cb1f9102e07c33de163281a2e34af5bf634d0",
      "parents": [
        "10e75abe80fc86ff5a6a5b4b3bcef382b3c596be"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 09 09:45:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 09 09:45:49 2013 -0700"
      },
      "message": "Fix abort regression.\n\nChange https://googleplex-android-review.googlesource.com/#/c/249463/ set a\nboolean prior to testing it meaning that all aborts were seen as recursive and\nno meaningful log information was given.\n\nAlso a fix related to https://googleplex-android-review.googlesource.com/293665\nwhere we were attempting to dump other threads stacks during aborting even\nthough those threads weren\u0027t suspended.\n\nChange-Id: I1f848512c5e380529579db3d16bb8f5ddda36ad3\n"
    },
    {
      "commit": "10e75abe80fc86ff5a6a5b4b3bcef382b3c596be",
      "tree": "11cf2595fb065a0ee56cc68860f29a96a03919f3",
      "parents": [
        "62d6c772205b8859f0ebf7ad105402ec4c3e2e01"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 09 09:04:12 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 09 09:04:12 2013 -0700"
      },
      "message": "Build fix.\n\nChange-Id: If187062cc456db49a6eb4987c0548f09fac75cf4\n"
    },
    {
      "commit": "62d6c772205b8859f0ebf7ad105402ec4c3e2e01",
      "tree": "e2f2ba6d71ed5a39c9f6909e3f7c08e998053315",
      "parents": [
        "c9b17c7ee96cd04fac9048aab624ed554fe260bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 08:32:07 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 08 14:24:13 2013 -0700"
      },
      "message": "Interpreter entries and instrumentation as a listener.\n\nMake the instrumentation responsible for whether we want method entry/exit\nstubs, and allow it to use interpreter entry stubs when instruction by\ninstruction instrumentation is required. Improve deoptimization so more JDWP\ntest cases are passing.\n\nRefactor exception debug posting, in particular improve reporting in the\ninterpreter. Improve class linker exception throwing so that broken dex files\nare more likely to be reported. Fixes the performance issue Bug: 8410519.\n\nFix some error reporting lock level errors for the large object space. Make\nfast object verification faster.\n\nAdd some debug mode robustness to finding dex PCs in GC maps.\n\nAdd printf attributes to JniAbortF and fix errors.\n\nExpand run-test 044 to test return behaviors and fix issues with not throwing\nappropriate exceptions for proxies.\n\nEnsure causes are reported with a class linker NoClassDefFoundError and JNI\nNoSuchFieldError.\n\nRemove unused debugMe and updateDebuggerFromCode.\n\nThere\u0027s a minor sizing tweak to the arg array builder, and an extra reference\narray check in the interpreter.\n\nSome clean-up of trace code.\n\nFix reg type cache destructor if it is called after the reg type cache is\nshutdown (as is the case in oatdump).\n\nChange-Id: I6519c7b35df77f978d011999354c864f4918e8ce\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": "bf393efe476801b7f27fe6aa47691e3305552e9e",
      "tree": "2bfd05752781815306c115e40aab2b5fef10dfd0",
      "parents": [
        "c404bfb072f9273beb13bf8e098e2a4aa108f18b",
        "b56812165dd3a2e6eb8b85c810943b3d7bd9bfc4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Mar 30 14:41:33 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Mar 30 14:41:33 2013 -0700"
      },
      "message": "Merge branch \u0027dalvik-dev\u0027 of https://googleplex-android.googlesource.com/a/platform/art into fixes-for-art-build-with-mr2\n\nChange-Id: Ie46d1f77f98b8a6f55f02b8614cb88b36b6a2d44\n"
    },
    {
      "commit": "75c233def8b89c0956e4401b805e6ebe7a48c1ac",
      "tree": "e0d43f868a094a50e266837062d7eee0a786dd25",
      "parents": [
        "22c0569fe6816086acdef90798622a6d6e209532",
        "74180cad94848107cf297d37e72437c5a6eecf1b"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 27 22:39:47 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Mar 27 22:39:47 2013 +0000"
      },
      "message": "Merge \"Remove code related to compiled invoke stubs.\" into dalvik-dev"
    },
    {
      "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": "22c0569fe6816086acdef90798622a6d6e209532",
      "tree": "a55140d6ae59979844def18ee3c122c193249bff",
      "parents": [
        "857fe960a02834c0d6b8792dcc0af8143995cb1f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 27 15:20:06 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 27 15:20:06 2013 -0700"
      },
      "message": "Disable close of compiler_library_ to workaround mclinker bug affecting gtest output\n\nChange-Id: I93b4a83861803a5e610c719bf3468f8967701ff0\n"
    },
    {
      "commit": "333a8ec11113e75552093cf8be6fbda2673a5be3",
      "tree": "2d299ce0cc2bd69a019ba092cd7a194ceb9ddccd",
      "parents": [
        "37d4879df243f7a2161b5416fad299ad1d495131"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 24 23:36:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 24 23:36:57 2013 -0700"
      },
      "message": "Update class_initializer_black_list for jb-mr2\n\nChange-Id: I7b5c604601958c80050d19fd337cfca494d94554\n"
    },
    {
      "commit": "f3e9855ee2000106b54fd479f7a46da2dc2ad079",
      "tree": "0fb43ed2fc7f7b66190ff8a9c581c241b262270a",
      "parents": [
        "2da15eda3ff7c4d7f5f35606cb8e5e596a1e0e74"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 20 15:49:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 20 18:28:32 2013 -0700"
      },
      "message": "Slow ART.\n\nRun ART with the interpreter for all but boot.oat code.\n\nChange-Id: I1654ecff6769a6c754f713be7580717d5ce07dc1\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": "bd86bccf1b47f1151842152ee52cf5d46d6b34ab",
      "tree": "c0c110b47435c6e8548f1b7126f9ea20da7fd934",
      "parents": [
        "5d021c7399fa8090910d5b47ed00465a4e0e7e0f"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Mar 10 20:26:16 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 11 15:47:02 2013 -0700"
      },
      "message": "Tracking rebase to jb-mr1-release\n\nChange-Id: Ic2ae1a27682cc4152003a68d59068b2c5c5eb09b\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": "a84395489098e4531619b1cffd1afc282b14510e",
      "tree": "f326a29ddb0c1b2f211484c6192f185a2698260e",
      "parents": [
        "addf1a8da2ece5ee9d6747a176f960ab7291f718"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Thu Feb 14 16:06:42 2013 -0800"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Tue Feb 19 15:13:46 2013 -0800"
      },
      "message": "Using histograms for timing statistics.\n\n  Histogram class and test cases added.\n  Modified make file to add test cases and class file.\n  Added a guard to avoid race condition in Cumulative logger that\n  was possible race between Addlogger and Dump() functions.\n\nChange-Id: I060a0d65648c7120963856624e7008c0aa681eb7\n"
    },
    {
      "commit": "00bc1dc4f81268d78d7dfeb298b85c56876425a9",
      "tree": "bae8027055563460692e87f18f31aac1b61d0ef0",
      "parents": [
        "12a2bdd245ea866b665d4800b493397ec412892a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Feb 01 15:56:27 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Feb 01 18:01:50 2013 -0800"
      },
      "message": "Remove separate libart-compiler-llvm\n\nChange-Id: I82303c6db3361e2842ff9d882f43f7d0830584b1\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": "5354ec568ace1e117d5a93dcb802a612356200ed",
      "tree": "eccfa0c72eeb2dba98b69ed26717769c8a802b23",
      "parents": [
        "7a22fa657b972e8323692368975bc5a7be1cc0f5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 23 14:27:27 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 23 14:27:27 2013 -0800"
      },
      "message": "Bump LLVM compile time warnings to make them less spammy.\n\nThis sets the warning to 1 second for portable vs 100 ms for quick. It\u0027s still\nplenty spammy.\n\nChange-Id: I4c4e272584dfad44865d83e64c998ad66895cf2f\n"
    },
    {
      "commit": "56edc432fa914f7ccfa87ce443e64f5ef475666d",
      "tree": "4e05c32f3524043614a2f368a6d49f7f3bc24616",
      "parents": [
        "d75afb99f0c8b8a27ad84e2e31010383ecf72120"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 18 16:51:51 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 22 08:47:33 2013 -0800"
      },
      "message": "Support for contention logging with ART futexes.\n\nRemove dangerous postfix operators on AtomicInteger. Clean up the atomic stack.\nFactor nanosleep into a useful shared utils.h routine.\n\nChange-Id: I417a73007c23fe247f410f41b2fa41a717c22139\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": "1aa246dec5abe212f699de1413a0c4a191ca364a",
      "tree": "ee9f5be423f56620f211525070273afc7a19c27d",
      "parents": [
        "07ed66b5ae659c452cbe1ab20c3dbf1d6f546461"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 09:29:36 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 09:29:36 2012 -0800"
      },
      "message": "Move casts.h and stl_util.h into base/.\n\nChange-Id: Idb3bfa5cec3d146e488031d91265737cde2b4cf4\n"
    },
    {
      "commit": "8c4bbb55d0d801e492d849ee636771c8b2840429",
      "tree": "03975d337cafc86da0c02f9ab45e14b7b3dba677",
      "parents": [
        "372a910ee64fb1b7118a00e4d01db12f284c42d0"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Nov 26 14:00:58 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Nov 26 14:00:58 2012 -0800"
      },
      "message": "Eliminate build of target-specific compiler .so\n\nNow that the Quick compiler backend supports all targets, stop\nbuilding target-specific versions.\n\nChange-Id: I5e519930dd3ed731c8e73005f654213af3ab5a3e\n"
    },
    {
      "commit": "02031b185b4653e6c72e21f7a51238b903f6d638",
      "tree": "0fae8dbc0a15d4ed379768bdc7adf1910b1d46af",
      "parents": [
        "90ad9639047a8acbd563247f8869f825cf80e576"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Nov 23 09:41:35 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Nov 25 13:22:45 2012 -0800"
      },
      "message": "Quick compiler: Single .so for all targets\n\nWith this CL, all targets can be built into a single .so (but\nwe\u0027re not yet doing so - the compiler driver needs to be reworked).\n\nA new Codgen class is introduced (see compiler/codegen/codegen.h),\nalong with target-specific sub-classes ArmCodegen, MipsCodegens and\nX86Codegen (see compiler/codegen/*/codegen_[Arm|Mips|X86].h).\n\nAdditional minor code, comment and format refactoring.  Some source\nfiles combined, temporary header files deleted and a few file\nrenames to better identify their function.\n\nNext up is combining the Quick and Portable .so files.\n\nNote: building all targets into libdvm-compiler.so increases its\nsize by 140K bytes.  I\u0027m inclined to not bother introducing conditional\ncompilation to limit code to the specific target - the added build and\ntesting complexity doesn\u0027t doesn\u0027t seem worth such a modest size savings.\n\nChange-Id: Id9c5b4502ad6b77cdb31f71d3126f51a4f2e9dfe\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": "02b6a78038f12c109f95eb31713cfc747f5512f1",
      "tree": "c36841561a47b2ce3cf15b00fdae822e5a6c5b64",
      "parents": [
        "bcc2926b9721f94c17ed98fae5264cc98f0e066f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 26 13:51:26 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 06 16:07:36 2012 -0800"
      },
      "message": "Parellel mark stack processing\n\nEnabled parallel mark stack processing by using a thread pool.\n\nOptimized object scanning by removing dependent loads for IsClass.\n\nPerformance:\nPrime: ~10% speedup of partial GC.\nNakasi: ~50% speedup of partial GC.\n\nChange-Id: I43256a068efc47cb52d93108458ea18d4e02fccc\n"
    },
    {
      "commit": "5f7fa551162b9e755fdaf054ffc89411a0e135e3",
      "tree": "636107724db94b5015b46a4a179a518c089039cf",
      "parents": [
        "64b6d145fa53b8dfb07a8fc2426af13f155d5a4d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 02 11:45:53 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 02 12:17:51 2012 -0700"
      },
      "message": "Force boot image strings into dex cache.\n\nFor const-string in the boot image, force the string into the dex-cache\nso that slow paths aren\u0027t necessary.\nIncreases boot.art from 7M to 9.8M but reduces boot.oat by ~3M. Code\ngenerated assuming no slow paths will be faster.\n\nChange-Id: I6c7be390adf7c09b5e6872d05f7d69ab6384c618\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": "b8404a7de94c109e3c17b4205b5f8aaae996eb33",
      "tree": "889f8a63bc3aa43bdf08bbaffcb8eb5cef8c0592",
      "parents": [
        "5833853b58f4e789f903688ef870489aacf0da2e"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Mon Oct 15 10:32:44 2012 -0700"
      },
      "committer": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Tue Oct 16 23:05:32 2012 -0700"
      },
      "message": "Workaround for portable path.\n\nAfter this commit, the portable path phone can boot.\nRun-test: 044-proxy still fails.\n\nChange-Id: I72368c799a47dd9b66a6672eae55bdaa8a5ac18c\n"
    },
    {
      "commit": "ed6d5ed3494648780b9e91422c90d6bc22c16b79",
      "tree": "39c1d32ab0ab9316e475e7dd3e07f7d4c8758510",
      "parents": [
        "215a926eae1630b0814069828332697f64ce063c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 14:51:46 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 12 14:51:46 2012 -0700"
      },
      "message": "Fix memory leak in compiler\n\nFixes jni internal test which is failing TOT on Nakasi.\n\nChange-Id: Ie1d8256bb8719554737c6602cd14c6527c020869\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": "c468e92d1e18305a5053c8a4a7c88cb297e525af",
      "tree": "537262677292cb258370b2d643d72785ea910e6c",
      "parents": [
        "ae4b0a1974183a7fb150f33d7596fbc623f0e26b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 10 18:11:33 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 10 18:11:33 2012 -0700"
      },
      "message": "Fix compiler logging for interface invocations.\n\nChange-Id: I67800c6d4e7987097d41dcf8ffd4dd5358b55087\n"
    },
    {
      "commit": "137e88f798857321f4007631fdf052d2830ec2c4",
      "tree": "7ed6a166328adbc5109fbb5b07a1cdc4e3bbb739",
      "parents": [
        "7469ebf3888b8037421cb6834f37f946646265ec"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 08 17:46:47 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 09 14:16:35 2012 -0700"
      },
      "message": "Fast path interface dispatch.\n\nInterface dispatch when the method we\u0027re dispatching against is known\ncurrently goes slow path. This change makes the load of the interface\nmethod either a load of a constant or from the resolve methods table. It\nalso makes the null check on the \"this\" pointer inline.\n\nChange-Id: I69571a062d3d693bee2dec6e46a456e0f74411cd\n"
    },
    {
      "commit": "7469ebf3888b8037421cb6834f37f946646265ec",
      "tree": "b1eb8cd8d1e3b6263c2de77616020de4b4b5019f",
      "parents": [
        "d8195f19840911a73b1491dfc8e7c18139753731"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 16:28:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 08 18:02:42 2012 -0700"
      },
      "message": "Refactor and remove copy mark bits.\n\nRefactor code GC realted code to be in a GC folder.\n\nRemove copy mark bits by using pointer changing instead.\n\nEnable concurrent sweeping of system weaks.\n\nFix non concurrent GC plan.\n\nChange-Id: I9c71478be27d21a75f8a4e6af6faabe896e5e263\n"
    },
    {
      "commit": "4445a7e3398a6143939168097a3aa275b734504d",
      "tree": "9eda34219b4a840125694a86ddba49077e15b944",
      "parents": [
        "50b35e2fd1a68cd1240e4a9d9f363e11764957d1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 17:19:13 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Oct 06 09:48:02 2012 -0700"
      },
      "message": "Class clean-up.\n\nMove Class code out of native and into Java.\nRemove ClassLinker::FindDexFile.\n\nChange-Id: Idd9c4563d2c32e76690675242ff491276ace9848\n"
    },
    {
      "commit": "50b35e2fd1a68cd1240e4a9d9f363e11764957d1",
      "tree": "4f3c58b7b293380f19e4f33357cb352e3330772e",
      "parents": [
        "8e9a1497f0d7da4d55f6e7ed8a7d96ba6db7222d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 10:09:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 11:07:39 2012 -0700"
      },
      "message": "Explicitly pass Thread::Current to MutexLock and Alloc.\n\nChange-Id: I8b75bc0617915465f102815b32306aa7760dcae4\n"
    },
    {
      "commit": "1f5393447b9f45be7918042d9ee7b521376de866",
      "tree": "1793cb0ae00b38a63f8cfd3a25b6cb0ee4edca16",
      "parents": [
        "870ea4772199f8d4cbd9a269f9093620ee50a59c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 21:09:42 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 09:27:04 2012 -0700"
      },
      "message": "Make PopSirt inlinable, pass self to SirtRef.\n\nChange-Id: Ieb91526b1cb1f8644ceb3c5b99649f658f43bbc1\n"
    },
    {
      "commit": "120f1c74a9768e958377b6c97897511b27ae58c8",
      "tree": "fa1f90d88ea34d8ef9eec729d27c7a70956a6a09",
      "parents": [
        "cabc60e71a65fa17e5a99fba94fc61523fbeb478"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 17:17:10 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 17:29:26 2012 -0700"
      },
      "message": "Fail threads attaching during runtime shutdown.\n\nIntroduce counters to indicate that threads are being born. Don\u0027t allow\nthread birth to occur during runtime shutdown.\n\nBug: 7000936\n\nChange-Id: Ib0d78f78c0ff126a4b5d3b5a6f1a2ff8f5061ae9\n"
    },
    {
      "commit": "de1ef40bd5f344dbb0bdb68f555f45868f502ae6",
      "tree": "5c8ed537c4adf1986b6ec4cca99ec7939146092f",
      "parents": [
        "3d1548debdaf8a1915fa432a4d267f7c0145654d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 25 00:18:19 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 25 00:18:19 2012 -0700"
      },
      "message": "Fix race where class state can go between verified/initializing.\n\nChange-Id: I99b425a3a8df937b8c349c22e32e84ad3b02231f\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": "9ffb039a548996bdc136ae0b2eb42b709d64f1cc",
      "tree": "5de92142b169253a4602a188ee37d97cd0c07081",
      "parents": [
        "18c24b6e05e7591069f1a2ac9c614b28fc0853ac"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 10 11:56:50 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 10 13:47:05 2012 -0700"
      },
      "message": "Don\u0027t retry verification at compile time.\n\nWe don\u0027t re-verify verified or erroneous classes at compile time. We\nalso need to not re-verify compile time verified classes or else the\nclass status can become misleading.\n\nThis should fix races seen in dalvik-dev builds since parallel\nverification was re-enabled.\n\nSome other code and logic clean up.\n\nChange-Id: Iff8987292064b825742c52e408d38c31eb25c526\n"
    },
    {
      "commit": "c8982582778cc1571b65519e1112441be59a5f83",
      "tree": "4010b35ae0ea4f21c73fd58b7162318f8868afa2",
      "parents": [
        "b724071b67f6449589994a93d4195dda49321a47"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 07 16:53:25 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 07 17:26:33 2012 -0700"
      },
      "message": "Re-enable parallel verification.\n\nCheck that when verifying and initializing a class the lock on the class\nis held.\nAdd logging for slow verification of a method.\n\nChange-Id: Id51f8a108b8d1801d61ee276fab5001ddc5c0044\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": "692be80cb2278ae585a776a163bc4b3ef60cae88",
      "tree": "7ddadb6753024b2b6b864a192e56c4a4047354ee",
      "parents": [
        "9a4f003f9a6da8e4c6ee279bd2a13aac37648183"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Aug 29 15:52:59 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Aug 31 14:46:26 2012 -0700"
      },
      "message": "Quick compiler: reuse llvm context \u0026 ir builder\n\nWith this CL, we avoid setting up an llvm context, module and intrinsic\ndefinitions for each method, and considerably speed up compilation time.\nThis does not represent a final form - we\u0027ll be reworking the compiler driver\nto support Quick \u0026 Portable via the command line, and this code will likely\nchange at that time.\n\nChange-Id: I19e298a011141c3bc35c4f28175b2b20653fd5e4\n"
    },
    {
      "commit": "c0228b8f02c05ed58bea58490e0d8bdcaf8c5bb8",
      "tree": "afbfe1592284d1978ae619e0f9b5aae642b48197",
      "parents": [
        "08f753d5859936f8d3524e9e4faa6cee353873ea"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 29 18:15:05 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 29 18:29:36 2012 -0700"
      },
      "message": "Fixes to verifier and slowpaths for cts invoke tests.\n\nInstructions are never rewritten, so that has been removed from the\nverifier. Also, the slowpath now checks for access errors when it\ncan\u0027t properly resolve a method.\n\nChange-Id: Ie38eacec8eb092ba23502471a0b27ca8ce38fe68\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": "7fbee0731b14b5bf392a4254f5cd84685ab517da",
      "tree": "b24cf6d9eed7935e3b26d63cf2292fd8c008005b",
      "parents": [
        "f3a26411e0e8b56b64d184d3e946e72f9c31e4c7"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 24 17:56:54 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 27 11:33:05 2012 -0700"
      },
      "message": "Preliminary changes to allow mips target to build.\n\nIt compiles, but it doesn\u0027t work yet.\n\nChange-Id: I2973a03bd956d8d398b9cfd1047e66fbf3ff439c\n"
    },
    {
      "commit": "ca7a5e484ac02927247cc77ad40f291bf6613ed5",
      "tree": "5dd6f55984fe8eb0dd2cf80bd3b2aff5f514afa2",
      "parents": [
        "b18e77abdb06a443744fbb6589e0932fa89f6073"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Aug 20 11:12:18 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Aug 23 15:22:25 2012 -0700"
      },
      "message": "Quick compiler: restore optimizations\n\nThis CL re-enables optizations on the Quick compile path.\nNotes:\n\n  o Although all optimization are enabled, several are now useless\n    because of llvm and bitcode constraints:\n      - Large method de-optimization (i.e. - skipping expensive dataflow\n        analysis) can\u0027t be done because we have to do the analysis to\n        produce a CFG that makes the bitcode verifier happy.\n      - Small method pattern matching isn\u0027t applicable w/ bitcode (though\n        I can probably do something similar in the Quick backend, but\n        looking for bitcode instead of dex patterns).\n      - Branch fusing doesn\u0027t translate to bitcode.\n      - Bitcode generation has de-optimized code layout.  We\u0027ll try to\n        repair the damage in a subsequent CL.\n\n  o There is an ugly workaround related to the way we\u0027re loading and\n    unloading the compiler .so containing llvm. [See comment in compiler.cc]\n\n  o We\u0027re still running single-threaded - need to add the magic to allow\n    multi-threaded use of llvm.\n\n  o With the CL, the phone boots, all target tests pass and all cts VM\n    tests pass (except those being dealt with via a verifier change).\n\n  o Compile time is pretty bad - when flashing it\u0027s best to follow\n    with an adb sync to avoid on-device compilation of system apps.\n\nChange-Id: I1c98f9e64aefbcbd24b957c71544c28450eb2023\n"
    },
    {
      "commit": "1b09b094a85e03f6ef5f687f58bb91c433273ba1",
      "tree": "6b039e520ee3b73e6ba5fb23954b9e01ecc68fc9",
      "parents": [
        "931c278aed62d7a97b87cf1bb9cfdd189e77eb24"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 15:35:52 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 15:35:52 2012 -0700"
      },
      "message": "Syntax clean up to make clang happy.\n\nChange-Id: I0984c395bbd1ee4b206eafd19915b6f68781dd16\n"
    },
    {
      "commit": "c05f85a61fde3de5cc7d6f53dc504e23f74185d0",
      "tree": "767041fc3c168b84784838a2e5fec487e5486236",
      "parents": [
        "0fb6bb558feebfcb9e0ddc1a58cbcb3f61da758d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 15:39:34 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 15:39:34 2012 -0700"
      },
      "message": "Fix compiler for ART_USE_LLVM_COMPILER.\n\nChange-Id: Id81d5fbf84a9ca4dcd4b5b9d022ddfc2bd1e4823\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"
    }
  ],
  "next": "b062fdd4cb097fbae69b4bcb479c34d83ecab8ca"
}
