)]}'
{
  "log": [
    {
      "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": "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": "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": "b49035706fceb2b13e8154668f175af624cf88f4",
      "tree": "2da009e751d7ab90b3ca028767f6302358c70539",
      "parents": [
        "1aae273f8827bcbfff6b00c5babd77a111852272"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 11:52:56 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 11:52:56 2012 -0700"
      },
      "message": "Add notion of precise register types to verifier.\n\nWhen a class may have sub-classes we don\u0027t know if a method is\noverridden. Add an ability to the verifier to track when we have precise\ntype information. This allows the verifier differentiate the case of having\nsomething that must be of the type from the case where something is that\ntype or its sub-classes.\n\nChange-Id: I9995be7d6c147db3b22aa390b776d9c2eb93edd8\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": "9b0b188ac610a5e8c00d6d5b06ccc6624f754c50",
      "tree": "25736ae9ae58cf720f630367c43a8dd3a039a81b",
      "parents": [
        "369809ba2903fd77ed4f019fc859636e7bbdd83a"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Oct 01 16:51:22 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Oct 01 16:51:22 2012 -0700"
      },
      "message": "Make verifier ignore a method if it\u0027s a duplicate.\n\nThe compiler has a similar hack. We should eventually fix the iterator\nto skip the duplicates automatically, but then the dump would be missing\nthem. I\u0027ll work on a test case so we can detect these problems more\neasily.\n\nChange-Id: Icf866f32395ee43c979747efa8141e3457bacdd1\n"
    },
    {
      "commit": "a75a01313e801c53145df00bad1842d9f643c0a1",
      "tree": "4c592c89e188cfb5b4efeb656f4d152cddc14d2c",
      "parents": [
        "acc46d6f64969a7ae32c53a92fcdad875ec6f50f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 11:41:42 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 11:41:42 2012 -0700"
      },
      "message": "Make dex instruction size a lookup.\n\nAdd ostream operators for dex instruction enums.\nMove simple methods to header file.\n\nChange-Id: I9644bfb975896a491ee73ef9a8ef13c062c5fcbd\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": "30bce5a262c0d74a1a9fbc8fedc287312b21e35d",
      "tree": "f34da18b23fdabfe137ebf802e47f29e583a625c",
      "parents": [
        "0c7abda482f53db3d153c073d1c7a145f84e0626"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 20 16:30:53 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 20 16:30:53 2012 -0700"
      },
      "message": "LLVM build fix.\n\nChange-Id: Iee616ece56b30529041f11069007440539e8ad73\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": "46c6bb2f52cef82660b9be7576b49f83845df93a",
      "tree": "3e9768b404a987e481a240a52ee07756323120d9",
      "parents": [
        "e8c819e7dfd1fa9205465843df595f6f227d2d73"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 18 13:47:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 18 13:53:50 2012 -0700"
      },
      "message": "Rename PcToReferenceMap adding Dex.\n\nChange-Id: I21ebfe9ac7fd8a627299f1f721eb4b11c87642dc\n"
    },
    {
      "commit": "89f960588c2d7e5220f9c82431df579294300932",
      "tree": "653d725678a285d6cf9a966ccb1daa59df85b743",
      "parents": [
        "1f196f1c338487d53d16fb132c619d6f5941a065"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Thu Jul 12 20:49:53 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Sep 15 04:15:18 2012 -0700"
      },
      "message": "Move inferred_reg_category_map to greenland.\n\nChange-Id: I33e98b3cfe661f69046362d71f9315bd5b439abd\n"
    },
    {
      "commit": "21d28f510eb590f52810c83f1f3f37fe5f4adf46",
      "tree": "f937b4d39aab322541b9b83cc5dd59d8e3f2fddd",
      "parents": [
        "0967a25d1482d8f7b4a26c5926263e7ffa63189f"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Jun 12 05:55:00 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Sep 15 04:15:17 2012 -0700"
      },
      "message": "GBC Expander. Removed lir.\n\nChange-Id: If8d13e36f1e6d82c2a7f7bfec62b8fb41fd8cdaa\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": "faf459e5decdfcf6dd7844947898beefe31e6435",
      "tree": "7f08cafc93b75b068fc8576633fefa8d92208a46",
      "parents": [
        "692be80cb2278ae585a776a163bc4b3ef60cae88"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 31 15:32:47 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 31 16:07:57 2012 -0700"
      },
      "message": "Verifier no longer checks dead code after failing instruction at runtime.\n\nWhen a failure is detected by the verifier at runtime, the code\nfollowing the failing instruction is unreachable, and is no longer\nchecked. This prevents further failures from causing the whole class to\nbe thrown out. OTP is working again.\n\nChange-Id: I143a76370a2bc9998df526b03219b3ae40a77093\n"
    },
    {
      "commit": "9a4f003f9a6da8e4c6ee279bd2a13aac37648183",
      "tree": "ce78afe7c842c8ff99d52c0a09bfe758d67d037f",
      "parents": [
        "cfb21d92796087963c092b69110a2e7ff7a03a55"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 16:17:40 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 31 10:49:06 2012 -0700"
      },
      "message": "Remove the THROW_VERIFICATION_ERROR op and supporting code.\n\nChange-Id: Idc40a2c379048c7e3d74f50b2bd765a507a417ce\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": "cd05a6274782c50a2b990c18b5f8d5ae5e44d509",
      "tree": "1a202f979454f8b6a1e4294776d52d20c526efc0",
      "parents": [
        "ef0a2ca1f719f64af59db08861edb73739bf5220"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Aug 15 00:02:05 2012 -0700"
      },
      "committer": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Wed Aug 15 04:01:15 2012 -0700"
      },
      "message": "Global lock levels for the LLVM side.\n\nChange-Id: Id2807c8775686bc38f79e13c097fadda2d96d042\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": "380aaa74da9f0086b89b6032e7909ead4fa607f2",
      "tree": "4ddda528ed001493e4e9d9d08d35f0e88524cc7a",
      "parents": [
        "44a25bbc4626119d24d2cb7378212b6fd0093c19"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 09 14:33:15 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 09 14:47:51 2012 -0700"
      },
      "message": "Fix a possible off-by-one in the verifier.\n\nThe art version of 0bd15512ca35f8c77d743166807ce60684f21123.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d10863\nChange-Id: I633b8731d06c83d992229a5831176f0a2ae47046\n"
    },
    {
      "commit": "1c849e5badc85b6753dee0c0487729b2c0529f51",
      "tree": "5f5c602d60404f66d363fe1b4f619d89087fef33",
      "parents": [
        "78a5e15629e6591090582cd83b1ec1380a50a840"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 28 14:00:33 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 28 14:00:33 2012 -0700"
      },
      "message": "Clean up kAccWritable in the verifier.\n\nkAccVerifier was deprecated, instead memory permissions were used in its\nstead.\n\nMove dead code scanning in the verifier to be enabled when the results\nwill be logged.\n\nChange-Id: Id20e62eefe958bd577b86bd7396a439d7a01c1b3\n"
    },
    {
      "commit": "08fc03ae5dded4adc9b45b7014a4b9dfedbe95a6",
      "tree": "3e767d037fd3e47e792b88d982ad38bce26d39e9",
      "parents": [
        "f94404ead1f2e4a1b5a2ff8bbdb65c5e4d4a77ea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 26 17:34:00 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 27 12:18:25 2012 -0700"
      },
      "message": "Include held locks in SIGQUIT thread dumps.\n\nHandy if you have an ANR that\u0027s locking related. Quick tour:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniStaticSynchronizedMethod0(Native method)\n   - locked \u003c0x60135aa8\u003e (a java.lang.Class\u003corg.apache.harmony.dalvik.NativeTestTarget\u003e)\n   at java.lang.reflect.Method.invoke(Native method)\n   at C.whileTrue(Main.java:63)\n   at C.synchronizedOnClassString(Main.java:56)\n   - locked \u003c0x60002a70\u003e (a java.lang.Class\u003cjava.lang.String\u003e)\n   at C.nestedSynchronizationWithTryCatch(Main.java:44)\n   - locked \u003c0x61336b90\u003e (a java.lang.String)\n   - locked \u003c0x61336bd0\u003e (a java.lang.String)\n   at C.nestedSynchronization(Main.java:35)\n   - locked \u003c0x61336b18\u003e (a java.lang.String)\n   - locked \u003c0x61336b50\u003e (a java.lang.String)\n   at C.synchronizedOnClassC(Main.java:30)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at C.noLocks(Main.java:27)\n   at C.\u003cclinit\u003e(Main.java:24)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at Main.main(Main.java:19)\n\nA non-static synchronized native method works too:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniSynchronizedMethod0(Native method)\n   - locked \u003c0x613371a8\u003e (a org.apache.harmony.dalvik.NativeTestTarget)\n   ...\n\nNote that most stack traces don\u0027t look any different; the above is a\npathological example that exercises different kinds of locking. Testing\nwith system_server shows most threads don\u0027t hold any locks.\n\nFuture work (marked by TODO) is that explicit JNI MonitorEnter calls in\nnative code aren\u0027t shown.\n\nChange-Id: I2747f5cddb4ef64b1935736f084a68fe8e4005e9\n"
    },
    {
      "commit": "6d657bfcd28980a12f7971a87e603174af248700",
      "tree": "eecc9cd7425186ccae3262f6c5a7154add51e217",
      "parents": [
        "50b69e30ef69e72a48b1789622caaab4de203cfb"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Jun 27 16:23:27 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 27 07:41:29 2012 -0700"
      },
      "message": "Ignore the redundant InferredRegCategoryMap.\n\nThe verifier may verify the same class more than once.\nThus, it is possible for us to \"Put\" the same key-value\npair to the \"SafeMap\" more than once.  In this case,\njust ignore the redundant key-value pair.\n\nNOTE: Since soft verification failure is not considered\nas erroneous, we may invoke VerifyClass again while we\nare verifying the subclass, which will verify its super\nclass if it is not successfully verified or in erroneous\nstate.\n\nChange-Id: Ifbd817b6e00c9b452ebbf1140750025ff261ef1e\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": "a21039c3ae2b20e44ceb2735251c04d0aac89afd",
      "tree": "66b6fa437e7e4286b50bdef224500f9049633701",
      "parents": [
        "3d9d49fa2d025a041f57ea306ea551ef990177db"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 12:09:25 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 13:04:41 2012 -0700"
      },
      "message": "Fix a bunch more lint.\n\n(If you ignore the compilers, we\u0027ve got relatively little lint now. Fits on\na single screen.)\n\nChange-Id: I51389002894d4fd8cf46f79d2bac57079322a030\n"
    },
    {
      "commit": "0a1038b0a30a52dff1a449a989825e808a83df80",
      "tree": "4f4f72efe2d3fa076faf39c2ce084c9de9f5a4fe",
      "parents": [
        "56400fa8913530a6f01bb45723614f08fa44baf1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 14 16:24:17 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 14 16:51:10 2012 -0700"
      },
      "message": "Make tsan happy.\n\ntsan was unhappy with our static Mutex, claiming a race between the constructor\nwriting the \u0027rank_\u0027 field and Mutex::Lock reading it. My understanding of the\nGCC static initialization acquire/release code is that it includes memory\nbarriers that should make this safe, so I\u0027m reaching out to the tsan guys. In\nthe meantime, let\u0027s just make this MethodVerifier lock \u0026 collection like the\nother MethodVerifier locks \u0026 collections.\n\n  WARNING: Possible data race during read of size 4 at 0x1A42F09C: {{{\n   T2 (Compiler Worker) (L{}):\n    #0  art::Mutex::Lock /home/enh/local-disk/clean-dalvik-dev/art/src/mutex.cc:89\n    #1  art::verifier::MethodVerifier::IsClassRejected /usr/local/google/home/enh/clean-dalvik-dev/art/src/mutex.h:77\n    #2  art::Compiler::CompileClass /home/enh/local-disk/clean-dalvik-dev/art/src/compiler.cc:1420\n    #3  art::WorkerThread::Go /home/enh/local-disk/clean-dalvik-dev/art/src/compiler.cc:1013\n  Concurrent write(s) happened at (OR AFTER) these points:\n   T1 (Compiler Worker) (L{}):\n    #0  art::Mutex::Mutex /home/enh/local-disk/clean-dalvik-dev/art/src/mutex.cc:67\n    #1  art::verifier::MethodVerifier::IsClassRejected /home/enh/local-disk/clean-dalvik-dev/art/src/verifier/method_verifier.cc:3334\n    #2  art::Compiler::CompileClass /home/enh/local-disk/clean-dalvik-dev/art/src/compiler.cc:1420\n    #3  art::WorkerThread::Go /home/enh/local-disk/clean-dalvik-dev/art/src/compiler.cc:1013\n  Address 0x1A42F09C is 28 bytes inside data symbol \"_ZZN3art8verifierL22GetRejectedClassesLockEvE21rejected_classes_lock\"\n   Race verifier data: 0x1A198B1E,0x1A198025\n  }}}\n\n(cherry picked from commit 6356df46fb0ebff5467d3103b97c3c871940e402)\n\nChange-Id: I26a9c91f133370161ab4679e36d9a02315d28847\n"
    },
    {
      "commit": "666d9b4706a81a3406b6f3e3e043056b8786abc1",
      "tree": "df67b99845d82398b06a6ed8cc36ecdb39231770",
      "parents": [
        "f421588631bd97023da23d3aaf720cad411c81e4"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jun 12 11:36:38 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jun 12 11:59:58 2012 -0700"
      },
      "message": "Verifier treats unresolved return types as a soft error.\n\nIt\u0027s ok for the type of a returned register to be an unresolved class,\neven if the return type derived from the descriptor is resolved, when\nthe descriptor type is a super and the register type is a sub. It\u0027s\nalso ok for both types to be resolved, but it\u0027s not ok for the derived\nreturn type to be unresolved while the register\u0027s type is resolved.\n\nChange-Id: If0ac5ba33ccef61e754382b7d9918deac7f05448\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": "e551e9523d9c8fb7a1f23a592044b33af27d88ac",
      "tree": "41ae591386177766ad3a0560cd6de8135ec53e37",
      "parents": [
        "4668543dd0cb214265b39c92d086182455ba097b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jun 03 22:59:14 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jun 03 22:59:14 2012 -0700"
      },
      "message": "Soft verification failures shouldn\u0027t reject the class.\n\nChange-Id: Ib730fa9047e986383762685001dcd3bdc9f8edcb\n"
    },
    {
      "commit": "4668543dd0cb214265b39c92d086182455ba097b",
      "tree": "b936ce76dfceca38d40d2734ace078a559de5724",
      "parents": [
        "d237a3865c8c0c623fa5902b4927d95c77f85c38"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jun 03 22:26:43 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jun 03 22:26:43 2012 -0700"
      },
      "message": "Recognize calls to constructors of unresolved classes.\n\nChange-Id: I8774a582ec2ac60c8386d1be70e2f5c8d73740e5\n"
    },
    {
      "commit": "526643e38c344701d96068f351548a393c67b6be",
      "tree": "aabe346bdca4957185bf8cd2102bdc6bb583a92e",
      "parents": [
        "bd050618b502031a00294ebb652b5bc159a7388b"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sat May 26 01:01:48 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu May 31 21:48:44 2012 -0700"
      },
      "message": "Remove unnecessary exception and suspend checks.\n\n1. Post exception check, when 2 consecutive branches are return and exception\nunwind, respectively, merge these 2 branches as the caller doesn\u0027t care\nthe return value when an exception is pending..\n\n2. If the method is leaf, we can elide the suspend check.\n\n3. Also, move suspend checks to be before pushing shadow frame for the sake of \"1\"\nand for reducing code size (Multiple returns).\n\nChange-Id: I18f38f97f4e7714eadab4a1d6a568aa6e2c982ae\n"
    },
    {
      "commit": "e94d9b23c52ec0f36c8a132914eac33bc707faff",
      "tree": "53a3b1262f9f01f12507ec2aa1f1fd6fa774fc72",
      "parents": [
        "024cf66d3359c015fabca8f5f3964592973e3f6e"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue May 22 09:01:24 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon May 28 21:04:37 2012 -0700"
      },
      "message": "Add dex_lang as common frontend to lir and LLVM. dex_lang + bc2lir \u003d\nGreenland\n\nFirst commit of Greenland compiler: It\u0027s working in the sense of oat\ntests. E.g., mm test-art-host-oat-Fibonacci. It shows the correct\nbitcode before lir.\n\nChange-Id: I91cbb02188325eb1fa605ed71ec7108fd2b0dbb9\n"
    },
    {
      "commit": "b2eb5c18d628dc84bdc424b5e5a491382d867e36",
      "tree": "42e7e0700c5a45224c2b72e3c80f84404a906345",
      "parents": [
        "a964d414bafe15287a68f5360ef8de737b165ee9"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Thu May 24 15:52:10 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu May 24 21:24:42 2012 -0700"
      },
      "message": "Reduce memory usage.\n\nAlso, fix InferredRegCategoryMap constructor. (The regs_size is uint16_t.)\n\nChange-Id: If85df1ad78c3acc6d3c19e605ee7d90f43df1159\n"
    },
    {
      "commit": "c073b075241640c94c27e661ed6f29ff5fcee5d8",
      "tree": "bdc40c3c4c25a5bc4b5d769d7394a2667a2683ba",
      "parents": [
        "e119a3623ffbd55ff856d4eaac4dc4ef0c90a089"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 19:29:17 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 19:38:01 2012 -0700"
      },
      "message": "Switch the handful of std::endl users over to the predominant \"\\n\".\n\n(cherry picked from commit f6ee3605a88dec1114c60963a626aeec29d47220)\n\nChange-Id: I8124de153cb34657d22fb8bbca37864ff2f7abe0\n"
    },
    {
      "commit": "1d7e510d90369b10aae8704ec71a9964d76dd402",
      "tree": "061fbf24d11035876c57898c2245f940dfd70e7b",
      "parents": [
        "9d7bc820e0a8dc761750f8b9af1d2258100e6176"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun May 13 09:27:05 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon May 14 14:42:58 2012 -0700"
      },
      "message": "Reduce shadow frame size.\n\nChange-Id: Ifbd5cb38d0666a1f5db1abe7da36ff86a93f87b5\n"
    },
    {
      "commit": "b57e952a167d3f72ee5c8e80267052b70c0f6308",
      "tree": "e0c940ddc0123690cfa0c5ee59c3cea612ab5ce0",
      "parents": [
        "4467908da159039dccc37e3fb9dd0e35442c8d11"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 26 18:08:21 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Apr 26 18:11:32 2012 -0700"
      },
      "message": "Various fixes to new verifier.\n\nCleaned some dead code, return resolved methods on soft errors, ensure\nthat when a hard error occurs, it\u0027s the last error, and replace a\nfailing instruction based on the first soft error.\n\nChange-Id: I7e795221c048bf01899be54c6bad814246db0324\n"
    },
    {
      "commit": "4d8df827af6c90ae4be02309680317bac85287f8",
      "tree": "375c6862d0ffab673460363ba32a49487786c021",
      "parents": [
        "98e2017cac7ca554602480fcefabbbe630a4a39b"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 24 17:09:36 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 24 17:09:36 2012 -0700"
      },
      "message": "Check for unknown superclass earlier when checking invoke-super.\n\nsuper.GetClass is invalid if the super class is unresolved. This fixes\nthe build error in dalvik-dev building VoiceSearchTests.\n\nChange-Id: I101d6b67b9349c223881080ba0bde07d4e1b2b37\n"
    },
    {
      "commit": "ad0b3a35857d2cd2db720028ebc51176191e2219",
      "tree": "e6cfbb8a5c9e6127796e0dd5912787416ec87bfd",
      "parents": [
        "174651dea03956e160a2cff0d842954823c49134"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 16 14:50:24 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 20 19:01:23 2012 -0700"
      },
      "message": "Support for a set of verifier failures.\n\n(cherry picked from commit 0d60484cbb0c70acc60965b015e94c2e9cb9f1e7)\n\nChange-Id: I70eb1121390305c436a2bed2c7835c870c0c3972\n"
    },
    {
      "commit": "e1758feb293c7ff67d6fe59dbc31af0811863ce5",
      "tree": "eebf758848f8f4cd8dcb2f3a8299a6f98412e0f8",
      "parents": [
        "0d60484cbb0c70acc60965b015e94c2e9cb9f1e7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 19 11:31:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 11:31:15 2012 -0700"
      },
      "message": "Revert \"Support for a set of verifier failures.\"\n\nThis reverts commit 0d60484cbb0c70acc60965b015e94c2e9cb9f1e7"
    },
    {
      "commit": "0d60484cbb0c70acc60965b015e94c2e9cb9f1e7",
      "tree": "2b6e289a5f507590722f66d0a157fa5b293cd78f",
      "parents": [
        "a7e6cb4efd9384ac1520976f2d620c72bb08b758"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 16 14:50:24 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Apr 18 17:45:18 2012 -0700"
      },
      "message": "Support for a set of verifier failures.\n\nChange-Id: Idd0f8944bde7ee27271c3f68a2141b5a5265c382\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": "dd361c9eab3284e76e2d07c2e7d371b0f5269942",
      "tree": "04dbcea72d196e5202aa71c2e54d7833b276f9b9",
      "parents": [
        "7e7fabccba62ec3d7c04b33e9b8fdb7981bdc833"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Apr 10 23:40:37 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 10 15:55:46 2012 -0700"
      },
      "message": "Fix 065 and 066 tests (NULL Method bug). Don\u0027t use Method in LLVM method compiler.\n\nChange-Id: I98e4e9b329448b1b72c3b5c9d712ea68dab624bd\n"
    },
    {
      "commit": "460384f04f933f94546db7bfbfa02896b9e77962",
      "tree": "e95299a4a62f63c9a3ca981d26993f440f2b02c0",
      "parents": [
        "5e284224e5525ee0a8494a73d84c8ef86e022a0a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 04 16:53:10 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 04 16:53:10 2012 -0700"
      },
      "message": "Use the operator\u003c\u003c generator more widely.\n\nChange-Id: Iae3b8f32f49f4c91cd41c53bbafb95db071d57bb\n"
    },
    {
      "commit": "398f64b5805246765b699839b439e18c0dfbf2ee",
      "tree": "de3f86de82289b1734b12cdc7c4292f4aff16f55",
      "parents": [
        "ee0fa76b2e5d39ad36d1ff144b2d0270df81e606"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 18:05:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 18:05:48 2012 -0700"
      },
      "message": "Remove more lint, mostly C-style casts.\n\nChange-Id: Iaf1f23290e35ed48e5795fb20690953a9a834457\n"
    },
    {
      "commit": "b25c3f6a86dc634ce44fb2849385b49465caa84d",
      "tree": "f359c72d821d913f78b977d8dde0fc7023afb511",
      "parents": [
        "fc9e6fabed89d948fa8c0e9d673e430076712c60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 16:35:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 17:11:59 2012 -0700"
      },
      "message": "Fix cpplint\u0027s whitespace complaints.\n\nChange-Id: I11fd2db2badf7bd98e7866ca2155d8ef1e112408\n"
    },
    {
      "commit": "d5347e08172d6d462c703c0f5e1ce9ef070ec69d",
      "tree": "1d1a72647ac7e2f8ee58c08dbd652500c19bdf5f",
      "parents": [
        "942df41c03ddb9f7b47a34fcfc4414d8b8ca8ce1"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Mar 22 17:25:05 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 26 10:47:57 2012 -0700"
      },
      "message": "Split VERIFY_ERROR_GENERIC into VERIFY_ERROR_BAD_CLASS_HARD/SOFT.\n\nThe verifier was suppressing compilation of some classes that were able\nto verify at runtime. Now VERIFY_ERROR_BAD_CLASS_HARD is used for\nstructural errors to prevent compilation, and\nVERIFY_ERROR_BAD_CLASS_HARD is used for all other verify errors.\n\n(cherry picked from commit da4dc735b9650f63e13b85c9775416006717d27c)\n\nChange-Id: I339639fa94af30f93be12f1ab9d4ef4cec6767e6\n"
    },
    {
      "commit": "81ff3184e7eb8de4605c7646674ea4f9fa29b5f3",
      "tree": "eaf443fcc575d3a793af3ab3e435211981a1c1b1",
      "parents": [
        "5147733292cd0b80ca7da3099e43cc549d67526b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 20:35:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 08:38:34 2012 -0700"
      },
      "message": "Nomenclature improvements.\n\nChange-Id: I809ab04b6ee74bb8141791e1f3f5d7e3f4efb61c\n"
    },
    {
      "commit": "f34f1748ebbc3f28a1d52d4e0a63882f8fd510e8",
      "tree": "318fe82935ba2964f4782d749aa874c9df2eec5f",
      "parents": [
        "5efa670d6a8cf6ad3771b9fb7d4c10598ad78f9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 18:56:00 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 18:56:00 2012 -0700"
      },
      "message": "Fix a leak in the verifier and a minor test bug.\n\nBoth found by a valgrind run on the host.\n\nChange-Id: I247efbc8b354f1597648e999ad2a7835f2a43e05\n"
    },
    {
      "commit": "b3bd5f07884f5a1f2b84224363b1372d7c28d447",
      "tree": "6e2997ab64b4a4f32d7ef539a4649adc736ea553",
      "parents": [
        "ddbd01ac1660d57416879d5a576482f1048dde64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 08 21:05:27 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 15:37:46 2012 -0800"
      },
      "message": "Refactor the compilers out of libart.\n\nThis builds three separate compilers and dynamically links with the right one\nat runtime.\n\nChange-Id: I59d22b9884f41de733c09f97e29ee290236d5f4b\n"
    },
    {
      "commit": "adb8c67f6d87a160d4e3a8afea7cb93f6c14568b",
      "tree": "93b265743b7fd7a831803f6bc84e2aa8ce338156",
      "parents": [
        "731b2abfccd8704d129e3b8e46a086660161fef3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 06 16:49:32 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 06 17:21:07 2012 -0800"
      },
      "message": "Move the compiler away from libdex.\n\nChange-Id: I0c5fdc38d94f1199023cfc6aab3060b927ad2383\n"
    },
    {
      "commit": "f56197c5519395fcf8226a7148cc87367e0a7ad4",
      "tree": "1403d90cb236e3643192e40a293b71ea8cd4a3be",
      "parents": [
        "9787ac4a18e71a57ed2b559759e9903b557a65dd"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 05 18:01:54 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 06 16:19:22 2012 -0800"
      },
      "message": "Verifier can handle an unresolved method or class.\n\nAdded a new dex verifier entry point that takes in a ClassDef index and\ncontext instead of a Class pointer. This allows basic structural\nverification to still be run on classes that FindClass fails to find. If\nthe basic structural classes fail, then the compilation for the class is\nskipped. Before, an unresolvable malformed class would cause the\ncompiler to segfault.\n\nChange-Id: Ia02c77560bf274281c4e22250983dc96511501eb\n"
    },
    {
      "commit": "d1224c79631bd1801b067a0f212b91afa961a362",
      "tree": "6863033cc7e365536d549e2ee4f7613851685f11",
      "parents": [
        "ed2adb6158ffbe85c89aa5c9892a35bafa5006cd"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 29 13:43:08 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 29 15:03:33 2012 -0800"
      },
      "message": "Suppress compilation of malformed dexfiles to prevent compiler segfault.\n\nGeneric failures detected at compile time will not be fixed at runtime,\nso classes with generic failures are now added to a rejected classes\nset and not compiled at all. This prevents the compiler from\nsegfaulting on certain occasions when registers and indexes are out of\nrange, etc. There is one remaining segfault in the vm-tests now.\n\nChange-Id: Id67c12fd13f3e993a6a16a8625620daa0ea496cb\n"
    },
    {
      "commit": "de0d9c9f636810bd802ceefc2a6d24628f979ddc",
      "tree": "7a94a0c2b6c7425ec1b659ab588653415b029289",
      "parents": [
        "d1f1bf03e30320e5730790678f470ac8a610b6b6"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Feb 27 13:58:13 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Feb 27 13:58:13 2012 -0800"
      },
      "message": "Reordered checks for permission and invocation type of private methods.\n\nThe verifier now checks for accessibilty of a method so it can throw an\nIllegalAccessError where appropriate. It will then check if a private\nmethod was invoked using invoke-super or invoke-direct, and throw a\nVerifyError. Before it would throw VerifyError in both error cases.\n\nChange-Id: Iba418c4cf6b4543bf253408db0d1283dcd1121eb\n"
    },
    {
      "commit": "4922ef93ecb53f02692b077b0b6432d07a173d4f",
      "tree": "ab2f8d970825b667e3953d17aa1bf7974f380955",
      "parents": [
        "32388505f10a0f634ffc290ef328ff0cc196ccdc"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 24 14:32:20 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Feb 24 14:32:20 2012 -0800"
      },
      "message": "Add large frame test\n\nAdd test to stress large frame code generation.  Also, fixed\na verification error that should have been a warning.\n\nChange-Id: Iebec41b3213fba66f360f1fd243eb06659b24545\n"
    },
    {
      "commit": "8cd6ddaeb78cc904e13bac88753654a04b2e15b8",
      "tree": "005ebbe14563bb3ec5bfc9837bf3fd4284427cec",
      "parents": [
        "a656a0f6fbcf2ba3f15cae54a773b9c636dd32c1"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 22 10:15:34 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Feb 23 15:55:20 2012 -0800"
      },
      "message": "Numerous fixes to compiler and verifier for cts vm-tests.\n\nClassNotFoundExceptions in ResolveType are converted to\nNoClassDefFoundErrors.\n\nCompiler checks for puts into final fields.\n\nMethod resolution searches direct methods if an appropriate virtual\nmethod can\u0027t be found.\n\nInvocations of \u003cclinit\u003e are rejected by the verifier.\n\nInvoke-super and invoke-virtual can\u0027t be used on private methods.\n\nUsing invoke-interface on non-interface methods and not using\ninvoke-interface on interface methods leads do an error.\n\nChange-Id: Ia589f1ffccf91b62812ee34c8c5fae1aaf3798c6\n"
    },
    {
      "commit": "7b0c5b4739e3d9df11caa883de01cc5f4ea30753",
      "tree": "b8754300b1de8f3787803aff764463cb1c2879de",
      "parents": [
        "283ed0d9db3084d0fee46d47cd73bf84bd0cfc16"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 16 15:29:07 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 16 16:05:30 2012 -0800"
      },
      "message": "Various dex index tweaks to improve verifier performance\n\nChange-Id: I9369443495b69fc8092f6a69118691c056db3188\n"
    },
    {
      "commit": "fca7e87c4831ac52073bdd0b2c7342488ce286d8",
      "tree": "058bbda5b4ea617ebef826f2e4b4fd08773e84d6",
      "parents": [
        "53a25dba44cb38d83931d47613cfe5b2abc5c299"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Dec 20 20:08:22 2011 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Feb 15 23:30:22 2012 -0800"
      },
      "message": "Add inferred register category map to Method object.\n\nChange-Id: I69456c79eb3ce3df1924bffe4db5314b0552f1de\n"
    },
    {
      "commit": "60f83e3274739317d8c3a1b069cebc6bf1e40f29",
      "tree": "c7945cf6ebf6ebe0438421758884abb7ad240046",
      "parents": [
        "c281ec5f3a8177cd5921075716977639ceb5676d"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Feb 13 17:16:30 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Feb 13 19:12:18 2012 -0800"
      },
      "message": "More fixes for vm-tests.\n\nFailing to open a dex file is no longer a fatal error.\n\nSetRegisterType in the verifier returns true/false for success/failure\nto prevent Fail from being called twice.\n\nVerifier checks that all catch blocks begin with a move-exception.\n\nGc maps can now support 65536 registers, with the size using some bits\nthat were usused in the format.\n\nChange-Id: Idfa92c627efff8fd8360e933f54def397c953688\n"
    },
    {
      "commit": "a32a6fd4a781262dff4fec102da053d16b7ef6c0",
      "tree": "5c2a35aec522902cfdf508a74898ee091c91f7ab",
      "parents": [
        "d08547a802e6dbb71fde3ed3dac9aa0b03a5b17b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 06 20:18:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 15:41:26 2012 -0800"
      },
      "message": "Runtime access checks on virtual method calls\n\nAt verification time we may not know that an illegal access or method\nnot found exception should be raised and so we defer the decision to\nruntime. When the decision is deferred we perform an appropriate slow\npath method invocation that can check for access violations.\n\nThis change also attempts to reduce code duplication, improve the\ndiagnostic information in exceptions, clean up field slow paths slightly\nand to move the slow path calls lower in the Thread class so that they\ndon\u0027t effect the offsets of data items when calls are added or removed.\n\nChange-Id: I8376b83dcd7e302cbbddf44c1a55a25687b9dcdb\n"
    },
    {
      "commit": "0c4a506e49dbbc29d05803b506a8e27e6e54d67a",
      "tree": "863a5ebd0d265944e7e2d94a79551fd23bdbfa8d",
      "parents": [
        "9ada79cbe875dbcf7229b3f563303d21b0537d5f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 15:18:59 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 15:18:59 2012 -0800"
      },
      "message": "Merge new array with new array filled logic\n\nChange-Id: Ia6ade5651e96d3bfcbfa208b354b2dac47f9e040\n"
    },
    {
      "commit": "9ada79cbe875dbcf7229b3f563303d21b0537d5f",
      "tree": "71ebc8e378e8c6a41e543048a57a5d091e167a57",
      "parents": [
        "47a058813f6bc448426d1037535c6a52c1079d15"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 14:29:52 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 14:50:27 2012 -0800"
      },
      "message": "Access checks may fail verification due to class loaders\n\nAt compile time we have incomplete class loader information. We need to\nbe tolerant and make this a runtime issue.\n\nChange-Id: I9e63b804ae68434753f0aea7a855014030a1542d\n"
    },
    {
      "commit": "47a058813f6bc448426d1037535c6a52c1079d15",
      "tree": "b9d016cd37217b2a8c0456e941881e052af16223",
      "parents": [
        "457cc515e6726de0bbcc4eccbb7b4e9e80fe3a67"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 12:23:33 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 14:30:49 2012 -0800"
      },
      "message": "AOT verification not founds are generic failures until runtime\n\nMake compile time verification failure of class, field and method not\nfound generic failures so that we reverify at runtime with complete\nclass loader accessibility.\n\nChange-Id: Iad2a1d3b37d9b5baba6b8bc9a4549ffd70b9a2bc\n"
    },
    {
      "commit": "457cc515e6726de0bbcc4eccbb7b4e9e80fe3a67",
      "tree": "b7744c5e99b61c6164b5a7047dc24b783deebe81",
      "parents": [
        "97f7a1cb69ab65b36961b52f6ab2580b5d947e93"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Feb 02 16:55:13 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Feb 03 14:25:28 2012 -0800"
      },
      "message": "Various fixes to the verifier for cts-tests.\n\nChange-Id: I812e7f1332ff1ce5a13d19433255098989531d1a\n"
    },
    {
      "commit": "d9c67be7c116875d96b31e640ad47d587b205605",
      "tree": "55ba94dde3916dfb88681e4967e4a45926436716",
      "parents": [
        "763d5fb2f83d9c93b5b764533005865a3d1034e1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 02 19:54:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 03 09:28:44 2012 -0800"
      },
      "message": "Start parallelizing dex2oat.\n\nThis is enough to perform type resolution and verification in parallel.\n\nThere appears to be a bug in InitCpu --- if you start enough threads\nat once, the CHECK at the end starts to fail, with self_check \u003d\u003d NULL; I\u0027ve\ncommented it out for now, but this will cause test failures until it\u0027s fixed.\n\nChange-Id: I4919682520bc01d3262c6b3d00c7bd2c2860a52e\n"
    },
    {
      "commit": "fc3144e2530a958ac03698e0972ef60290a268b3",
      "tree": "ec25fdd1e271f132c204c5a4474b6ef566d0e19d",
      "parents": [
        "c8b917bf534435c3fff31c27158757f9e8edb6c6"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 01 17:21:15 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 01 17:27:16 2012 -0800"
      },
      "message": "Moved array type check to prevent failure in GetComponentType.\n\nFor aget and aput, GetComponentType checks for array_type.IsArrayTypes(),\nso the verifier needs to check for this sooner.\n\nChange-Id: I5b005de4c70960ac64e7352b21a86ec61f2e7138\n"
    },
    {
      "commit": "c476227fe7da5097fc88af078e3eef856b4d6997",
      "tree": "b2199f0f8d40ff4ee16643fc45c60198f5daa09c",
      "parents": [
        "7d5ffb5ef4702e7a032db8a75783f1bac2ce04c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 15:55:55 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 15:57:51 2012 -0800"
      },
      "message": "Re-run verification when it fails at compile time\n\nVerification may fail at compile time as we have incomplete information.\nAlways re-run at runtime in this case and don\u0027t report a VerifyError\nyet.\n\nClean up GetCaughtExceptionType to better handle unresolved exceptions.\n\nChange-Id: Ic526d0a1b43eea9783d540b7432cf22bf244bade\n"
    },
    {
      "commit": "89310dea3537d76bf67195275f10e4b984474c85",
      "tree": "95727a81225a798f8c689637523d2bfc66078496",
      "parents": [
        "38aa2b2ea43bafe54dc43e59d819bd8eadb2e7eb"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 13:47:30 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 13:47:30 2012 -0800"
      },
      "message": "Remove legacy notion of GetClassFromRegister\n\nRegister\u0027s may have or may not have resolved classes. Remove the last\nvestige from RegisterLine that we expect register\u0027s to have a resolved\nClass.\n\nSome sorting of array type names in RegType to make naming more uniform.\n\nChange-Id: I3bd4e8d640bcde167eb939299b9233780c420e86\n"
    },
    {
      "commit": "5d86e52f93ea8d95cdda3ef45bdfc39e14e3898c",
      "tree": "7111790bee21f2e904e8864dace36e2d77fbc944",
      "parents": [
        "1c5eb704b61511cdc649cad032d29940857c9fe9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 11:45:24 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 11:45:24 2012 -0800"
      },
      "message": "Add verifier assignability for unresolved arrays to Object[]\n\nChange-Id: Ie98a013cf8f9a28b073152c60774b549cdc83364\n"
    },
    {
      "commit": "1c5eb704b61511cdc649cad032d29940857c9fe9",
      "tree": "9950f70d497a58cb1d07712a90b72ce19d783eb5",
      "parents": [
        "02fbef0e356ca43b2032044f870d59de4a4ae92a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 09:18:34 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 10:42:11 2012 -0800"
      },
      "message": "Move super class verification to class linker\n\nVerify super classes in the class linker and chain exceptions when super\nclass verification fails. Add support for dumping chained exceptions to\nThrowable::Dump. Improve verifier error detail messages.\n\nFixes problem where super class verification would leave a pending\nexception that would be tripped over elsewhere.\n\nChange-Id: I3ca850fc66674c8601132d7ec40bebbf9c108ae3\n"
    },
    {
      "commit": "2faa5f1271587cda765f26bcf2951065300a01ff",
      "tree": "c59557857c36741cfcd1b6bf5ae039886a8ad6e7",
      "parents": [
        "0850c69c88d49efd4075288511b70d6c032bd0c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 14:42:07 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 16:46:29 2012 -0800"
      },
      "message": "Fix copyright headers.\n\nChange-Id: I5b7bc76a370238d810d78522bd5531600746700f\n"
    },
    {
      "commit": "aa6e1cdddae8bd240c5cdc156348f2a42e045a7b",
      "tree": "bc0c10ee6e0687273fda49330b5b0713d5eca06e",
      "parents": [
        "8add92dcf59568c72c17e9a979948b1a7a0b1264"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 19:26:06 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 18 19:26:06 2012 -0800"
      },
      "message": "More Mac build fixes.\n\nChange-Id: Iaf3b974885bc205c89455ae65b1bb09641d114ec\n"
    },
    {
      "commit": "754128802c6f85c256f845721d684bd00febddc9",
      "tree": "c1f873ccf9414f4163ed315972227dfb3b619d6a",
      "parents": [
        "5fedcf46538aeb036a1f68e022463703c372d825"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 18 01:26:54 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 18 14:10:27 2012 -0800"
      },
      "message": "Ensure method GC maps are setup during runtime verification\n\nChange-Id: Icd5013710a269cc6df439e36c534a8d40c1e3324\n"
    },
    {
      "commit": "73a15f4ca25453bb86d5e93c8d005e0eb3868e18",
      "tree": "e70345def04ba046aacbe8fd582e405687b76e44",
      "parents": [
        "0f14ae16a2c3e6c4f8a7c24aba558097b78e1d48"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 17 18:14:39 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 17 18:19:02 2012 -0800"
      },
      "message": "Tolerate GC map being added twice, if it has the same contents\n\nChange-Id: I3b973c06aa5b170e0b8fb7e28136b65fc8855880\n"
    },
    {
      "commit": "c12a17a810f52b7db858184acf400cbc0d9ce487",
      "tree": "c38cc6377973e8030dabdbb6bd2b29e4ff62caff",
      "parents": [
        "e7d856b911222aa000ca2be0f8f63f5b292141c3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 17 18:02:32 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 17 18:02:32 2012 -0800"
      },
      "message": "Remove bogus assert\n\nThis was true during the development of my last change, but not at commit time\n\nChange-Id: I31f2ed7d5e49e110db4de280c587528319f0250a\n"
    },
    {
      "commit": "e7d856b911222aa000ca2be0f8f63f5b292141c3",
      "tree": "9628ef94e879c7ae026dd37ec05e1ab3251d830a",
      "parents": [
        "a51dc5b0a57fdf0574c069a15e065ccc96958f02"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 11 18:10:55 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 17 17:42:34 2012 -0800"
      },
      "message": "Add GC map to oat file\n\nChange-Id: Ied0462c711a09e2542f231c3b2fa31239958bd28\n"
    },
    {
      "commit": "672f520b125639c090cc38c9ae7231e0dfbd31dd",
      "tree": "85b433a9ff0be58a118711b6a9be0e7c0b5aa5e9",
      "parents": [
        "b52b01ac70ccc5a56e108d81451beda0e1d320a0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 12 18:06:40 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 12 18:06:40 2012 -0800"
      },
      "message": "Fix race in double verifying super class\n\nChange-Id: I75089d0be8ad13b22300dd59bcc88da61d349e0d\n"
    },
    {
      "commit": "672297c77a92e31e88feb179e4548284ba17d330",
      "tree": "cc593076ffd594d81e733d3888a67accee900d0c",
      "parents": [
        "4138331f3e718076d1ea3194cd609ac7f85f8198"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 10 14:50:55 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 10 14:55:28 2012 -0800"
      },
      "message": "Remove std::string from RegTypeCache::FromDescriptor\n\nRemove the use of std::string for the descriptor argument.\nThe argument to FromDescriptor is used to look up a Class or a String,\nboth of which are managed in the Java heap.\n\nChange-Id: Ic752a797d807a5102097068c2cf654f4fe4b6c63\n"
    },
    {
      "commit": "2e3d1b262af0839380e1d60e86d8b281943ef944",
      "tree": "f703c068e2a037d12dac592e1ebc6f1849ce4fbf",
      "parents": [
        "d170fc48b0895ee98ec0d6e3cf1987c8260af95d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jan 09 18:01:56 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jan 09 21:20:50 2012 -0800"
      },
      "message": "Changes to compile with gcc 4.6\n\nChange-Id: I55908b3b98b49373ce948fd1f12e0a5cd56ae4f7\n"
    },
    {
      "commit": "d601af8d9549ca95a911afb2fc67c4e562da661f",
      "tree": "3b4b2e277ecc02533f9e63b889ee501348568990",
      "parents": [
        "769fde14cf82840e458f3ca0b1accdaedc60e837"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jan 06 10:15:19 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jan 06 15:25:19 2012 -0800"
      },
      "message": "Move old dex file creation logic to oat file creation\n\nChange-Id: I643adaf918c00bd38c3e85d7622d30b06eab1c68\n"
    },
    {
      "commit": "89521898b56f2ebc3fb68acfb6bc6dde9b6f5c38",
      "tree": "6811878efd4490f78ae099ec7e14c1a1ffe4d868",
      "parents": [
        "c74a6971fb9a65dbee337d51e7981a37be208a00"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Dec 07 22:05:07 2011 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 04 00:23:07 2012 -0800"
      },
      "message": "Merge art-cache dex files into oat files\n\nChange-Id: I5a327a4e0b678bd9dabb12de4e21ef05e3fefd0b\n"
    },
    {
      "commit": "c3b77c7c2971124cbf3b2d9da64e7a8a9a649f2e",
      "tree": "b8f2b70fb281d2d8b617491755bcdb7f798af837",
      "parents": [
        "90040194a1b5c441dde5c8a8b6d637c23972e0f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 15 20:56:48 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Dec 16 14:17:50 2011 -0800"
      },
      "message": "Avoid copying and strlen(3) in the FindClass path.\n\nChange-Id: I789f3c883596d1852a2c1954ce7a207e6f937117\n"
    },
    {
      "commit": "90040194a1b5c441dde5c8a8b6d637c23972e0f3",
      "tree": "729962d80228061d6f186c579440893c8eacd2b1",
      "parents": [
        "6b0870dfaaa2e69a900ad7ed88e4e1d3697445aa"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 16 08:54:29 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 16 09:29:04 2011 -0800"
      },
      "message": "Fixes for verifier access checks.\n\nClass::CanAccessMember ignores the class we\u0027re checking access for,\nexcept for protected fields. Document this behavior.\nWhen getting static and instance fields perform the same class access\nchecks we already perform for methods.\n\nChange-Id: I00719de2e346e9f3faa199e1976151493708fff7\n"
    },
    {
      "commit": "6b0870dfaaa2e69a900ad7ed88e4e1d3697445aa",
      "tree": "e2b70620ea145ec8c0cace1ce558c9fdcb5dcd78",
      "parents": [
        "5c9f0b4d3933cdf6c3897dead3f77b16515b401c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 15 19:38:12 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 15 20:18:49 2011 -0800"
      },
      "message": "Fixes relating to 003-omnibus-opcodes\n\nFix computation of bits needed for a PC in GC map.\nIn the case that ClassLinker::FindClass fails with a class loader,\nignore the exception and raise a NoClassDefFoundError.\nElide callee-save methods from stack traces.\n\nChange-Id: Ie0b7a544816e0c28d0f7df5821828aa84267cab7\n"
    },
    {
      "commit": "fbef9462e3bf2301dd5b337d351b6b70f7e31bc8",
      "tree": "2a373e07c766109a306f12a8169e57f4f4cfa0a7",
      "parents": [
        "6f45e8121ab05bb9dee9a039b959346e5476332a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 14 14:24:40 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 14 14:24:40 2011 -0800"
      },
      "message": "Fix 088 the way the test\u0027s author intended.\n\nNot only was some of the verification code disabled in dalvik, part of the\ntest was too. This test was _intended_ to check that we fail gracefully\nwhen our monitor-enter stack overflows. Re-enable the test, and throw a\nverification error on overflow.\n\nChange-Id: Iaa973633ecc59c3c4810b97ada80eae1e4db3db5\n"
    },
    {
      "commit": "b067ac2fe225c76fc9eb9434ef62cbb797bfa425",
      "tree": "7afaac5b70dbcc2515f769b0d000240b1f20f4ab",
      "parents": [
        "91250e0c3fb0ad758b9b97042a3fa86d5ae76763"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 18:05:09 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 14 07:03:49 2011 -0800"
      },
      "message": "Fix for 073-mismatched-field test\n\nART distinguishes between static and instance field resolution whereas\nJava doesn\u0027t. Interface static fields bind more closely than those of\nsuperclasses. Implement field resolution code for the verifier so that\nit can determine incompatible class change errors when a static field\nbinds before an instance field.\nAlso don\u0027t search all iftable interfaces, search them in superclass\norder (as the specification dictates).\n\nChange-Id: I43b45bada8b9099ad805b244be10833d59bacfe3\n"
    },
    {
      "commit": "91250e0c3fb0ad758b9b97042a3fa86d5ae76763",
      "tree": "bb6f32bfc5178a9d56445b79ae0fd6763162e0a8",
      "parents": [
        "42298fab70318f39e53c0595e9fc570548dc253c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 22:30:35 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 22:30:35 2011 -0800"
      },
      "message": "Knock 0.5s off the Calculator startup time.\n\nDown to 2.5s on mysid. We now only mess around with std::strings when we need\nto synthesize a descriptor. If we can just hand out a const char* straight from\nthe dex file -- which most of the time we can -- we now do.\n\nChange-Id: Iddec7062d8bd578bd25f671eb4d597e9ed064d65\n"
    },
    {
      "commit": "955724179c6c739524f610023287f56b24dc31de",
      "tree": "64f751693e72173ae0d044d8c54989b01f1195af",
      "parents": [
        "b87f73ea7524f6eb9da6da1af931a3d3fbb833ff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 18:14:20 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Dec 13 18:14:20 2011 -0800"
      },
      "message": "Don\u0027t default-construct std::strings and then assign them.\n\nChange-Id: I8c994d1e6a8d2ebe52eaa4f0132e0deb2ecfa5f3\n"
    },
    {
      "commit": "573db4a2077380d81fa74ee2309162530db87a98",
      "tree": "d9aa3090b1fdb26e06b3ce9e03620c389d26186e",
      "parents": [
        "26fee74850cffaa3ab6b4f2dc42a0816e3c1b800"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 15:30:50 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 15:30:50 2011 -0800"
      },
      "message": "Fix VM test 077\n\nRecognize incompatible class changes in resolution of direct methods.\nRecognize incompatible changes to invokevirtual by rewriting in the\nverifier.\n\nChange-Id: Ie7d938bae39179d44ac3bedb575a3ccf73ac43b2\n"
    },
    {
      "commit": "26fee74850cffaa3ab6b4f2dc42a0816e3c1b800",
      "tree": "d182ef6577ba73c903559f246dc02ee146dfcd4a",
      "parents": [
        "a51224dab695dcd0a79f266af1f883268520866b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 13:28:31 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 13:28:31 2011 -0800"
      },
      "message": "Verify aput of primitives with component type\n\nTo work around the lack of typing causing int/float double/long\nconfusion.\n\nChange-Id: I8ccb33793ca93f3155cd85c7ef9c9b3dc58d3527\n"
    },
    {
      "commit": "a51224dab695dcd0a79f266af1f883268520866b",
      "tree": "1a6830e094d8aaa02692a50199bb1d54ac45711e",
      "parents": [
        "5fc5a0c8801028195ead49910b98a3490aa506ea"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 13:08:39 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 13:08:39 2011 -0800"
      },
      "message": "Fix for vm test 019\n\nVerify that a register holds the type expected by the instruction and\nnot the component type for an array store, we know at runtime problems\nwill result in array store exceptions.\n\nChange-Id: I0b48692f0f969af914a1b7024b2cd80d21ed6aed\n"
    },
    {
      "commit": "9f1ab126ff140f452c124dddf9b8a1ced6daf89a",
      "tree": "e65ecdb43832e3d53287a2c927949ae7409a92e7",
      "parents": [
        "6ef827a33b04fd5413d2ad88fd4599ca1920c824"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Dec 12 08:52:43 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Dec 12 13:38:55 2011 -0800"
      },
      "message": "Address various dex2oat hangs\n\nclass_linker.cc - add support for no such field error\ndex_verifier.cc - address cases where type information isn\u0027t available\ndue to verification errors\ndex_verifier.h - support for monitor nesting upto 64 deep\n\nThese changes address Bug: 5742499, Bug: 5743100, Bug: 5742810\n\nChange-Id: I2e9a77059314c84f21ad5d194bad77c7f2fa2ee9\n"
    },
    {
      "commit": "f1864ef79ae412d9ab93ebe6a662e6d5522af205",
      "tree": "5d15805f99970d0ccbff5460be5e3f72432dd2f5",
      "parents": [
        "7b3cdfcca472b779cf8745fb8460935e56229f11"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 09 12:39:48 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 09 12:39:48 2011 -0800"
      },
      "message": "Don\u0027t replace dex instructions in the verifier when not the compiler.\n\nChange-Id: I43b4cde53301a31806b608ceb110af1de0be0b4d\n"
    },
    {
      "commit": "6d4d9fcb4f01e287ee29e81cd1c941ee5d11d379",
      "tree": "4c715bef86a3c5a47f9cea43c4a092cf4766ed4b",
      "parents": [
        "86b0010c79ef95b5333cd540b7d3af34a9f1a643"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 30 16:24:48 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 06 14:02:09 2011 -0800"
      },
      "message": "Reduce meta-data object sizes, introduce meta-data helper classes.\n\nChange-Id: Id14ad218f1c74c659701352fdf1a45bf6444daa3\n"
    },
    {
      "commit": "0571d357843c53e042f370f5f2c2e9aa3fe803a9",
      "tree": "197e5b1c0b1bf0ee8cc0e1960470d0a8d203b4af",
      "parents": [
        "33dc7717cd16592bcc825350bea6305be9eb2ea1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 03 19:51:38 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Nov 13 11:57:18 2011 -0800"
      },
      "message": "Refactor the use of Method by the compiler.\n\nRemove the dependence on the Method object in dex2oat, allowing lazier\nresolution.\nIntroduce new find and iterators in DexFile to simplify common\noperations and avoid misuse of class data items.\n\nChange-Id: I39fb8252190f543d89d8b233076355cec310fe08\n"
    }
  ],
  "next": "55d249fc84c313aa071a717f53f9164fa49e2a59"
}
