)]}'
{
  "log": [
    {
      "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": "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": "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": "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": "5fa60c3db4208df407113b5a69d295a9c93d53b1",
      "tree": "b56704a7f97cb524c2cf269700fabcae25bf0f08",
      "parents": [
        "a966e18b402b0568fc556c38d7ef2e7e8df943a2"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 04 17:57:01 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 05 11:01:06 2013 -0700"
      },
      "message": "Remove use of compiled proxy stub from portable.\n\nARM implementation is tested, but x86 and MIPS are not.\n\nChange-Id: I497d650c55fe7fd4ea24d283c8d8ee99b1456610\n"
    },
    {
      "commit": "6474d190d5604898354ebf767f1944b6e3e9b445",
      "tree": "ac4be675c62fd8129fe85f740dcd2e3bfee424e2",
      "parents": [
        "52003fe9e2020e9d68cee1300fdb4a3f55be85a5"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 26 14:08:09 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 26 16:03:53 2013 -0700"
      },
      "message": "Remove use of compiled invoke stubs from portable.\n\nNow the invoke stubs can be safely removed. Tested and working on ARM,\nbasic testing done on x86/MIPS, but portable is currently broken for them\neven without the change.\n\nChange-Id: Ib73f2b7aa9d81f5f0e1e817d16b9bec464c5a5aa\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": "5d9173014c1ca09f7249a6b07629aa37778b5f8f",
      "tree": "80543dbe9af6795212373bb12532b638ff3b22f3",
      "parents": [
        "aed0716b9592bb3095cdfc4b111011f9ed74877d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 27 17:57:33 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 15 14:18:28 2013 -0700"
      },
      "message": "Changes to remove need for compiled invoke stubs for quick.\n\nARM, x86, and MIPS implementation complete, though MIPS is untested.\n\nThe ArgArray is changed to be a uint32_t array instead of a JValue array.\nAlso, a separate result for float/double was needed for x86/MIPS. The invoke\nstubs are currently still there, but only used for portable.\n\nChange-Id: I0647f8d5d420cea61370e662e85bdc0c13b5e378\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": "4c1c283a7410784e9cab309f868248690b788a9c",
      "tree": "629ce783004007641a9a5b0c9f8e269d0fd57a8f",
      "parents": [
        "89756f21c107d96e6d1bbc75811bd33078c8ceee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 18:30:13 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 18:38:16 2013 -0800"
      },
      "message": "Move compiler_llvm to art::llvm.\n\nAlso move the invoke stubs (soon to be removed) under compiler.\nStart moving LLVM code under compiler. Will move GBC expander to dex/portable\nonce it is disentangled from other builds (moving toward solving Bug: 8195425).\n\nChange-Id: I8829f9db6ade9ac8e32bd16198b90f83619769f1\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": "68243614c7a0aa21f0ad34bb31e825db4a20dffa",
      "tree": "472c3597a77ab108575b9297c7af4cc99a59d837",
      "parents": [
        "cb69306eefc1e6e42b3eaec8b479a268222b01b6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 22 17:16:07 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 22 17:16:07 2013 -0800"
      },
      "message": "Port the \"abstract methods are not implementations\" fix to art.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d42991\nChange-Id: I08e46361a9d7275bc870ee1ec38c40ae22ddf08a\n"
    },
    {
      "commit": "05f3057d6a4d23d712092ccd36a531590bff323b",
      "tree": "3f342c813afdb44a08466e379c060f917d073e5a",
      "parents": [
        "4aeb567fa8b1f5e17ef7beacf86fed505cc7335c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 20 12:13:11 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 20 12:15:09 2013 -0800"
      },
      "message": "Move monitor related object routines to object-inl.h\n\nAlso pass through readily available self Thread. Remove unused wait method.\nRename ObjectLock.Wait to document it doesn\u0027t honor interrupts.\n\nChange-Id: I991e5036997b3f60ee4fdf1a420beabab9a70c85\n"
    },
    {
      "commit": "8dbb708c7dc05c786329eb5c3fff3194ab6472ac",
      "tree": "1374ac8244bb13612e027de23516ecddfb2bba3c",
      "parents": [
        "cc07edb6bb274593c687188c99015c30dd73acae"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Fri Jan 25 20:31:17 2013 +0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Feb 06 19:14:06 2013 -0800"
      },
      "message": "Rename run-time functions to distinguish art_quick_[name] vs art_portable_[name].\n\nWe have two different sets of run-time functions:\n(1) the one used by quick compiler, and\n(2) the one used by portable compiler.\n\nPreviosuly, the one used by quick compiler is placed in ``extern\n\"C\"\u0027\u0027, and the one used by portable compiler is placed in ``namespace\nart\u0027\u0027.  That\u0027s why we can link them together in the past.  From the\npoint of view of the linker, they had different names:\n\n(1) Quick RT: art_set32_static_from_code\n(2) LLVM RT: _ZN3art27art_set32_static_from_codeEjPNS_14AbstractMethodEi\n\nPreviously for portable, ExtractCodeAndPrelink would have translated\nthe art_module.ll names referenced by portable code at compile time to\npoint to a runtime table populated with the mangled names.\n\nHowever, when using MCLinker linker to link the object images\ngenerated by the portable compiler, the linker will only see the\nunmangled names. So now the have to be unique between quick and\nportable, so we\u0027ve adopted the naming convention of:\n\n(1) Quick RT: art_quick_set32_static_from_code\n(2) LLVM RT: art_portable_set32_static_from_code\n\nChange-Id: Id5bb9f8f1574433ada6b1d6734f509cca26b98a5\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": "4c5b265e66bebf890b6f9e53cddeb512774b1613",
      "tree": "8278a6619b4dc4ec6009dcac01cf3fd4046108cb",
      "parents": [
        "2933d538b45cae733349b81a6a1d4a6f4dc9d3ec"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Dec 15 21:36:16 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Dec 15 22:36:34 2012 -0800"
      },
      "message": "Test and fixes for invoke-interface on java.lang.Object methods.\n\nBug: 7614818\n\nChange-Id: I704596cf3d36887e6d6d589cb3ec89e31d5b8901\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": "07ed66b5ae659c452cbe1ab20c3dbf1d6f546461",
      "tree": "2350745da33df6fcb9fb0c9059e55ea5d5ea8f67",
      "parents": [
        "76b6167407c2b6f5d40ad895b2793a6b037f54b2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:34:25 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:35:05 2012 -0800"
      },
      "message": "Move logging.h into base/logging.h.\n\nChange-Id: Id68f85f7c3a71b156cb40dec63f94d4fb827f279\n"
    },
    {
      "commit": "fe8723b27d5ef942ffa5a0a77c8169ffdfde8f4b",
      "tree": "68030b2f4cdd150d6644432c04681f0c79b9f82b",
      "parents": [
        "b7eb10825af77b60cdae0d58232075a0704071da",
        "761600567d73b23324ae0251e871c15d6849ffd8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 17:03:35 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Dec 12 17:03:36 2012 -0800"
      },
      "message": "Merge \"Switch over to the google3 unix_file File*.\" into dalvik-dev"
    },
    {
      "commit": "761600567d73b23324ae0251e871c15d6849ffd8",
      "tree": "4757cb01233394fa2e9c461a68fc37a35c12dabb",
      "parents": [
        "89c41e5f2fa10e7b97698b9714bd4883a73132f0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 16:31:20 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 16:31:20 2012 -0800"
      },
      "message": "Switch over to the google3 unix_file File*.\n\nI also moved macros.h to base/macros.h to ease google3 porting, at\nthe expense of a larger than necessary change. (I learned my lesson,\nthough, and didn\u0027t make the equivalent base/logging.h change.)\n\nI\u0027m not sure whether we want to keep the unix_file MappedFile given\nour existing MemMap, but it\u0027s easier to bring it over and then remove\nit (and possibly revert the removal) than to bring it over later.\n\nChange-Id: Id50a66faa5ab17b9bc936cc9043dbc26f791f0ca\n"
    },
    {
      "commit": "7331813aa84c82f003b58da7a9225622f8b0eeeb",
      "tree": "27d605e356312e8c067fff33eb98b362742edde1",
      "parents": [
        "1cac343f8621a81bcd3f52f8eee0f497a66d7408"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Dec 12 12:05:56 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Dec 12 12:05:56 2012 -0800"
      },
      "message": "Remove now unused RelocateExecutable\n\nChange-Id: Ief03e9154d038fa977fe5eb38b1b9aef6659231f\n"
    },
    {
      "commit": "1cac343f8621a81bcd3f52f8eee0f497a66d7408",
      "tree": "b2c2dc7326ae708e4d2aa185c6234df8341d3dcc",
      "parents": [
        "89c41e5f2fa10e7b97698b9714bd4883a73132f0"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Dec 12 10:56:22 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Dec 12 10:56:22 2012 -0800"
      },
      "message": "Remove now unused RelocationBehavior\n\nChange-Id: Ifdb98a63376014a698b53bc926fb1c5512dc2e57\n"
    },
    {
      "commit": "2bcb4a496b7aa00d996df3a070524f7568fb35a1",
      "tree": "8422ab8d65b7422008094b2eaadec0dad87b2df3",
      "parents": [
        "efc6369224b036a1fb77849f7ae65b3492c832c0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 08 10:39:18 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 16 14:01:34 2012 -0800"
      },
      "message": "Add \"kind\" argument to Get/SetVReg.\n\nIn order to determine where a register is promoted its necessary to know\nthe kind of use of the register.\nExtend notion of precise-ness to numeric verifier register types.\nDump verifier output in oatdump.\nDump vregs with their location or constant value.\nIntroduce indenting ostream utility.\n\nChange-Id: Ia3d29497877976bc24465484743bca08236e1768\n"
    },
    {
      "commit": "725a957985171d712d5c048cc3d00ff14968784b",
      "tree": "3bd4b161268ecd477aa471665316fb27a3dda145",
      "parents": [
        "35883cc623fdf475a4ead1dafcba9e9becc1ed11"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 13 18:20:12 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 14 11:42:33 2012 -0800"
      },
      "message": "Pulled out instrumentation into its own class separate from trace.\n\nThis is in preparation for Ian\u0027s debugger changes. The instrumentation\nstill needs support for debugging, which I\u0027ll add later.\n\nChange-Id: I29ce0af1ff2eaec8f6d2f54963263381363ebf72\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": "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": "e35517ad40e0713df8420aeb5d3540f146a59f62",
      "tree": "b9f5a153774d89c73545365d54cc7e4128ce3d76",
      "parents": [
        "4696b5b20be2f51f4ada5f3771a205d90bff351d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 30 18:49:55 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 31 16:38:12 2012 -0700"
      },
      "message": "Remove disable card marks, fix SetPatchLocation.\n\nShould slightly improve performance. Added a no thread suspension allowed in patch oat code and\nmethods.\n\nAdded a new function to class linker, GetOatCodeFor which takes in a method reference instead of\npointer.\n\nThis fixes the issue where pruned methods were getting re-loaded during code and method patching.\n\nChange-Id: I676bb88cb021b6d2e0db00adbcf1f2f04f82b72a\n"
    },
    {
      "commit": "2fa6b2e2fc3d2a2fc27808ce518dc76b80ce369a",
      "tree": "daba5f5e64409452e31ae42e3b1b6b6491ccb007",
      "parents": [
        "6ed960d260d0ec3cbbef455c646ccd47f4e78119"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 17 00:10:17 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 26 16:12:59 2012 -0700"
      },
      "message": "Interpreter.\n\nThe opcodes filled-new-array and packed-switch aren\u0027t implemented but\nare trivial given that they are variants of implemented opcodes.\nRefactor Field::Get routines to take the declaring class in the case of\nstatic field accesses. This avoids a check on every use of a field.\nRefactor arg array builder to be shared by JNI invokes and invocations\ninto the interpreter.\nFix benign bug in const decoding in the verifier.\n\nChange-Id: I8dee6c1f4b7f033e6c003422c56e9471cfaccda8\n"
    },
    {
      "commit": "6ffd0967027c092a62d7100ca42ceded369c8ca1",
      "tree": "95a87e608aab1934058204c0ae7a3a85a8e8601f",
      "parents": [
        "9281f004db3f194930ef34d31e5d80c98341f38f"
      ],
      "author": {
        "name": "mikaelpeltier",
        "email": "mikaelpeltier@google.com",
        "time": "Thu Oct 25 15:37:45 2012 +0200"
      },
      "committer": {
        "name": "mikaelpeltier",
        "email": "mikaelpeltier@google.com",
        "time": "Fri Oct 26 10:40:19 2012 +0200"
      },
      "message": "Add Jack modifier.\n\nBug: 7419545\nChange-Id: I58f40e11f3b3256ca7f7922f12b7bdeef724930f\n"
    },
    {
      "commit": "28db0129e5d7ef642cf8845c86c0e11832817085",
      "tree": "3f1ca5abeb2e622e193573165bf20a626447337e",
      "parents": [
        "a85b8376740641f13dc078aea6be94d15a800803"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 18 16:20:41 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 18 22:26:03 2012 -0700"
      },
      "message": "Add oat file dependency on boot.oat load location\n\nChange-Id: I89742e361675bd4e5177e3af213bcc826ddd60de\n"
    },
    {
      "commit": "a85b8376740641f13dc078aea6be94d15a800803",
      "tree": "b6eba1210de1e98d66c0011c599997322f7714b8",
      "parents": [
        "2e92fd62b8b1e3a14be4642d4e77a022d863a94e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 18 17:00:32 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 18 18:13:32 2012 -0700"
      },
      "message": "Update image oat checksum when patching\n\nChange-Id: I766d2745bc817a5cb3a36d62bc733bab43a31fe0\n"
    },
    {
      "commit": "88f365433dd8412a80258847e0b0359b125c06c2",
      "tree": "9a646f251ca1f64e1718bc47c2f65393db22afaf",
      "parents": [
        "dc1cd1037bf1b81c55b842b230fcc5f0d1e73003"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 16 23:24:21 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 17 10:51:25 2012 -0700"
      },
      "message": "Add support for Value Format VALUE_TYPE in the encoded_array_item used for initial values of static field references from a class_def_item\n\nBug: 7356558\nChange-Id: I2bef6de9b41605f17518bbcc72907bf5a92c6c26\n"
    },
    {
      "commit": "9ebae1f30b84dfd8dab4144f80eebec4f8fc8851",
      "tree": "379f7606cf7c1b5bbeb41caccc4cb681fc1ef2b4",
      "parents": [
        "30de32dec8dba21f7fec117b779c2b4e6bb4e4e6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 17:38:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 16 10:05:04 2012 -0700"
      },
      "message": "Concurrent class linker and intern table root marking\n\nWe now mark the class linker and intern table roots concurrently\n(with mutators unpaused), only re-marking these roots in the second pause if\nthey get dirtied.\n\nReduces root marking time by ~1ms for each pause.\n\nChange-Id: I833fc557bac9a2930868db715587318293fa4655\n"
    },
    {
      "commit": "9bc81918a2c663339f7739d9cf968f354506e3a7",
      "tree": "372dc5beb2969c5467d1553cee583130085e442f",
      "parents": [
        "3cc3981018b0eb2c4f1b05ed620d8aad36098e7e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 21:43:36 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 22:56:17 2012 -0700"
      },
      "message": "Flatten interface entries into the iftable.\n\nAvoid an indirection when scanning the iftable by inlining the interface\nentry into the iftable.\nCopy the iftable for marker interfaces from parents to their children\n(for example for exceptions).\nDon\u0027t allocate method arrays for 0 element interface method tables.\n\nChange-Id: I8402960d4ddbe4b1ffd335ed4ce4b4825210fd0d\n"
    },
    {
      "commit": "155dfe958412b71ab2adcc21611217c22277ec69",
      "tree": "91db1d5a368c8b9bc26a432064a272ce2a788051",
      "parents": [
        "bac4334bb222e24fb3a080b69de0262a39e397c2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 09 14:24:49 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 11 18:18:21 2012 -0700"
      },
      "message": "More Gc statistics and logging\n\nAdded a few metrics to Gc performance measurements:\nMean GC throughput, total time spent in Gc, total time spent in allocation code, mean time per allocation.\n\nSlightly optimized object allocation.\n\nChange-Id: Ie68153a7100affafc4a01dab34b341077e754867\n"
    },
    {
      "commit": "52813c93d1319964cea01ff6714a01880fd1c501",
      "tree": "1770b66312ad5a8a6d33e7536e585a259317591f",
      "parents": [
        "1aae273f8827bcbfff6b00c5babd77a111852272"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 11:50:38 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 13:51:31 2012 -0700"
      },
      "message": "Fix typo.\n\nChange-Id: Id7ac8c14aa201b018c5dc3c77ad2089449d03ae4\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": "d8195f19840911a73b1491dfc8e7c18139753731",
      "tree": "0df5a92659dc0472f5368695a2e33ac37c149666",
      "parents": [
        "59e5384d894836ace0b8ea22ff12d26ffb3026d4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 05 12:21:28 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 08 10:53:25 2012 -0700"
      },
      "message": "Reduce mark stack / allocation stack / live stack address space usage.\n\nWe now have upper bounds on the stack sizes so that we don\u0027t run out of\nvirtual addresses with large heaps.\n\nRename mark stack to atomic stack, which now takes any data type.\n\nAdded behaviour to force GC when the allocation stack becomes too full.\n\nAdded a new special map for reserving the oat file address range.\n\nChange-Id: I5169dd98b5f5072ac67637798da50cb8fc68af2b\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": "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": "e0f0cb3d855cb5e926452b5e1ec8457adc4e454e",
      "tree": "20d9b12d5c27761905c3e8aed007d53734b55556",
      "parents": [
        "23435d0df17e19fe312a08ff151464d4b9f83e81"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 28 11:26:00 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 14:05:08 2012 -0700"
      },
      "message": "Large object space\n\nThe large object space helps prevent fragmentation by putting large objects in mem maps insead of the alloc space.\n\nInstead of mark and live bitmaps it uses mark and live sets.\n\nChange-Id: Iada5db70b88a1572007d8af921fa353681a55dc7\n"
    },
    {
      "commit": "23435d0df17e19fe312a08ff151464d4b9f83e81",
      "tree": "3d0e4ad4d6f0f0852fa1736eaa0077399622263e",
      "parents": [
        "5a6220c9068f8401394664b56a725441dba17948"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 24 11:23:12 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 24 11:48:14 2012 -0700"
      },
      "message": "Assignability checks for SetFieldObject.\n\nAdds check to SetFieldObject that is enabled with VERIFY_OBJECT_ENABLED.\nThe check verifies that the object being set to the field is assignable\nto that field.\n\nFix bug that iftable was typed to be Object[][] but being assigned a\nObject[].\n\nChange-Id: I3d3744347f2dd142ca90db321ed876eaebfe7f7f\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": "88c95be62362537b46393e0c7e69d48f22e14ef3",
      "tree": "0853ea65c859d3c78b3a58fc90742c32634c34d4",
      "parents": [
        "5e9abdc62d2ffb685378b40d965caa84891a5464"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 11 14:06:41 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 11 14:14:34 2012 -0700"
      },
      "message": "Add missing write barriers to Object::Clone, LinkInterfaceMethods\n\nThese functions were using memcpy without a write barrier, causing the sticky mark bits GC to occasionally corrupt the heap.\n\nAdded missing write barriers.\n\nChange-Id: Ie1c483904e095bda467e6c000f2659a3332116ae\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": "ec0142313a470edecf52b4f034433404b7264358",
      "tree": "594b564e4768a12f9dec70074b420c9b6d2cab3f",
      "parents": [
        "b726dcb581bf72da46527378ccb6889020f0e6e9"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 05 10:42:25 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 05 10:42:25 2012 -0700"
      },
      "message": "Classes that hard fail compile-time verification are now marked error.\n\nThey were being marked \"not ready\" before, which would still cause the\nverifier to check them at runtime, even though they were never compiled.\n\nChange-Id: Ic29cc4239cb163e5093b3fb22afa6970205caea4\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": "87e552db94588455c081efd87dbde0cd96d02942",
      "tree": "02fc47be772d65e3ba4f2453f5d330b7dd111d1a",
      "parents": [
        "c747cffa950b8398cb8844d47e2253214c855750"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 31 15:54:48 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 01 00:23:33 2012 -0700"
      },
      "message": "Make ICCE logic common, refactor throws.\n\nThere were 2 sets of ICCE logic in ClassLinker::ResolveMethod and\nMethod::CheckIncompatibleClassChange, merged into just 1 piece of logic\nin Method::CheckIncompatibleClassChange.\n\nMove Throw... routines into own file and make adding the dex location to\nthe detail message more thorough.\n\nChange-Id: I953dbfa3fed3767f35799b2f82b16637c437dbbe\n"
    },
    {
      "commit": "da6a90e179b29aa45a383cbc0bbe7f907417c408",
      "tree": "4ccda67f6274f0febdc1879c852b18fedb2b8e4c",
      "parents": [
        "e4f0b2ab4abd8e942a099e9b9b4682fbdd9eb21c"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 18:49:03 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 18:49:03 2012 -0700"
      },
      "message": "Prevent miranda methods from being thrown away during resolution.\n\nThis fixes the maps issue.\n\nChange-Id: I70ec279c19de5ecfa04e20eaed90fab019953d9c\n"
    },
    {
      "commit": "e4f0b2ab4abd8e942a099e9b9b4682fbdd9eb21c",
      "tree": "1f7f1365914264de80ac992916d1bcea5c1e709e",
      "parents": [
        "2fc1427ee9c534ed44d72184ad6d74ea65f3d5b3"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 11:18:57 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 11:18:57 2012 -0700"
      },
      "message": "Allow soft failures at runtime and fix null referrer for ICCE and NSME.\n\nChange-Id: I814369f4e41cebf37007cb514a8bf19cbaf17e94\n"
    },
    {
      "commit": "2fc1427ee9c534ed44d72184ad6d74ea65f3d5b3",
      "tree": "7759b3b2f7e25ac66a2d05a48ac9ff918b95eb80",
      "parents": [
        "b9a287cc1c1f4f303acc186b7c97756f326d3537"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 30 10:56:57 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 30 10:56:57 2012 -0700"
      },
      "message": "Fix location of ICCEs and NoSuchMethodErrors.\n\nAlso add detail as to why verifier believes an ICCE.\n\nChange-Id: Ie16ea2847fb94e157969c560a780c9345b1e7441\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": "357e9be24c17a6bc2ae9fb53f25c73503116101d",
      "tree": "a170276eabf319d107242f928a68463fe0b5ebfb",
      "parents": [
        "66aee5cd571cf4739d2735769304202ea5051fb8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 01 11:00:14 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 17 10:06:50 2012 -0700"
      },
      "message": "Sticky mark bits \"generational\" GC\n\nSticky mark bits GC. Sticky mark bits implemented using allocation stack which enables us to use the previous GC live bitmap as the mark bitmap.\n\nRemoved heap_end_ since checking versus it caused more overhead than it saved.\n\nRemoved check for impossible allocations at the start of AllocObject since these allocations will just fall through and fail anyways.\nThese allocations do not happen often enough for it to be worth checking for.\n\nA bunch of constant optimization performance improvements.\n\nPre locking regression benchmark improvements:\nDeltablue: ~0.3 sec runtime.\nCaffeineMark: ~300 total score due to improved string score.\n\nChange-Id: I15016f1ae7fdf76fc3aadb5774b527bf802d9701\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": "529781dad1d4bc5685fd9ebbf04c1369246c2403",
      "tree": "1313f6af94e592fc3c0cc7bf7c043f589329d996",
      "parents": [
        "ca7fd901bb6b5b014e8b2f3376a06c06a4c7ab87"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 23 17:24:29 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 24 10:01:45 2012 -0700"
      },
      "message": "Avoid cases of deriving information from unresolved types giving conflict.\n\nPreviously non-trivial merges of unresolved types resulted in conflict\n(bottom), introduce a new type to represent this case. Similarly\nimplement a type for unresolved super classes.\n\nChange-Id: Ib84ba082cb9409ad3acaa49dafbc6b1dd1c7772d\n"
    },
    {
      "commit": "3971737ece7c2351c7ae91f488ee73628c75b2e6",
      "tree": "77b18d613f377e8aeef2a3c46453a0a93327f604",
      "parents": [
        "7c7679cd76e76b44c75a3e32a8727148d3ab9ada"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 13 16:21:23 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 13 16:21:23 2012 -0700"
      },
      "message": "Warn if we load a class that would previously have overridden a package-private method.\n\nChange-Id: I5f21d9212ce91df1ff6d2eedfc68cb271f6e697c\n"
    },
    {
      "commit": "b062fdd4cb097fbae69b4bcb479c34d83ecab8ca",
      "tree": "215ea8fb42828a0f753ac5bd424ca098ce748342",
      "parents": [
        "ca314c6a1be1b4cc11f4d284da90af7dc8a4ce25"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jul 03 09:51:48 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 11 17:17:46 2012 -0700"
      },
      "message": "Each space has its own bitmap(s)\n\nEach alloc space now has One mark+live bitmap. Each image space has only one live bitmap.\n\nChange-Id: I2e919d1bd7d9f4d35d0e95ed83a58df6f754df6e\n"
    },
    {
      "commit": "26c5e1503425cae17f5b16fdf06a2d62ec03a59b",
      "tree": "91e3e62df1b13958b8b73a2ea871ccb877f8162a",
      "parents": [
        "5a8e3d5e87aed128837fb84874d18a1f68e63397"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 11 11:47:22 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 11 11:47:22 2012 -0700"
      },
      "message": "Port \"Avoid method overriding if its super method is inaccessible\" to art.\n\nThis is an art equivalent of https://android-review.googlesource.com/#/c/32480/3.\n\nChange-Id: Ifc2cd21e7e92f596bced3eabae4d16f16f4095ef\n"
    },
    {
      "commit": "afe25515c358617321d69ab4f25003e3d905d613",
      "tree": "c30ec73f0ae2f0b233f88b6eaf1c0b6bfd1df2dd",
      "parents": [
        "85545cd13c16c5074cca987f65247d7abddb39f7"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 27 17:02:58 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 27 17:16:42 2012 -0700"
      },
      "message": "Update DexFile_isDexOptNeeded to handle system.img oat files with classes.dex\n\nChange-Id: I564bacec777b745a9c911a8fe8dd98437b1ddd2d\n"
    },
    {
      "commit": "0b130de5e6d8fda5f621f87223fa8d0117e6e5a2",
      "tree": "d393c32aad0b59e366c1e3a471a703fdbf3f19b3",
      "parents": [
        "7c9c184b22707c9f3ed7f7ace94fe9f072129e94"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Tue Jun 19 17:29:57 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 27 04:03:23 2012 -0700"
      },
      "message": "Code cleanup. Full sharpening.\n\nChange-Id: I6e8238f64a6a8fe15f9ff018ab88a9a615282cbf\n"
    },
    {
      "commit": "7c9c184b22707c9f3ed7f7ace94fe9f072129e94",
      "tree": "3794f662f2314d62cada845506569b03ae574b4f",
      "parents": [
        "a3507275dc2959e437f7421b2051623c9dc8b4fa"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Jun 12 19:32:56 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 27 03:50:39 2012 -0700"
      },
      "message": "Remove fix stub hack.\n\nChange-Id: I6c870f40b3283826b0bd1149a08a4577d6e89e2d\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": "46b8a62388f6ac5209371515e48915c32e6d62b9",
      "tree": "4df6cb385addbc71bea7cbf8ce55bb27febb7da6",
      "parents": [
        "4e181288cc6bd67baa1024e2fdb7201dde3d100e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jun 19 23:13:22 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 25 10:32:02 2012 -0700"
      },
      "message": "Compare checksum in oat files adjacent to jar/apk to support oat in system image\n\nChange-Id: I45554c9fa5c369a0f47830623b6dbe7f9c691a08\n"
    },
    {
      "commit": "748474146da0c6484fa3dca0a700f612d47550c3",
      "tree": "58837d0fa82d4099eb4b82b2fd3d2bbf4294e4aa",
      "parents": [
        "92e3134cd84c134f167175288671a1e6838c908f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 20 18:10:21 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 09:14:27 2012 -0700"
      },
      "message": "Fix a bunch of lint.\n\nThere are still about 1800 lint warnings, so don\u0027t get too excited...\n\nChange-Id: I2394bd6e750b94060231378b3a7a88b87f70c757\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": "5c599943f8c347acd84c4d9fda56a9df70649b78",
      "tree": "b7ecfa967f8108338c6d9d43d3b32ed9f8b07954",
      "parents": [
        "f69ea07d1c83a73fd69d999d5b9633ea95aabc38"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 13 16:45:05 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 13 16:45:05 2012 -0700"
      },
      "message": "Turn parallel compilation back on.\n\nApparently we don\u0027t wind back class statuses any more.\n\nChange-Id: Ice0c743114e62aa805d170aa62f317007b9dbdb4\n"
    },
    {
      "commit": "27cac650c28bb6887b1be85fff3857c77211b294",
      "tree": "2af9f4797abcc4a85e9d3c48dca5297cf8765aea",
      "parents": [
        "a168c83a1d247094e9efb1244b0f73a5f1e1ed97"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jun 12 17:34:50 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jun 12 17:34:50 2012 -0700"
      },
      "message": "Don\u0027t register oat files with bad checksums.\n\nThis causes the code to use stale oat files when a jar file is\noverwritten.\n\nChange-Id: I66f992a35ad3eb7c3414c05f11623f5ad7499b45\n"
    },
    {
      "commit": "d24e264ff85ad8c6f142ac6d33055fdc1881fa2f",
      "tree": "37e1ba1dd328828205e5c9340ae64eddd915a154",
      "parents": [
        "d06dfe7b09de95c035fa736d2b62aa9fee2347b5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 21:21:43 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 22:57:13 2012 -0700"
      },
      "message": "Fix recursive static field lookup.\n\nChange-Id: I892696e6e98be9f31a7900d10130cae204f9127a\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": "a9b3bf4b42d80cfcc27b6f8da7e28ced04a1619b",
      "tree": "cca2c257e6fdc90e520eddc5a43d7f113ead8cfc",
      "parents": [
        "ebe2e0f2e5145ef8433c1459b9cd60ecd853ee76"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jun 06 17:18:39 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jun 06 17:18:39 2012 -0700"
      },
      "message": "More fixes to make new Class status work properly.\n\nInitializeClass should only check for an exception from VerifyClass if\nthe class is erroneous. Also, the status ordering was changed so that\nkStatusRetryVerificationAtRuntime is after kStatusVerifying.\n\nChange-Id: Ibbfb1696dfee88cb8fcef5673f7e353f30a8fe5a\n"
    },
    {
      "commit": "ebe2e0f2e5145ef8433c1459b9cd60ecd853ee76",
      "tree": "b8195b5a984e55e40b3eac3639aeac8d5f0e1cda",
      "parents": [
        "f1e6b7c8cd78c02f4eb36574f0e417c4edc2b91e"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jun 06 15:19:40 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jun 06 15:19:40 2012 -0700"
      },
      "message": "Fix InitializeClass to rerun verification for retry status.\n\nChange-Id: If25b954a2bb3f352169afeb1b231fbb854e6fef0\n"
    },
    {
      "commit": "f1e6b7c8cd78c02f4eb36574f0e417c4edc2b91e",
      "tree": "3ddb49fd0230cdef765ff7fb95f049a990cce018",
      "parents": [
        "662618fa6725631353a115993feaf2a9897b094a"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jun 05 18:33:30 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jun 06 13:21:14 2012 -0700"
      },
      "message": "Added new state and Soft/Hard error return to verifier for bad supers.\n\nMarket was failing because a superclass failed with a soft error, and\nthen its subclass would be rejected with a hard error. New states and\nreturn values were added, and now ClassLinker::VerifyClass allows a\nsuperclass to have either kStatusVerified or\nkStatusRetryVerificationAtRuntime as valid states.\n\nChange-Id: I72f23d25fa3bdcfd08f3113b091303535a327c14\n"
    },
    {
      "commit": "262e5ffa1d4b23f23af3dea762a71a0af4bfd4a9",
      "tree": "f8378de518cdf8a6067d74aaa5808624d8c7709f",
      "parents": [
        "2792fade8cb6554f81008b7635cec6ed0e914b3c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 01 17:35:38 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 05 17:15:28 2012 -0700"
      },
      "message": "Enable card cleaning\n\nCards which do not map to image spaces are now cleared at the start of GC. Cards which map to image spaces are now processed when we go through all the dirty cards after recursive mark. Dirty cards are handled based on if they are either image space cards or cards invalidated by mutators during CMS.\n\nChange-Id: I6c2dc177ebd3f7dc7bbbbd19ae67221371851ebe\n"
    },
    {
      "commit": "eead4ac17ec9d5e750269a7d36bf6c36a6fd60c6",
      "tree": "911602ed79cde974cba5b6a18d57fc27987436ef",
      "parents": [
        "de479be99328d2113bf483e082c9ecf235a34d69"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Jun 03 07:15:25 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Jun 03 09:12:30 2012 -0700"
      },
      "message": "Implement proxy stub for compiler_llvm.\n\nChange-Id: Id8ba59c62795d885a18b3cc634e7ef370a2d2f97\n"
    },
    {
      "commit": "a4f94740f9d66b21f4bcd3a225c434aa29cfa323",
      "tree": "88e3834418ac3e12d2c270fed3a370bda2643d0b",
      "parents": [
        "214d307f3d5bbfe6254ae9e96d504d3e665baa2c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 16:28:38 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 16:28:38 2012 -0700"
      },
      "message": "Finish cleanup of class/field/method caching.\n\nChange-Id: I289ae724cbd98487429275837d23b7b2d7096156\n"
    },
    {
      "commit": "eac766769e3114a078c188ea26776a81f0edb3cf",
      "tree": "4b9b8dfc89725173431817baba4455c013e40577",
      "parents": [
        "3f9ace8d90bfc48c8d7bf35af66de8ce8238de7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 21:56:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 25 12:04:43 2012 -0700"
      },
      "message": "DO NOT MERGE Fix all unsafe caching to be like libcore.\n\nThis way, if a runtime is restarted within a process, we re-initialize all\nthe cached data.\n\nConflicts:\n\n\tsrc/native/java_lang_Runtime.cc -- nativeExit lost an argument in dalvik-dev\n\n(cherry picked from commit 7756d5473fa27ce7e6ac7c31770eef7030431da4)\n\nChange-Id: I6184fc20c2a9ec16c4b053584a4d1c3b64452d0f\n"
    },
    {
      "commit": "6cd40e5cc59259a0b7636eb5532c76de9b8a7286",
      "tree": "663d3f76be9220de8ad0704e8383ac1d1caa065f",
      "parents": [
        "1ecce9487a1b3aac6b656f5704cf86a961ab0481"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 03 14:15:11 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 03 15:27:04 2012 -0700"
      },
      "message": "Ensure that cached oat and image files are world readable like odex files\n\n(cherry picked from commit 389ca5b86e1411c28b785408a7a4b8ac7837355c)\n\nChange-Id: I619601e9549764a11b78d782725a1dab5c80afb3\n"
    },
    {
      "commit": "05fe3b630e9ae50837ae88ba09581bd281aa184a",
      "tree": "22064a582abbd4aa491c0b43a499cd0470b74ec9",
      "parents": [
        "706e9b62e1bac8a774466937ab32fcd655f5b723"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sat Apr 21 00:28:54 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Apr 21 15:11:36 2012 -0700"
      },
      "message": "Implement X86 trampoline for llvm compiler.\n\nChange-Id: I0c6ec3a59eaebd5e28ca8e95f2711a31b79b9279\n"
    },
    {
      "commit": "7b9d996e4cd7d154bb1a244d67139aff0c363cf2",
      "tree": "a9dabe8f910b4b8bf29c2f4285d860995e25f58d",
      "parents": [
        "934100aea5a0f498c17e2c4a1fd0193af1557b42"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 20 18:48:18 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 20 18:57:19 2012 -0700"
      },
      "message": "Tidy up some C-isms.\n\nChange-Id: I53b457cab9067369320457549071fc3e4c23c81b\n"
    },
    {
      "commit": "776ac1fa61237db645adb4370a4aab888530caf4",
      "tree": "fbdfe1dec5f1c890d479f700f2b11549d5574119",
      "parents": [
        "42f302c1da4cf1abf935d7aee29ece8d90441e0c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 13 23:36:36 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Apr 14 13:38:06 2012 -0700"
      },
      "message": "Separate out more of LLVM build. Move verifier.\n\nMove the verifier to its own directory and break out major components.\nAvoid compiling unused files as part of the LLVM build, increase the use\nof unimplemented for LLVM.\n\nChange-Id: Icd3b1708363fb70ae99417d06ef8669d60446533\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": "f440405a50c0acbd374c053b9f2d3cc3d5c7d5c0",
      "tree": "d00dd62fab9893c0ad6e4a5b3ba65d865f6f4aa8",
      "parents": [
        "183cf26458244b649b164536b6839cc5beef1bed"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Wed Apr 11 08:53:03 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Apr 11 11:24:23 2012 -0700"
      },
      "message": "Fix 004-annotation because we missed the linking.\n\nChange-Id: Ic74d58b29b5a78aa31fb60b2c62912369af1d3aa\n"
    },
    {
      "commit": "5bb8601175bbb9cd761c715f4ba04f84d65e913b",
      "tree": "441c62e467b6c7a355d9ad65ea88a923abbb409b",
      "parents": [
        "933abf8ce64e522b1c45b191b796bf2208a760d9"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Wed Apr 11 05:57:28 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Apr 11 11:01:21 2012 -0700"
      },
      "message": "Fix 044-proxy. Implement proxy for now, working on x86 and ARM.\n\nAlready added a TODO to do the assembly code for x86 and ARM for proxy.\nUse LLVM .ll for multi-architecture now.\n\nChange-Id: Ibdeeee113dcf284592e9d7769d3044438cb1e453\n"
    },
    {
      "commit": "ccffd9ec04a678b45a6447f80117941abb96c234",
      "tree": "b4d064a68d941663d31c4389a57b4a7dac8be779",
      "parents": [
        "3f9137d85b3c2c0800fb26e3415ace1a6b7cc4de"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 08 14:37:03 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 10 04:50:42 2012 -0700"
      },
      "message": "Fix link bug in LLVM.\n\nPassing 4 run tests.\n\nChange-Id: I01e0fc37a1662174891a88b4304a528378fe65fe\n"
    },
    {
      "commit": "82914b6164fd0109531391975389e4f0ff6832c8",
      "tree": "822f3769c8aa27713dccaacfafbabd9b049ac655",
      "parents": [
        "34e069606d6f1698cd3c33b39e72b79ae27e1c7b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 15:56:29 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 15:56:29 2012 -0700"
      },
      "message": "Use PrintableString in oatdump.\n\nAnd enhance PrintableString to assume modified UTF-8, which is all we ever give\nit. \\u0000 is more readable than \\xc0\\x80 to most people.\n\nChange-Id: I45bd8d65694eda0ef4ef03abc40f41a76f07a671\n"
    },
    {
      "commit": "34e069606d6f1698cd3c33b39e72b79ae27e1c7b",
      "tree": "0feb7e9bde6cfe01c0df3ef2d8de3210570f7ce2",
      "parents": [
        "e62934d85fbc2d935afdad57eeade39ecbd7440a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 09 13:55:55 2012 -0700"
      },
      "message": "Remove the useless \"suspend count already zero\" message for new threads.\n\nWe can actually detect the expected case of this warning ourselves, and\nnot emit it. Then we can upgrade the WARNING to a FATAL.\n\nI also tripped over the fact that the operator\u003c\u003c for Thread::State was out\nof date, so I\u0027ve moved the Thread enums up to namespace scope so the script\ncan automatically generate correct operator\u003c\u003c implementations for us. (All\nthe high-numbered thread states have been off by one for a couple of weeks.)\n\nChange-Id: I5de573d33d641e5a3cba87b370e9620c8c66e633\n"
    },
    {
      "commit": "8532191c4fc8e005f7d432fec40fd9f2936275c6",
      "tree": "2173082a31163332c22b262331fe98470583cd12",
      "parents": [
        "b12c3017e619747ab26ba56d935401a7e45b59cd"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 01 15:24:56 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Apr 07 10:33:12 2012 -0700"
      },
      "message": "Late method resolution.\n\nChange-Id: Ic35348022391c3c11a1d4984b9add7b6ef53aa4c\n"
    },
    {
      "commit": "0c717dd1c56bd29cf860d0feda8e629dab2cadb3",
      "tree": "a587807a9821ba6986e56fc9d3fed68540e41268",
      "parents": [
        "ccb7bf1271560783adccddb2ab74c53d0efd3fd1"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Mar 28 18:31:07 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Fri Apr 06 17:03:33 2012 -0700"
      },
      "message": "Add ELF loader to OatFile.\n\nChange-Id: I062c3cc78ff9a35d0efcbc9451e7e7ccb055667b\n"
    },
    {
      "commit": "9c750f9b6283f62b3e6a93c0c6b2838abde5000e",
      "tree": "ba9d030321e0528a18159e74e23a6b65218b2555",
      "parents": [
        "c8eeb9b283d5053c1b1092363320646dc7c0deab"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 05 12:07:59 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 05 12:07:59 2012 -0700"
      },
      "message": "Ensure we don\u0027t AddLocalReference a bogus value when returning to native code from an upcall that threw.\n\nAlso add a few missing CHECKs.\n\nChange-Id: Icf29506b258a2177b5e80c75cd2710761431ba4b\n"
    },
    {
      "commit": "3db5285b363553ea81bd8dd88ec448b66cf33d71",
      "tree": "a077922e6fe93d197dffc5ef196446e12e9fe1e4",
      "parents": [
        "2d7d319eb9161a6520709e33eaaa4fbb038d3019"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 01 15:11:43 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Apr 01 21:35:39 2012 -0700"
      },
      "message": "Don\u0027t check gcmap while using LLVM compiler.\n\nChange-Id: If7b7113e3dd20b42b34cde1267cfe80e9122845b\n"
    },
    {
      "commit": "0045a290e6b79a274250e3112880c04bde437d4a",
      "tree": "a125d556b6c817218b14f6f3f72079b83d0032c4",
      "parents": [
        "d23f5206cf72ca3fb53ac3049649bb7d018232bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 31 21:08:41 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 31 22:38:22 2012 -0700"
      },
      "message": "Avoid a case of eager initialization.\n\nDon\u0027t mark as initialized classes that contain static field\ninitialization.\n\nChange-Id: Iedcabbdf355e8861eb7731650eee1467f68ae0cd\n"
    },
    {
      "commit": "01e076ec18143f4d46775b53c109e1b5e53d96e1",
      "tree": "75cfd810bf53c66961e477abe3d0ffcd14384211",
      "parents": [
        "e77be401064117032b7c4bbad3f897f5c0b23a26"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Mar 30 11:54:16 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Mar 30 11:54:38 2012 -0700"
      },
      "message": "Do not reset SirtRef pointing to a live object\n\nClassLinker::FindClass reset the klass SirtRef to point to the\nexisting Class value. However, the old value was still referenced by\nthe ObjectLock. In the rare case of a two thread resolving the same\nclass at the same time and a garbage collection happening, the\nObjectLock would point to freed memory.\n\nChange-Id: I93dbbfe3e5d7a8922464242270ac90c71a125e47\n"
    }
  ],
  "next": "5dfc15a6c1cb73f2050d658fd4c92895cc7f73d1"
}
