)]}'
{
  "log": [
    {
      "commit": "a3faaf4bece7f42529c013fe87bd41de59798656",
      "tree": "933e312a4aa4d69b2d7da7eda4d592419cec4729",
      "parents": [
        "a9a624b2be2180e6bd33f02c89fb8521376a2e8c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Sep 03 19:07:00 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Sep 24 15:18:36 2013 -0700"
      },
      "message": "Fix handling of unresolved references in verifier.\n\nThe verifier should not treat use of unresolved references as a reason to reject\nthe entire class. Instead, the verifier treats the instruction as a throw. If\nthat class is run, the interpreter with extra checks will throw an exception.\n\nBug: 10457426\n\nChange-Id: I3799da843a7ffb3519bbf6dc13a6276519d9cb95\n"
    },
    {
      "commit": "8b2c0b9abc3f520495f4387ea040132ba85cae69",
      "tree": "13ea7e5c4e3d1804ec8d420d36f7ea5ab18f6ac0",
      "parents": [
        "5712d5d04640925970db9c98938ffaf806b3962c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 02:56:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 15:17:12 2013 -0700"
      },
      "message": "Use class def index from java.lang.Class.\n\nBug: 10244719\nDepends on:\nhttps://googleplex-android-review.git.corp.google.com/362363\nThis removes the computation of the dex file index, when necessary this is\ncomputed by searching the dex file. Its only necessary in\ndalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the\nlatter not showing up significantly in profiling with this change.\n\nChange-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c\n"
    },
    {
      "commit": "c642ec8987746a2a44b990bd5354306242d709da",
      "tree": "bc257f588bd2623eadb8b4af0b99df3096993c42",
      "parents": [
        "8c6326c528aa785041f0d8c08e24c6b793ba5b6e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 04 16:11:55 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 04 16:14:13 2013 -0700"
      },
      "message": "Fix verifier upcasting type after instance_of.\n\nThe verifier automatically changed the type of a register to be\nthe checked type in an instance_of instruction, even if the\nchecked type was the register type\u0027s superclass. This would loosen\nthe type information of the register and cause problems later.\n\nBug: 10614872\n\nChange-Id: I67aa2c66be754d946e928b8a64431f193539b842\n"
    },
    {
      "commit": "b8a0b94735f188bc739e4c55479c37699006b881",
      "tree": "6620437e5019924f9da7b1c9a6408cf4a113b3e5",
      "parents": [
        "aa836f7fa2ef359cf8ec1ef98d924f7971ba8352"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 20 18:09:52 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 20 18:11:09 2013 -0700"
      },
      "message": "Switch JNI globals lock to reader-writer.\n\nAlso, verifier rejected classes lock. These locks show as contended during\ndex2oat, however, they\u0027re commonly only read access is required.\n\nChange-Id: If8bb834cc69cd8c26494c87fb7f7b20d4e41cdfd\n"
    },
    {
      "commit": "90af14d2743614e3e1453984b14258a6f145501d",
      "tree": "defcc7bdc0a85de36695b7c7285d7d5759ade92c",
      "parents": [
        "212ec8f32919d50a1e1cb7ea4b3b91ca938ae4e6"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu Aug 15 17:50:16 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Fri Aug 16 14:34:53 2013 -0700"
      },
      "message": "Get SEA fibonacci running in interpreter mode.\n\nAndroid.mk: Added new file to build.\ncompile_driver.cc: Moved SE_IR usage test in the block\n         protected by bool compile, which is enabled by\n         adding a sepatate test in IsCnadidateForCompilation.\nclass_linker.cc: Added check in NeedsInterpreter to enable SEA_IR.\nart_method-inl.h: DIsabled check in SEA_IR mode.\nmethod_verifier.cc: Added check for SEA_IR mode.\nmethod_verifier.h: Chenged IsCandidateForCompilation signature to\n         allow testing the function name (for SEA_IR selective\n         compilation).\ndot_gen.h: Updated ART file API usage to altest version.\nsea_ir/frontend.cc: Passing function symbol name to CompileMethod.\ninstruction_Nodes.h: Added  accessor for method index for\n         InvokeStatic IR node.\nsea.cc: Added additional IR SignatureNode for function calls (extra\n         Method parameter). Fixed UnnamedConstant constant value.\nsea.h: Passing function_name to GenerateLLVM.\ntype_inference_visitor.cc: Aded type for first (placeholder) method\n         parameter.\n\nChange-Id: I295858ea0761a3dffb36f35748d8b93d4919d6a9\n"
    },
    {
      "commit": "0f40ac31134d9ae0f059d4c448165599dc8459c1",
      "tree": "2f908f5d7a51d4e7b028b307e5d43a9e794abc10",
      "parents": [
        "97a03e3cc86002b10889562a6b5b164cd2b99e7e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 22:10:30 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 22:30:39 2013 -0700"
      },
      "message": "Fix races in small mode compiler filters setup\n\nFixes host tests in small art mode.\n\nChange-Id: I2579f872583f425607f91c1e58df68b05b5098bb\n"
    },
    {
      "commit": "97a03e3cc86002b10889562a6b5b164cd2b99e7e",
      "tree": "31a25bc1a5e8ab191d101764deabaaa53d37cc26",
      "parents": [
        "1a4d6d809b4c24580b4667e3075d545738d83ec7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 21:33:58 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 21:33:58 2013 -0700"
      },
      "message": "Fix small art build.\n\nChange-Id: Idaade55babbab192c87b32c077d2ec01ac9ef0e2\n"
    },
    {
      "commit": "1d1e267136732c2b123470b05c06fa536fa6dbbb",
      "tree": "a2c4cf3b5ffa7199d38db677886926c0b9a813cf",
      "parents": [
        "a804b711f21db74f9fb0dd7a5854656b1252fb97",
        "ea46f950e7a51585db293cd7f047de190a482414"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 14 02:15:57 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Aug 14 02:15:58 2013 +0000"
      },
      "message": "Merge \"Refactor java.lang.reflect implementation\" into dalvik-dev"
    },
    {
      "commit": "75a43f10f55e2aa550de51e969cc1e60d583b632",
      "tree": "32667690ae49d1168d8310692af915e497a6a392",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Aug 13 17:22:14 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Aug 13 19:13:59 2013 -0700"
      },
      "message": "Clean up logcat spam from compiler and verifier\n\nMoved to VLOG(...), adding verifer tag for VLOG.\n\nChange-Id: Ia9ac8aeaf5aa1f4881e384003e82a66e560c5692\n"
    },
    {
      "commit": "ea46f950e7a51585db293cd7f047de190a482414",
      "tree": "9dddc8073547a2dcb58a19e1728932a89cb149c3",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 30 01:26:50 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 18:09:46 2013 -0700"
      },
      "message": "Refactor java.lang.reflect implementation\n\nCherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.\n\nMove to ArtMethod/Field instead of AbstractMethod/Field and have\njava.lang.reflect APIs delegate to ArtMethod/ArtField.\n\nBug: 10014286.\n\nChange-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7\n"
    },
    {
      "commit": "08bf1967611965b65ffd5de1aa603b60e7b2d6a8",
      "tree": "a9272c3a767cee878fdad81207bd8037f08dd830",
      "parents": [
        "73a79074c06d8b0a8c14946438c59c3821d88fe7"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Mon Aug 12 08:53:04 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Aug 13 10:09:48 2013 -0700"
      },
      "message": "Work on SMALL_ART and PORTABLE working at the same time.\n\nChange-Id: Iddedf63b6f9d908717a4d30f963e9b81a9604d49\n"
    },
    {
      "commit": "c9f9444a0d58f395fee5ddd9f55ff32f92cb7b57",
      "tree": "2626125a263f8cbb0b733631a7c6fd2a07e9360a",
      "parents": [
        "b0f871965d588cce066785728fb105248b38bb4a",
        "a024a0686c3b0fea13f362bff70d65981e5febc5"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Aug 08 14:01:03 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Aug 08 14:01:03 2013 -0700"
      },
      "message": "am a024a068: Compilation filter\n\n* commit \u0027a024a0686c3b0fea13f362bff70d65981e5febc5\u0027:\n  Compilation filter\n"
    },
    {
      "commit": "a024a0686c3b0fea13f362bff70d65981e5febc5",
      "tree": "99b003e7524544156a4e94bcca7daa41ed4d4b77",
      "parents": [
        "e0a53e99e2a01f8668d6616c3cec7e2f5a711286"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Wed Jul 31 10:47:37 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Aug 08 13:30:16 2013 -0700"
      },
      "message": "Compilation filter\n\nThis CL introduces a static compilation filter mechanism intended\nto allow us to reduce compilation time and space requirements until\nwe have a profiling mechanism in place.\n\nIt supports 5 modes of filtering:\n\n   o interpret-only (compile nothing)\n   o deferred-compilation (compile only those methods believe to be\n     compute-intensive)\n   o space (optimized for space)\n   o balanced (best return on space investment)\n   o speed (compile everything)\n\nA future CL will allow the default filtering mode to be set\nvia system property.  For now, you can pass it in via command\nline as follows:\n\n   dalvikvm -compiler-filter:[interpret-only|defer-compilation|\n                              space|balanced|speed]\n\nor dex2oat --runtime-arg -compiler-filter:[one of the above modes]\n\nCreating a file named art/SMALL_ART will force the filter\ndefault to interpret-only.  Later on we\u0027ll move this capability\nto a persistent system property.\n\nor modify kDefaultCompilerFilter in runtime.h\n\nIt also changes the compiler driver to allow the compilers to\ndecline to compile a method by return NULL.\n\nChange-Id: Ic73411818f8bb845a4a19a05b0395c50902c534f\n"
    },
    {
      "commit": "a464748006d101407108c3d9eefd865c44cce695",
      "tree": "090fc2a30d5a0dbbc6fa6c12c432d2f03d27efaa",
      "parents": [
        "9642c96bd5a1ccc4e221de9c0af4a545af8182d2"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Aug 06 15:35:47 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Aug 06 15:35:47 2013 -0700"
      },
      "message": "Verifier checks that primitive put array/field type matches insn type.\n\nChange-Id: Idd68a36d26451459e55fc586bbd1e71c51a81be9\n"
    },
    {
      "commit": "b9c37fb5746cc240e86677e56cb0d74d829e3504",
      "tree": "f10bf94f63ad30aed84826db9a2dd73743152ee8",
      "parents": [
        "99b1c14fc9f517f4882a596958ad2a0977d92daa"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 05 17:47:40 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Aug 05 17:47:40 2013 +0200"
      },
      "message": "Use reader writer mutex for safe checkcast map.\n\nUse a ReaderWriterMutex to protect MethodVerifier::safecast_map_ like\nwhat\u0027s done for MethodVerifier::dex_gc_maps_ and MethodVerifier::devirt_maps_.\n\nChange-Id: Id2ac9c290cc524eb992ea7cabe63766e88753747\n"
    },
    {
      "commit": "fe1f7c84369abbf5a0121557aa0c6c58e9477710",
      "tree": "8dbb3178123556db721a982703260db51c8df1e3",
      "parents": [
        "b24b4a7e0c4f9bbea49f9dd95b2600080c8293d9"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 01 14:50:24 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 01 14:50:24 2013 -0700"
      },
      "message": "Move verification of primitive type puts into helper method.\n\nChange-Id: Ia40d9f85303a52e20ca57acf13a0cfc8a9922024\n"
    },
    {
      "commit": "b24b4a7e0c4f9bbea49f9dd95b2600080c8293d9",
      "tree": "a59863dc34ae5262a418d855fe3f55eeb452b9bd",
      "parents": [
        "8d4fb0eb94ea3dd5db9461230e2c11926e4ebdb4"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jul 31 13:47:31 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 01 13:47:26 2013 -0700"
      },
      "message": "Make verifier allow integral types to be put in integral type arrays.\n\nThis fixes a problem where the verifier was rejecting when an integer\nis put into a byte array. This also more closely matches the RI.\n\nAlso fixes various issues with debugging checks caught by cts.\n\nBug 10097083\n\nChange-Id: Ie816fcdd85d6dc898feffa1e3fea8cfc2c6946ff\n"
    },
    {
      "commit": "9fc16eb43fe938f0cddb13638bd7cbc2ea9534a2",
      "tree": "42be6682a5c6540c944a37c62f82c5635ab9e81e",
      "parents": [
        "0418ae2bdd996b64f733b1290080e3f98a05609f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 31 14:49:16 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 31 14:52:50 2013 -0700"
      },
      "message": "Don\u0027t add barriers to clinit methods.\n\nChange-Id: I13e6c008feb8c19e452d6e2f88b2bbbcac997de5\n"
    },
    {
      "commit": "c449aa8151bf81d93d22ff24677ccf09a6da218e",
      "tree": "343274bb1e635bc503ae0ffc44c68ec44f6b69e5",
      "parents": [
        "c95d6b1cb35b382804b9a310d32f66059eca65d9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 14:35:46 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 14:45:07 2013 -0700"
      },
      "message": "Clear exception if catch block doesn\u0027t have move-exception.\n\nBug: 10040419\n\nChange-Id: Icc7a55cb3cdfbc3efd2b161bbe22b3e5007de35f\n"
    },
    {
      "commit": "4221d61630ba9f5e386f0e13e40aa33a51a2b6ed",
      "tree": "b4c9a2df24db78b1c47625574d6e3dc91f31b1ff",
      "parents": [
        "024a7276735f0cdd4ff5691a12e698cc7c527d5f",
        "46a1270fad27d81904ed60d0df56761356af500d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Jul 28 00:43:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 28 00:43:02 2013 -0700"
      },
      "message": "am 46a1270f: Revert \"Support inline dex data\"\n\n* commit \u002746a1270fad27d81904ed60d0df56761356af500d\u0027:\n  Revert \"Support inline dex data\"\n"
    },
    {
      "commit": "024a7276735f0cdd4ff5691a12e698cc7c527d5f",
      "tree": "4348bf588e7cd427cf91d6bf8001fb3fa8d3b933",
      "parents": [
        "ecde136fb42c38cf9928982605abfcd6de46d86a",
        "64d8f18c94b23cb4ff908304aef4d9f3f5a85f39"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Jul 28 00:43:02 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Sun Jul 28 00:43:02 2013 -0700"
      },
      "message": "am 64d8f18c: Merge \"Support inline dex data\"\n\n* commit \u002764d8f18c94b23cb4ff908304aef4d9f3f5a85f39\u0027:\n  Support inline dex data\n"
    },
    {
      "commit": "46a1270fad27d81904ed60d0df56761356af500d",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "64d8f18c94b23cb4ff908304aef4d9f3f5a85f39"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Jul 27 14:36:07 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Jul 27 14:36:07 2013 -0700"
      },
      "message": "Revert \"Support inline dex data\"\n\nThis reverts commit 728328a441c6d3172283f3e44d120550997b5887.\n"
    },
    {
      "commit": "64d8f18c94b23cb4ff908304aef4d9f3f5a85f39",
      "tree": "48d5244620d5b5dcc99820a8879b455aa6fd4677",
      "parents": [
        "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
        "728328a441c6d3172283f3e44d120550997b5887"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Jul 26 23:47:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 26 23:47:18 2013 +0000"
      },
      "message": "Merge \"Support inline dex data\""
    },
    {
      "commit": "728328a441c6d3172283f3e44d120550997b5887",
      "tree": "886013afb34df67fa7d5feae0d007a508ec950d1",
      "parents": [
        "23d5cffcb8e32aaa6ce0895ade28849f72d90463"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Jul 26 16:26:08 2013 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Jul 26 16:46:14 2013 -0700"
      },
      "message": "Support inline dex data\n\nDx always places switch table and array data following executable\ncode.  However, embedding data inline appears to be legal - and\nthe Garmin Connect app does this.  Unknown is what tool generated\nthe odd dex code.  This CL reworks dex parsing to support inline data.\n\nFurther, a verification check to require a move-exception at\nthe beginning of catch regions is disabled.  Dalvik\u0027s verifier appears\nto only require that if a move-exception exists, it must be at\nthe beginning of the catch.  If there is value to the check\nrequiring a move-exception, we\u0027ll need to enable it based on a\nfuture dex version.\n\nChange-Id: I80c78544993acb999f7c62d32479c3c8455b56cb\n"
    },
    {
      "commit": "0f055d11096cb02563e9c040cd03c791fd8f69a3",
      "tree": "8c7e730f17174ab4e11786fde1c2a05c7039d507",
      "parents": [
        "93c3396f8b33539489763ebdfafcedb4127009d9",
        "7934ac288acfb2552bb0b06ec1f61e5820d924a4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 12:46:02 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 12:47:51 2013 -0700"
      },
      "message": "resolved conflicts for merge of 7934ac28 to dalvik-dev\n\nChange-Id: I8798a6f154463d3f92f6aca62f14130aec82d273\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\n"
    },
    {
      "commit": "93c3396f8b33539489763ebdfafcedb4127009d9",
      "tree": "ee31a41dc2365cd1bca83ee8b435bc5c6f1ca909",
      "parents": [
        "7a40f059c9d118c0d94716358297bd61bc6d1bf3"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:37:43 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:37:43 2013 -0700"
      },
      "message": "Fix style issues in MethodVerifier\n\nChange-Id: I3aa5929311863e40840acebc5efafecb949fdea5\n"
    },
    {
      "commit": "4d4adb1dae07bb7421e863732ab789413a3b43f0",
      "tree": "a0c7861c64f193065264478af397929be473184c",
      "parents": [
        "56eb9bc9da8d3863fef02891c2f4f2e4d996204d"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jul 24 16:14:19 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jul 26 10:24:55 2013 +0200"
      },
      "message": "Prevent verifier from creating unused compilation data.\n\nThe verifier used to create data which may be unused like GC map. This is the\ncase for non-compiled method (which are interpreted). This CL aims to optimize\nthis.\n\nHere are the changes:\n- Move compilation selection to MethodVerifier::IsCandidateForCompilation.\n- Compiler and verifier use this method to know if a method must be compiled.\n- Only create compilation data while compiling using Runtime::IsCompiler.\n- Do not create internal structures concerning GC map, ... in Runtime::Init and\nRuntime::Shutdown when we are not compiling.\n- Checks we are compiling when accessing these structures.\n- Add missing destruction of MethodVerifier::safecast_map_lock_ and\nMethodVerifier::safecast_map_ in Runtime::Shutdown.\n- Call Runtime::Shutdown just before Runtime instance is destroyed to avoid a\ncrash.\n- Add missing \"GUARDED_BY\" macro for MethodVerifier::rejected_classes_ field.\n- Add \"has_check_casts\" to avoid the safecast pass if there is no check-cast\ninstruction.\n- Add \"has_virtual_or_interface_invokes\" to avoid the devirtualization pass if\nthere is no invoke-virtual/range nor invoke-interface/range instructions.\n\nBug: 9987437\nChange-Id: I418ee99f63e4203409cf5b7d2c2295b22fcf24c1\n"
    },
    {
      "commit": "b8c7859f21f5ae4c9b90f2ef2effc51967299737",
      "tree": "7f7c06a648a8fe8b134cee82111935f27b1606b0",
      "parents": [
        "be576f48e4bf5c2afcaadd6e3a6d0f6a3153f031"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 25 23:52:52 2013 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 25 17:35:15 2013 -0700"
      },
      "message": "Revert \"Revert \"Remove non-live vregs from GC map on return.\"\"\n\nThis reverts commit 73dda0bc2adcd6a3a7d75f663a3559f8b527d485.\nIt also fixes the problematic line in the ReferenceMap test.\n\nChange-Id: Ic3b62db7c040853a5ddfed589f6e0acff25d82b7\n"
    },
    {
      "commit": "73dda0bc2adcd6a3a7d75f663a3559f8b527d485",
      "tree": "fc83c823a67a5e259dc19d81f9cba6b147124cf0",
      "parents": [
        "c0d120a0b1389f1f402d13e20b9e4abd9ab7cd95"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 24 23:46:43 2013 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 24 23:46:43 2013 +0000"
      },
      "message": "Revert \"Remove non-live vregs from GC map on return.\"\n\nThis change causes a test regression on the oat tests, back out until the change also updates the test for the new GC map values.\n\nThis reverts commit c0d120a0b1389f1f402d13e20b9e4abd9ab7cd95.\n\nChange-Id: I48bc951b1dad9a9ae83cccf0b5b68ad60fac052c\n"
    },
    {
      "commit": "c0d120a0b1389f1f402d13e20b9e4abd9ab7cd95",
      "tree": "fefb6e74d0bf3e4a48a6e0f58ca7a11ce3f0a098",
      "parents": [
        "db06306be76bcea3aabab2cecfb16ae2af542801"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 23 18:16:21 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 23 18:36:24 2013 -0700"
      },
      "message": "Remove non-live vregs from GC map on return.\n\nMark registers going into a return as conflict/bottom so that they aren\u0027t\nconsidered for GC maps and deoptimization.\n\nBug 4191345.\n\nChange-Id: I8af6c21824b6459788852be5417849e8ef999bcb\n"
    },
    {
      "commit": "6d376aec61fc57b4caa840c1ae309e4f4f589792",
      "tree": "196b8cd13874ebc6a99924b7cb86eba6cf02e36d",
      "parents": [
        "a3d6b8cb884fce2fe34258e9d582b11ea9545fd9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 23 15:12:40 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 23 15:12:40 2013 -0700"
      },
      "message": "Tidy ws and document verifier instruction flags.\n\nChange-Id: I6c58a76f3373b17fc001480c4db069fc942fce3a\n"
    },
    {
      "commit": "02c8cc6d1312a2b55533f02f6369dc7c94672f90",
      "tree": "4e4a268e8cb82dcd95f8e29a8169b0396e20b0cc",
      "parents": [
        "6f485c62b9cfce3ab71020c646ab9f48d9d29d6d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 15:54:44 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 16:02:33 2013 -0700"
      },
      "message": "Fixing cpplint whitespace/blank_line, whitespace/end_of_line, whitespace/labels, whitespace/semicolon issues\n\nChange-Id: Ide4f8ea608338b3fed528de7582cfeb2011997b6\n"
    },
    {
      "commit": "1895ea386ca78573302483f589ebabd8ce1480e7",
      "tree": "d8c2d27ac746f29c8248fe17fd6b8e9872556fc4",
      "parents": [
        "3e3d591f781b771de89f3b989830da2b6ac6fac8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 13:28:37 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 14:38:27 2013 -0700"
      },
      "message": "Fix cpplint readability/fn_size issues\n\nChange-Id: I1efdb07a948a2af49db1a9d21ccab16dacc03a54\n"
    },
    {
      "commit": "df62950e7a32031b82360c407d46a37b94188fbb",
      "tree": "038bf95a2ce296ae3e0c30a131ac22c0986f0f52",
      "parents": [
        "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 22:39:56 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:13:18 2013 -0700"
      },
      "message": "Fix cpplint whitespace/parens issues\n\nChange-Id: Ifc678d59a8bed24ffddde5a0e543620b17b0aba9\n"
    },
    {
      "commit": "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c",
      "tree": "525a0f99f9381156367c988133b5d51d5dfef6f7",
      "parents": [
        "f69863b3039fc621ff4250e262d2a024d5e79ec8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 23:40:20 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:12:43 2013 -0700"
      },
      "message": "Fix cpplint whitespace/blank_line issues\n\nChange-Id: Ice937e95e23dd622c17054551d4ae4cebd0ef8a2\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "1581766afea0b31de0ed0f9f677fc3b92a29daae",
      "tree": "78793c270596134e5848dda3af66e674a7160017",
      "parents": [
        "3d76933675895667f212500a65c9c7ea2b6209fc",
        "51c2467e8771b56e25ae4f17f66522f979f57a7e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 08:50:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 08:50:57 2013 -0700"
      },
      "message": "resolved conflicts for merge of 51c2467e to dalvik-dev\n\nChange-Id: Ia7a8785d3220df6feeb999bc70f6d1917cad8d75\n"
    },
    {
      "commit": "51c2467e8771b56e25ae4f17f66522f979f57a7e",
      "tree": "16a66abbb45ea3fcc8c513c8511f34a46cd454c4",
      "parents": [
        "27c590edf6c24107b6473e84e526c432bd081f6e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 11 16:00:56 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 11 21:16:04 2013 -0700"
      },
      "message": "libart-compiler cleanup\n\n- Move compile-time code to src/compiler and libart-compiler\n  OatWriter, ImageWriter, ElfWriter, ElfFixup, ElfStripper, stub generation\n- Move ClassReference and MethodReference to remove MethodVerifier dependency on CompilerDriver\n- Move runtime_support_llvm.cc out of src/compiler and next to runtime_support.cc\n- Change dex2oat and gtests to directly depend on libart-compiler\n- Move non-common definitions from Android.common.mk to more specific makefiles\n- Add LOCAL_ADDITIONAL_DEPENDENCIES on appropriate makefiles\n\nChange-Id: I897027e69945914128f21f317a92caf9255bc600\n"
    },
    {
      "commit": "8a8539937f9cdbe37e0fba64101012a35ae204bf",
      "tree": "175a02cbc7eb7c8813c1ec5a8fa59a386875e39f",
      "parents": [
        "190dec7168f4fa45d85be0590051b0c53dba5378",
        "cc10e0eca724a005faa2d0d5a9445df7fe6ef1c6"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jul 03 07:25:34 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Wed Jul 03 07:25:35 2013 +0000"
      },
      "message": "Merge \"Constructor barrier support in DEX-to-DEX compiler.\" into dalvik-dev"
    },
    {
      "commit": "cc10e0eca724a005faa2d0d5a9445df7fe6ef1c6",
      "tree": "d7660a0eeaca72e422a55fe92d7b79a172714389",
      "parents": [
        "2cb33b8f7377f532cebed755be89bb351c150a22"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jun 28 14:24:48 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jul 01 10:59:28 2013 +0200"
      },
      "message": "Constructor barrier support in DEX-to-DEX compiler.\n\nBug: 9307738\n\nSome constructors require a barrier before returning. This CL introduces the\nRETURN-VOID-BARRIER instruction. The DEX-to-DEX compiler replaces all\nRETURN-VOID instructions where a barrier is required by this instruction.\nThe interpreter and the verifier are updated to support this new instruction.\n\nChange-Id: If31979b4027bc12157b933eda9fcbd5270edd202\n"
    },
    {
      "commit": "c15853b8b5da9dd8fb28e2adbbd61af34555e4c2",
      "tree": "946d064868a8f98894aaf926904744eefdf69e05",
      "parents": [
        "b126134010ebeee771da0eec7fa76ad13fe9a9c9"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 25 17:36:27 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jun 26 10:13:32 2013 +0200"
      },
      "message": "Cleanup quick support in verifier.\n\nBug: 9568063\n\nThis CL cleans up the way we are requesting for field/method being\naccessed/invoked by a -quick instruction.\n\nNow we let the verifier run completely and once it is done, we access the\nregister line of the instruction\u0027s dex PC and calculate the reference to the\nfield/method. This is pretty the same way the verifier checks the instruction\nbut here we get the final register line.\n\nChange-Id: I06f02b0ddeb1bbdd71de610cc0656057624f6e3b\n"
    },
    {
      "commit": "2d6ba5158d7fd459db2870df47300b517dc4d08c",
      "tree": "51e306969d4d707aee7a6bc36481390721e0f81f",
      "parents": [
        "1e2ee7de9dff66f7ca2bdf83a7262e21d75b37d1"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 11:31:37 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 24 15:29:06 2013 +0200"
      },
      "message": "Quickening support.\n\nThis CL adds quickening support for methods which are interpreted at runtime.\n\nThis CL introduces a DEX-to-DEX compiler. A method is now compiled in one of\nthe two following modes:\n- Native compilation: the method is compiled by the Quick or Portable backends.\nAt runtime, the generated native target-dependent code is executed.\n- DEX-to-DEX compilation: the method is executed by the interpreter at runtime.\nIts DEX code is compiled so some instructions can be replaced by special\ninstructions only valid at runtime. No native code is generated.\n\nThe quickening adds special instructions to improve runtime performance. They\nare \"-quick\" versions of the following instructions:\n- iget/iput\n- iget-wide/iput-wide\n- iget-object/iput-object\n- invoke-virtual/range.\n\nThese special instructions cannot be treated by the verifier since they lose\nthe field/method index referencing the field/method being accessed/invoked.\nTo prevent this, the DEX-to-DEX compiler is run only on methods of preverified\nclasses (without verification error at compilation time).\n\nThe DEX-to-DEX compiler implements quickening support using the CompilerDriver\ninterface like the native compiler does (Quick or Portable backends).\nTo replace instructions, the DEX-to-DEX compiler must be able to modify the\nmmapped DEX file. Since it can be read-only protected, the DEX-to-DEX compiler\nmust be able to temporarily change its protection to read-write mmapped file.\nTo achieve this, this CL adds support for changing DEX file protection with\nDexFile::EnableWrite and DexFile::DisableWrite methods. Besides, it also adds\na dedicated lock (DexFile::modification_lock) to ensure thread-safety and avoid\nconcurrent DEX file protection change (from a parallel DEX-to-DEX compiler on\nthe same DEX file).\n\nChange-Id: Iaafd103b9766810d7fc94a2c424a8fafba66e26a\n"
    },
    {
      "commit": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\n"
    },
    {
      "commit": "62342ec720069cebe55f45aea2ff8512a17e7d62",
      "tree": "36e0d8d230163049d5f98b83f821fcb051b69b5d",
      "parents": [
        "ccf124800fe025be3ca05c28a60514909ca66a11"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 11 10:26:37 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 11 10:26:37 2013 -0700"
      },
      "message": "Mark newly allocated objects as precise.\n\nNew-arrays were previously precise because of finality. Because this has been\nweakened we need to explicitly mark allocated arrays as precise.\nFix RegTypeCache::FromUninitialized that was not making newly allocated objects\nprecise if the class wasn\u0027t final. As the object is being allocated we can be\nsure of its preciseness.\nFor core, increases type based interface devirtualization from 0.136% to 2.873%\n(21x improvement) and general devirtualization from 1.874% to 4.663% (2.5x\nimprovement).\n\nChange-Id: I494c5b4de7227bd5c8ca9cf37399594182dcd6f8\n"
    },
    {
      "commit": "04f94f4f02093fa0fc58007fd5f4ef4c58f8270a",
      "tree": "2f42e40ccb002fbdce22c1d2d64e1f666ba09649",
      "parents": [
        "0dc9d342bed34c3f1ce5268ff7a6e27cdb9490d9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jun 10 15:09:26 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jun 10 15:09:26 2013 -0700"
      },
      "message": "Don\u0027t always mark array types as precise.\n\nArray types are always final, as they cannot be sub-classed, they may be\nassigned by types that aren\u0027t themselves, e.g. Object[] may be assigned a\nString[]. Introduce CannotBeAssignedFromOtherTypes to capture this property\nand use in the verifier instead of IsFinal to mark things as precise.\n\nChange-Id: I34debd3164ca1b876be94b6722457cee6e1e9bd3\n"
    },
    {
      "commit": "16e3d2cee40f3305f29f3ce0d2857ecc815e57bc",
      "tree": "2c529f1777d351dfff8ef95edf95a3dd84358bf4",
      "parents": [
        "d090cf4f2420a228251e27dbae600f4f44ae2c57"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 07 12:57:00 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 07 13:04:17 2013 -0700"
      },
      "message": "Check interface assignability strictly for check-cast elision.\n\nObjects are assignable to interfaces in the verifier as described in the long\nRegType::ClassJoin comment. Using IsAssignableFrom therefore brought about\na bug where all check-casts where the cast type was an interface were being\nelided. Introduce a new strict is assignable from routine that follows the\nruntime rather than the verifier is assignable from behavior.\n\nChange-Id: Iac30f71ce9116f2ef16c22acd73eea1c19c79d89\n"
    },
    {
      "commit": "9b36039438c06e3c39324914fc13389b36c68dd2",
      "tree": "926cc2e7aefefd8149e297d37fa240c1c9df23ff",
      "parents": [
        "c9e463c8aa083a5ed20293f42363ebff93de5f84"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 06 14:45:07 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 06 14:45:07 2013 -0700"
      },
      "message": "Peephole the type of a source of a move-object before instance-of.\n\nIn relation to dx\u0027s Bug:9316546 we need to look through move-objects to see\nwhere the original register comes from.\nThis increases the number of check-casts removed in boot.oat by ~0.5%.\n\nChange-Id: I0c8e94978f522d840764fa675e805496a3ff08b8\n"
    },
    {
      "commit": "c9e463c8aa083a5ed20293f42363ebff93de5f84",
      "tree": "9664a0f909043f822437e804339c11eb77896db7",
      "parents": [
        "a7005960d536cbfd7ba82d2fa52ee1865516435b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 16:52:26 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 23:57:52 2013 -0700"
      },
      "message": "Faster instance-of for final classes.\n\nIf a class is final and not and array we can generate a 1/0 based on class\nequality.\nUse a method\u0027s declaring class if it matches the instance-of class (common in\nJava equals methods).\nDon\u0027t do a class pointer comparison in the case of an abstract or interface\nclass, just go straight into the slow-path.\nFix performance bug where peep-hole verifier pass didn\u0027t merge into the\nfall-through line if the next instruction wasn\u0027t interesting.\n\nChange-Id: Idb47ec6acebfd25a344ed74adaacba02fafc7df2\n"
    },
    {
      "commit": "a7005960d536cbfd7ba82d2fa52ee1865516435b",
      "tree": "4b48df851ee745e56eff5843d8c7e4b9feee4ecb",
      "parents": [
        "fae370a044f5817f69937cccfd2d12a16b374266"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 09:22:10 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 09:22:10 2013 -0700"
      },
      "message": "Unresolved types aren\u0027t assignable from Object.\n\nAlso, don\u0027t eliminate check-cast if an access check is required.\n\nChange-Id: Ibb864e01917a93f77db4cf6eb53461c5c7cb0162\n"
    },
    {
      "commit": "fae370a044f5817f69937cccfd2d12a16b374266",
      "tree": "60af2a03b19e9bcca149e0519504da134d17f9ed",
      "parents": [
        "1b1e8da7287e199533bf63d72f16fdff99fe7f8e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 08:33:27 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 05 08:33:27 2013 -0700"
      },
      "message": "Don\u0027t apply instance-of peephole when vDest \u003d\u003d vSrc.\n\nBug: 9284898.\nAlso statistic to show check-cast ellision use.\nFix bug where the check-cast ellision was using wrong dex pc.\nAvoid a use of DecodedInstruction.\nOther formatting clean-up.\n\nChange-Id: Ibf67941a24148b615896d0be6f2f29ce5034e53a\n"
    },
    {
      "commit": "980d16b81f3dd78eb491b80bed9cd184016878c6",
      "tree": "93b06ee8e66568a3a224798c3aa35768ea0c7e05",
      "parents": [
        "8d3a117b374352a1853fae9b7306afeaaa9e3b91"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Jun 04 15:01:40 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Jun 04 15:50:14 2013 -0700"
      },
      "message": "Stage 2 of cast elision opt.\n\nNO code is generated for check-casts where we can statically determine the type is correct (through the instaceof-ifeq pattern).\n\nChange-Id: I4935375d7ffd4e7d4ff0aaad900c1a4de9deefaa\n"
    },
    {
      "commit": "5243e912875026f99428088db7e80cb11651d64e",
      "tree": "2c54105cd8d4f94a1309deb66b1a2809fd020eb7",
      "parents": [
        "534ae2b5fc648c7a69c7cd166c9f0440b14e5a38"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 21 10:55:07 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 03 11:06:39 2013 +0200"
      },
      "message": "Reduce use of DecodedInstruction in verifier.\n\nThis CL reduces the use of DecodedInstruction in verifier. It continues work\nstarted in https://googleplex-android-review.googlesource.com/#/c/311171.\n\nWe cannot remove it completely from verifier because of method\nMethodVerifier::VerifyInstruction. It is based on instruction flags rather than\ninstruction opcode. So we can\u0027t rely on instruction format. We may need to add\nVRegA, VRegB and VRegC methods for this case. This should also be required for\nthe compiler itself. Let\u0027s delay this change to another CL.\n\nChange-Id: I9d34df8b5bdb3db74e4959364c3cde90ef15585d\n"
    },
    {
      "commit": "d0583802482a7b2f54749edc4faa00303459f9a8",
      "tree": "640fb56bfe465aeed281a6585dc12836c87858f9",
      "parents": [
        "8427a3db9efb1c67d581fdae006b9afc5c1283b2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Jun 01 10:51:46 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Jun 01 11:16:53 2013 -0700"
      },
      "message": "Allow type based sharpening for imprecise references.\n\nWhen a reference is imprecise we may still be able to devirtualize if the\nmethod that is dispatched upon may not be overridden (ie final).\nSome other tidying of the devirtualization code.\n\nFor boot this increases the frequency of type based devirtualization by a\nlittle more than 0.01%.\n\nChange-Id: I050efbcc78c6b89135a6432bd7c2e946d8efbab4\n"
    },
    {
      "commit": "637c65b1e431fd90195b71c141b3590bd81cc91a",
      "tree": "30097d990e442290bbb4ce94620390075b2dd624",
      "parents": [
        "207bb6548f96636b40ee62124b37d2d82c3ddc6b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 11:46:00 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 21:31:37 2013 -0700"
      },
      "message": "Verifier improvements.\n\nMake type hierarchy for unresolved and unitialized types explicit.\nTidy and comment code.\nAdd DexFile::FindStringId that takes UTF-16 to avoid unnecessary UTF-8\nconversions during image writing.\nExplicitly disable RTTI that causes problems in debug builds.\n\nChange-Id: I701f1c3be8be5854fcabf5ec39e9f9c5d388aab0\n"
    },
    {
      "commit": "207bb6548f96636b40ee62124b37d2d82c3ddc6b",
      "tree": "520b7bba309fac9ee551898bace47e1768088b08",
      "parents": [
        "817e45a26552bc8420fbea9e657ea7884d1010d5",
        "39ebcb800aabedd0ffa6aa4aeac8aa4194c66e61"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 18:45:18 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri May 31 18:45:18 2013 +0000"
      },
      "message": "Merge \"More profiler driven tweaks.\" into dalvik-dev"
    },
    {
      "commit": "39ebcb800aabedd0ffa6aa4aeac8aa4194c66e61",
      "tree": "3efbbafa4cc39683a8bcbc2d76103c3d5bfbf072",
      "parents": [
        "f89eccd509475cb1949c729e796b26a2a248ae04"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 16:57:23 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 11:43:42 2013 -0700"
      },
      "message": "More profiler driven tweaks.\n\nMake more code inlinable by moving to header files.\nUse reserve on std::vectors to avoid reallocation.\n\nChange-Id: I1bf67d32dd58ff5c06dec73a247fadc3de593e91\n"
    },
    {
      "commit": "4e2fadad876b5f2ea5b5790b8a31dab300c685ff",
      "tree": "6bc5389b7074c7854bdc4ec580e63c14c661ad8a",
      "parents": [
        "104bdd890eb1e4d9d6645e41849dd5d0c9d6b7be",
        "2b87ddf36abff711fa2233c49bffc7ceb03b15d7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 20:21:35 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 30 20:21:35 2013 +0000"
      },
      "message": "Merge \"Elision of checks optimization.\" into dalvik-dev"
    },
    {
      "commit": "104bdd890eb1e4d9d6645e41849dd5d0c9d6b7be",
      "tree": "c0512735a0c58972061ebd5151ad82e03cce5670",
      "parents": [
        "49b21e38338f5c74b347c74da4b929fe43dc8396",
        "54c7e27ab00a32f7845e81505e125804e4a0b948"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 20:21:15 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 30 20:21:15 2013 +0000"
      },
      "message": "Merge \"Revert \"Elision of checks optimization.\"\" into dalvik-dev"
    },
    {
      "commit": "54c7e27ab00a32f7845e81505e125804e4a0b948",
      "tree": "e6f2bd0e62c7bd72753499140a854a1c4e5a976a",
      "parents": [
        "9e2d7f141d566f097b053f06053c374e8fe4392a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 20:21:05 2013 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 20:21:05 2013 +0000"
      },
      "message": "Revert \"Elision of checks optimization.\"\n\nThis reverts commit 9e2d7f141d566f097b053f06053c374e8fe4392a\n\nChange-Id: I0d47ce8c715b9cb6c2eb30d7d4ef296982ca507c\n"
    },
    {
      "commit": "2b87ddf36abff711fa2233c49bffc7ceb03b15d7",
      "tree": "b53d3ac42b11e938b3d52f30f0a71cbf2e822037",
      "parents": [
        "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue May 28 14:14:12 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 30 13:14:34 2013 -0700"
      },
      "message": "Elision of checks optimization.\n\nFix for Change-Id: Ide3ea09c0e60647da30226d43ae869ca612856f3\nWe now sharpen types in the verifier based on instance-of followed by ifeq/ifneq pattern.\nChanged comments to conform to 100 char per line limit.\nAdded asserts.\n\n\tmodified:   src/dex_file_verifier.cc\n\tmodified:   src/verifier/method_verifier.cc\n\tmodified:   src/verifier/register_line.cc\n\nChange-Id: Ibc8804d78e9ea7caefc21034897a5a500ea014f0\n"
    },
    {
      "commit": "4e60ff6fdab5ef8344eff67034108d3f8a6e138c",
      "tree": "21cd9fa97fc9283c9845d3422ddc2ee47d91bdf2",
      "parents": [
        "1bf8d4dbe5cb9891e8a1125ff1928b544efc243a",
        "9e2d7f141d566f097b053f06053c374e8fe4392a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 17:45:22 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu May 30 17:45:22 2013 +0000"
      },
      "message": "Merge \"Elision of checks optimization.\" into dalvik-dev"
    },
    {
      "commit": "9e2d7f141d566f097b053f06053c374e8fe4392a",
      "tree": "398a72cfe30a532b0ffde7483ad292c02b6afbf1",
      "parents": [
        "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue May 28 14:14:12 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 30 10:42:13 2013 -0700"
      },
      "message": "Elision of checks optimization.\n\nWe now sharpen types in the verifier based on instance-of followed by ifeq/ifneq pattern.\nChanged comments to conform to 100 char per line limit.\nAdded asserts.\n\n\tmodified:   src/dex_file_verifier.cc\n\tmodified:   src/verifier/method_verifier.cc\n\tmodified:   src/verifier/register_line.cc\n\nChange-Id: Ide3ea09c0e60647da30226d43ae869ca612856f3\n"
    },
    {
      "commit": "1bf8d4dbe5cb9891e8a1125ff1928b544efc243a",
      "tree": "84b28ef4c8bdf7da73c16e891e2fe978b52d9a90",
      "parents": [
        "b29bbbc00071f56a4a98a2d94c3968a36763ed55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 00:18:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 10:20:05 2013 -0700"
      },
      "message": "Profiler directed clean-up of dex2oat.\n\nFix bad usage of std::string in: the verifier and compiler driver method\narguments, causing unnecessary boxing and allocations; in creating a symbol for\nthe dex compilation unit, that is only used in portable builds; in pattern\nmatching for intrinsics by name.\n\nMake class linker dex and classes locks reader/writer to allow concurrent\ndex cache or class querying. Refactor ComputeCompilingMethodsClass to pass in a\ndex cache hint, to avoid taking any locks when the dex file of the compiling\nmethod matches that of the field or method being resolved.\n\nMake the RegType\u0027s HasClass method virtual to avoid frequent virtual method\ndispatch. Make RegTypeCache GetFromId inlinable.\n\nVarious other bits of whitespace and formatting clean-up.\n\nChange-Id: Id152e1e5a6fed2961dad0b612b7aa0c48001ef94\n"
    },
    {
      "commit": "b88b3daca9f3c1554e0ea82b462894cb744da671",
      "tree": "e6f2bd0e62c7bd72753499140a854a1c4e5a976a",
      "parents": [
        "ef7162edde3ec04f1cd5a8d09a665fcb337d30aa"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 30 00:21:55 2013 +0000"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu May 30 00:21:55 2013 +0000"
      },
      "message": "Revert \"Elision of checks optimization.\"\n\nThis reverts commit ef7162edde3ec04f1cd5a8d09a665fcb337d30aa\n\nChange-Id: I914454adbe3a0d2f23f841efa1a201f3cbff4b6e\n"
    },
    {
      "commit": "ef7162edde3ec04f1cd5a8d09a665fcb337d30aa",
      "tree": "144a10ef3becf9b5d778f87ebf5223eefc54e11c",
      "parents": [
        "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue May 28 14:14:12 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Wed May 29 16:36:59 2013 -0700"
      },
      "message": "Elision of checks optimization.\n\nWe now sharpen types in the verifier based on instance-of followed by ifeq/ifneq pattern.\nChanged comments to conform to 100 char per line limit.\nAdded asserts.\n\n\tmodified:   src/dex_file_verifier.cc\n\tmodified:   src/verifier/method_verifier.cc\n\tmodified:   src/verifier/register_line.cc\n\nChange-Id: I857279ccd1e73c07638b42601d436e0ea5860fe9\n"
    },
    {
      "commit": "e3cd2f0e3c3d976ae9c65c8a731003a5aaf71986",
      "tree": "e6f2bd0e62c7bd72753499140a854a1c4e5a976a",
      "parents": [
        "1d9314c989114f330297d52dae3fe0cd4848b183"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 24 15:32:56 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 24 18:19:28 2013 -0700"
      },
      "message": "Enable devirtualization for abstract and sub-class methods.\n\nIf we know the type of a receiver in the verifier we record devirtualization\ndata. Currently we only use this data to avoid virtual method dispatch when\nwe know the receiver of a method isn\u0027t a sub-class. This change allows\ndevirtualization of virtual and interface methods when we know the receiver\u0027s\ntype and the method the we\u0027d find via dispatch is either known within boot or\nhas a reference from the current dex file.\n\nPass the receiver through to the method resolution trampoline as\ndevirtualization may mean the dex method index needs to be made more accurate\nfor the receiver.\n\nTidy up method devirtualization and related statistics.\n\nPush the devirtualization map lookup into a less common case to avoid\ntaking its lock.\n\nMake MethodReference a struct rather than a typedef of a pair, so the members\ncan have more meaningful names than first and second.\n\nRough statistics show that we devirtualize using this change around 2.5% of\nthe time, whilst some apps like GMS core devirtualize over 3.4% of the time.\n\nChange-Id: Ieed3471dbedfc4cc881d652631b67176bb37d394\n"
    },
    {
      "commit": "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"
    }
  ],
  "next": "b726dcb581bf72da46527378ccb6889020f0e6e9"
}
