)]}'
{
  "log": [
    {
      "commit": "6bb7f1b60f4b6b2214457d19d66d2b7b50685feb",
      "tree": "980f8d69174155e71469e4c5163e2dcf4d2c6fbe",
      "parents": [
        "63f41f9ff6ce6b68b93feafcbed0f75e5c439594"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 03 10:52:49 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 03 12:55:11 2016 +0000"
      },
      "message": "Integrate VerifierDeps in compiler driver.\n\nIf a VerifierDeps is given, try fast verify. Otherwise create\na new VerifierDeps and do the full verification.\n\ntest: test-art-host, verifier_deps_test\nbug: 30937355\nChange-Id: Ifb030d7b5232c95872164f601057a56ab96038e1\n"
    },
    {
      "commit": "8904b6f0e496ab389551e960426069c9deff4101",
      "tree": "5e1cb0d05990a5ca43e80ce70bf73e60658208ef",
      "parents": [
        "56cc9511b0ed68648113a22617ed092ad2de37ef"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 28 19:50:34 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 01 17:23:57 2016 +0000"
      },
      "message": "Add VerifierDeps::Verify.\n\nMethod verifies that the recorded dependencies still hold.\n\ntest: verifier_deps_test.cc\nbug: 30937355\nChange-Id: I137f77739355141e46994b4cb6043dbbc9353637\n"
    },
    {
      "commit": "e70dd560154ea38af87ce8b783ab6e382eb49d4b",
      "tree": "04b48b84f1c0efa59de9622182a6ebe671cf69b6",
      "parents": [
        "bda454e9a09018cde1ea2ee10f0fdd5bf2ad756b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Oct 30 21:03:35 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 01 13:27:57 2016 +0000"
      },
      "message": "Dump VerifierDeps in oatdump.\n\nbug:30937355\ntest: oatdump_test\nChange-Id: I344726a20f21a6c6986047c21278c753b9e24575\n"
    },
    {
      "commit": "d01f60cbed4ba360b84f1310d2e0d422d6a16534",
      "tree": "d9511ce632d9ae32a0447a9bfd50c1cb8821fcbf",
      "parents": [
        "b9b8cab87a275fad382fefbddd18daf495a58772"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Oct 28 14:45:48 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Oct 29 22:09:28 2016 +0100"
      },
      "message": "Add a VerifierDeps::Dump method.\n\nAlso, fix the Encode/Decode logic around dex file order:\niterating over a std::map doesn\u0027t guarantee insertion order.\n\ntest: verifier_deps_test\nbug: 30937355\n\nChange-Id: Id3efd703b3c8ca21ab49c2600c612c132fb021cd\n"
    },
    {
      "commit": "0802518a6a5af8182131eb3fe66bf58dd77f9fe2",
      "tree": "94b84da33a0ef542f6c4c3888e786dc8762ff1b2",
      "parents": [
        "f30b1582c20079a1266f1fdcac621d4df2d7ce79"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Oct 25 17:20:18 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 26 12:41:10 2016 +0100"
      },
      "message": "Save the non-verified classes in the VerifierDeps.\n\nWe will need that information when taking an OTA to make sure\nthe same set of classes needs to be verified at runtime.\n\nCurrently, the vdex file will contain a list of unverified\nclasses. We could alternatively encode a bit vector of the size\nof the type_id array, but the few experiments I did show that\nthe bit vector is actually larger. We can refine this later.\n\nbug: 30937355\ntest: m test-art-host\ntest: verifier_deps_test.cc\n\nChange-Id: I2670e4fd2e54ee7a148246baa705fda3a56617ff\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "6f82fbddf69388180e4dca9bcb5ce2e183e42bfa",
      "tree": "bc8f00f030d7e26cf958c820e795e48626d5d574",
      "parents": [
        "ca3c8c33501bf199d6fd0a5db30a27d8e010cb23"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Sep 14 11:55:26 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 16 10:08:18 2016 +0100"
      },
      "message": "Implement VerifierDeps encoding/decoding\n\nThis patch implements serialization and deserialization of the data\nrecorded by VerifierDeps.\n\nTest: m test-art-host-gtest-verifier_deps_test\nBug: 30937355\nChange-Id: I19320b8e70d5c5128653d09a5cdb5b6f677a2f2d\n"
    },
    {
      "commit": "ca3c8c33501bf199d6fd0a5db30a27d8e010cb23",
      "tree": "12a6c3a4266bd17c6b9fe7066fd0b25cb8d9b2d6",
      "parents": [
        "0764877e21f1230e718923d5b84b048cd4346afa"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Tue Sep 06 14:04:48 2016 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Fri Sep 16 10:08:18 2016 +0100"
      },
      "message": "Collect verifier dependencies\n\nMethodVerifier tests whether a DEX method is valid w.r.t. the classes\nin class path. Since the APK does not change across OTA updates, it\nis not necessary to analyze the bytecode again with MethodVerifier,\nas long as its dependencies on the class path (which may have changed)\nare satisfied.\n\nThis patch introduces VerifierDeps, a class path dependency collector,\nand adds hooks into MethodVerifier where classes/methods/fields are\nresolved and where assignability of types is tested.\n\nTest: m test-art-host-gtest-verifier_deps_test\nBug: 30937355\nChange-Id: Iee0b321d772a5c7d1cb471aaa6e13918310b7e2f\n"
    }
  ]
}
