)]}'
{
  "log": [
    {
      "commit": "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986",
      "tree": "e6f2bd0e62c7bd72753499140a854a1c4e5a976a",
      "parents": [
        "1d9314c989114f330297d52dae3fe0cd4848b183"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 24 15:32:56 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 24 18:19:28 2013 -0700"
      },
      "message": "Enable devirtualization for abstract and sub-class methods.\n\nIf we know the type of a receiver in the verifier we record devirtualization\ndata. Currently we only use this data to avoid virtual method dispatch when\nwe know the receiver of a method isn\u0027t a sub-class. This change allows\ndevirtualization of virtual and interface methods when we know the receiver\u0027s\ntype and the method the we\u0027d find via dispatch is either known within boot or\nhas a reference from the current dex file.\n\nPass the receiver through to the method resolution trampoline as\ndevirtualization may mean the dex method index needs to be made more accurate\nfor the receiver.\n\nTidy up method devirtualization and related statistics.\n\nPush the devirtualization map lookup into a less common case to avoid\ntaking its lock.\n\nMake MethodReference a struct rather than a typedef of a pair, so the members\ncan have more meaningful names than first and second.\n\nRough statistics show that we devirtualize using this change around 2.5% of\nthe time, whilst some apps like GMS core devirtualize over 3.4% of the time.\n\nChange-Id: Ieed3471dbedfc4cc881d652631b67176bb37d394\n"
    },
    {
      "commit": "29e2e7e6807824f0d5dbfdd15835d2854ea7717c",
      "tree": "563969c30a3aa650e6da91efb16dbb69843f95ca",
      "parents": [
        "7b15b1b6809a3dc46c69610491d1b10513f449db"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Wed May 22 14:52:11 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Wed May 22 14:52:11 2013 -0700"
      },
      "message": "Use UniquePtr in MethodVerifier::GenerateDevirtMap.\n\nAlso fix some indentation.\n\nChange-Id: I384d9c11e316f898ff26d0de533e4c4193db10b5\n"
    },
    {
      "commit": "02c42237741b5573f9d790a5a0f17f408dceb543",
      "tree": "293d72039e2e1a0e56fbcb572c6d92ccedc5581a",
      "parents": [
        "cf9773a7adff883012dbd519a66e85f1f7aaaa11"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Tue Apr 30 12:09:45 2013 -0700"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Thu May 02 14:19:17 2013 -0700"
      },
      "message": "Supporting de-virtualization for precise types.\n\nSharpening invoke-virtual and invoke-interface calls to invoke-direct for cases\nwhere the type of \"this\" pointer in the invoke- params is precisely known.\n\nInstructions that have an invoke opcode are marked as interesting, for each invoke-virtual/interface\nwe come across with a precise type for \"this\" we mark the location as a candidate for sharpening,\nresolve the concrete method and save its method reference \u003cDexFile, DexMethodIndex\u003e to be sharpened\nin CompilerDriver::ComputeInvokeInfo().\n\nAdded a new entry to AOT statistics showing the percentage of sharpened calls that were based on\ntype analysis.\n\nFix a minor bug in type creation for GetSuperClass(). Previously super class of a precise reference\nhad precise types created which is not necessarily the case.\n\nFixed DCHECK in Class::FindVirtualMethodForVirtual to handle cases for Miranda methods.\n\nSharpening only takes place for cases where no soft failures happen at verification time.\n\nChange-Id: Ic027d0226d6f95260c1918014cb6313f2e0ca455\n"
    },
    {
      "commit": "302a72d6e0e99208db629053dd77dda85896f707",
      "tree": "932d35c7dc03161f81f87dd1654b0330f942668c",
      "parents": [
        "31d4b8e0058b33e2c5ce792a69e5e897583652e2"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 30 09:45:06 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 30 09:45:06 2013 -0700"
      },
      "message": "Revert \"Supporting de-virtualization for precise types.\"\n\nThis reverts commit 31d4b8e0058b33e2c5ce792a69e5e897583652e2.\n"
    },
    {
      "commit": "31d4b8e0058b33e2c5ce792a69e5e897583652e2",
      "tree": "8b981aa8c0dcb2e540f5ba26951302f720299f8e",
      "parents": [
        "88fc036842eb3c48acd5d3b01e75b3012c996d90"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Mon Apr 29 11:31:03 2013 -0700"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Mon Apr 29 13:06:07 2013 -0700"
      },
      "message": "Supporting de-virtualization for precise types.\n\nSharpening invoke-virtual and invoke-interface calls to invoke-direct for cases\nwhere the type of \"this\" pointer in the invoke- params is precisely known.\n\nInstructions that have an invoke opcode are marked as interesting, for each invoke-virtual/interface\nwe come across with a precise type for \"this\" we mark the location as a candidate for sharpening,\nresolve the concrete method and save its method reference \u003cDexFile, DexMethodIndex\u003e to be sharpened\nin CompilerDriver::ComputeInvokeInfo().\n\nAdded a new entry to AOT statistics showing the percentage of sharpened calls that were based on\ntype analysis.\n\nFix a minor bug in type creation for GetSuperClass(). Previously super class of a precise reference\nhad precise types created which is not necessarily the case.\n\nFixed DCHECK in Class::FindVirtualMethodForVirtual to handle cases for Miranda methods.\n\nChange-Id: I0626d5cd1bc70a685db71abec067370ebdaf6edc\n"
    },
    {
      "commit": "f4da60751631f8bc098fbd04517f305bf7f20ae3",
      "tree": "5a359b033ee308154ffbdcfea47708bacd1c9cb3",
      "parents": [
        "b0682d5f7970470130f43d35f37ae7605a8a9bb8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 26 22:53:05 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Apr 26 22:53:05 2013 +0000"
      },
      "message": "Revert \"Supporting de-virtualization for precise types.\"\n\nThis reverts commit b0682d5f7970470130f43d35f37ae7605a8a9bb8\n\nChange-Id: I2b0dc3e716ee5c23b89d9fa6eb0ef05c24784b3e\n"
    },
    {
      "commit": "b0682d5f7970470130f43d35f37ae7605a8a9bb8",
      "tree": "3bf3d9e1b3ed5da8e7db5c9e736e6cde7c5e30c8",
      "parents": [
        "ba1814eeac6adb44f2f78317556b3484b19e02fc"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Fri Apr 05 19:13:07 2013 -0700"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Fri Apr 26 10:12:52 2013 -0700"
      },
      "message": "Supporting de-virtualization for precise types.\n\nSharpening invoke-virtual and invoke-interface calls to invoke-direct for cases\nwhere the type of \"this\" pointer in the invoke- params is precisely known.\n\nInstructions that have an invoke opcode are marked as interesting, for each invoke-virtual/interface\nwe come across with a precise type for \"this\" we mark the location as a candidate for sharpening,\nresolve the concrete method and save its method reference \u003cDexFile, DexMethodIndex\u003e to be sharpened\nin CompilerDriver::ComputeInvokeInfo().\n\nAdded a new entry to AOT statistics showing the percentage of sharpened calls that were based on\ntype analysis.\n\nFix a minor bug in type creation for GetSuperClass(). Previously super class of a precise reference\nhad precise types created which is not necessarily the case.\n\nChange-Id: Iee61858e84242dfc82be363ee221d2747a1ac86a\n"
    },
    {
      "commit": "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": "51a5fb78d1b03b5235c2ae45414235282182bb86",
      "tree": "55816eb63505f5f2c65c9298d4412fea3eed1bf4",
      "parents": [
        "857fe960a02834c0d6b8792dcc0af8143995cb1f"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Tue Feb 19 14:25:01 2013 -0800"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Fri Mar 29 09:13:59 2013 -0700"
      },
      "message": "Refactoring type verification in Art.\n\nEach type now has its own class instead of one class with enums.\n\nImproved test cases for reg_type. Added test cases for testing precision, Merge,\nDump messages, etc.\n\nFixed bugs for:\n        1- Creating precise references in cache was ignoring the passed parameter\n        for reference types and only creating precise for final classes. Now creating\n        for final classes or if boolean set to true.\n        2- Precise constants were created if precise boolean passed as false ( and vice\n           versa ). Fixed.\n\nChange-Id: Ia5450d6c732f848e6b94298e43e8cfb819897fc6\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": "1212a022fa5f8ef9585d765b1809521812af882c",
      "tree": "67ebdc1d3274c78978b3d06630874d7641d858d1",
      "parents": [
        "8e6960569e9de6350d7da89aa02efe0e4b924d6f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 10:48:41 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 04 11:54:04 2013 -0800"
      },
      "message": "Move the Compiler to CompilerDriver.\n\nChange-Id: I0bb4d3c2b79b45fd8ef180688c767712b0c55978\n"
    },
    {
      "commit": "c928de90ad22ecdf83c18a07008409595f13d3b1",
      "tree": "065a08f379960f7ba946318aaa742d7ddd0c94bd",
      "parents": [
        "0f827169742aad6209d830db773a101849c32a83"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "message": "Remove Iceland.\n\nART_USE_LLVM_COMPILER is removed and when necessary ART_USE_PORTABLE_COMPILER\nis used in #ifdefs.\n\nChange-Id: Iffa9ce5b0246c7c427ccc4e67ecc134624632e55\n"
    },
    {
      "commit": "7b3ddd27c223fcce784314f78fda7f67dcb37730",
      "tree": "337784d971a0e2647dab27ddee9e5e5f5fb3bd4a",
      "parents": [
        "21bdc3d5a62767ea966a9c0e96b28095f7ccd798"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 21 15:19:52 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 21 16:09:44 2013 -0800"
      },
      "message": "Refactor DescribeVRegs to allow caching.\n\nIn oatdump we want to describe vregs at regular intervals and reverifying is\nslow. Refactor MethodVerifier to allow this. Move instruction flags into its\nown file so the complete type is visible to files other than method verifier.\n\nChange-Id: I14d491e7376ab1d7117a9725847870ef1337803f\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": "4993bbc8eda377804e585efd918f8ab9d9eab7d4",
      "tree": "bc49a14ce0c2718155444ac67152382e8c313326",
      "parents": [
        "16848f6c5c4d8394d491e887d7d805beddf173ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 15:41:25 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 16:05:44 2013 -0800"
      },
      "message": "Implement ThreadReference.OwnedMonitors.\n\nFix the method verifier so it can cope with not being able to resolve\ntypes in the application class loader, so we can find monitors held in\napplication code (this will improve SIGQUIT too).\n\nAlso remove the sort|uniq of dex pcs by just recording the last work\nline we see.\n\nChange-Id: I86ff27b42800a858489d112931c9aed2fb85ebdc\n"
    },
    {
      "commit": "80537bb742dff4ccdf6d04b1c0bb7d2179acc8cb",
      "tree": "38c5fc3dd0344ddf721320c07e39136b37a38815",
      "parents": [
        "6641ea12b98dda9ec45d29f20e43f85698b88a02"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 04 16:37:26 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 11:24:50 2013 -0800"
      },
      "message": "Fix and reenable lock dumping in stack dumps.\n\nThis patch adds a flag to tell the method verifier not to load\nclasses when resolving types, so that when we ask the method verifier\nto find monitor-enter instructions for stack dumping it doesn\u0027t try\nto allocate (since the most common cause of stack dumping is SIGQUIT).\nWe believe that all the classes we care about will be loaded already\nanyway, since we\u0027re only interested in _held_ locks, and you can only\nhold a lock if you\u0027ve executed the code that leads to the monitor-enter,\nand you can\u0027t execute the code without loading the relevant classes.\nAny not-yet-loaded classes shouldn\u0027t be relevant for our purposes.\n\nAlso clarify the stack dumps when a thread is starting up; although\nstrictly speaking a thread might be in the kNative state, it\u0027s more\nhelpful if we also explicitly say that it\u0027s still starting up.\n\nAlso a few GC log output fixes.\n\nChange-Id: Ibf8519e9bde27838c511eafa5c13734c5bebeab6\n"
    },
    {
      "commit": "e222ee0b794f941af4fb1b32fb8224e32942ea7b",
      "tree": "0b9f5fe6398663c9d871881cf7de28eca8bdfc6f",
      "parents": [
        "1aa246dec5abe212f699de1413a0c4a191ca364a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 14:41:43 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 15:24:45 2012 -0800"
      },
      "message": "Move stringpiece.h and stringprintf.h to base/.\n\nChange-Id: I7f71b4a12f99c5f81771146c66629ae5a947b229\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": "ce4cc0d1818e872c1c7f3c3519a82259afd5c288",
      "tree": "308f2c30e5a842a5e459d96e730ca4432a020f4f",
      "parents": [
        "823b8acdf2c8274ff93b685e50a93ab9afc6af8b"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Nov 18 16:59:53 2012 -0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Dec 04 11:07:34 2012 -0800"
      },
      "message": "Using gcmap instead of shadow frame.\n\nFix misuse of TBAAJRuntime \u0026 TBAARuntimeInfo. Now, the TBAAJRuntime is\nonly for runtime support function.\n\nUpdate DexPC before lock object and suspend.\n\nChange-Id: I40fa37f4863fe6e127328a8413285ee3c62e8505\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": "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"
    }
  ],
  "next": "e7d856b911222aa000ca2be0f8f63f5b292141c3"
}
