)]}'
{
  "log": [
    {
      "commit": "30f991f251940be3ed11566fb71139852286f68a",
      "tree": "5cef5c112aa400da1ad1572d26fcc3b6b3099b6e",
      "parents": [
        "cdd7ec12be3dfb6a7fa2f597d2220445c96725cf"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jan 10 13:19:54 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jan 11 09:31:15 2017 -0800"
      },
      "message": "liblog: use log/log.h when utilizing ALOG macros\n\nTest: compile\nBug: 30465923\nChange-Id: Id6d76510819ebd88c3f5003d00d73a0dbe85e943\n"
    },
    {
      "commit": "cfd5b080af8de527d768f0ff7902c26af8d49307",
      "tree": "32295b3aeb6ba8a116592576939348d09814b0be",
      "parents": [
        "1edd61ce5d2f34ff34d015643b5915b3b1c186e8"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 17 14:28:00 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 20 08:11:39 2016 -0700"
      },
      "message": "system/core: preparation to pull back interfaces from android/log.h\n\nPoint to log/log.h where necessary, define LOG_TAG where necessary.\nAccept that private/android_logger.h is suitable replacement for\nlog/logger.h and android/log.h.\n\nCorrect liblog/README\n\nEffectively a cleanup and controlled select revert of\n\u0027system/core: drop or replace log/logger.h\u0027 and\n\u0027system/core: Replace log/log.h with android/log.h\u0027.\n\nTest: compile\nBug: 30465923\nChange-Id: Ic2ad157bad6f5efe2c6af293a73bb753300b17a2\n"
    },
    {
      "commit": "ff2dcd9af994a23ed483939a416b48bdc10eefd5",
      "tree": "6e5a0dfe4e39c407eea7e39840eef5d56b720de4",
      "parents": [
        "66ce3e08c5632a20ea66bde6dd76397041edf034"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Sep 28 15:54:45 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Sep 30 12:47:05 2016 -0700"
      },
      "message": "system/core Replace log/log.h with android/log.h\n\nShould use android/log.h instead of log/log.h as a good example\nto all others.  Adjust header order to comply with Android Coding\nstandards.\n\nTest: Compile\nBug: 26552300\nBug: 31289077\nChange-Id: I33a8fb4e754d2dc4754d335660c450e0a67190fc\n"
    },
    {
      "commit": "f068856284be6b45ffd9c34f6c0146e83cfb3837",
      "tree": "b99dd0b760fd64983efe2114bac070f049e30631",
      "parents": [
        "70f9a1018ca8b1bb984df10d2a73a4ae13a7a303",
        "c064db48f19ff1655c470fb0f4c0f680f22669ac"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Aug 08 18:15:44 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Aug 08 18:15:44 2016 +0000"
      },
      "message": "Merge \"SharedBuffer: Fix bug in return value of release()\"\nam: c064db48f1\n\nChange-Id: I401318575ced17a94d19b47b2821ed4c310d9a03\n"
    },
    {
      "commit": "c9b23cbb541824ae6bd94fc1d5839050e864bab8",
      "tree": "4fab862dee19b7c0adc546a8ff827c60431350ab",
      "parents": [
        "9cd828b8589a64e79cbd6aa7dc324fcdba75dd73"
      ],
      "author": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Aug 01 12:46:22 2016 -0700"
      },
      "committer": {
        "name": "Greg Kaiser",
        "email": "gkaiser@google.com",
        "time": "Mon Aug 08 06:55:10 2016 -0700"
      },
      "message": "SharedBuffer: Fix bug in return value of release()\n\nSince the equality operator \u0027\u003d\u003d\u0027 has higher precedence than the\nassignment operator \u0027\u003d\u0027, we were assigning \u0027prev\u0027 to the result of\nour comparison and not the result of mRefs.fetch_sub().\n\nThis means that \u0027prev\u0027 would only receive the values 0 or 1.  In\nthe cases where fetch_sub() returned 0 or 1, we were happening to\nget the correct value.  But if fetch_sub() was greator than 1,\nwe would return to the user 0, instead of the previous reference\ncount.\n\nWe fix this by properly adding parentheses.  We also adjust the\nwhitespace a little to hopefully make the groupings of the logic\neasier to see.\n\nChange-Id: Ib129798a7076854b9ca4f6385c42edbf4fb75e57\n"
    },
    {
      "commit": "12f788e763f6528af29199074e52e6bef39d414a",
      "tree": "b4dadd95d3bdf039403ed71cf9e78ac5e8d0e78f",
      "parents": [
        "bb89e7e6b5403297689f62b8f86d7a3cbab4037e",
        "1e081a8c5f2d6e6cb55658bb289db1f0b4f5774a"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon May 23 22:22:18 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon May 23 22:22:18 2016 +0000"
      },
      "message": "Merge \"Fix SharedBuffer. Remove aref.\" am: 069517574e\nam: 1e081a8c5f\n\n* commit \u00271e081a8c5f2d6e6cb55658bb289db1f0b4f5774a\u0027:\n  Fix SharedBuffer. Remove aref.\n\nChange-Id: I5849137bb49d727d1c1d245f0f61d11c4ee10859\n"
    },
    {
      "commit": "3e4c076ef204c4b572d02bd1c8dbf8c599e0014d",
      "tree": "028d5c25852c14eda61c5309621411806a4dd5c0",
      "parents": [
        "62212954efc9cd4ddfa91f100ec4ecec27315e42"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Wed May 18 10:09:24 2016 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Mon May 23 17:28:52 2016 +0000"
      },
      "message": "Fix SharedBuffer. Remove aref.\n\nAdd comment that SharedBuffer is deprecated.\n\nBoth aref and SharedBuffer had memory ordering bugs.  Aref has no\nclients.\n\nSharedBuffer had several bugs, which are fixed here:\n\nmRefs was declared neither volatile, not atomic, allowing the\ncompiler to, for example, reuse a stale previously loaded value.\n\nIt used the default android_atomic release memory ordering, which\nis insufficient for reference count decrements.\n\nIt used an ordinary memory read in onlyOwner() to check whether\nan object is safe to deallocate, without any attempt to ensure\nmemory ordering.\n\nComments claimed that SharedBuffer was exactly 16 bytes, but\nthis was neither checked, nor correct on 64-bit platforms.\n\nThis turns mRef into a std::atomic and removes the android_atomic\ndependency.\n\nBug: 28826227\nChange-Id: I39fa0b4f70ac0471b14ad274806fc4e0c0802e78\n"
    },
    {
      "commit": "fa2f9d603cac01120a70a255a65c974dbd4447ae",
      "tree": "770a932c6e19ba60dc55a3bcbf5968653cc91491",
      "parents": [
        "8764f22a90f2935f14fd525c7f248de7015065d4",
        "c565bdb67b801fe2b4965b44e53dccfd9097993c"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 23 19:50:33 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Sep 23 19:50:33 2015 +0000"
      },
      "message": "am c565bdb6: am f777655d: resolved conflicts for 6ee734cf to stage-aosp-master\n\n* commit \u0027c565bdb67b801fe2b4965b44e53dccfd9097993c\u0027:\n  libutils: hide SharedBuffer by moving SharedBuffer.h to the implementation directory\n"
    },
    {
      "commit": "f777655d85af3aefa4a1683f289da1ec67988330",
      "tree": "450c8b2064bd5a7a4e04a8bb85b784ea0f9048e2",
      "parents": [
        "64c058da2335b37b7a179fd3ffef5cbf7b5e2a25",
        "6ee734cfa029e7d2d61fe577af23c28cd831b8b6"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 23 17:58:25 2015 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 23 17:58:25 2015 +0100"
      },
      "message": "resolved conflicts for 6ee734cf to stage-aosp-master\n\nChange-Id: Ia06c4d941d9b8828707299bb363f51fab5549897\n"
    },
    {
      "commit": "d2529f28308ba7583f4d8baaa937218d81cbe8bd",
      "tree": "08e7ec119fa22c98d69f649e7ffa05f544a7d9f0",
      "parents": [
        "1d758c90959225c76ed4d318290ad1bf11532409"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 23 16:22:59 2015 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Wed Sep 23 16:22:59 2015 +0100"
      },
      "message": "libutils: hide SharedBuffer by moving SharedBuffer.h to the implementation directory\n\nSome methods in header files of classes using SharedBuffer need\nto be moved to the implementation files accordingly\n\nChange-Id: I891f3ace2b940ab219e4e449040bfed71c0547db\n"
    },
    {
      "commit": "d95e47f13633feac9adb4ec5ce29392cfb628591",
      "tree": "26356da86e858df6d4b281f1b5f2b83a1d629d4c",
      "parents": [
        "219a006f89a5448a9a6eeb1f37ad0088e85bd3f8"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Aug 18 17:36:50 2015 +0100"
      },
      "committer": {
        "name": "]",
        "email": "sgiro@google.com",
        "time": "Tue Aug 25 17:40:47 2015 +0100"
      },
      "message": "libutils: fix overflow in SharedBuffer [DO NOT MERGE]\n\nSee\nhttps://code.google.com/p/android/issues/detail?id\u003d181910\n\nBug: 22952485\n(cherry picked from commit 66b6eb9490beeeabc804d790c1c4060ce047afd4)\n\nChange-Id: I363f49b5b3c6b7b3ac08cba2c14d72c431588c5a\n"
    },
    {
      "commit": "7987b83553804156aeca61b4c111c2b983c4c551",
      "tree": "056f41d44715a5966bcb1795fc5de94fd3b5178b",
      "parents": [
        "869d8a94f21796e7e3ef09e3281ec82bf14f725c"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Aug 18 17:36:50 2015 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Fri Aug 21 14:17:32 2015 +0100"
      },
      "message": "libutils: fix overflow in SharedBuffer\n\nSee\nhttps://code.google.com/p/android/issues/detail?id\u003d181910\n\nBug: 22952485\nChange-Id: Idcc7e581a69436c8a623659fbd9add9e5f0d4c74\n"
    },
    {
      "commit": "d98e07fdf9c338589f263c47ce5c844ed43efad5",
      "tree": "d4ff9849df225df1e4c46386fdabe30407ba5513",
      "parents": [
        "be06210c508d5878dcc7d185e5613f4c7e38dfe8"
      ],
      "author": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Aug 02 14:40:08 2013 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Fri Aug 02 14:40:08 2013 -0700"
      },
      "message": "move libs/utils to libutils\n\nChange-Id: I6cf4268599460791414882f91eeb88a992fbd29d\n"
    },
    {
      "commit": "cbb1011c95e0c25c29e40e203a6a31bccd029da3",
      "tree": "4697a3a86867bf33c2d9dd4e4a2743d3eb947523",
      "parents": [
        "cf59fa8dc7ddca5a172860223b06afed5d4ec0e0"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:31:44 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "cf59fa8dc7ddca5a172860223b06afed5d4ec0e0",
      "tree": "e780750523e4f032abf902a0e6ff8b9d52c54e54",
      "parents": [
        "7aa707a5d654b7af67b133955c454c8e23a12abc"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:45 2009 -0800"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:49 2013 -0700"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "d245d1d09731d6a19e8a25559d3907f54441ac3d",
      "tree": "b79df48666f286bd33efb4ffdbf4b3fa28f5dd91",
      "parents": [
        "13f4c9fb279f1b34a3b47a6eac80b8a09d2d3a79"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "Alex Ray",
        "email": "aray@google.com",
        "time": "Tue Jul 30 13:56:46 2013 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
