)]}'
{
  "log": [
    {
      "commit": "8a0128a5ca0784f6d2b4ca27907e8967a74bc4c5",
      "tree": "0dec75200282ae5e49785395e97bd4e6459f1c09",
      "parents": [
        "60438b46090d22bb9b978196f5aa53fab3b89759"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 28 07:38:35 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 29 11:11:46 2016 -0800"
      },
      "message": "ART: Add dex::StringIndex\n\nAdd abstraction for uint32_t string index.\n\nTest: m test-art-host\nChange-Id: I917c2881702fe3df112c713f06980f2278ced7ed\n"
    },
    {
      "commit": "a5b09a67034e57a6e10231dd4bd92f4cb50b824c",
      "tree": "304be738f4fa528b7ad2676103eecc84c79eaeeb",
      "parents": [
        "dac7ad17c78387d15d7aefae0f852dddf5f37e34"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Nov 17 15:21:22 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 21 10:57:00 2016 -0800"
      },
      "message": "ART: Add dex::TypeIndex\n\nAdd abstraction for uint16_t type index.\n\nTest: m test-art-host\nChange-Id: I47708741c7c579cbbe59ab723c1e31c5fe71f83a\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "8ec3bd2b31ccbc9027b8e9b1949dd1804bb6d30f",
      "tree": "6cc457a060c7faade49229010bfe3119e55b254d",
      "parents": [
        "c218427ab96e521e0c4e9a3ffeb87e6c57eea0a5"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 03 12:46:23 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 10 14:00:16 2016 +0100"
      },
      "message": "Instruction: Add new formats 45cc and 4rcc.\n\nThese are new 4 byte formats with the following properties.\n\n- The first three (16 bit) words of these instructions have the same\n  format as 35c and 3rc respectively.\n- The fourth 16 bit word encodes an additional constant index reference.\n\nThis change includes placeholder opcodes for invoke-polymorphic and\ninvoke-polymorphic/range which will be the first dex instructions that\nuse this new format. In addition to a method_idx that gives the invoked\nmethod, these instructions also provide a proto_idx which gives the\n(static) type signature of the call site.\n\nThe only reason these are included in this change is because we need\nan instruction with a given format to write a unit_test using the Instruction\nAPI.\n\nbug: 30550796\ntest: make test-art-host\n\nChange-Id: I02612ddee47169757175a8079d82f811f6545945\n"
    },
    {
      "commit": "14832efeb92334c562ebedef34e920d30e3cee69",
      "tree": "57d10c24966a46ae1c01861ee579ac6000326c45",
      "parents": [
        "c984725d0035e1925371757c38fed339b409e525"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 05 11:44:32 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 09 13:47:49 2016 +0100"
      },
      "message": "Revert experimental lambda feature.\n\nThis is a revert of the following changes :\n\n30c475a2046951a81769c2db0b2dad66cd71e189.\nlambda: Minor capture-variable/liberate-variable clean-up after post-merge reviews.\n\n6918bf13eb855b3aa8ccdddda2d27ae8c60cec56.\nlambda: Experimental support for capture-variable and liberate-variable\n\nfc1ccd740b7c8e96dfac675cfc580122cd1b40a6.\nlambda: Infrastructure to support capture/liberate-variable dex opcodes\n\ne2facc5b18cd756a8b5500fb3d90da69c9ee0fb7.\nruntime: Add lambda box/unbox object equality\n\n2ee54e249ad21c74f29a161e248bebe7d22fddf1.\nruntime: Partially implement box-lambda and unbox-lambda experimental opcodes\n\n158f35c98e2ec0d40d2c032b8cdce5fb60944a7f.\ninterpreter: Add experimental lambda opcodes for invoke/create-lambda\n\na3bb72036f5454e410467f7151dc89f725ae1151.\nAdded format 25x to dexdump(2).\n\nPlus surrounding cleanups.\n\nTest: make test-art\nChange-Id: Ic6f999ad17385ef933f763641049cf721510b202\n"
    },
    {
      "commit": "bd48b3490a35480ad54586a4d8c7529e0a9a8c84",
      "tree": "22f88d55fda3f363590bfc04d225840e7f4480fe",
      "parents": [
        "ba65cc4a71273904294245cb37ce70e5bce797e3"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Aug 01 17:32:37 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 02 08:09:19 2016 +0000"
      },
      "message": "dex_instruction: remove unused parameter from instruction definitions.\n\nbug: 30550796\ntest: make test-art-host\nChange-Id: Ib80a2d5c548578cefb0552b597e1d50b813ce8ef\n"
    },
    {
      "commit": "fba39972d99701c80bf3beb7451aca508d67593c",
      "tree": "0d80ecb6997290140503926b08a72e7418915526",
      "parents": [
        "718d4e269810c17d03df909c84b2f7bbd4f61fb9"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed May 11 11:26:48 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Fri May 13 10:38:56 2016 -0700"
      },
      "message": "Fix misc-macro-parentheses warnings.\n\n* Add parentheses to fix warnings.\n* Use NOLINT to suppress wrong clang-tidy warnings.\n\nBug: 28705665\nChange-Id: Icc8bc9b59583dee0ea17ab83e0ff0383b8599c3e\n"
    },
    {
      "commit": "67c5ddd09c404e14d6081d8d918baa2c08b49741",
      "tree": "03e1d687a3e3a4bf8f415524dfedac7e964726f0",
      "parents": [
        "5bde68ff34aeb84a1fc84734bcd31471d9a9717c"
      ],
      "author": {
        "name": "Serdjuk, Nikolay Y",
        "email": "nikolay.y.serdjuk@intel.com",
        "time": "Mon Dec 07 14:45:44 2015 +0600"
      },
      "committer": {
        "name": "Serdjuk, Nikolay Y",
        "email": "nikolay.y.serdjuk@intel.com",
        "time": "Tue Dec 08 15:22:52 2015 +0600"
      },
      "message": "ART: Instruction dumper should handle out-of-bound index for const-string\n\nIf const-string refers to out-of-bound index then we should handle it\nsimilarly to PrettyField, PrettyMethod and PrettyType.\n\nChange-Id: Ib6b1e20169e4b47c1cdb7dda80320ed21d61cfe3\nSigned-off-by: Serdjuk, Nikolay Y \u003cnikolay.y.serdjuk@intel.com\u003e\n"
    },
    {
      "commit": "30c475a2046951a81769c2db0b2dad66cd71e189",
      "tree": "f3d87ecc26335ef7e3500430c6c2ac93a8fa4317",
      "parents": [
        "8c812b71552a8a1b2bf06e430d355b12b7084807"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Oct 06 13:59:43 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Nov 02 14:14:49 2015 -0800"
      },
      "message": "lambda: Minor capture-variable/liberate-variable clean-up after post-merge reviews.\n\nChange-Id: I64f867d4ed5a5efcac138097f38efe4bb7f1281d\n"
    },
    {
      "commit": "6918bf13eb855b3aa8ccdddda2d27ae8c60cec56",
      "tree": "907f504a4d004ac1e44b73c3984e365e889407e8",
      "parents": [
        "446ca43e8f876dcc1ee90fcf432d6392c44a3f60"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Sun Sep 27 19:19:06 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Sun Sep 27 19:19:23 2015 -0700"
      },
      "message": "Revert \"Revert \"lambda: Experimental support for capture-variable and liberate-variable\"\"\n\nThis reverts commit 7bbb80ab52c203e44d2ded2c947b3b03b4b31ec4.\n\nChange-Id: If806ce5c6c5e96fdb2c3761dee096f74e7e5b001\n"
    },
    {
      "commit": "7bbb80ab52c203e44d2ded2c947b3b03b4b31ec4",
      "tree": "eb54c557467f1401c4bd5729fa2b9e8ae91e8ffd",
      "parents": [
        "b72123440d8541362ebdb131436f9dbdda5fd329"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Sep 27 19:50:40 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Sep 27 19:50:40 2015 +0000"
      },
      "message": "Revert \"lambda: Experimental support for capture-variable and liberate-variable\"\n\nTest fails.\n\nThis reverts commit b72123440d8541362ebdb131436f9dbdda5fd329.\n\nChange-Id: Ic9ed92f8c826d8465eb36b746dc44af05caf041c\n"
    },
    {
      "commit": "b72123440d8541362ebdb131436f9dbdda5fd329",
      "tree": "41e3d21496a270edc06879f084a504a39af9469b",
      "parents": [
        "9f3b8d38de615efef6d2536817f19ad2ccaa313a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 25 14:22:08 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 25 15:53:00 2015 -0700"
      },
      "message": "lambda: Experimental support for capture-variable and liberate-variable\n\nSupports capturing/liberating any primitive variables.\nNo support for capturing objects/lambdas yet since they would both\nneed GC changes to track roots through closures.\n\nChange-Id: Ibfb68bfe4c579dbf93823aac4c0e6ac8f6360c5d\n"
    },
    {
      "commit": "b1f3753d890e17b7b0d4e2779e8dfd8aa5bf0e2d",
      "tree": "160176ad18b64418b225b7031aa2bfbd1fd8320a",
      "parents": [
        "806af26f1a8f107cb4f4430ceec8dc9f360f3795"
      ],
      "author": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jun 29 11:03:55 2015 -0700"
      },
      "committer": {
        "name": "Aart Bik",
        "email": "ajcbik@google.com",
        "time": "Mon Jun 29 14:26:02 2015 -0700"
      },
      "message": "Added index type of dex byte instructions.\n\nRationale:\nThe information was already in the instruction_list but not\nexposed as enum through a getter. This CL adds that ability.\nThis information is needed by the upcoming Art-based dexdump.\n\nNOTE:\nAdded \"Index\" to the enum constants naming convention.\n\nNOTE:\nFixed few incorrect quickened entries in instruction_list.\n\nBug: 17442393\n\nChange-Id: Ica18ae43135f78f29e9832f5a101d497e54724cf\n"
    },
    {
      "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": "4f0be4d51f6842ac432ab24c2091b57806837a69",
      "tree": "e9a6c00d51f5fe01ae41ea08a7b62a7ae7487d41",
      "parents": [
        "02abb5075f3085e69c0c81fb5724c066f6c845b7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 22:16:14 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 22:16:14 2015 -0800"
      },
      "message": "ART: Fix off-by-two whitespace\n\nFollow-up to change 134380. Fix the whitespace to be printed. Fix\nstyle. It\u0027s surprising the linter did not complain.\n\nChange-Id: I3abcde3f401fa1fd4d7a847ff1f071fba23ce6a7\n"
    },
    {
      "commit": "32f500daa2c04b1efe946c12c90502736e47d5fc",
      "tree": "7065250ac6e2c07c252e1522bbf5762e7437133c",
      "parents": [
        "01b7c431ed85e0eae4554f6fc0f79a78bc82f31f"
      ],
      "author": {
        "name": "Anestis Bechtsoudis",
        "email": "anestis@census-labs.com",
        "time": "Sun Feb 22 22:32:57 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 25 11:48:40 2015 -0800"
      },
      "message": "ART: oatdump enhancements\n\nNew features list includes:\n- Class filter option to limit classes search space\n- Method filter is applied only against the method\n  name, instead of the entire signature. Can be\n  combined with class filter for maximum efficiency.\n- Bulk dump of class and method names list only.\n  Can be combined with filters to limit results.\n- Export embedded dex files from input oat files\n  to filesystem (symlinks not supported as utils\n  functions are utilized for os \u0026 fs operations).\n- addr2instr option to locate the in-range method\n  implementation and limit disassemble dumps. Input\n  relative addr is added to oat executable offset to\n  calculate the search offset. If method has been\n  successfully located, code is dumped and program\n  aborts further analysis of the input file. Methods\n  located before the target address just print their\n  signature, although skip all disassemble and other\n  info. Calculated search offset is also printed as\n  part of the initial header info.\n- Little-endian dex instructions bytecode is printed\n  in the same line before the instruction string.\n\nSome minor re-orders have been also taken place for\nmore targeted results.\n\nChange-Id: I3116ee3c99c258718f46faea8ea4295da6ae2bf7\nSigned-off-by: Anestis Bechtsoudis \u003canestis@census-labs.com\u003e\n"
    },
    {
      "commit": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "c7dd295a4e0cc1d15c0c96088e55a85389bade74",
      "tree": "0c08a2236bc9ba5d9a4dc75d4dd0ed2d76f8f1c6",
      "parents": [
        "94e5af8602150efa95bde35cc9be9891ddf30135"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 21 23:31:19 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 12:06:23 2014 -0700"
      },
      "message": "Tidy up logging.\n\nMove gVerboseMethods to CompilerOptions. Now \"--verbose-methods\u003d\" option to\ndex2oat rather than runtime argument \"-verbose-methods:\".\nMove ToStr and Dumpable out of logging.h, move LogMessageData into logging.cc\nexcept for a forward declaration.\nRemove ConstDumpable as Dump methods are all const (and make this so if not\ncurrently true).\nMake LogSeverity an enum and improve compile time assertions and type checking.\nRemove log_severity.h that\u0027s only used in logging.h.\nWith system headers gone from logging.h, go add to .cc files missing system\nheader includes.\nAlso, make operator new in ValueObject private for compile time instantiation\nchecking.\n\nChange-Id: I3228f614500ccc9b14b49c72b9821c8b0db3d641\n"
    },
    {
      "commit": "fc787ecd91127b2c8458afd94e5148e2ae51a1f5",
      "tree": "ef48c0f511ee9bf4ed85607cc4d530bace7e6cae",
      "parents": [
        "8fa8c904f7c783204a1dc9438429391d256658da"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 21:56:44 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 22:22:46 2014 -0700"
      },
      "message": "Enable -Wimplicit-fallthrough.\n\nFalling through switch cases on a clang build must now annotate the fallthrough\nwith the FALLTHROUGH_INTENDED macro.\nBug: 17731372\n\nChange-Id: I836451cd5f96b01d1ababdbf9eef677fe8fa8324\n"
    },
    {
      "commit": "576ca0cd692c0b6ae70e776de91015b8ff000a08",
      "tree": "de632fae7ee9f096e7a2c54a7fcdace8f6ae7106",
      "parents": [
        "e21bf0099117b82963cdf7f95a1b8dabfcf29397"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 06 15:58:22 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 06 16:27:45 2014 -0700"
      },
      "message": "Reduce header files including header files.\n\nMain focus is getting heap.h out of runtime.h.\n\nChange-Id: I8d13dce8512816db2820a27b24f5866cc871a04b\n"
    },
    {
      "commit": "29a2648821ea4d0b5d3aecb9f835822fdfe6faa1",
      "tree": "2eb972b2b006e4d2842c8cf6a1d6631f90a39249",
      "parents": [
        "dbb8727b0b3ae73e84fb8db55e051336d6222add"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 02 15:27:29 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 02 15:35:19 2014 -0700"
      },
      "message": "Move DecodedInstruction into MIR.\n\nChange-Id: I188dc7fef4f4033361c78daf2015b869242191c6\n"
    },
    {
      "commit": "7aca91db1571594cdb7e0a9ee704530b09c066e4",
      "tree": "de2cf12b3410680e3972902f22c3b156186f2283",
      "parents": [
        "cfd5acf281b0c509f86b13d73c6a8dfa3ea9922c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 31 18:10:53 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 31 18:10:53 2014 -0700"
      },
      "message": "Fix instruction printing for filled-new-array\n\nOnly print the registers that are actually used. The rest is\ngarbage.\n\nChange-Id: Ic9f03a51f81b95f7c70cf3e19122c8980003ae36\n"
    },
    {
      "commit": "b574c1816c7a2f160b267cd100f36f157a9abcf6",
      "tree": "9d306e44737ad2ad0343e2a9114229a093ae37c0",
      "parents": [
        "c0df897d264d16a991bf092f7b9431ce5a4f1f0b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 23 19:51:19 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 23 19:51:19 2014 -0800"
      },
      "message": "64bit friendly printf modifiers in Instruction::DumpString.\n\nChange-Id: Ibcfa81f27bc92136d7b62dc4cdd3325c273baaa0\n"
    },
    {
      "commit": "7dfb28c066159e6cde8181720f0c451a700ef966",
      "tree": "5279fb95da015365846eb48d931b9355b540cb9e",
      "parents": [
        "a7e885013753df3f07bf038a8c4a187fb97c78e1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 22 08:18:36 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 23 10:49:29 2013 -0700"
      },
      "message": "Don\u0027t scan image space when starting runtime.\n\nBug 10432288.\nFind Classes and Strings from dex caches lazily rather than when the image is\nloaded.\nMake class status changes do notifies when there can be waiters.\nFor Class lookup there\u0027s a pathology if we always search dex caches and\nso after 1000 failures move all classes into the class table.\nBe consistent in using \"const char*\" for class linker descriptors as this\nmost easily agrees with the type in the dex file.\nImprove the intern run-test so that it has a case of a literal contained in the\nimage.\nModify image_test to allow any valid lock word rather than expecting 0, ideally\nwe wouldn\u0027t see inflated monitors but we do due to NotifyAll (see bug 6961405).\n\nChange-Id: Ia9bfa748eeccb9b4498784b97c6823141b1f6db8\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\n"
    },
    {
      "commit": "0e260a32601fb1178e11837c460807071d489f82",
      "tree": "5b9d4ac485805f99e0ada0009bbe040cf0d523e9",
      "parents": [
        "49ed57499b918553e2d3db922ca2826dffa5bcd1"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Fri Jun 21 09:20:34 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Mon Jul 22 10:19:07 2013 -0700"
      },
      "message": "Added code generation framework.\n\nvisitors.h: Contains only IR visitor declarations for now.\ncode_gen.h: Code generation vistor declaration (needs llvm).\ncode_gen.cc:Code generation visitor implementation (needs llvm).\ninstruction_nodes.h: Classes for each type of instruction; this\n            enables the visitor to visit each instruction differently and\n            corresponds to the sea of nodes paper.\nsea_node.h : Moved base Sea IR Node to this separate header.\n             Replaced NO_REGISTER with enum (including RETURN_REGISTER)\nsea.cc: Addded code generation call.\n        Set parent region for SignatureNodes.\n        Propagate method and class ids in IR generation routine.\n        Create InstructionNode subclasses.\n*.mk: Updated to support the new files. Fixed some pre-existing formatting.\ninstruction_tools.h: Fixed double-define of NO_REGISTER to\n                     refer to the new enum.\ndex_instruction.cc: Added support for one more instruction in\n                    HasRegXX and VRegXX functions.\n\nChange-Id: I7c78f603e41df7bf9da5b77951b8485dd1b49200\n"
    },
    {
      "commit": "5775391897aa290d96ad903ddbe00f66e7a6a4f8",
      "tree": "d2719cac0d85928b60c82eb17e449f296ee138ed",
      "parents": [
        "d0b495921acbe890892eddd6a7b055acee3d6505",
        "6f485c62b9cfce3ab71020c646ab9f48d9d29d6d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 19 11:24:46 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jul 19 11:24:46 2013 -0700"
      },
      "message": "am 6f485c62: Fix cpplint whitespace/indent issues\n\n* commit \u00276f485c62b9cfce3ab71020c646ab9f48d9d29d6d\u0027:\n  Fix cpplint whitespace/indent issues\n"
    },
    {
      "commit": "6f485c62b9cfce3ab71020c646ab9f48d9d29d6d",
      "tree": "870b72918c03922b1ae473a09ab5624fb3c9457d",
      "parents": [
        "9b7085a4e7c40e7fa01932ea1647a4a33ac1c585"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 15:35:35 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 15:48:15 2013 -0700"
      },
      "message": "Fix cpplint whitespace/indent issues\n\nChange-Id: I7c1647f0c39e1e065ca5820f9b79998691ba40b1\n"
    },
    {
      "commit": "b9070095218595a5d6a37ef874df2794c1761030",
      "tree": "cab984d0ac72b8df4915f75277cd7efe0e8c9a3e",
      "parents": [
        "08524597899d0bb021c9165218deff51dc88da50",
        "df62950e7a32031b82360c407d46a37b94188fbb"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 10:50:06 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 10:50:06 2013 -0700"
      },
      "message": "resolved conflicts for merge of df62950e to dalvik-dev\n\nChange-Id: I78fbcfc7a2dcbeccb7557ca27302928d7d00debd\n"
    },
    {
      "commit": "df62950e7a32031b82360c407d46a37b94188fbb",
      "tree": "038bf95a2ce296ae3e0c30a131ac22c0986f0f52",
      "parents": [
        "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 22:39:56 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:13:18 2013 -0700"
      },
      "message": "Fix cpplint whitespace/parens issues\n\nChange-Id: Ifc678d59a8bed24ffddde5a0e543620b17b0aba9\n"
    },
    {
      "commit": "1db9113bcc12368e405583804ceb8aa7c80cc0cd",
      "tree": "b826b626f901b6012adecf697cb979d371aca78f",
      "parents": [
        "bba5dd55b7deda3a3271be502f1d3b0c30a759d6",
        "7940e44f4517de5e2634a7e07d58d0fb26160513"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 18:05:20 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 18:05:53 2013 -0700"
      },
      "message": "resolved conflicts for merge of 7940e44f to dalvik-dev\n\nChange-Id: I6529b2fc27dfaedd2cb87b3697d049ccabed36ee\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "bba5dd55b7deda3a3271be502f1d3b0c30a759d6",
      "tree": "74bf9e72fbd66def253f317b9d8b6d7b8d67b86b",
      "parents": [],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri Jul 12 22:57:56 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Jul 12 22:57:56 2013 +0000"
      },
      "message": "Merge \"Semi-pruned SSA support for sea-ir.\" into dalvik-dev"
    },
    {
      "commit": "d25de7a7c5f3c9462654a572e28cca73909520b0",
      "tree": "2309d2c81ab43c4b474424e3fb4d4ef66d296508",
      "parents": [
        "8a8539937f9cdbe37e0fba64101012a35ae204bf"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Fri Jun 21 09:20:34 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Wed Jul 03 11:48:17 2013 -0700"
      },
      "message": "Preparing SSA support for SEA IR: reaching definitions.\n\nAdded the following:\n- Downward-exposed uses.\n- Reaching definitions.\n- Better .dot generation.\n\nPer file:\nsea_ir/sea.*: Downward exposed definitions and reaching definitions code.\ndex_instruction.*: Wrapper function added to expose the vA register,\n                   which is later used by dataflow analysis.\nsea_ir/instruction_tools.*: These tools provide info needed by dataflow analysis\n                            that is dependent on dex format.\ndex/frontend.cc: Formatting issues fixed.\nsea_ir/*.*: All files pass cpplint validation.\n*.mk: Support for new files added in this CL.\n\nChange-Id: Ic510e7fb55aebcde99a121304ee7e841a3307358\n"
    },
    {
      "commit": "39f992750ac1eb7e51955d3e52bddc32b37c370f",
      "tree": "968d9aeeb41396cae603fe98a9262b8837032218",
      "parents": [
        "7467ee05012e1fd9834df74663c1ebda46f5636b"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Jun 25 13:17:36 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Wed Jun 26 15:40:36 2013 -0700"
      },
      "message": "Added wrapper functions for register acccess in Instruction.\n\nThe VRegB and VRegC functions allow uniform\naccess to the parameter registers, no matter what the\ninstruction format is.\n\nChange-Id: I3b33358ea0ed071e22bc6d51bd01fce29bbd432c\n"
    },
    {
      "commit": "2d6ba5158d7fd459db2870df47300b517dc4d08c",
      "tree": "51e306969d4d707aee7a6bc36481390721e0f81f",
      "parents": [
        "1e2ee7de9dff66f7ca2bdf83a7262e21d75b37d1"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 11:31:37 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Jun 24 15:29:06 2013 +0200"
      },
      "message": "Quickening support.\n\nThis CL adds quickening support for methods which are interpreted at runtime.\n\nThis CL introduces a DEX-to-DEX compiler. A method is now compiled in one of\nthe two following modes:\n- Native compilation: the method is compiled by the Quick or Portable backends.\nAt runtime, the generated native target-dependent code is executed.\n- DEX-to-DEX compilation: the method is executed by the interpreter at runtime.\nIts DEX code is compiled so some instructions can be replaced by special\ninstructions only valid at runtime. No native code is generated.\n\nThe quickening adds special instructions to improve runtime performance. They\nare \"-quick\" versions of the following instructions:\n- iget/iput\n- iget-wide/iput-wide\n- iget-object/iput-object\n- invoke-virtual/range.\n\nThese special instructions cannot be treated by the verifier since they lose\nthe field/method index referencing the field/method being accessed/invoked.\nTo prevent this, the DEX-to-DEX compiler is run only on methods of preverified\nclasses (without verification error at compilation time).\n\nThe DEX-to-DEX compiler implements quickening support using the CompilerDriver\ninterface like the native compiler does (Quick or Portable backends).\nTo replace instructions, the DEX-to-DEX compiler must be able to modify the\nmmapped DEX file. Since it can be read-only protected, the DEX-to-DEX compiler\nmust be able to temporarily change its protection to read-write mmapped file.\nTo achieve this, this CL adds support for changing DEX file protection with\nDexFile::EnableWrite and DexFile::DisableWrite methods. Besides, it also adds\na dedicated lock (DexFile::modification_lock) to ensure thread-safety and avoid\nconcurrent DEX file protection change (from a parallel DEX-to-DEX compiler on\nthe same DEX file).\n\nChange-Id: Iaafd103b9766810d7fc94a2c424a8fafba66e26a\n"
    },
    {
      "commit": "b43cef30fa7171f5b33c5f94853ad8474ed08022",
      "tree": "7b2e6525f0d23f3c24821e45f9ac264362239ab6",
      "parents": [
        "d4e868a25128e31c92b2779e7d2e15f9afdf4fff"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 23 11:59:20 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 23 15:01:38 2013 -0700"
      },
      "message": "Fix for register number display in oatdump.\n\nChange-Id: Iefd52cb5df95d118804e7f5bbd921b82f5f11213\n"
    },
    {
      "commit": "d4e868a25128e31c92b2779e7d2e15f9afdf4fff",
      "tree": "0a6403c0d74303332dba2bda1d4f92328a077892",
      "parents": [
        "7b15b1b6809a3dc46c69610491d1b10513f449db"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 23 09:44:17 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu May 23 09:54:24 2013 -0700"
      },
      "message": "Partial fix for reg number display in oatdump.\n\nChange-Id: Ia6b5c7e0cd40faae398be93f522d8f6095c4a040\n"
    },
    {
      "commit": "75b2a4abea8a608d7aec3e417498b69b31026a74",
      "tree": "64c349fd18332fbdc9371324e4c36f1312e1daea",
      "parents": [
        "34d64cba998cb86867109db351113e6f7c9293f7"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 21 09:25:10 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 21 18:29:04 2013 +0200"
      },
      "message": "Remove use of DecodedInstruction at runtime.\n\nThis CL removes the use of DecodedInstruction while executing code. This is a\nfirst step in removing its global use in Art.\n\nChange-Id: Ic7264e0d614ffab99931fd50347394a68152a10c\n"
    },
    {
      "commit": "807a25640d4f4de8143b160b3bb8f552ffbf6f4a",
      "tree": "3972b74f95282a292f9fa8bfca82bd8bbe736cfc",
      "parents": [
        "cf479b20dc78d08af75fac7192a92f7c4b259d54"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Apr 15 09:33:39 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 14 17:48:52 2013 +0200"
      },
      "message": "Improve interpreter performance.\n\nBug: 8196227\n\nThis CL removes the use of DecodedInstruction to read instruction opcode and\noperands. It now directly access to each operand according to instruction\nformat (like VRegA_11x for accessing register vA with format 11x).\n\nIt also caches some information used for instrumentation like \u0027this\u0027 object\nand current method and add missing check about pending exception.\n\nChange-Id: I8c03c0aea9d75068b89e3cb2c8c12383d7928281\n"
    },
    {
      "commit": "4f6ad8ab428038129b2d0d6c40b7fd625cca15e1",
      "tree": "d1025ed9203d0cdf7aa959d9cecd8dc1f0c0bfeb",
      "parents": [
        "aabe8adacc7bf3a8ab6f6f3dd37fc839b6fd762f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:27:28 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:29:59 2013 -0700"
      },
      "message": "Various performance improvements.\n\nPerformance had regressed due to verify object and method invocation changes.\nAvoid trampolines for static calls in same class.\nVarious inlining changes.\nMake verify object something that\u0027s only compiled-in in debug builds.\n\nChange-Id: Ia261a52232c3b10667c668f8adfadc0da3048bc5\n"
    },
    {
      "commit": "2dd0e2cea360bc9206eb88ecc40d259e796c239d",
      "tree": "9d619dc9508cbe73e4793bf6f08cbc761abfb48a",
      "parents": [
        "ac21b797b3a425975d656d6b84a7b24401d35f42"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 24 12:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 30 16:48:31 2013 -0800"
      },
      "message": "Directory restructuring of object.h\n\nBreak object.h into constituent files.\nReduce number of #includes in other GC header files.\nIntroduce -inl.h files to avoid mirror files #include-ing each other.\nCheck invariants of verifier RegTypes for all constructors.\n\nChange-Id: Iecf1171c02910ac152d52947330ef456df4043bc\n"
    },
    {
      "commit": "2bcb4a496b7aa00d996df3a070524f7568fb35a1",
      "tree": "8422ab8d65b7422008094b2eaadec0dad87b2df3",
      "parents": [
        "efc6369224b036a1fb77849f7ae65b3492c832c0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 08 10:39:18 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 16 14:01:34 2012 -0800"
      },
      "message": "Add \"kind\" argument to Get/SetVReg.\n\nIn order to determine where a register is promoted its necessary to know\nthe kind of use of the register.\nExtend notion of precise-ness to numeric verifier register types.\nDump verifier output in oatdump.\nDump vregs with their location or constant value.\nIntroduce indenting ostream utility.\n\nChange-Id: Ia3d29497877976bc24465484743bca08236e1768\n"
    },
    {
      "commit": "5a723357e86670fdec8749756dda28105d94c133",
      "tree": "bf439049972e1591716e200e8209fccc170d6aa5",
      "parents": [
        "9bc81918a2c663339f7739d9cf968f354506e3a7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 12 00:07:22 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 12 00:07:22 2012 -0700"
      },
      "message": "Missing dex register disassembly.\n\nChange-Id: I946aa530c0b1c77c939bd4a51a3c746171541b1c\n"
    },
    {
      "commit": "a75a01313e801c53145df00bad1842d9f643c0a1",
      "tree": "4c592c89e188cfb5b4efeb656f4d152cddc14d2c",
      "parents": [
        "acc46d6f64969a7ae32c53a92fcdad875ec6f50f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 11:41:42 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 11:41:42 2012 -0700"
      },
      "message": "Make dex instruction size a lookup.\n\nAdd ostream operators for dex instruction enums.\nMove simple methods to header file.\n\nChange-Id: I9644bfb975896a491ee73ef9a8ef13c062c5fcbd\n"
    },
    {
      "commit": "18c24b6e05e7591069f1a2ac9c614b28fc0853ac",
      "tree": "cf1d9507d4cba52017f71fd7073ff565a90b8c36",
      "parents": [
        "1a0806c6847a9dc5cc6d73460d7e8ad3183b5c49"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 10 08:54:25 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 10 09:42:13 2012 -0700"
      },
      "message": "Add new_array type info to dex dump output.\n\nAlso cleaned up a bit of the field printing.\n\nChange-Id: Ia731d58b16f554fde9a9ac733f4d4f0148e55ac9\n"
    },
    {
      "commit": "4c5dd5aa7a2cdbec8c298569c5a84d0ef5357363",
      "tree": "1b1503336afaec9f1d6a17e04961d59e9e760bde",
      "parents": [
        "581b2ea85d9b382f6b14efadc9d2d36b526ef7c5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 07 11:27:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 07 11:27:28 2012 -0700"
      },
      "message": "Disassembly support of invoke range instructions.\n\nAlso tidy regular invoke instructions to use PrettyMethod.\n\nChange-Id: I1df92de053bf88f30b529f5d4967d8e2f2ec0726\n"
    },
    {
      "commit": "9a4f003f9a6da8e4c6ee279bd2a13aac37648183",
      "tree": "ce78afe7c842c8ff99d52c0a09bfe758d67d037f",
      "parents": [
        "cfb21d92796087963c092b69110a2e7ff7a03a55"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 16:17:40 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 31 10:49:06 2012 -0700"
      },
      "message": "Remove the THROW_VERIFICATION_ERROR op and supporting code.\n\nChange-Id: Idc40a2c379048c7e3d74f50b2bd765a507a417ce\n"
    },
    {
      "commit": "90334e5586ada4772229ded6f7acb85de524a704",
      "tree": "fc2c6b89b1fccab3cd85f65ab9f46f29f0be015e",
      "parents": [
        "ebe2e0f2e5145ef8433c1459b9cd60ecd853ee76"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 20:22:20 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 20:22:20 2012 -0700"
      },
      "message": "Disassembly of dex instruction improvements.\n\nChange-Id: I53f82eac2cb4c9cf98874f53721cb8384a09402b\n"
    },
    {
      "commit": "1b3d6ca46d9594dbdec66b11f184e6483b007483",
      "tree": "02cc1afc7f0f2ac6e75b29d98f9907fd1d14027b",
      "parents": [
        "f49a495e249534c051d2d10bc3310253bb99b5d3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 25 13:00:14 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 25 13:00:14 2012 -0700"
      },
      "message": "Improved dumping of const-wide instructions.\n\nDecimal isn\u0027t really useful for showing only the high bits, and we know\nwhether we\u0027re dealing with a 32-bit or 64-bit constant.\n\nChange-Id: I49879b280fb3b05da9fed8bbb3ca3beebdb4face\n"
    },
    {
      "commit": "cfe8db47f85a5d66ebb336075960fa46effb54dc",
      "tree": "b7fcc68b70d669d50aeefab339c48a1b9fbfa105",
      "parents": [
        "c4c9881e5d22432f3f1a30eeec5aa109dfc08a7d"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 13 12:37:36 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 13 12:37:36 2012 -0700"
      },
      "message": "Really fix instruction decoding for throw verification error.\n\nThe decoder was not populating register vA and vB correctly and the fix\ndidn\u0027t fix it correctly either. This time it\u0027s correct.\n\nChange-Id: If97b367f6b1dff5fbbb30c0ad9f767e2b1d08326\n"
    },
    {
      "commit": "e89df50ee79b5e6c38a46e23133f970c8ee226f4",
      "tree": "21789ccac161066276fe92777ab6c42c8f8954e9",
      "parents": [
        "6150d9889b56e95f1267d9200c5702b16e0d32d5"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 07 12:15:46 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 07 12:15:46 2012 -0800"
      },
      "message": "Fixed instruction decoding for throw-verification error format.\n\nThe decoder was not populating register vA and vB.\n\nChange-Id: I5a162f308ef919f4c98efe9bbdf8eb263906d01a\n"
    },
    {
      "commit": "adb8c67f6d87a160d4e3a8afea7cb93f6c14568b",
      "tree": "93b265743b7fd7a831803f6bc84e2aa8ce338156",
      "parents": [
        "731b2abfccd8704d129e3b8e46a086660161fef3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 06 16:49:32 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 06 17:21:07 2012 -0800"
      },
      "message": "Move the compiler away from libdex.\n\nChange-Id: I0c5fdc38d94f1199023cfc6aab3060b927ad2383\n"
    },
    {
      "commit": "e3c845cdb5884e770287a5c0c65c8bb64733c388",
      "tree": "95d024f9e55d19a429a0b1849655f7f9036cb5e2",
      "parents": [
        "dcbe6de52e2ebfaac109a9bdc7e0b3722cad4821"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 28 17:23:01 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Feb 29 09:43:31 2012 -0800"
      },
      "message": "Add code dumping to oatdump.\n\nChange-Id: I7dccdffb3bac422fee52a4bd82dfac220da91722\n"
    },
    {
      "commit": "2faa5f1271587cda765f26bcf2951065300a01ff",
      "tree": "c59557857c36741cfcd1b6bf5ae039886a8ad6e7",
      "parents": [
        "0850c69c88d49efd4075288511b70d6c032bd0c8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 14:42:07 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 30 16:46:29 2012 -0800"
      },
      "message": "Fix copyright headers.\n\nChange-Id: I5b7bc76a370238d810d78522bd5531600746700f\n"
    },
    {
      "commit": "ba8eee10607a524f43b55a6f33c13924fb16d435",
      "tree": "45f3c3728bcaee9ff04baeaf1706693e677757bf",
      "parents": [
        "844f9a072454eb9dca1022299b6bf99ef4294008"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:25:24 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 20:25:24 2012 -0800"
      },
      "message": "Remove more lint.\n\nChange-Id: I48714db4169d9ea0536342809361210910ee2091\n"
    },
    {
      "commit": "9fdfc1808f2a3845ee7e890a4e5d22a10f2ee93d",
      "tree": "fd21dc8a6311aa16464aae5f519b1a828c6792be",
      "parents": [
        "9074b99bfbd5419e340f138a018b673ce71f77e8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 26 23:12:52 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 26 23:12:52 2011 -0700"
      },
      "message": "Debug support for verifier rewriting.\n\nFull instruction dumps can be enabled by setting gDebugVerify in the\nfile.\n\nChange-Id: I0dca1c09f0fc1ee51e0084758f7ee041b0778c4f\n"
    },
    {
      "commit": "5ed29bf9c2d9636bf6d0901c7fb80a4e90732a1e",
      "tree": "e836cb65e3ae52a9469305235a3dadcc334d2b6f",
      "parents": [
        "b94a27bf7ec392b09780d8fcd7aee5d119bd7f11"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 26 12:22:21 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 26 12:31:01 2011 -0700"
      },
      "message": "Make verifier more liberal with interfaces.\n\nBrought over commented out checks from Dalvik, but enabled them. The\nchecks were incorrect given the verifiers notion of type, so refined the\nverifier to now have correct but imprecise interface type information.\nAlso handling for unresolved types.\n\nChange-Id: Ia29ab9aaa548edc9cd1e1b9db03604193d53a7d9\n"
    },
    {
      "commit": "2c8a857708fc86a5b555d1eb782b56516f3b1a72",
      "tree": "91dc290021eb2b88cd420b22ac3cd320958ef3f6",
      "parents": [
        "d81871cbbaa34c649e488f94f61a981db33123e5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 24 17:11:36 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 24 20:56:00 2011 -0700"
      },
      "message": "Debug tidying some verification fixes.\n\nWeaken verification of signature types to allow unresolved types as\nObject. Fix for interface and field store types.\n\nChange-Id: I2dd5debc96fcaa8e0db7de5231b6926729c201fa\n"
    },
    {
      "commit": "d81871cbbaa34c649e488f94f61a981db33123e5",
      "tree": "a3adf3b7469fee507a4d4c4491942fbd48b4483d",
      "parents": [
        "262bf46ddc91e5b4fbd367127ff21a1877d939f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 03 13:57:23 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 24 11:56:15 2011 -0700"
      },
      "message": "Verifier clean up.\n\nThis is the first part in trying to move to a more rigorous mode of\nasserting the validity of garbage collection maps.\nIn the bring over of the verifier from Dalvik a large class had been\ncreated where all of the Dalvik/Dex functions were static methods of\nthat class. This rewrite introduces 3 key classes, Verifier that\norchestrates the verification of a method, RegisterLine which describes\nthe types associated with registers for a particular PC and RegType\nwhich describes the current type of a register within a line. The\nfunctionality is brought over from Dalvik but cleaned up to not do\nthings like goto. Failing within the verifier is also cleaned up. By\nvirtue of having stateful objects the interfaces between different\naspects of the verifier are greatly simplified.\nTo save space, RegTypes are cached upto a maximum possible 2^16, and\ngiven an Id. As the number of RegTypes is typically small this means\nthat we have a full OO implementation but at a lower space cost than the\ncurrent convention that uses botched together enum values requiring\n32bits of storage in a RegisterLine rather than 16bits (ie half the\nspace requirement per register in a register line). To make use of\nthis space more rigorous monitor verification is brought back, and\nultimately I think we can work around bug 3215458 with richer RegTypes\nthat are aware of literal objects.\nThe code removes short cuts that had been added to Dalvik\u0027s verifier and\nappear illegitimate, it also fixes a large number of bugs in the\ndescription of the verifier.\nWhere possible the spaghetti of code is replaced with straight line\nif-then-elsif.. code that clearly follows the ordering semantics of the\nspecification. The code is also aiming toward having a more type\nrigorous description of the verification process, and when this isn\u0027t\npossible following the description convention of the specification.\n\nChange-Id: Id25b742018a2ad5ea95687973cca610d7e19513c\n"
    },
    {
      "commit": "e0cfb6fef149e4b001d580809b2815eb6e181a09",
      "tree": "2903cafda5cf17650c58679086de1221d1f8d004",
      "parents": [
        "98fb41647a5664922a196fd1f6b343e6bad8e51e"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 22 16:42:56 2011 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 22 16:42:56 2011 -0700"
      },
      "message": "Fixes to allow the verifier to process frameworks.\n\nI\u0027ve disabled the access checks for class and method, which need some\nfixing, but nothing in frameworks should be failing in the verifier\nanymore.\n\nChange-Id: Ic16a8627b6a5b74b385a1f30dbc937c2ced910a4\n"
    },
    {
      "commit": "ba5ebb944b7c5c6a1b754b6dd47eed96f39aea29",
      "tree": "a84680c4c469dd6ef3c0e558df9197317a4ee51b",
      "parents": [
        "5cd2180225421d7b94f6d978bc5c1a4d9ef34f1e"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 25 17:24:37 2011 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 26 16:04:27 2011 -0700"
      },
      "message": "Added first pass of verifier and supporting changes.\n\nThe verifier still needs to make a second pass through the code where it\nchecks the code flow. A TODO marks where it will be added.\n\nChange-Id: I0abea5bad563776186df342d8132fb1ca8869652\n"
    },
    {
      "commit": "578bbdc684db8ed68e9fedbc678669d27fa68b6e",
      "tree": "d752941d81ad6d7e248c349ce21371a8ae369693",
      "parents": [
        "45a76cb99104a222d6a9bd768a084893dcb7cf30"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 21 14:07:47 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 22 15:23:33 2011 -0700"
      },
      "message": "Move DexFiles to be allocated on the heap\n\nRemoved pointer from DexFile to RawDexfile to allow heap allocation of\nDexFile. DexFile is now an ObjectArray of ObjectArrays. Removing the\npointer from DexFile to RawDexfile meant adding arguments to pass the\nRawDexfile along to ClassLinker::LoadClass, LoadInterfaces, LoadField,\nLoadMethod, LinkClass, LinkInterfaces, ResolveClass to avoid the need\nto look a RawDexfile up from a DexFile. ClassLinker::CreateArrayClass\nnow takes the raw_dex_file to assist in looking up the component class\nfrom the proper source. Moved Method::HasSame* methods to ClassLinker\nsince for access to the RawDexfile (and tests of HasSame from\nObjectTest to ClassLinkerTest.\n\n\tsrc/dex_file.cc\n\tsrc/dex_file.h\n\tsrc/class_linker.cc\n\tsrc/class_linker.h\n\tsrc/object.h\n\nRunTime::Create/RunTime::Init/ClassLinker::Create/ClassLinker::Init\nnow take the boot class path. A boot class path with\nLjava/lang/Object; must be provided to initalize [Ljava/lang/Object;\nduring startup in order to heap allocate DexFiles.\n\n\tsrc/class_linker.cc\n\tsrc/class_linker.h\n\tsrc/runtime.cc\n\tsrc/runtime.h\n\nRestored FindClass to load from a specific dex file. This is for use\nby class loaders, otherwise it is assumed the caller wants to use the\nboot classpath. We now distinguish and track the boot classpath as\nseparate from other dex files known to the class linker. Renamed\nAppendToClassPath to AppendToBootClassPath and FindInClassPath to\nFindInBootClassPath to clarify.\n\n\tsrc/class_linker.cc\n\tsrc/class_linker.h\n\nCleaned up AllocCharArray to generic AllocArray and added\nAllocObjectArray. Added a functional ObjectArray implementation and a\nObjectTest to cover it.\n\n\tsrc/heap.h\n\tsrc/object.h\n\tsrc/object_test.cc\n\nSwitched more Object* downcasting to down_cast\n\n\tsrc/class_linker.cc\n\nSwitched order of arguments for DexFile::SetResolved to follow more\nconventional collection ordering ( \"(index, value)\" vs \"(value, index)\" )\n\n\tsrc/dex_file.h\n\tsrc/class_linker.cc\n\tsrc/class_linker.h\n\nAdded class_linker_ and java_lang_raw_dex_file_ to RuntimeTest as\nconvenience to test subclasses. ClassLinkerTest now can use these to\nsimplify its ::Assert* methods. JniCompilerTest now uses it for\nsetting up its boot class path. Removed now unneeded\nOpenDexFileBase64.\n\n\tsrc/common_test.h\n\tsrc/class_linker_test.cc\n\tsrc/jni_compiler_test.cc\n\nAdd external/gtest/include to non-test include path so FRIEND_TEST can be used.\nAdd src to include path to remove the need of using in in art/src files.\n\n\tbuild/Android.libart.host.mk\n\tbuild/Android.libart.mk\n\tsrc/assembler.cc\n\tsrc/assembler.h\n\tsrc/assembler_arm.cc\n\tsrc/assembler_arm.h\n\tsrc/assembler_x86.cc\n\tsrc/assembler_x86.h\n\tsrc/assembler_x86_test.cc\n\tsrc/base64.cc\n\tsrc/base64.h\n\tsrc/calling_convention.cc\n\tsrc/calling_convention.h\n\tsrc/calling_convention_arm.cc\n\tsrc/calling_convention_x86.cc\n\tsrc/casts.h\n\tsrc/class_linker.h\n\tsrc/class_linker_test.cc\n\tsrc/common_test.h\n\tsrc/constants.h\n\tsrc/constants_arm.h\n\tsrc/constants_x86.h\n\tsrc/dex_file.cc\n\tsrc/dex_file.h\n\tsrc/dex_file_test.cc\n\tsrc/dex_instruction.cc\n\tsrc/dex_instruction.h\n\tsrc/dex_instruction_visitor.h\n\tsrc/dex_instruction_visitor_test.cc\n\tsrc/dex_verifier.cc\n\tsrc/dex_verifier.h\n\tsrc/heap.cc\n\tsrc/heap.h\n\tsrc/jni_compiler.cc\n\tsrc/jni_compiler_test.cc\n\tsrc/jni_internal.cc\n\tsrc/jni_internal.h\n\tsrc/leb128.h\n\tsrc/managed_register.h\n\tsrc/managed_register_arm.cc\n\tsrc/managed_register_arm.h\n\tsrc/managed_register_arm_test.cc\n\tsrc/managed_register_x86.cc\n\tsrc/managed_register_x86.h\n\tsrc/managed_register_x86_test.cc\n\tsrc/mark_stack.cc\n\tsrc/mark_stack.h\n\tsrc/mark_sweep.cc\n\tsrc/mark_sweep.h\n\tsrc/memory_region.cc\n\tsrc/memory_region.h\n\tsrc/monitor.h\n\tsrc/object.cc\n\tsrc/object.h\n\tsrc/object_bitmap.cc\n\tsrc/object_bitmap.h\n\tsrc/object_test.cc\n\tsrc/offsets.cc\n\tsrc/offsets.h\n\tsrc/raw_dex_file.cc\n\tsrc/raw_dex_file.h\n\tsrc/raw_dex_file_test.cc\n\tsrc/runtime.cc\n\tsrc/runtime.h\n\tsrc/scoped_ptr.h\n\tsrc/space.cc\n\tsrc/space.h\n\tsrc/space_test.cc\n\tsrc/stringpiece.cc\n\tsrc/thread.cc\n\tsrc/thread.h\n\tsrc/thread_arm.cc\n\tsrc/thread_x86.cc\n\tsrc/utils.h\n\nChange-Id: Ib633cea878c36921e9037b0464cb903aec318c3e\n"
    },
    {
      "commit": "e4c1ce498f7933b91696caa4a527e6556128a8e2",
      "tree": "9459ffefac28928b23e5be8a53f0d4bc787b8955",
      "parents": [
        "0e5d75d5ca2b8a44fab0c862276a466cbab39859"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Sat Jul 09 02:31:57 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Sat Jul 09 03:04:30 2011 -0700"
      },
      "message": "Extend the instruction class with instruction attributes.\n\nChange-Id: I52a4f640bd45d1891050876a7a0c031ec3a58974\n"
    },
    {
      "commit": "12eb78e651f13f2c1f0c2c922048a5a213253adf",
      "tree": "491c6dd5cd1ce0121196b742286430a2ffd1a1d4",
      "parents": [
        "008e41230a702ddb4c558fca95af5d84d56b51cb"
      ],
      "author": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Fri Jun 24 14:51:06 2011 -0700"
      },
      "committer": {
        "name": "Carl Shapiro",
        "email": "cshapiro@google.com",
        "time": "Fri Jun 24 22:20:55 2011 -0700"
      },
      "message": "Add an instruction abstraction and visitor.\n\nChange-Id: I5dc935831471296b6db1affef6e7ddcdddc82dde\n"
    }
  ]
}
