)]}'
{
  "log": [
    {
      "commit": "4824c27988c8eeb302791624bb3ce1d557b0db6c",
      "tree": "c14f74d9cc4c93cab04bee5c723e420a87db9cb3",
      "parents": [
        "22c4edd865bfdea29e80a789cef70e8e51d2a3a5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 24 15:53:03 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 24 17:01:08 2015 +0100"
      },
      "message": "Use a flag from the verifier to know if we should compile.\n\nOnly used for the lack of bottom type in the aget-object case\nfor now. Could be used for more.\n\nbug:21865466\n\nChange-Id: I64c2c84dfa1c0d259631e65e5f44b94e4139e6a7\n"
    },
    {
      "commit": "f23f33de8b3e9abd16720e0f48d43d63d41dee16",
      "tree": "837e9d42fba572427596a6be4dbbb0745bdb47a3",
      "parents": [
        "ec3a4e7cdc4f268b40d923227c125429f4ee4884"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 23 14:18:17 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 23 16:02:16 2015 -0700"
      },
      "message": "ART: Follow-up to 507cc6f83bf6379728f2dd20391f2ed5fbfe6371\n\nDo not trigger DCHECK aborts for final and abstract classes when\nthey are used from other classes. Instead issue a soft error that\nleads to a runtime failure.\n\nBug: 21873151\nChange-Id: Ie5251a176722811b3c74585222874313a53f7e02\n"
    },
    {
      "commit": "ec3a4e7cdc4f268b40d923227c125429f4ee4884",
      "tree": "d9bc031c772d062c2168c4fd7e8f5d8c4a64093c",
      "parents": [
        "11dc78c8d36b4a65f4d955bc4303cc8279f1151e",
        "2ee54e249ad21c74f29a161e248bebe7d22fddf1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jun 22 21:15:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 22 21:15:02 2015 +0000"
      },
      "message": "Merge \"runtime: Partially implement box-lambda and unbox-lambda experimental opcodes\""
    },
    {
      "commit": "2ee54e249ad21c74f29a161e248bebe7d22fddf1",
      "tree": "125465dd7a6d23f83ecbf2d3454f21471868422c",
      "parents": [
        "158f35c98e2ec0d40d2c032b8cdce5fb60944a7f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 18 10:05:11 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jun 22 14:13:30 2015 -0700"
      },
      "message": "runtime: Partially implement box-lambda and unbox-lambda experimental opcodes\n\nThese opcodes are not yet fully specified, and *will* change before they become shippable.\nDo not write production code against experimental opcodes.\n\n--\n\nImplement partial interpreter support for new dex instructions box/unbox-lambda.\n* box-lambda will take a closure and convert it into an Object\n* unbox-lambda will take an Object and convert it to a closure\n\n(Currently does not implement object identity or variable capture).\n\nAll new opcodes are disabled by default, use runtime option -Xexperimental-lambdas to enable them.\n\nChange-Id: I3c15ccf8a26ccecd1d35808a8c1b4149220f6019\n"
    },
    {
      "commit": "68df32091cc79468c81956633e279523b48ea8bf",
      "tree": "ac0868ff03740dc14800ebf02db202b9cbcc5101",
      "parents": [
        "59cb52189d350fa9fb38b767fa9b25d971375833"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 22 11:35:46 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 22 11:35:46 2015 -0700"
      },
      "message": "ART: Allow checking RETURN_VOID_NO_BARRIER on unresolved classes\n\nWe must check that all fields are non-final, even for unresolved\nclasses. Fall back to the dex file for this information.\n\nBug: 22005084\nBug: https://code.google.com/p/android/issues/detail?id\u003d177694\nChange-Id: If2126d1be5dccadbbedcdccabde7398688d6e5ca\n"
    },
    {
      "commit": "507cc6f83bf6379728f2dd20391f2ed5fbfe6371",
      "tree": "62aaeddc8dcf1fb652b92472d1327c31b4f84942",
      "parents": [
        "1e73a95d74848020fab512a95a7f9a7ada72497b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 19 22:58:47 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 19 22:58:47 2015 -0700"
      },
      "message": "ART: Disallow classes that are abstract and final\n\nMake the verifier fail such classes.\n\nBug: 21873151\nChange-Id: I217f3d71f44bccdcee7ca830e092c807928bed39\n"
    },
    {
      "commit": "a60bd74737fcd1b3737bc523741efa1097bbd782",
      "tree": "35069a0c16e84be12d599e6062fef8858ddecc89",
      "parents": [
        "ba7837b2308aeaaa613383297737488af558aed7",
        "ef0b1a1dbc99fe7c92f9598cbfc164763c1b66d7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jun 20 04:03:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jun 20 04:03:21 2015 +0000"
      },
      "message": "Merge \"ART: Check for expected args for instance methods\""
    },
    {
      "commit": "ef0b1a1dbc99fe7c92f9598cbfc164763c1b66d7",
      "tree": "a644d45fae2717442d15927b196786ff175c56d8",
      "parents": [
        "0420f81a5c6c08bc62060b8ff5dda8949f9a9ce9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 19 20:37:46 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 19 20:46:23 2015 -0700"
      },
      "message": "ART: Check for expected args for instance methods\n\nDon\u0027t assume that the receiver is expected. This was writing out\nof bounds (or triggering a DCHECK).\n\nBug: 21817284\nBug: 21872240\nBug: https://code.google.com/p/android/issues/detail?id\u003d176571\nBug: https://code.google.com/p/android/issues/detail?id\u003d176572\nChange-Id: I7cad2c1dfc39feb0b1b4660deeb43afdcb844ba3\n"
    },
    {
      "commit": "ba7837b2308aeaaa613383297737488af558aed7",
      "tree": "4e4b199a55ffa3b287e7dd3175f8b46ebd412f3d",
      "parents": [
        "d1a06338b9aa818b730ef1d46549a09af8f35c5b",
        "29498a23bcfe47a7134552aacad5524ecb484a49"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jun 20 00:43:39 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jun 20 00:43:39 2015 +0000"
      },
      "message": "Merge \"ART: Check var-arg count earlier in method verifier\""
    },
    {
      "commit": "29498a23bcfe47a7134552aacad5524ecb484a49",
      "tree": "0f677bef57ab626caf3877e19df4e090920e2241",
      "parents": [
        "0420f81a5c6c08bc62060b8ff5dda8949f9a9ce9"
      ],
      "author": {
        "name": "Taiju Tsuiki",
        "email": "tzik@google.com",
        "time": "Mon Apr 13 14:21:00 2015 +0900"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 19 17:41:23 2015 -0700"
      },
      "message": "ART: Check var-arg count earlier in method verifier\n\nCheck the count in vararg instructions before filling the temp\narray. Avoids a DCHECK.\n\nBug: 21869663\nBug: 20170976\n\nChange-Id: I1ff93502ab84c5967ad54d1b50dba517da791637\n"
    },
    {
      "commit": "e43875749fbc674fbad23ba11af64f25ab2add0d",
      "tree": "8cd2ff04d87f76d87fa9c21c43fab04c9abe9c51",
      "parents": [
        "be59b85251f085359d40bb89b1aa7e037c8ac0ef",
        "66389fbeb41c981648bb2e1e7e2f43089f095591"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 19 11:02:16 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 19 11:02:17 2015 +0000"
      },
      "message": "Merge \"Verifier: check an aput, even if we know it will fail.\""
    },
    {
      "commit": "66389fbeb41c981648bb2e1e7e2f43089f095591",
      "tree": "f6de19a8521f2e33d5c75771867bcf569e6d2ef4",
      "parents": [
        "822c00d0fe3b70d1f1fe5bac03713674d45f8173"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 19 10:35:42 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 19 10:37:59 2015 +0100"
      },
      "message": "Verifier: check an aput, even if we know it will fail.\n\nbug:21867457\nChange-Id: I01e333d858995d0e1e083a50cf8d460a86381f2c\n"
    },
    {
      "commit": "247e97746016b49183b52f4c386bedf7cd53e590",
      "tree": "758c0a7c60c2099fb6a8cf2d4ea68ffc8c9459ac",
      "parents": [
        "2b696ab55e817b583d7b3b3ffd39e48c38db6989",
        "158f35c98e2ec0d40d2c032b8cdce5fb60944a7f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 18 19:56:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 18 19:56:58 2015 +0000"
      },
      "message": "Merge \"interpreter: Add experimental lambda opcodes for invoke/create-lambda\""
    },
    {
      "commit": "158f35c98e2ec0d40d2c032b8cdce5fb60944a7f",
      "tree": "63bb3bbed85b0add42c7fdc714cd611424d8af2e",
      "parents": [
        "c449e8b79aaaf156ce055524c41474cc1200ed5a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Jun 10 15:55:30 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 18 10:22:27 2015 -0700"
      },
      "message": "interpreter: Add experimental lambda opcodes for invoke/create-lambda\n\nThese opcodes are not yet fully specified, and *will* change before they become shippable.\nDo not write production code against experimental opcodes.\n\n--\n\nImplement partial interpreter support for new dex instructions invoke/create-lambda, and a\nnew opcode format 25x.\n\n* Does not verify, in fact verification will soft fail when we see those opcodes.\n* Compilers will punt to interpreter since they don\u0027t support new opcodes.\n* As there is no way to capture/liberate variables yet, the \"closure\" is just\n  an ArtMethod for the time being.\n\nAll new opcodes are disabled by default, use runtime option -Xexperimental-lambdas to enable them.\n\nFor example:\n  dalvikvm ... -Xexperimental-lambdas ...\n  dex2oat --runtime-arg -Xexperimental-lambdas ...\n\nChange-Id: I6c996ca32a9b54ec45ec21d7a959b84dfb8a24eb\n"
    },
    {
      "commit": "da9badb9edea5e0d18cd9f97eff0d0937ad48310",
      "tree": "ed2f0b85561daa715988f644482fbdd99995656d",
      "parents": [
        "ccd6337f31d13706c602f3d9436e9b4025075b63"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 05 20:22:12 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 09 11:25:42 2015 -0700"
      },
      "message": "ART: Check long and double register pairs in invokes\n\nFor invokes, ensure that long and double parameters are actually\nin registers pairs. We were testing the pair, but skipping the\nactual high parameter register.\n\nBug: 17410612\nChange-Id: I8f4c3335ea8b7dc3cf252bee52a5a706ae8905f8\n"
    },
    {
      "commit": "d9e230185873d9d998d77d17107029e0603e82d6",
      "tree": "7362a7e9a9f91591b36c3efdcebcb7cc0621649e",
      "parents": [
        "38b66b6fed1adcc1da4b931a32f78c5290a97c1e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 04 22:19:58 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Jun 07 15:29:40 2015 -0700"
      },
      "message": "ART: Reload class on miranda method in verifier\n\nWhen checking the receiver of a call and we have a miranda method,\nreload the class from the method index instead of using the declared\nclass - which is the interface class, not the abstract class.\n\nBug: 21646347\nChange-Id: I5bceab75c3b76233cb42ea5cf0214d32c8149994\n"
    },
    {
      "commit": "b588f4c037d27dedeef358b478c281ebb3fbb900",
      "tree": "e9ea063f9dea2612083f1938c981b8950b873f8c",
      "parents": [
        "c2ec62874804f341439455fb00a128010139d0fc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 26 13:35:39 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 01 09:51:45 2015 -0700"
      },
      "message": "ART: Fix wrong hard-failure handling in verifier\n\nCorrectly return null for the method when a hard failure is\nencountered. Also improve logging for order failures. Add a\nregression test.\n\nBug: 20224106\n\n(cherry picked from commit 3b74e275838729c5023cd80116f1b3b81306ee19)\n\nChange-Id: I6e08202617147378b204af169308b67fc69f92c6\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "dc31313c4577bb4c00d90774159c84e738ed348d",
      "tree": "5f850028ebc8843cdcaf56c5fc122bd660937603",
      "parents": [
        "03b5a398a96ea29c39ddfe3d810245b868d2871f",
        "80afd02024d20e60b197d3adfbb43cc303cf29e0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue May 26 17:42:31 2015 +0000"
      },
      "message": "Merge \"ART: Clean up arm64 kNumberOfXRegisters usage.\""
    },
    {
      "commit": "80afd02024d20e60b197d3adfbb43cc303cf29e0",
      "tree": "ef054c7b4f2a739f7cf063e0bc4c501c2c7e41b5",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 19 18:08:00 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 26 15:59:02 2015 +0100"
      },
      "message": "ART: Clean up arm64 kNumberOfXRegisters usage.\n\nAvoid undefined behavior for arm64 stemming from 1u \u003c\u003c 32 in\nloops with upper bound kNumberOfXRegisters.\n\nCreate iterators for enumerating bits in an integer either\nfrom high to low or from low to high and use them for\n\u003carch\u003eContext::FillCalleeSaves() on all architectures.\n\nRefactor runtime/utils.{h,cc} by moving all bit-fiddling\nfunctions to runtime/base/bit_utils.{h,cc} (together with\nthe new bit iterators) and all time-related functions to\nruntime/base/time_utils.{h,cc}. Improve test coverage and\nfix some corner cases for the bit-fiddling functions.\n\nBug: 13925192\nChange-Id: I704884dab15b41ecf7a1c47d397ab1c3fc7ee0f7\n"
    },
    {
      "commit": "3c651fc07bde1bfc375d2675c01ce9ccefdf2085",
      "tree": "e84936a4bf23318da1d29fa06f0e36ed225e0a89",
      "parents": [
        "559b178e34c5d92e7932f92e5d8a981ac334606f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 21 14:06:46 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu May 21 14:34:34 2015 -0700"
      },
      "message": "ART: Sometimes even empty methods take forever to verify\n\nIn cases of very high load and/or bad scheduling, the verifier may\ntake longer than the threshold duration to verify an empty method.\nThe LargeMethod detection needs to accept that the code_item may\nbe null.\n\nBug: 21364300\n\n(cherry picked from commit 8110447356f559688d6290563e912af7f8d4709b)\n\nChange-Id: Iceff3e4688cc1a5fe7a836f7a9bf6c49a392b618\n"
    },
    {
      "commit": "a4f5bf6ea99d6b3095a4ca261352729633bc44c5",
      "tree": "2aeb69a85c319a3eb098aa2eec5bb0290b653268",
      "parents": [
        "9a85fe78f45768fbb4d3e5e138716d107d399b6c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 18 20:50:12 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 18 20:52:24 2015 -0700"
      },
      "message": "ART: Change huge-method warning in verifier\n\nChange the logging to be included in the took-a-long-time warning,\ninstead of being a non-descriptive standalone. This should reduce\nthe noise.\n\nBug: 21149450\nChange-Id: Ia4493dd12f54a8452a46541f6da86530584016ea\n"
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "d0ad2eea51850ed5972c23d03380b2305cdf7cb7",
      "tree": "533baced17c6dc3860e0e2121ce06acde57b8f4d",
      "parents": [
        "917f0866f66d3465fa41ddcf9ab09eba2fa78dd3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 31 14:59:59 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 09 15:18:14 2015 -0700"
      },
      "message": "Add support for nested method verifiers\n\nCan occur in the following scenario:\nMethodVerifier::Verify -\u003e MethodVerifier::GetStaticField -\u003e\nResolveFieldJLS -\u003e  ThrowNoSuchFieldError -\u003e EnsureInitialized -\u003e\nVerifyClass\n\nAlso fixed another case where we can be requested to dump for ANR\nwhile we are suspended in one of the AllowSuspension points.\n\nBug: 20140397\n\nChange-Id: Ib17f6b98954caa5d1ea1c1dcde66091cc6d11c25\n"
    },
    {
      "commit": "65b798ea10dd716c1bb3dda029f9bf255435af72",
      "tree": "774e9901b6917989a63f07f927c3b4d8b921a013",
      "parents": [
        "c411c6cc327d3f2b3b4d1987b07dd442205d9454"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 09:35:22 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 14:05:07 2015 -0700"
      },
      "message": "ART: Enable more Clang warnings\n\nChange-Id: Ie6aba02f4223b1de02530e1515c63505f37e184c\n"
    },
    {
      "commit": "bb87e0f1a52de656bc77cb01cb887e51a0e5198b",
      "tree": "113f014c6e20fab3e936a3ac05f9f738639541f6",
      "parents": [
        "e57fc0f0260fcb1d08cbb720ec95c04c0f394b91"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 03 11:21:55 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 06 10:44:37 2015 -0700"
      },
      "message": "Refactor and improve GC root handling\n\nChanged GcRoot to use compressed references. Changed root visiting to\nuse virtual functions instead of function pointers. Changed root visting\ninterface to be an array of roots instead of a single root at a time.\nAdded buffered root marking helper to avoid dispatch overhead.\n\nRoot marking seems a bit faster on EvaluateAndApplyChanges due to batch\nmarking. Pause times unaffected.\n\nMips64 is untested but might work, maybe.\n\nBefore:\nMarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us\n\nAfter:\nMarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us\n\nBug: 19264997\n\nChange-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca\n"
    },
    {
      "commit": "daaf3265806eb2eadb2e03302bd68022fab5ca28",
      "tree": "aff5d6d53d6d2b65995aa204839f88ee66400989",
      "parents": [
        "68e22f3b982ff9ccbdfb3b65b7cfc16fcae907ba"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 24 13:30:28 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 29 14:13:08 2015 -0700"
      },
      "message": "Add AccessibleObject and Field to mirror\n\nMain motivation is to remove all the functionality / field access on\njava side to ArtField. Also comes with some reflection speedups /\nslowdowns.\n\nSummary results:\ngetDeclaredField/getField are slower mostly due to JNI overhead.\nHowever, there is a large speedup in getInt, setInt,\nGetInstanceField, and GetStaticField.\n\nBefore timings (N5 --compiler-filter\u003deverything):\n\n                       benchmark      ns linear runtime\n          Class_getDeclaredField  782.86 \u003d\u003d\u003d\n                  Class_getField  832.77 \u003d\u003d\u003d\n                    Field_getInt  160.17 \u003d\n                    Field_setInt  195.88 \u003d\n                GetInstanceField 3214.38 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  GetStaticField 6809.49 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAfter:\n          Class_getDeclaredField 1068.15 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Class_getField 1180.00 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                    Field_getInt  121.85 \u003d\n                    Field_setInt  139.98 \u003d\n                GetInstanceField 1986.15 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  GetStaticField 2523.63 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nBug: 19264997\n\nChange-Id: Ic0d0fc1b56b95cd6d60f8e76f19caeaa23045c77\n"
    },
    {
      "commit": "16f149c2cb43a14d8f33d7d0fa36cd784e900f07",
      "tree": "299d484c007d373c68e22008ddedfacbd0c044f2",
      "parents": [
        "cac51526bbd03947676a8d49700425b19a57e447"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 23 10:10:20 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 26 15:03:46 2015 -0700"
      },
      "message": "ART: Change RETURN_OBJECT verification for arrays\n\nArrays appear to be valid (as according to spec), even if their\ncomponents are erroneous. If a component is erroneous, it may not\nhave loaded superclass or interface information, and so fail a\ndirect check for assignability.\n\nAdd a cutout that checks whether the declared return-type or the\nactual return-type are arrays with erroneous components (and if so,\nhave the same \u0027depth\u0027). In that case, generate a soft instead of a\nhard error.\n\nAlso includes a fix to DumpClass.\n\nBug: 19683465\nChange-Id: Ie73de03adeb0af7e939370d7363684fe125d7994\n"
    },
    {
      "commit": "9ccd151d0d27a729f88af9d00285afe4d147981a",
      "tree": "edfef268a0ecda957dfaa91ec35dd99c9ad3761f",
      "parents": [
        "3743174267159ec0c39bce1ca28c2081468dda94"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 20 18:11:45 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 20 18:40:32 2015 -0700"
      },
      "message": "Fix verifier handling of empty switch as last instruction.\n\nAlso fixes optimizing compiler\u0027s assumption that switch is non-empty and\nadds test case.\n\nBug: 19827056\nChange-Id: I5ac891d5062f528ef3be787b1094cba7b4c0fbd0\n"
    },
    {
      "commit": "e86deeffad79c00ed2ebede04f4adc348bda790c",
      "tree": "f0952116fe2fa933c8c9827e83caf4432f0339da",
      "parents": [
        "2f5904383a7b7ffb741c8839ec3c60762860bad3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 19 13:43:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 20 10:26:42 2015 -0700"
      },
      "message": "Add verify-at-runtime compiler filter\n\nVerifies at runtime only, instead of at compilation time.\nAOSP HH boot time after clean-oat: ~30s instead of ~35s if enabled.\nAlso helps install time if enabled there.\n\nTODO: See if there is any possible deadlocks that can result from\nthis.\n\nBug: 19762303\n\nChange-Id: Ibfba77148da9039e8d7d7497c05486bc044eefe7\n"
    },
    {
      "commit": "d7cbf8a6629942e7bd315ffae7e1c77b082f3e11",
      "tree": "fc8c3371ed4ddac96bbe90a2f94ef5fb5c5472ee",
      "parents": [
        "f5988cf0c47ff935bb19c89ed0398be5fbe44bb6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 19 12:43:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 19 20:00:50 2015 -0700"
      },
      "message": "Change RETURN_VOID_BARRIER to RETURN_VOID_NO_BARRIER\n\nWe want to default to having a barrier for the case where we don\u0027t\ndex to dex.\n\nBug: 19762303\nChange-Id: I60348d89eaf0b9e1e480298afcecbb5f52e8661b\n"
    },
    {
      "commit": "12d625f87bcd6c4059a205bb39007a255f57f382",
      "tree": "b69f6f80f56977c176e0c441869d2f1de06ede70",
      "parents": [
        "b871a15f1f662c8efe10d41199180bd00b6decd1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 11:33:37 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 13 16:38:25 2015 -0700"
      },
      "message": "Change method verifiers to be thread local roots\n\nBug: 10921004\n\nChange-Id: I3a1425d76cd380587ba67ef6d5ec1227564e55bf\n"
    },
    {
      "commit": "d7f8d05987e08723de008ba6dbbf66acb7db0f24",
      "tree": "b7c7eba735371151df11ca6d428a66468d72b308",
      "parents": [
        "63a63fc38115c415863b8b2d56b012ae3d9e00c7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 12 11:05:47 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 12 11:08:21 2015 -0700"
      },
      "message": "ART: Save work-line for pending runtime failure\n\nWhen we detect a pending runtime failure, we\u0027ll handle it as a\ngeneric throw, no matter the instruction type. But we won\u0027t have\nsaved the work-line, which means we\u0027ll try to merge garbage into\nthe handler\u0027s line.\n\nCopy the work-line when we set the failure.\n\nBug: 19634276\nChange-Id: I54df9e9492cd48802f93e2f1938adaadc55c9bd5\n"
    },
    {
      "commit": "091d238936809f6668ca6b7606c62bc224add430",
      "tree": "90feb09ea9d398f1f80ffa407747496e57e592fe",
      "parents": [
        "637455782147a41fbde2e284c49ca5e02d3444c2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 06 10:59:06 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 11 12:43:07 2015 -0700"
      },
      "message": "Fix incompatible class change error for JIT stress mode\n\nThere was a problem with miranda methods, when we would dequicken to\none of these, it wouldn\u0027t resolve as virtual during the method\nlowering resolve. The solution is to try resolving as interface if we\nfail to resolve as virtual.\n\nFixed a bug in dequickening where unreachable register lines with\nquick invokes would cause CHECK failuers. In this case we punt to the\ninterpreter (test 435-try-*).\n\nAdded test regression test. Example failure:\njava.lang.IncompatibleClassChangeError: The method\n\u0027void Main$TheInterface.m()\u0027 was expected to be of type virtual but\ninstead was found to be of type interface (declaration of\n\u0027java.lang.reflect.ArtMethod\u0027 appears in\nout/host/linux-x86/framework/core-libart-hostdex.jar)\n  at Main.DoStuff(Main.java:37)\n  at Main.main(Main.java:44)\n\nBug: 17950037\n\nChange-Id: I39c32cc8849bf02032a4f61a7ce57462b7fcac75\n"
    },
    {
      "commit": "e5f13e57ff8fa36342beb33830b3ec5942a61cca",
      "tree": "02e370ecc4e0d955f28bfc71a41015f94fbb19b7",
      "parents": [
        "354d58ba776866ea7b1c71f0d0848d5aaa013ae3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 09:37:21 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 10:47:02 2015 -0800"
      },
      "message": "Revert \"Revert \"Add JIT\"\"\n\nAdded missing EntryPointToCodePointer.\n\nThis reverts commit a5ca888d715cd0c6c421313211caa1928be3e399.\n\nChange-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af\n"
    },
    {
      "commit": "a5ca888d715cd0c6c421313211caa1928be3e399",
      "tree": "bdb08a2cbcf277ab7f02626a23b52a3fdf272ffe",
      "parents": [
        "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "message": "Revert \"Add JIT\"\n\nSorry, run-test crashes on target:\n0-05 12:15:51.633 I/DEBUG   (27995): Abort message: \u0027art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast\u003cuintptr_t\u003e(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc\u003d71e3366b code\u003d0x71e3362d size\u003dad000000\u0027\n10-05 12:15:51.633 I/DEBUG   (27995):     r0 00000000  r1 0000542b  r2 00000006  r3 00000000\n10-05 12:15:51.633 I/DEBUG   (27995):     r4 00000006  r5 b6f9addc  r6 00000002  r7 0000010c\n10-05 12:15:51.633 I/DEBUG   (27995):     r8 b63fe1e8  r9 be8e1418  sl b6427400  fp b63fcce0\n10-05 12:15:51.633 I/DEBUG   (27995):     ip 0000542b  sp be8e1358  lr b6e9a27b  pc b6e9c280  cpsr 40070010\n10-05 12:15:51.633 I/DEBUG   (27995): \n\nBug: 17950037\nThis reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4.\n\nChange-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3\n"
    },
    {
      "commit": "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4",
      "tree": "140026ff9638ff34050680b6c706b82fa1740b56",
      "parents": [
        "38fee8ef4bc0f4dbe2c6d1f5585895f0c4d16984"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 17 10:38:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 23 16:45:49 2015 -0800"
      },
      "message": "Add JIT\n\nCurrently disabled by default unless -Xjit is passed in.\n\nThe proposed JIT is a method JIT which works by utilizing interpreter\ninstrumentation to request compilation of hot methods async during\nruntime.\n\nJIT options:\n-Xjit / -Xnojit\n-Xjitcodecachesize:N\n-Xjitthreshold:integervalue\n\nThe JIT has a shared copy of a compiler driver which is accessed\nby worker threads to compile individual methods.\n\nAdded JIT code cache and data cache, currently sized at 2 MB\ncapacity by default. Most apps will only fill a small fraction of\nthis cache however.\n\nAdded support to the compiler for compiling interpreter quickened\nbyte codes.\n\nAdded test target ART_TEST_JIT\u003dTRUE and --jit for run-test.\n\nTODO:\nClean up code cache.\nDelete compiled methods after they are added to code cache.\nAdd more optimizations related to runtime checks e.g. direct pointers\nfor invokes.\nAdd method recompilation.\nMove instrumentation to DexFile to improve performance and reduce\nmemory usage.\n\nBug: 17950037\n\nChange-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca\n"
    },
    {
      "commit": "270a0e16c3b8e5b95cbfdbd8996ac137c7c6322b",
      "tree": "2800649d19ffcdc891118a458f6b0169022d93e0",
      "parents": [
        "951d70b42400453f9d1746d155b8337c07c86acc"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jan 16 19:49:09 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jan 23 17:26:45 2015 +0100"
      },
      "message": "Fix exception handling during deoptimization\n\nWhen interpreting a deoptimized shadow frame, we may start with a\npending exception thrown by a previous deoptimized shadow frame (from\na previous invoke). Therefore, we need to handle it before executing\nany instruction, otherwise we execute incorrect code.\n\nBecause we need the DEX pc of the throwing instruction to find a\nmatching catch handler, we initialize deoptimized shadow frames with\nthe current DEX pc at the time the stack is deoptimized.\nWhen we are about to interpret a deoptimized shadow frame, we need to\nupdate the shadow frame with the DEX pc of the next instruction to\ninterpret. There are three cases:\n- if there is no pending exception, this is the instruction following\nthe current one.\n- if there is a pending exception and we found a matching catch\nhandler, this is the first instruction of this handler.\n- if there is a pending exception but there is no matching catch\nhandler, we do not execute the deoptimized shadow frame and continue\nto its caller.\n\nThe verifier now fails when a method starts with a move-exception\ninstruction. Indeed we cannot start executing a method with a pending\nexception.\n\nBug: 19057915\nBug: 19041195\nBug: 18607595\nChange-Id: I355ac81e6ac098edc7e3cc8c13dbfa24a2969ab2\n"
    },
    {
      "commit": "4306ef8a7ec8e3887e51f64e80d940d974cc3ac3",
      "tree": "5afff3c97de1458886154aa5e84e1c0ae0edf11f",
      "parents": [
        "d30feca670d0af02783bbdfd4a29c5078c18bdc5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 19 18:41:47 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jan 06 14:12:18 2015 -0800"
      },
      "message": "Don\u0027t allow suspension from FindLocksAtDexPc\n\nTransitioning to suspended from runnable sometimes runs dump\ncheckpoints in ThreadStress which can cause deadlocks. This happens\nsince FindLocksAtDexPC runs the verifier which calls\nAllowThreadSuspension. This results in a blocked thread which holds\nthe monitor lock, and if another thread tries to do a monitor enter,\nit deadlocks while holding the mutator lock (assuming the GC is\nsuspending all).\n\nThe fix for avoiding this deadlock is not calling\nAllowThreadSuspension from FindLocksAtDexPc.\n\nBug: 18576985\nChange-Id: I7e5faaf3bbbd5b5f680de95d53c33b5106705b0c\n"
    },
    {
      "commit": "7e541c91997b7747fa79014a8ea540395e54efc8",
      "tree": "ccd47096963dae48cad1a268f545fdd9b86d788e",
      "parents": [
        "5c79aec9d53d1320041d5a52e5115d78d16035b7"
      ],
      "author": {
        "name": "Stephen Kyle",
        "email": "stephen.kyle@arm.com",
        "time": "Wed Dec 17 17:10:02 2014 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 22 13:26:32 2014 -0800"
      },
      "message": "ART: Fix verification of constructors.\n\nSummary:\n\nA constructor must call its superclass constructor. However, if one\nreplaces the invoke-direct superclass.\u003cinit\u003e() instruction with a\nvariety of instructions, the verifier would NOT complain that the\nsuperclass constructor hadn\u0027t been called.\n\nDetailed explanation:\n\nThis was because if we are verifying the return-void insn of a\nconstructor, then we check that the register line doesn\u0027t contain a\nregister with an UninitializedThis type. With a method like follows:\n\nClass.\u003cinit\u003e()V:\n  return-void\n\nThen we hit the return-void, see the UninitializedThis, and fail the\nmethod. However, with a method like follows:\n\nClass.\u003cinit\u003e()V:\n  nop\n  return-void\n\nAny insn that continues or branches onto a return-void instruction will\nmark all of the registers as Conflict. This meant that the check in\nreturn-void for an UninitializedThis residing the register line would\n_always_ pass if there were any insns before it - the entire line had\nbeen set to Conflict.\n\nThe fix is to bring the check for an UninitializedThis forward to the\npoint just before we set all registers to Conflict, if we\u0027re about to\nhit a return-void insn in a constructor. It still needs to be done\nagain in the verification of return-void itself, to avoid the solo\nreturn-void case.\n\nThis patch also deals with the case where the only remaining\nUninitializedThis reference is overwritten, to avoid a method like the\nfollowing from getting through verification:\n\nClass.\u003cinit\u003e()V:\n  const/4 v0, 0\n  return-void\n\nBug: 18800943\n\nChange-Id: I2e317261844d3b6c78e35228669f3da173316570\nFuzzed-With: https://android-review.googlesource.com/#/c/119463/\n"
    },
    {
      "commit": "d691045e08f8c83892298f8e300616537c30cd8e",
      "tree": "ad7a0a1df7b9cdf9850b194a3384518d07df3e14",
      "parents": [
        "68a8f5e9e9cda48002394cc4d0ca6fe98edd23f3",
        "76bd88005bba706f98c4b3eb23a226d184d85152"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 11 19:25:43 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 11 19:25:44 2014 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Ensure void type is resolved when running without image\"\"\""
    },
    {
      "commit": "36b58f5ebb85d58f8b5966b8577a6dfe720d1e16",
      "tree": "c7eca5ae2a6ceea65a7aa2e489b6ea84efbad1f1",
      "parents": [
        "86ff0892aae3b13a105ce2fd58c39591f315c049"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 10 12:06:45 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 11 11:07:35 2014 -0800"
      },
      "message": "Add verifier support for dequickening\n\nAlso some cleanup.\n\nBug: 17950037\n\nChange-Id: I1f50fe07f1558e9c4f78953b7afa639d7f310b3c\n"
    },
    {
      "commit": "76bd88005bba706f98c4b3eb23a226d184d85152",
      "tree": "7641a41fdc156de9664de19d41b2b2febd61d9be",
      "parents": [
        "3e465bec65067ebfdf662469cf85dd82cd077bdd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 10 16:43:58 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 10 18:59:49 2014 -0800"
      },
      "message": "Revert \"Revert \"Ensure void type is resolved when running without image\"\"\n\nAccept the verification status of image classes out of oat files even\nwhen the image could not be loaded. This is necessary as the dex files\nmight be quickened and the verifier can\u0027t work on them when the runtime\nis not started.\n\nThis reverts commit fe382b5296ef132316d8883a0bdf8cb00d40d16b.\n\nBug: 18338511\nBug: 18705942\nChange-Id: I3516acaaa65f05395c14da0701d1049ba80acb12\n"
    },
    {
      "commit": "b3991da5e3396f039b573f85a6f3f4638b50270b",
      "tree": "1139b18aa3dd4d278ad6756cee2a14c3223c286a",
      "parents": [
        "53ab5a68373152355cd8b7699dd8395ae5503a7b",
        "ffc605cd817e79d6c7602a87543bb31f24d3a99f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 10 19:52:03 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 10 19:52:04 2014 +0000"
      },
      "message": "Merge \"Add missing iget quick for bool, byte, char, short\""
    },
    {
      "commit": "ffc605cd817e79d6c7602a87543bb31f24d3a99f",
      "tree": "84e4e68b11fe2d9c8c2e901b858026c1ebe88973",
      "parents": [
        "b1a38e246cfbfb21100d9c9e57f33970e824f075"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 10 10:35:44 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 10 11:45:44 2014 -0800"
      },
      "message": "Add missing iget quick for bool, byte, char, short\n\nBug: 17791557\nBug: 17671806\nChange-Id: Ifac4fbfba6c3a3f97131e85914b24756fb7f9722\n"
    },
    {
      "commit": "be6fa5eb4a571e14481cf43f4cb264629c069153",
      "tree": "c7a7aa7642fc08941f9d149de5f0e664b67a6f65",
      "parents": [
        "b1a38e246cfbfb21100d9c9e57f33970e824f075"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Dec 09 20:15:42 2014 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Dec 09 22:35:06 2014 -0800"
      },
      "message": "Fix verifier bug caused by confusing ArtMethod::IsDirect vs ArtMethod::IsStatic semantics.\n\nBug: 18485243\nChange-Id: I011872446490628b51fb38a353abd1d499cc1290\n"
    },
    {
      "commit": "6bb3919e4413ad50f9b7e009829bba292b609e03",
      "tree": "2b99a452959b6380ca5117a64648e83d63c9d6e2",
      "parents": [
        "d1780b98e5b58208e6836c8520dad2a2dadfe322",
        "8b858e16563ebf8e522df026a6ab409f1bd9b3de"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 09 11:09:39 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Dec 09 11:09:40 2014 +0000"
      },
      "message": "Merge \"Quick: Redefine the notion of back-egdes.\""
    },
    {
      "commit": "8b858e16563ebf8e522df026a6ab409f1bd9b3de",
      "tree": "910900d8eefd5bed3f3c144894c970bb1973c71e",
      "parents": [
        "f7ebda43cb185b6414a2e86eef95eaf10b74db2c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Nov 27 14:52:37 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Dec 09 10:07:30 2014 +0000"
      },
      "message": "Quick: Redefine the notion of back-egdes.\n\nRedefine a back-edge to really mean an edge to a loop head\ninstead of comparing instruction offsets. Generate suspend\nchecks also on fall-through to a loop head; insert an extra\nGOTO for these edges.\n\nAdd suspend checks to fused cmp instructions.\n\nRewrite suspend check elimination to track whether there is\nan invoke on each path from the loop head to a given back\nedge, instead of using domination info to look for a basic\nblock with invoke that must be on each path. Ignore invokes\nto intrinsics and move the optimization to a its own pass.\n\nThe new loops in 109-suspend-check should prevent intrinsics\nand fused cmp-related regressions.\n\nBug: 18522004\nChange-Id: I96ac818f76ccf9419a6e70e9ec00555f9d487a9e\n"
    },
    {
      "commit": "08f1f50d6c2e8f247b8f5f19711d75a792851c7a",
      "tree": "dca490545d56168f7f9ae4a4616199b1b1c8ba0c",
      "parents": [
        "8443637f71a777a13317fe7635028d758a0adf97"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:04:37 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:12:27 2014 -0800"
      },
      "message": "Remove FieldHelper.\n\nChange-Id: I2d74e2d5b3c35a691c95339de0db9361847fca11\n"
    },
    {
      "commit": "e94652f1e321b2c8b71acbe5b07d2ebf69fbdb99",
      "tree": "b4c2a4435800222fa740a5ae57fa217b6aed0875",
      "parents": [
        "f25c2ec6b63e116f24f359a10b59c78768fde67a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:19 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:49 2014 -0800"
      },
      "message": "Remove MethodHelper from the interpreter.\n\nUse ShadowFrame to get the executing method to avoid a handle for the current\nmethod.\nVarious associated bits of header file clean-up and removal of an unnecessary\nuse of MethodHelper in CompilerDriver.\n\nChange-Id: I3b6f4413701e8fc6b0c58b0041a0dd15472bedaa\n"
    },
    {
      "commit": "896df40bbb20f4a1c468e87313b510c082016dd3",
      "tree": "918c0656583d807566f9247b23ef2698700a4218",
      "parents": [
        "00b2da5c02339c36ffa4006f731f55203b09265d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 20 22:25:29 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Nov 09 12:42:42 2014 -0800"
      },
      "message": "ART: Fix possible soft+hard failure in verifier\n\nIt was possible to generate a hard failure and a subsequent soft\nfailure, which violates a CHECKed invariant.\n\nRefactor code slightly to share common code.\n\nBug: 17625962\n\n(cherry picked from commit f08663b47ccd3aa083972d62937a328ad80d080e)\n\nChange-Id: Iccd9e30f1087363b19b2faedc10243a2290202c0\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "f72a11dd4b0dd86bc4b1baa37bfa47fc8d5572b5",
      "tree": "bf2f2842a7bbe44057bc1e8c0e176b51baa173ac",
      "parents": [
        "2a4e71ca268f8a5b3d8424116a7a8650265d8774"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 30 15:41:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 30 16:17:21 2014 -0700"
      },
      "message": "Add math routines with defined wrapping behavior for the interpreter.\n\nAdd a RSUB_INT_LIT16 instruction alias to make instruction opcode switch\nstatements easier to read.\n\nChange-Id: I3bac07c9518665abf0b05b5c3105a90be22f780a\n"
    },
    {
      "commit": "7c0381049ea33e64514984432312290842946bc1",
      "tree": "24a8928610ebc84a166f1b766f3f70799cd66a9d",
      "parents": [
        "0ea536897c078761e0309437a3d25fbbf53c94a3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 27 20:08:46 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 30 10:06:52 2014 -0700"
      },
      "message": "ART: Do not abort on most verifier failures\n\nChanges hard aborts to hard verifier failures, which rejects a\nclass instead of killing the process.\n\nBug: 17625962\n\n(cherry picked from commit 8fa841aa1c02ff8e3e7caaa73ed5fe25f027d5d3)\n\nChange-Id: Iba8e15676e13ea6dcd6e1e5d0484031d9ab52ae9\n"
    },
    {
      "commit": "ded66a01f81812e0129d17c3d08d5eda18433062",
      "tree": "74a3f7bad1c020b0136d6c173633a361a479f5cb",
      "parents": [
        "e0205d519dd417f749243b42b8711dfa313e5390"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 18:12:55 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 18:36:32 2014 -0700"
      },
      "message": "Move MethodHelper::GetReturnType to mirror::ArtMethod.\n\nAlso, fix missing handle in HasSameSignatureWithDifferentClassLoaders.\n\nChange-Id: I9e1ffd09be950ecc8346fc3c485760d82d9ecab3\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "f731a78809ac61a9085781370f0f38ef88305276",
      "tree": "f20c145d8240a560c251f788acf7de48f6b7ca45",
      "parents": [
        "59dce708c643fef943f8d1ce8cf9414d7bdba2e9",
        "5ca20548f6298b16ebf9793d0135c1478dd65946"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 18:29:17 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 29 18:29:17 2014 +0000"
      },
      "message": "Merge \"ART: More verifier error output\""
    },
    {
      "commit": "5ca20548f6298b16ebf9793d0135c1478dd65946",
      "tree": "af789b22e52d66917decdaa782b2090cc788ffbf",
      "parents": [
        "c70535b4f9f1ff3e3da451734bb7d9601012ccc1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 19:02:30 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 09:13:51 2014 -0700"
      },
      "message": "ART: More verifier error output\n\nAdd some debug output on verifier abort.\n\nChange-Id: I4a84ff1d8e1bad689addca287a989639e7111b97\n"
    },
    {
      "commit": "cb3c08fe9c733e477776dcc0d0fa5a3cf0053aa7",
      "tree": "518abbf5fa2dc8488ddb7f31b7941d41dc00f002",
      "parents": [
        "c70535b4f9f1ff3e3da451734bb7d9601012ccc1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 13:16:38 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 08:12:44 2014 -0700"
      },
      "message": "ART: Do a pre-pass for monitor_enter dex pc search\n\nIn case the method does not have any monitor_enter instructions,\nit is unnecessary to run the full verifier. Speeds up stack dumps\nand works around b/17514582.\n\nBug: 17514582\nChange-Id: I5201bfbb9fb6cad49596b4c72e71983b58d9f20c\n"
    },
    {
      "commit": "5f09be9e4fbd3002712e820245562b1a57e55c3f",
      "tree": "202981b77484b85fe85eb7591aba07b98aa0f941",
      "parents": [
        "acc7798973a21df5b9944348b371f0e1ceffab80"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Sep 26 10:43:59 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Sep 26 10:43:59 2014 -0700"
      },
      "message": "Fix verifier crash in GetQuickFieldAccess().\n\nBug: 17671806\nChange-Id: Ifb603f6f55a94826d656a4c73a7e328d74f6dac9\n"
    },
    {
      "commit": "9bc6199a9a6e140102951f6f38845b43b561af83",
      "tree": "31a9fbba4960a6e5ee691028108e2e540ecacde0",
      "parents": [
        "5957d54ac0de8a318dbc5a163734f877b1185e38"
      ],
      "author": {
        "name": "Stephen Kyle",
        "email": "stephen.kyle@arm.com",
        "time": "Mon Sep 22 13:53:15 2014 +0100"
      },
      "committer": {
        "name": "Stuart Monteith",
        "email": "stuart.monteith@arm.com",
        "time": "Wed Sep 24 17:48:19 2014 +0100"
      },
      "message": "ART: Reject branch/switch/throw to move-result.\n\nmove-result* instructions must occur after invoke instructions,\nhowever it was still possible to branch or switch to a move-result*\ninstruction with creative DEX manipulation. The verifier now rejects\nthis situation, as well as having a move-result* instruction as the\nfirst instruction in a try block\u0027s handler. This now ensures that\nmove-result* must happen dynamically after an invoke, not just\nstatically.\n\nChange-Id: Ida97852f4051310fdaf38bed1d6e1c5a541c85c5\nSigned-off-by: Stephen Kyle \u003cstephen.kyle@arm.com\u003e\n"
    },
    {
      "commit": "5cbcde2983d7cb95deb38d39784f03a7192b0061",
      "tree": "e628adc6a9645827d23084e0c2f3ec52a5c7db10",
      "parents": [
        "100d341c52e312a7bef8d9b641b090f71993ee64"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 16 14:59:49 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 16 15:01:30 2014 -0700"
      },
      "message": "ART: Fix method verifier dumping\n\nDo not try to dump on hard failure.\n\nBug: 15567083\nChange-Id: I6278f551f8a9dc7411087e214023dd4d142d1d26\n"
    },
    {
      "commit": "2cbaccb67e22c0b313a9785bfc65bcb4b25d0676",
      "tree": "daeb766e19880b651fd9c4a719c9a07dd7d4bd0e",
      "parents": [
        "bace0378d720a1d2938ec7f6be17e2814671d20a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Sep 14 20:34:17 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 16 12:50:08 2014 -0700"
      },
      "message": "Avoid printing absolute addresses in oatdump\n\n- Added printing of OatClass offsets.\n- Added printing of OatMethod offsets.\n- Added bounds checks for code size size, code size, mapping table, gc map, vmap table.\n- Added sanity check of 100k for code size.\n- Added partial disassembly of questionable code.\n- Added --no-disassemble to disable disassembly.\n- Added --no-dump:vmap to disable vmap dumping.\n- Reordered OatMethod info to be in file order.\n\nBug: 15567083\n\n(cherry picked from commit 34fa79ece5b3a1940d412cd94dbdcc4225aae72f)\n\nChange-Id: I2c368f3b81af53b735149a866f3e491c9ac33fb8\n"
    },
    {
      "commit": "5a4b8a236030460651a3136397d23ca6744e7eb7",
      "tree": "0e43891398e416d3fa77c7de391bf4db4408e8ee",
      "parents": [
        "19f7c95491a053b818f914137fa73df0517b8792"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 08:30:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 19:50:12 2014 -0700"
      },
      "message": "ART: Rename Handle hierarchy\n\nBring the names in line with normal OO principles: ConstHandle\nbecomes Handle, and Handle becomes MutableHandle.\n\nChange-Id: I0f018eb7ba28bc422e3a23dd73a6cbe6fc2d2044\n"
    },
    {
      "commit": "2ed8deff799448e094fa7a7cb9cf3b718820f4c6",
      "tree": "b33fa371673d2019b6a8bdb2c928237cd7b3a9d3",
      "parents": [
        "41bc89598bbfe1037740a6a2e12ce0936dd9ba19"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 28 14:41:02 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 09:42:50 2014 -0700"
      },
      "message": "ART: Allow quickening in the boot image\n\nUpdate the class linker to accept class status from the boot image\nin compiler mode. Update compiler driver to allow quickening for\nboot image classes. Update method verifier to accept quickened\ninstructions in compiler mode when we just want to dump. Update\noatdump to the new verifier API.\n\nBug: 17316928\n\n(cherry picked from commit 35439baf287b291b67ee406308e17fc6194facbf)\n\nChange-Id: I9ef1bfd78b0d93625b89b3d662131d7d6e5f2903\n"
    },
    {
      "commit": "5182932cf6704b53e957f7b4be021fe505a55e22",
      "tree": "99ee2bfb5a6f4d27735aeed26a0533c759db733c",
      "parents": [
        "56369897d662ea63ea5ed57ae36af0ae0fa1452d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 25 15:05:04 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 09:37:25 2014 -0700"
      },
      "message": "ART: Change access flag behavior in verifier\n\nNote: this moves the miranda modifier to the upper 16 bit.\n\nBug: 16161620\n\n(cherry picked from commit 7fc8f90b7160e879143be5cfd6ea3df866398884)\n\nChange-Id: I2f591d53b7d1559171e70aaaf22225d94b4882f5\n"
    },
    {
      "commit": "7c438b19b71932ac8a44eff44f20744a01559c8d",
      "tree": "f724004a682cb7c2faa0d12579756c3a81b98252",
      "parents": [
        "ebab3bbcaa09b644acd50ec18d79cb0d239bf347"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 12 17:01:24 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 12 18:27:38 2014 -0700"
      },
      "message": "Fix stale root error in verifier\n\nThere was a stale root error caused by the static roots from\nthe reg types. These were visitied if there was an active verifier\nin the method_verifiers_ but this is not always the case when a GC\nis run. The fix is to always visit the static method verifier roots.\n\nThis only showed up as a bug without an image since these roots\nwere primitive classes and always in the image, and therefore\ndidn\u0027t ever need to be updated due to moving GC.\n\n(cherry picked from commit 6167864e28e4e12658ebdbaf1d5239acdaf4aaa4)\n\nChange-Id: I592f2770570de97b431671cfbd409f63697892f1\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "d8f69b086baf6717ce949d1c4de90d73b91083b0",
      "tree": "1a19ca7433520d48f2446d985794f0f55edef003",
      "parents": [
        "2adccb618c0de207fde96e5e90ce99c79eb8eb85"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 21:43:52 2014 +0000"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 15:21:47 2014 -0700"
      },
      "message": "Revert \"Add read barriers for the roots in the verifier.\"\n\nThis reverts commit 7da9586b559290e1c16207c6513ffe485de61655.\n\nBug: 17398101\n\nChange-Id: I1d6110fdf0d3a3c9241c8e7e7f4b85a298f9dd8e\n"
    },
    {
      "commit": "376fa68f02d1cd56e506533a3ad16de4de88271d",
      "tree": "9a462043cdacba41c96c6a1ee3c8ba08f904318b",
      "parents": [
        "ed20a4d80bcd8d47b5bcdd51ef17c786c0e5015c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Sep 07 13:06:12 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 08 22:08:53 2014 -0700"
      },
      "message": "ART: Fix unchecked register index validity\n\nThe static check of index validity is against the type given by\nthe instruction, e.g., boolean for SPUT_BOOLEAN, but the target_type\nis the resolved field type and can differ. An additional check is\nnecessary to avoid a read out of bounds.\n\nBug: 17411109\n\n(cherry picked from commit 74ae47a0590feceea31a2388f98c83e3ec0df0ec)\n\nChange-Id: Ie4ed8bbda79f3f6403a24e727450a943447aa71d\n"
    },
    {
      "commit": "8e219ae27624116b6d23e858fb21e93342f81d66",
      "tree": "a685be4079ff6c506630b720eb50226d16848005",
      "parents": [
        "0b05ec674139c2b2e0914b0bb0e1898f93a9c852"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 19 14:29:46 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 26 15:28:07 2014 -0700"
      },
      "message": "Reduce interpret-only compile time.\n\nBefore:\n39.04user 5.18system 0:29.24elapsed 151%CPU (0avgtext+0avgdata 164176maxresident)k\n38.87user 5.16system 0:29.14elapsed 151%CPU (0avgtext+0avgdata 164144maxresident)k\n\nAfter:\n36.26user 3.25system 0:27.00elapsed 146%CPU (0avgtext+0avgdata 162592maxresident)k\n36.25user 3.28system 0:26.28elapsed 150%CPU (0avgtext+0avgdata 162688maxresident)k\n\nDisabled implicit stack protection for the compiler, this reduces page faults.\n\nAdded support for not timing every method compilation and verification. NanoTime is\nslow and adds ~2 seconds of real time. This is currently enabled since people want\nto know which methods are slow to compile.\n\nBug: 16853450\n\nChange-Id: I349ffb3f36db8c437137387aa6914dc17d743f09\n"
    },
    {
      "commit": "37f05ef45e0393de812d51261dc293240c17294d",
      "tree": "7c7793862efa52e1deb42babbdcb652c245ab941",
      "parents": [
        "e25826e28ea65d9c1aa23f84788a091c677b20c7"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Jul 16 18:38:08 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Mon Aug 25 11:16:53 2014 -0700"
      },
      "message": "Reduced memory usage of primitive fields smaller than 4-bytes\n\nReduced memory used by byte and boolean fields from 4 bytes down to a\nsingle byte and shorts and chars down to two bytes. Fields are now\narranged as Reference followed by decreasing component sizes, with\nfields shuffled forward as needed.\n\nBug: 8135266\nChange-Id: I65eaf31ed27e5bd5ba0c7d4606454b720b074752\n"
    },
    {
      "commit": "bf99f77dda749e2b653e8c45259b1fb56e7bb012",
      "tree": "98addbb3533c745781bc26e4a55cbbdd6d6e97e7",
      "parents": [
        "762f0a5bdd238458bbb463a9565388f2047a98d4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 23 16:37:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 23 16:54:24 2014 -0700"
      },
      "message": "Clean up Handle usage.\n\nPrefer using ConstHandle instead of Handle as function arguments\nsince you can\u0027t assign new references to ConstHandle which helps\nprevent bugs.\n\nChanged NullHandle to be a ConstHandle so that you can never modify\nit to be a non null reference.\n\nChange-Id: I81cb979f6f8d5b49e5614966a2caf28c3701dd4f\n"
    },
    {
      "commit": "1dbc3a918612e9ce01f8b05b5ef5f4cbb34e74d0",
      "tree": "8c222c9f85ac9f14a14997fbbf5522f383096c6d",
      "parents": [
        "19c62d5e819519932aa7dff87a52f77815c64e65",
        "695c5982eeddee18c643cc2f94c9d78fa75599ab"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 22 20:34:16 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 22 20:34:16 2014 +0000"
      },
      "message": "Merge \"ART: Reject field accesses to non-reference vregs.\""
    },
    {
      "commit": "695c5982eeddee18c643cc2f94c9d78fa75599ab",
      "tree": "8bba139b6388b74737f656fdc09f8431aeb992eb",
      "parents": [
        "21106bc612a7f4158ef968f90454b4c78c4061b2"
      ],
      "author": {
        "name": "Stephen Kyle",
        "email": "stephen.kyle@arm.com",
        "time": "Fri Aug 22 15:03:07 2014 +0100"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 22 20:33:35 2014 +0000"
      },
      "message": "ART: Reject field accesses to non-reference vregs.\n\nThe verifier will now reject any iget/iput insts\nthat do not have a reference object in vB.\n\nBug: 17207857\nChange-Id: I2826f0f7abfc88561f4da9486588592f4b296d14\nSigned-off-by: Stuart Monteith \u003cstuart.monteith@arm.com\u003e"
    },
    {
      "commit": "dc3761719fb5e2d1ced5708e3c73b965f9ef0c73",
      "tree": "84d499b1be46896793bdfebe6f83bf8ca275d50b",
      "parents": [
        "a37ad7a6caad2e0a83c72c1103015202cbcaf1a4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 22 11:13:12 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 22 11:13:12 2014 -0700"
      },
      "message": "Handlerize MethodVerifier::mirror_method_.\n\nThe method (mirror_method_) wasn\u0027t handlerized across some\nallocation/GC points such as the ResolveType() call in\nScanTryCatchBlocks() and the GetReturnType() calls in\nCodeFlowVerifyInstruction().\n\nBug: 12687968\nChange-Id: I95323de14459eb5a7c4abfcf44f882f86d59be64\n"
    },
    {
      "commit": "78480ecb348beee3f27731e12ec06ade032521d6",
      "tree": "4b1e9a73212bc70f7cab9f62737b691e8769b585",
      "parents": [
        "d684cbfbe8abfb9aea4de27687041243217295c7"
      ],
      "author": {
        "name": "Elena Sayapina",
        "email": "elena.v.sayapina@intel.com",
        "time": "Fri Aug 15 15:52:42 2014 +0700"
      },
      "committer": {
        "name": "Elena Sayapina",
        "email": "elena.v.sayapina@intel.com",
        "time": "Mon Aug 18 12:42:30 2014 +0700"
      },
      "message": "ART: Fix verifier fail message.\n\nVerifier failure message is corrupted.\nThe verification failure reason overlaps verification failure location.\nMethodVerifier::Fail() method creates failure message stream by\nstd::ostringstream(failure location) constructor which by default\nsets the stream\u0027s position indicator to the begging of that stream.\nInserting failure reason to the stream by \"\u003c\u003c\" then overrides the failure location.\nUsing std::ostringstream(failure location, std::ostringstream::ate) fixes the issue\nby setting the stream\u0027s position indicator to the end of the stream on opening.\n\nChange-Id: I8cc1cffc95bc5c56aadbb9ab8c0cdc8bc680d6f4\nSigned-off-by: Elena Sayapina \u003celena.v.sayapina@intel.com\u003e\n"
    },
    {
      "commit": "1ff3c98775a4577cf053dba9a0c2d5c21c07b298",
      "tree": "2d09c27c69678b53b4c9dc486024f3547efd4bca",
      "parents": [
        "99c251bbd225dd97d0deece29559a430b12a0b66"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 02:30:58 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 16:08:05 2014 -0700"
      },
      "message": "Avoid use of std::string where we have const char*.\n\nRemoving the ClassHelper caused std::string creation for all calls to\nClass::GetDescriptor and a significant performance regression. Make the\nstd::string an out argument so the caller can maintain it and its life time\nwhile allowing GetDescriptor to return the common const char* case.\n\nDon\u0027t generate GC maps when compilation is disabled.\n\nRemove other uses of std::string that are occuring on critical paths.\nUse the cheaper SkipClass in CompileMethod in CompilerDriver.\nSpecialize the utf8 as utf16 comparison code for the common shorter byte\nencoding.\nForce a bit of inlining, remove some UNLIKELYs (they are prone to pessimizing\ncode), add some LIKELYs.\n\nx86-64 host 1-thread interpret-only of 57 apks:\nBefore: 29.539s\nAfter: 23.467s\n\nRegular compile:\nBefore: 1m35.347s\nAfter: 1m20.056s\n\nBug: 16853450\nChange-Id: Ic705ea24784bee24ab80084d06174cbf87d557ad\n"
    },
    {
      "commit": "0d08727e19b46770f0f27633d08caf13d9bb3e98",
      "tree": "ccba29566141d15396ff76348ac5db040c7bab1b",
      "parents": [
        "7aaa8dbfbcde7f58564b42044892891559669838"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 04 14:47:17 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Aug 04 15:07:17 2014 -0700"
      },
      "message": "Make verifier identify unresolved methods as constructors by \u003cinit\u003e.\n\nCheck was previously missing brackets in the method name.\n\nBug: 16560516\n\n(cherry picked from commit 04ce113458b6b01f96d58dbb4c41682ee22d8b5d)\n\nChange-Id: Ie98c5b84e73ffc43ea08e1b08ae9c6e41bcd5891\n"
    },
    {
      "commit": "7da9586b559290e1c16207c6513ffe485de61655",
      "tree": "4fb44066c831224dad49430f69aa4edf29aad3da",
      "parents": [
        "1175aec5f686b9e3d429282d7d4022c39436f71f"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jul 30 14:26:22 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jul 31 10:45:47 2014 -0700"
      },
      "message": "Add read barriers for the roots in the verifier.\n\nNote: Because the roots (the class references in RegType objects) can\nbe updated by the read barriers, a lot of uses of type \"const RegType\"\nwere replaced with \"RegType\".\n\nBug: 12687968\nChange-Id: I6cf37a87f352938d43fb51560a8d927ada104f50\n"
    },
    {
      "commit": "65c9db8dfbeea3f708f95f058f4fed7c2af71052",
      "tree": "225cfc1d87ea95583b686591f1dd752ee7ce3bb0",
      "parents": [
        "3f49507c333b7c8d36620870522a7a1055987ef8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 28 13:14:34 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 28 13:14:34 2014 -0700"
      },
      "message": "ART: Reject array-length on non-reference register\n\nIt should be a hard verifier failure if we detect an array-length\ninstruction over a non-reference-type register.\n\nBug: 16595896\nChange-Id: I059510b15c846551b2f8ded86cfd8127543324f4\n"
    },
    {
      "commit": "c389c97ca93b73b3cb380cedfe438d153b524225",
      "tree": "efb5f88c9fcb2ab87df05766fb14b3ae135d0f88",
      "parents": [
        "c836fcbb52d99efdd9ed4f5c104aebd0c37cb121",
        "2cdbad7c62f126581ec5177104de961c4d71adaa"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 22:05:50 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 22 16:18:32 2014 +0000"
      },
      "message": "Merge \"Set vtable in class object to null after linking.\""
    },
    {
      "commit": "2cdbad7c62f126581ec5177104de961c4d71adaa",
      "tree": "6283b87bc9b65249decac9b0e38fe396782b8d7e",
      "parents": [
        "c62944adcd427dca55489d234428da47c43a0aab"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Jul 16 10:44:41 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 15:03:50 2014 -0700"
      },
      "message": "Set vtable in class object to null after linking.\n\nThis is follow-up work of embedding imt and vtable for\nfaster interface/virtual call dispatching.\nOnce vtable becomes embedded, the original vtable is nulled.\n\nChange-Id: I307696657d1e283654169dbecb8f7815c42bbabc\n"
    },
    {
      "commit": "2a593a14e8e0df01a50139e0d48c7be46fb057ef",
      "tree": "4c83ba2105954bf17de0911878bcf8c93f452a9b",
      "parents": [
        "96823a6504d28cfbf2806ab301084291ddd1159e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 21 22:11:42 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 21 22:30:33 2014 -0700"
      },
      "message": "ART: Check high part of dalvik register pairs on put-wide\n\nWhen verifying a put-wide, it is necessary to check the lo and the hi\nregister for the right type.\n\nBug: 16018242\nChange-Id: I9e661951d592e155e0f281ea959e778d8f4a67ab\n"
    },
    {
      "commit": "d4a6e5cc16217bf3e9205d45b728c3d4dc1ddc54",
      "tree": "e2663eef8b42a1d367ce0225dd9e4c52f08403de",
      "parents": [
        "50246792ff37fe25446b70564c0942f04d3e5f48",
        "f91baf17ad11a86c84c9fc34ff70feee65a43233"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 18 23:40:02 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jul 17 22:34:19 2014 +0000"
      },
      "message": "Merge \"ART: Also accept java.lang.Throwable as a catch-all handler.\""
    },
    {
      "commit": "f91baf17ad11a86c84c9fc34ff70feee65a43233",
      "tree": "9bd78c90b89cae8d7530690eec49564d0ef80faf",
      "parents": [
        "031ddea20cb311dfdb3bd16a13750f9cb426b299"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 18 15:41:00 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 18 16:38:31 2014 -0700"
      },
      "message": "ART: Also accept java.lang.Throwable as a catch-all handler.\n\nAccept catch handlers with catch type of java.lang.Throwable as\ncatch-all handlers.\n\nBug: 16308310\nChange-Id: Ie9b9582ee71c94c82b7695dc6f9c2c6df3d869d8\n"
    },
    {
      "commit": "00633eb490ad21f711dcfccfb3a70992b2f8a72a",
      "tree": "625bb71f4b14bf7cbb2e40a881b31da84ff9aef9",
      "parents": [
        "031ddea20cb311dfdb3bd16a13750f9cb426b299"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 17 16:13:35 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 17 16:16:59 2014 -0700"
      },
      "message": "ART: Make a soft failure in method verifier hard, add check\n\nMake the soft error of using a primitive type in an instanceof a\nhard verifier error.\n\nAdd a check when doing check_cast peep-hole optimization to check\nwhether the cast type is valid.\n\nBug: 16020300\nChange-Id: Icaea560d17804f24a13dc09c115e9ec7039cb472\n"
    },
    {
      "commit": "e5877a12c30afe10a5c6a1afaff7a47ef44a2a5f",
      "tree": "161535abb39394fc3b1d96d31625ba7eb61c8497",
      "parents": [
        "aab012d6196bd29b3167963ec8acb0b9780672b2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 12:06:35 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 12:06:35 2014 -0700"
      },
      "message": "Fix x86 build.\n\nAlso fix attributes/annotalysis on entrypoint_utils functions now we have\nclang that is smarter wrt warnings than GCC.\n\nChange-Id: I69257b4ad9a27d07acbc973d21a1cfa4260a8ed6\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "ebbdd87cbb57e45da341fbf7325406e982810c10",
      "tree": "fc8c236a7fd44ad040e013c549822868a777b747",
      "parents": [
        "751dee376dcd972af996106a4c32ab4964c1f867"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 07 23:53:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 08 17:30:29 2014 -0700"
      },
      "message": "Only allow instance-of to improve knowledge of a type for downcasts.\n\nPrevious \"not upcast\" test could improve a type to an impossible type that\nfollowing a merge back with the original register would lead to conflict\n(and subsequent verifier errors).\nModify UpdateRegisters so that the work line will be updated if merging\ncauses changes in the fall-through case.\n\nBug: 15808277\nIssue: https://code.google.com/p/android/issues/detail?id\u003d72093\nChange-Id: Ib16cae8506246177e902825af036d5a397ad0dac\n"
    },
    {
      "commit": "b06a0364e9a5a27d2a33ab7a9c9b98c7332e6cea",
      "tree": "3998c29f7d13a5716e3ec73d97e41194ba3ebb75",
      "parents": [
        "5c0fcdad7578dd8ce0e53e9d8f02777b253762cc",
        "c3314311df5ae50ea9151ac4933d3eccbdefb41a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Jun 21 01:38:46 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 20 02:09:57 2014 +0000"
      },
      "message": "Merge \"ART: Method verifier must check invoke-virtuals for non-zero args\""
    },
    {
      "commit": "c3314311df5ae50ea9151ac4933d3eccbdefb41a",
      "tree": "9da2c9de0286fad85f29a132fbc35d43951b7eab",
      "parents": [
        "a81fe3d512ef846aad3398222afd1f0588bbaf7c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 19 18:13:29 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 20 18:03:12 2014 -0700"
      },
      "message": "ART: Method verifier must check invoke-virtuals for non-zero args\n\nCompiler checks rely on all instructions, not just reachable ones,\nso add two new verifier flags.\n\nBug: 15755602\nChange-Id: Ia9c2146cf82d94ce4d69fb6f7be6450137bb84bd\n"
    },
    {
      "commit": "77cd4d677c682c194b8325b209cb76720be4046a",
      "tree": "be9c93a89aff1e1d3699d1eebc2feb2497a7de47",
      "parents": [
        "a81fe3d512ef846aad3398222afd1f0588bbaf7c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 19 17:29:48 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 19 17:29:48 2014 -0700"
      },
      "message": "ART: Method verifier needs to check 2-reg values\n\nThe method verifier did not check against the second register\nfor a J or D parameter from a method signature.\n\nThe register line had a wrong DCHECK that did not catch this even\nin debug mode.\n\nBug: 15751498\nChange-Id: Ic6af08bf4704b3ab0f308dd9f0da28691a4cb024\n"
    },
    {
      "commit": "95c0bf8fb5847cff263639f889d04c7c3c26eedd",
      "tree": "08e6eb7b36f4f612fbdb4809cfe21d9cfd41a6d8",
      "parents": [
        "a9f64d7b6857532bb871a7bf1d3c9c9a44ed5917"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 16 14:06:52 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 17 00:27:05 2014 +0000"
      },
      "message": "ART: Make verifier check invocation args of unresolved methods\n\nIn the case of unresolvable methods it is not enough to bail out\nwith a soft verifier failure, as the compiler relies on the\ninvocation being well-formed. Check all arguments against the\nproto id in such a case.\n\nAlso make sure to complete parsing arguments in the case the\nmethod was resolved.\n\nRefactored code to unite these two cases.\n\nBug: 15616104\nChange-Id: I5ec58cbfbf6b09eaaf07ddf15edae7c6a8b62b17"
    },
    {
      "commit": "073ed9ba97df41862403f64d7a2e824d09ab50ed",
      "tree": "765f4d1bc73507ce6b96d60dcff8b7d184f32fad",
      "parents": [
        "8cd927c8f6911cfb6118b8c54550959c09eb84f8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 13 15:46:46 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 13 15:46:46 2014 -0700"
      },
      "message": "ART: Ignore timing issues in debug builds\n\nWhen in debug builds, do not warn about slow verification and\ncompilation.\n\nChange-Id: Ib982e1c7cf40cf624688bbf6c41f0a7cc53bbc67\n"
    },
    {
      "commit": "73d1f2767d5866593c780bede8091f3aee81aecf",
      "tree": "22c65b5b728a27313b4efd24a0a59e2e55dcd32c",
      "parents": [
        "f08793720664025af1c45798bb30cf81575b1f79",
        "5fb22a916dcb652fd2c2a2421de621f458177dcd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 13 18:34:21 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 12 05:34:11 2014 +0000"
      },
      "message": "Merge \"Don\u0027t verify runtime only opcodes in the data-flow phase of verification.\""
    },
    {
      "commit": "5fb22a916dcb652fd2c2a2421de621f458177dcd",
      "tree": "4453b47638d9c8b8da61c9fc967f2e7ec89ffb22",
      "parents": [
        "1eadc56648869e1b3989407525313a7eea1fed22"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 13 10:31:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 13 11:25:17 2014 -0700"
      },
      "message": "Don\u0027t verify runtime only opcodes in the data-flow phase of verification.\n\nBug: 15570344\nChange-Id: I0304e8742a1d0318783ba72862e684ab91f63d0e\n"
    },
    {
      "commit": "acc4d2f72a2cadce2964dd2cc9eb20f73fc552ff",
      "tree": "f0598b7c0e46816424f8d36d4f39ad0ba9351631",
      "parents": [
        "3316ff53b8745707a492d0442a94174abc679ece"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 19:35:05 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 19:41:45 2014 -0700"
      },
      "message": "ART: Check the number of invocation args in verifier\n\nCheck the number of invocation arguments against the method\u0027s\nprototype signature. It could happen that the method wasn\u0027t\navailable, yet, in which case we would let a clearly wrong\ninstruction through.\n\nThis generalizes https://android-review.googlesource.com/#/c/97779/\n\nBug: 15570483\nChange-Id: Ie81aff3c1166a2b2bf1385414dff2e22fbb40ef2\n"
    },
    {
      "commit": "3316ff53b8745707a492d0442a94174abc679ece",
      "tree": "605b94edfa927c4803da77ee52af2dd57a45281c",
      "parents": [
        "a2b87c252cdbde5302dd5cccd7e16eebe5dbb694",
        "9f2b6433c17ec8ea30015fd1b20e7a0ad3d4159e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 12 23:44:57 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 12 03:32:07 2014 +0000"
      },
      "message": "Merge \"ART: Invoke_virtual needs at least receiver parameter\""
    }
  ],
  "next": "9f2b6433c17ec8ea30015fd1b20e7a0ad3d4159e"
}
