)]}'
{
  "log": [
    {
      "commit": "76f55b030d2517d434f227bee2363c3fb760e5c6",
      "tree": "92d625bb90b05ad976ff174ac25a112a7fda3bd1",
      "parents": [
        "24011e738d77dedb28c1b4d6ff34445cc2acc4a7"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 21 16:10:39 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Aug 27 14:36:01 2015 -0700"
      },
      "message": "Synchronize JNI critical calls with the CC collector thread flip.\n\nJNI critical calls (like GetArrayElementsCritical) would need to block\nfor the whole GC run to finish if the CC collector GC is ongoing. This\nCL changes it so that they don\u0027t need to block for the GC run, but\nonly for the duration of the thread flip operation, which is much\nshorter. This is valid due to the to-space invariant.\n\nBug: 12687968\nBug: 19235243\n\nChange-Id: I1b6b4ae4fa539ddc0ec50b10ae8c8709f2a12fe8\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "dd06afecd67fc6a60856436ab150a4d1b9a8ad29",
      "tree": "abf555db93941102f9be1454525df66936da1559",
      "parents": [
        "8d1a8c00b89775a251ac5e26a557f81ac1491a44"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 26 10:47:08 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 26 12:46:15 2015 -0700"
      },
      "message": "Require mutator lock for DeleteLocalRef\n\nThere was a race condition where suspended threads could call\nDeleteLocalRef while the GC was marking their roots. This could\ncause the GC to attempt to mark a null object.\n\nBug: 22119403\n\nChange-Id: I962c717bb87b2acb2a4710a2d7ab16793e031401\n"
    },
    {
      "commit": "08ac922cf18e6a34a964a89031505395eeeeef2e",
      "tree": "c3f73ff30c1ecaabe76ef45b71d0cc6763e4bf04",
      "parents": [
        "6d8bd45e585d549bda42da22ee96e7149cfd720d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 22 13:43:00 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jun 04 09:23:11 2015 -0700"
      },
      "message": "Fix JNI GetSuperClasss\n\nChange-Id: I005e9f84220dabfcea7cbc7b7b0ad422dd435a40\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": "39b6c24ce68cf05db0f82f454b4401cfb03d675f",
      "tree": "29e15d2597cd05419a1c0faedfe6977af9a7dfa3",
      "parents": [
        "768b19b6bbddaa2262f6532e7fcb96fecbfee981"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 19 20:30:23 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 20 18:40:43 2015 -0700"
      },
      "message": "Intercept JNI invocation of String.\u003cinit\u003e methods.\n\nlibmono uses JNI AllocObject and CallNonvirtualVoidMethod to create and\ninitialize a string instead of using the recommended NewObject. This\nchange adds an intercept to change the String.\u003cinit\u003e call to a\nStringFactory call instead. Then, it uses the object id of the original\nstring object referrer and maps it to the result of the StringFactory.\n\nBug: 21288130\n\n(cherry picked from commit 15e9ad1d028d7f12cb598b075453173532a00d91)\n\nChange-Id: I3421c43722c07397da4a398c2ca9110e1d40bcfa\n"
    },
    {
      "commit": "3f1dc56914177993b1b018bf21ce7d39d7feecda",
      "tree": "6043e28732d988731bd177e9502bfa05a5f48de6",
      "parents": [
        "c1c5de731e2a23646e02e91311de29ecdd167dbd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 18 15:52:22 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 20 14:04:58 2015 -0700"
      },
      "message": "ART: Fix RegisterNative order\n\nFirst check for both direct and virtual methods in the current class,\nthen move to the parent.\n\nOptimize registration by checking first whether the current method\nunder test is native. This slows down registering implementations\nin parent classes. Add a CheckJNI warning for this.\n\nAdd a run-test to check the behavior. Fix host comparison testing.\n\nBug: 19569721\nChange-Id: I61e77117d96310632aad123d7f1279d0f834dc99\n"
    },
    {
      "commit": "36bce58f01a6b37e4d07ff9544c03a3238be087f",
      "tree": "7ccf86f611f8ade09b79597ae51cd4621e9ad8e4",
      "parents": [
        "cefb1553cdbaccd486c6bb8a75210d9485287f93"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue May 12 12:16:10 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue May 12 14:10:53 2015 -0700"
      },
      "message": "Add notes about fast JNI calls.\n\nBug: 19665903\nChange-Id: Ie0610aa17ab1365c08cb0b5b0931a8cefb65f252\n"
    },
    {
      "commit": "5c02d6cd0cc7e10d30d8c26166ebaaf6d313d771",
      "tree": "366031de80c69132c28aba01b4ff4258cb82ffc9",
      "parents": [
        "a6f2a7e01433926339866afc2b413770774c6d9f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 04 10:18:24 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 04 11:09:44 2015 -0700"
      },
      "message": "Improve JNI registration failure logging\n\nPrint INTERNAL_FATAL instead of ERROR, print the\n\"Failed to register native method\" message last.\n\nBug: 13885477\nChange-Id: I9f1a7ea45bd926f3984b8008d84c75e676a1ed10\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": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "fc58af45e342ba9e18bbdf597f205a58ec731658",
      "tree": "3f93906235cb4d2462d237223b72ccf4eedef645",
      "parents": [
        "bbf02afc641a393d33342976e269218668c07386"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 16 18:00:39 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 15:51:29 2015 -0700"
      },
      "message": "Add AbstractMethod, Constructor, Method\n\nMoves functionality to ART from libcore. Precursor to moving\nArtMethods to native. Mostly performance improvements.\n\nN5 perf before (irrelevant results removed):\n            Class_getConstructor  962.87 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n         Class_getDeclaredMethod 2394.37 \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                 Class_getMethod 2509.20 \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               Class_newInstance 1999.81 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeI 1439.02 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n          Method_invokePreBoxedI 1415.82 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticI 1456.24 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n    Method_invokeStaticPreBoxedI 1427.32 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticV  814.47 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeV  816.56 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nAfter:\n                       benchmark      ns linear runtime\n            Class_getConstructor 1302.04 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n         Class_getDeclaredMethod 1459.01 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                 Class_getMethod 1560.40 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n               Class_newInstance 2029.94 \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                  Method_invokeI 1312.89 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n          Method_invokePreBoxedI 1255.01 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticI 1289.13 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n    Method_invokeStaticPreBoxedI 1196.52 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticV  790.82 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeV  791.73 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nPerformance improvements are more than just fixing regressions introduced\nin: http://android-review.googlesource.com/#/c/146069/\n\nBug: 19264997\n\nChange-Id: Ife79c469fdb09f30e3aefcfc3e0ce5ed32303fce\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": "02d2f290380c6aeff5f5a089ee38fa5d55e46130",
      "tree": "7a1e2bd74768db29f25b087e2120fb4c61897da5",
      "parents": [
        "1f940310658cd5a15e12305463fb6d2d508bbd26"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Apr 03 13:35:16 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Apr 03 13:35:16 2015 -0700"
      },
      "message": "Fix the read barrier builds.\n\nA check failure (!UseJit() in ArtMethod::Invoke()) in forced interpret\nonly mode in the eng build with JIT enabled by default on target.\n\nA build failure (inl header file issues) in the USE_BAKER_READ_BARRIER\nbuild.\n\nChange-Id: Ib13632b10864ad8b4691b66971c0ab5d2ae1e675\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": "4585f876eb5dfb936bd0d6cb6acd78a1f2182ba6",
      "tree": "e9dfed086f56245e74862caa813c708bc4f500f9",
      "parents": [
        "e2c29f4a2717923f190c944a06e02f7d8c3ddcb6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 27 23:45:15 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 27 23:46:09 2015 -0700"
      },
      "message": "ART: Some runtime cleanup\n\nUse an enum for the compiler-callback mode.\n\nRefactor and remove some unnecessary includes in runtime.h.\n\nChange-Id: If2245fa470171311b8e05b677cf6bb28f209585a\n"
    },
    {
      "commit": "81c6f8db12b203878a7d72444ead2bc7cf5c47ad",
      "tree": "11caae30b75b700ac648356fd30759a6154be997",
      "parents": [
        "cac51526bbd03947676a8d49700425b19a57e447"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 25 17:19:53 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 27 21:43:21 2015 -0700"
      },
      "message": "ART: PathClassLoader for compiler\n\nUse an actual PathClassLoader when compiling apps, instead of a\nside structure and cutout.\n\nThis CL sets up a minimal object \u0027cluster\u0027 that recreates the Java\nside of a regular ClassLoader such that the Class-Linker will\nrecognize it and use the internal native fast-path.\n\nThis CL removes the now unnecessary compile-time-classpath and\nreplaces it with a single \u0027compiling-the-boot-image\u0027 flag in the\ncompiler callbacks.\n\nNote: This functionality is *only* intended for the compiler, as\nthe objects have not been completely initialized.\n\nBug: 19781184\n\nChange-Id: I7f36af12dd7852d21281110a25c119e8c0669c1d\n"
    },
    {
      "commit": "089bb92556b592b7ec9b41bbbca55b4396962b50",
      "tree": "be6bdb92b594f5afddf343e1162233983fbfc343",
      "parents": [
        "7d4dde85e3d4f8594d140580b337c59679aae26c",
        "2af72de83957fb52426b8f9144e9814d35b78951"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 15:23:00 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Mar 10 15:23:00 2015 +0000"
      },
      "message": "am 2af72de8: Merge \"Remove ThrowLocation.\"\n\n* commit \u00272af72de83957fb52426b8f9144e9814d35b78951\u0027:\n  Remove ThrowLocation.\n"
    },
    {
      "commit": "0aa50ce2fb75bfc2e815a0c33adf9b049561923b",
      "tree": "9a3f9603ab30d5cbc7fc21aee0ceb48bbb0dd25a",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 11:03:29 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 14:51:11 2015 +0000"
      },
      "message": "Remove ThrowLocation.\n\nNote that this is a cleanup change, and has no functionality change.\nThe ThrowLocation had no use anymore.\n\nChange-Id: I3d2126af1dc673cec3a0453ff3d56a172663a5f6\n"
    },
    {
      "commit": "a60bb12ed88a0f11fb6a8444964ea55af2054824",
      "tree": "8eabb49a208c04b219e5a1b037254647498d9d1d",
      "parents": [
        "f20cc35c8e37a515fc19ca554b56ee78dfa7cc82",
        "5c9d8f0d2948c2b4fe4258f96e3598ad5b8fa23b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:15:14 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 09 10:15:14 2015 +0000"
      },
      "message": "am 5c9d8f0d: Merge \"Compute the right catch location for the debugger.\"\n\n* commit \u00275c9d8f0d2948c2b4fe4258f96e3598ad5b8fa23b\u0027:\n  Compute the right catch location for the debugger.\n"
    },
    {
      "commit": "14691c5e786e8c2c5734f687e4c96217340771be",
      "tree": "7c2156671b323c70ffdd1d48d5e2f1d1de79c5fc",
      "parents": [
        "3d7d2af4c6502b771b032ee9bf3ab30e78f9c60d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 10:40:17 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:09:33 2015 +0000"
      },
      "message": "Compute the right catch location for the debugger.\n\nAlso remove tls ThrowLocation, it is not needed anymore.\n\nChange-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9\n"
    },
    {
      "commit": "4cac71c8daf86bf1b6eaa22d41298c4c10de7bbd",
      "tree": "f6ab0adf9438b936ed27c378c30a58fd53d09633",
      "parents": [
        "8bf6ac2e5d23b9a876df1a61f061cb954601da3f",
        "3d7d2af4c6502b771b032ee9bf3ab30e78f9c60d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 04 11:17:06 2015 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 04 11:17:06 2015 +0000"
      },
      "message": "am 3d7d2af4: Merge \"Change how we report exceptions to the debugger.\"\n\n* commit \u00273d7d2af4c6502b771b032ee9bf3ab30e78f9c60d\u0027:\n  Change how we report exceptions to the debugger.\n"
    },
    {
      "commit": "7642cfc90fc9c3ebfd8e3b5041915705c93b5cf0",
      "tree": "807b3c797483310ac23954c5eddb7441b91749c5",
      "parents": [
        "dc47e986941b1a3754447fabea272485f3f0f382"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 26 10:56:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 03 17:50:49 2015 +0000"
      },
      "message": "Change how we report exceptions to the debugger.\n\nThis is only a refactoring/cleanup. Bug fixes with respect\nto catch location, and more cleanups will follow.\n\nChange-Id: I30d3c6260b0c8f8115a811621397225b88f2063a\n"
    },
    {
      "commit": "adc5c3604e5c2801124d23cc87e75aeac1b3ec84",
      "tree": "08211737aca842ea62fe0029f3545b2e94e332c6",
      "parents": [
        "80f1a64eb84cec87c517a19b4f11cf704b8cba43",
        "2f9d7a5bf28e26d2f92128cf420a1ce9f9be0ef6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 22 17:55:51 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 22 17:55:51 2014 +0000"
      },
      "message": "am 2f9d7a5b: am 508d2665: Merge \"ART: Do not JNI abort on nullptr GetObjectRefType\"\n\n* commit \u00272f9d7a5bf28e26d2f92128cf420a1ce9f9be0ef6\u0027:\n  ART: Do not JNI abort on nullptr GetObjectRefType\n"
    },
    {
      "commit": "a87630724ef4f8760684fa69c8ecc685735aff88",
      "tree": "516aae0158dae68f79504a66b5dc417c5817c510",
      "parents": [
        "6d1a047b4b3f9707d4ee1cc19e99717ee021ef48"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Dec 20 00:08:35 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 22 09:41:54 2014 -0800"
      },
      "message": "ART: Do not JNI abort on nullptr GetObjectRefType\n\nA nullptr is a valid input, as it is different from a null reference.\n\nBug: 18820997\nChange-Id: Ibda8907ba13b20d2055049492a356ffdf4ddc714\n"
    },
    {
      "commit": "89f67e96d6018342f79cd3b2417e6dc8f85ac9b0",
      "tree": "75794ee230f92565f2a2219670451bb4df3f2872",
      "parents": [
        "3edf1aac5718a095c3d3ad8024d56f32104142c0",
        "79bd7b1282c100447429a174ecd0646a5178f887"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Thu Nov 27 13:54:29 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu Nov 27 13:54:29 2014 +0000"
      },
      "message": "am 79bd7b12: am 7939a254: Merge \"Add a missing SHARED_LOCKS_REQUIRED(mutator_lock_).\"\n\n* commit \u002779bd7b1282c100447429a174ecd0646a5178f887\u0027:\n  Add a missing SHARED_LOCKS_REQUIRED(mutator_lock_).\n"
    },
    {
      "commit": "95c51b3c3765124adf367047caa56f16bfb6eb6f",
      "tree": "fd22336d36ea556e4cf0a504b35d3da57a983e25",
      "parents": [
        "af6dad6cbb6685f92d7274f9e8c45baa98232c79"
      ],
      "author": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Nov 26 01:24:13 2014 -0800"
      },
      "committer": {
        "name": "Stephen Hines",
        "email": "srhines@google.com",
        "time": "Wed Nov 26 01:24:13 2014 -0800"
      },
      "message": "Add a missing SHARED_LOCKS_REQUIRED(mutator_lock_).\n\nThis was caught by Clang 3.6 using -Wthread-safety-analysis.\n\nChange-Id: If2f25331f111ba6c67570e5aece1fba38f714d05\n"
    },
    {
      "commit": "d3a23885d613a60efebb529f18df53cabc34f9ba",
      "tree": "feb74327b656f4f2d8fcc9a6da54f1f44b6b9798",
      "parents": [
        "4bad3c057ebba4e8addd6c0467f0106d9a9e99e8",
        "7210368d367e57aaa8d78a36048c36f8f588a85c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 17 18:52:59 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Nov 17 18:52:59 2014 +0000"
      },
      "message": "am 7210368d: am 825365c5: Merge \"Fix reference leaks in ToReflectedMethod and ToReflectedField\"\n\n* commit \u00277210368d367e57aaa8d78a36048c36f8f588a85c\u0027:\n  Fix reference leaks in ToReflectedMethod and ToReflectedField\n"
    },
    {
      "commit": "41da59665556e8dd5601178185c68d48d645500b",
      "tree": "c1f8b5844e3243907a060f663c35370464328609",
      "parents": [
        "410709facb361c5503c7825f01edd264f4450666"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Nov 15 13:07:39 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 17 10:16:34 2014 -0800"
      },
      "message": "Fix reference leaks in ToReflectedMethod and ToReflectedField\n\nUsed ScopedLocalRef to fix, added regression tests.\n\nBug: 18396311\n\n(cherry picked from commit 8c41753e5eda8322b4d992fe88855058f4c0c2e1)\n\nChange-Id: I0ddfc20ac2384c90ff18586242c1f1d9a6d6eb6d\n"
    },
    {
      "commit": "b7d1e2e1afea092ef7a39331a4a5188e7567e0d2",
      "tree": "a7e81ff85b880cf86479f928c21a13d9b9205304",
      "parents": [
        "f37459f9cd5992e80dc6499d9aa196e6112e960d",
        "ae1a434fa1740791ba479da668e8372ca3dcb2a6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 05 03:03:48 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 05 03:03:48 2014 +0000"
      },
      "message": "am ae1a434f: am 78a32333: Merge \"ART: More warnings\"\n\n* commit \u0027ae1a434fa1740791ba479da668e8372ca3dcb2a6\u0027:\n  ART: More warnings\n"
    },
    {
      "commit": "ae1a434fa1740791ba479da668e8372ca3dcb2a6",
      "tree": "812f2e41acaa81590418b70c142a644e1a3f87eb",
      "parents": [
        "b396ff047c3480c99b03a3e4342556fed4a24e2f",
        "78a3233313260665fe82ba56257855e043bca3d4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 05 02:55:39 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 05 02:55:39 2014 +0000"
      },
      "message": "am 78a32333: Merge \"ART: More warnings\"\n\n* commit \u002778a3233313260665fe82ba56257855e043bca3d4\u0027:\n  ART: More warnings\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": "f004fabbe7567773c3a7f0ce3ae491ebede74e17",
      "tree": "cba6f21543a8244d6ab57a1969c49884d65f7612",
      "parents": [
        "9bc5dd95f72e43e5e640ad7674dba52bc5b30c4b",
        "1525ed874f8611368ef34a9fc5556cc9130ccee6"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 04 04:13:22 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 04 04:13:22 2014 +0000"
      },
      "message": "am 1525ed87: am a10a8b56: Merge \"Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\"\n\n* commit \u00271525ed874f8611368ef34a9fc5556cc9130ccee6\u0027:\n  Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n"
    },
    {
      "commit": "1525ed874f8611368ef34a9fc5556cc9130ccee6",
      "tree": "7c01027baece27d580f30dfbd28e11b50e220918",
      "parents": [
        "9d7bf4ead004f8fc00aacd3b5dd860c61348f2fb",
        "a10a8b56a01be95b3ec13022d3a155e163a11673"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 04 04:06:06 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Nov 04 04:06:06 2014 +0000"
      },
      "message": "am a10a8b56: Merge \"Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\"\n\n* commit \u0027a10a8b56a01be95b3ec13022d3a155e163a11673\u0027:\n  Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "0e1fd4896b03174ae66f516dd2169a85e83ed9f4",
      "tree": "86b7d0957e6ab1d587a877a4b5b51da2de44443c",
      "parents": [
        "15bb0ce2e7679a8a48eb7efc805709e414f04174",
        "4799e0d90003b3ac60e204fc254a97fbf0104bd1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 29 17:10:57 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Oct 29 17:10:57 2014 +0000"
      },
      "message": "am 4799e0d9: am aea6888b: Merge \"Tidy up logging.\"\n\n* commit \u00274799e0d90003b3ac60e204fc254a97fbf0104bd1\u0027:\n  Tidy up logging.\n"
    },
    {
      "commit": "4799e0d90003b3ac60e204fc254a97fbf0104bd1",
      "tree": "a41f21249bc93b946bdfd2c1576f3ad0c5ad961d",
      "parents": [
        "ab9e1ce005d6b5b8777a8bb9db0fef35891c18a5",
        "aea6888b056be21adf762e066c7f33b8939b8a06"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 13:01:50 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 24 13:01:50 2014 +0000"
      },
      "message": "am aea6888b: Merge \"Tidy up logging.\"\n\n* commit \u0027aea6888b056be21adf762e066c7f33b8939b8a06\u0027:\n  Tidy up logging.\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": "54b3aa6b8da05b4cccea2cf56dc1d4eafbb9f765",
      "tree": "52b2d250d626a0da81257ad02ad53f66fa7f73e4",
      "parents": [
        "301861c7b93d5cb9463c7efdf0e30511a2ae79dd",
        "b3f18cf7466f85e15c6b7f005f544867a4d6847a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 17 09:02:31 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 17 09:02:31 2014 +0000"
      },
      "message": "am b3f18cf7: Merge \"Make ART compile with GCC -O0 again.\"\n\n* commit \u0027b3f18cf7466f85e15c6b7f005f544867a4d6847a\u0027:\n  Make ART compile with GCC -O0 again.\n"
    },
    {
      "commit": "301861c7b93d5cb9463c7efdf0e30511a2ae79dd",
      "tree": "6c5c7865c0dd9834893d63f7facb149a2261c856",
      "parents": [
        "2c341abc4f616e9d711376e621e7b2b5d8b38d1b",
        "cb142101f29a4f1e097f03a220db3da6d4bd679f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 17 09:02:30 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Oct 17 09:02:30 2014 +0000"
      },
      "message": "am cb142101: Merge \"Add way to ensure we are at the front of the sigaction chain\"\n\n* commit \u0027cb142101f29a4f1e097f03a220db3da6d4bd679f\u0027:\n  Add way to ensure we are at the front of the sigaction chain\n"
    },
    {
      "commit": "b3f18cf7466f85e15c6b7f005f544867a4d6847a",
      "tree": "62035f08dc38038b74c9796118ae0bab0e7608fb",
      "parents": [
        "cb142101f29a4f1e097f03a220db3da6d4bd679f",
        "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 17 02:29:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 17 02:29:32 2014 +0000"
      },
      "message": "Merge \"Make ART compile with GCC -O0 again.\""
    },
    {
      "commit": "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3",
      "tree": "f7a20779e4d665f948c5fbcd26dac0071dafb8d4",
      "parents": [
        "2df6840f68dd18d7dd8dbf53f8b6181bbfdc4fc4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 14 17:41:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 19:27:28 2014 -0700"
      },
      "message": "Make ART compile with GCC -O0 again.\n\nTidy up InstructionSetFeatures so that it has a type hierarchy dependent on\narchitecture.\nAdd to instruction_set_test to warn when InstructionSetFeatures don\u0027t agree\nwith ones from system properties, AT_HWCAP and /proc/cpuinfo.\nClean-up class linker entry point logic to not return entry points but to\ntest whether the passed code is the particular entrypoint. This works around\nimage trampolines that replicate entrypoints.\nBug: 17993736\n\nChange-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23\n"
    },
    {
      "commit": "d000480134b7b00895fbfd142f1d1e18d9cfa6e9",
      "tree": "a9fab808555310308aecda2a59a7c90727ede0ff",
      "parents": [
        "d866c7616cb3426c431b635ae69964ce69c2ecb5"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 15 16:59:47 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 16 19:16:41 2014 -0700"
      },
      "message": "Add way to ensure we are at the front of the sigaction chain\n\nCalling this after jni_on_load fixes the unity apps. This is\nnot exactly correct since we may already have the following chain.\n\nStart up:\nUs -\u003e debuggerd\n\nAfter app goes in front:\nApp -\u003e us -\u003e debuggerd\n\nAfter we put ourself back at the front:\nUs -\u003e app -\u003e us -\u003e app -\u003e .... stack overflow.\n\nBug: 17620677\nChange-Id: I9183997e3d5ebd51c320b5d51425be5142e938f3\n\n(cherry picked from commit 1f24296c7c8a6501ee2388c0d20b48f471b48660)\n"
    },
    {
      "commit": "233806ee44f43fd1e296372458c3009ac061c76a",
      "tree": "a7281536d6680342b42520583deac846ff9c4ca4",
      "parents": [
        "756f65262c69acce6c85f55ab69aedac8ac05df7",
        "902c989bc46da80c3c80e49c7f868b63ba73d2de"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 06 22:42:03 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Oct 06 22:42:03 2014 +0000"
      },
      "message": "am 902c989b: Merge \"Add way to warn about missing JNI_ABORT\"\n\n* commit \u0027902c989bc46da80c3c80e49c7f868b63ba73d2de\u0027:\n  Add way to warn about missing JNI_ABORT\n"
    },
    {
      "commit": "24555ad5150e6ed31609a1f3c8c1a7e28a939301",
      "tree": "8329bf77eb1e3c02ae4e6be01e4ab655a2ca4d64",
      "parents": [
        "da20867f1967cab18722b507758e90913410b8e8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 06 13:41:33 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 06 14:19:20 2014 -0700"
      },
      "message": "Add way to warn about missing JNI_ABORT\n\nBug: 16858794\nChange-Id: I6794a14ee323ef95569cc7646619e6869771c7c6\n"
    },
    {
      "commit": "4c6e0686cdf113c44a62189d06410921c4a85318",
      "tree": "8a125d3ffdbda2913b8a58b264ac80c77befcb59",
      "parents": [
        "9d97791d9576dd5225940befa6db3ad2f0a19e74",
        "6d031046eeb5e9f62b657df0695b752e1d0aa583"
      ],
      "author": {
        "name": "jgu21",
        "email": "jinghui.gu@intel.com",
        "time": "Mon Sep 29 03:28:05 2014 +0000"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Sep 29 03:28:05 2014 +0000"
      },
      "message": "am 6d031046: ART: Update for split native bridge initialization\n\n* commit \u00276d031046eeb5e9f62b657df0695b752e1d0aa583\u0027:\n  ART: Update for split native bridge initialization\n"
    },
    {
      "commit": "6d031046eeb5e9f62b657df0695b752e1d0aa583",
      "tree": "c9f7b7c8bbaba146df9df5ea032de78492feff11",
      "parents": [
        "11c48fe8c541753b57f5770e53a93efe147c60a0"
      ],
      "author": {
        "name": "jgu21",
        "email": "jinghui.gu@intel.com",
        "time": "Wed Sep 10 06:57:17 2014 -0400"
      },
      "committer": {
        "name": "Pat Tjin",
        "email": "pattjin@google.com",
        "time": "Mon Sep 29 02:46:11 2014 +0000"
      },
      "message": "ART: Update for split native bridge initialization\n\n(cherry picked from commit a6da74e941d7cee498ac3880018a1d8dc953c6eb)\n(cherry picked from commit 7a536531791293441253cffb6e370ba1150eee96)\n\nBug: 17671501\nChange-Id: Id948e3ab22ac988d96f5d370bba8c3f86d08abff\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": "2e158932354e5950eb59c79498ab46b0586885fd",
      "tree": "6cccc50847537d9dd807b49347b7bec846e5ec6e",
      "parents": [
        "02308cf78484bcd125d92ebb27185d890889b92a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 13:14:31 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 16:55:49 2014 -0700"
      },
      "message": "Delete pin table\n\nThe pin table was brought over from dalvik but not really needed\nsince ART doesn\u0027t support pinning in movable spaces. The only\nthing it did was hold objects live for JNI functions.\nThis shouldn\u0027t be necessary since people keep jni references to\nthese objects or else they could never release the elements.\n\nBug: 17456946\n\n(cherry picked from commit a967c62e4e6675d3553445aa8e95a09e7a3381b0)\nChange-Id: Ibed0d029157ffb9e75ecd80d4d544d690986c090\n"
    },
    {
      "commit": "a967c62e4e6675d3553445aa8e95a09e7a3381b0",
      "tree": "094d8f56c76c355469e754fe0e187a26e50bc74c",
      "parents": [
        "44332cc21494726c9ba90ac8f23af8acc2dc4536"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 13:14:31 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 13:30:12 2014 -0700"
      },
      "message": "Delete pin table\n\nThe pin table was brought over from dalvik but not really needed\nsince ART doesn\u0027t support pinning in movable spaces. The only\nthing it did was hold objects live for JNI functions.\nThis shouldn\u0027t be necessary since people keep jni references to\nthese objects or else they could never release the elements.\n\nBug: 17456946\n\nChange-Id: Ibed0d029157ffb9e75ecd80d4d544d690986c090\n"
    },
    {
      "commit": "c0542af3e2170143ba40d89136e284997e16bf64",
      "tree": "a61e3b9cd297a4c52a0c0488a502cb77c47f0690",
      "parents": [
        "d3c9358544bbab15093614c5c2b6a9de86e11f7b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 16:16:56 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 17:15:54 2014 -0700"
      },
      "message": "Remove abuse of mirror::Object* to reference special values.\n\nRemove kInvalidIndirectRefObject, kClearedJniWeakGlobal and\nObjectRegistry::kInvalidObject. Handle error conditions by passing in or\nreturning an error value.\nGetObjectRefType is simplified to be faster and not return invalid references\nthat are not expected according to the spec. Adjust check JNI and\njni_internal_test appropriately.\nFix cases in the debugger/JDWP of out arguments being passed by reference.\nBug: 17376993\n\nChange-Id: I3ce8a28c01827e163f4dc288449959464da788b1\n"
    },
    {
      "commit": "bad0267eaab9d6a522d05469ff90501deefdb88b",
      "tree": "1ce689b75184cb322b9edde34d7af938c658a6ae",
      "parents": [
        "0772a9d99c8774463c9076824340eaa4eb66f47f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 25 13:08:22 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 29 18:57:35 2014 -0700"
      },
      "message": "Add native memory accounting through custom allocator.\n\nAdded a custom allocator that lets you pass in a special tag which\nspecifices where the allocation came from. This is used when\ndumping. The performance overhead is low since each allocation only\ndoes a atomic add/sub for each allocation/free.\n\nThe measurements are dumped to traces.txt during SIGQUIT.\n\nExample output:\nI/art     (27274): AllocatorTagHeap active\u003d120 max\u003d120 total\u003d168\nI/art     (27274): AllocatorTagMonitorList active\u003d1572 max\u003d6240 total\u003d11724\nI/art     (27274): AllocatorTagClassTable active\u003d185208 max\u003d185208 total\u003d268608\nI/art     (27274): AllocatorTagInternTable active\u003d430368 max\u003d430368 total\u003d436080\nI/art     (27274): AllocatorTagMaps active\u003d5616 max\u003d6168 total\u003d34392\nI/art     (27274): AllocatorTagLOS active\u003d1024 max\u003d1536 total\u003d2044\nI/art     (27274): AllocatorTagSafeMap active\u003d0 max\u003d51936 total\u003d533688\nI/art     (27274): AllocatorTagLOSMaps active\u003d144 max\u003d1248 total\u003d5760\nI/art     (27274): AllocatorTagReferenceTable active\u003d10944 max\u003d11840 total\u003d19136\nI/art     (27274): AllocatorTagHeapBitmap active\u003d32 max\u003d40 total\u003d56\nI/art     (27274): AllocatorTagHeapBitmapLOS active\u003d8 max\u003d8 total\u003d8\nI/art     (27274): AllocatorTagVerifier active\u003d0 max\u003d18844 total\u003d1073156\nI/art     (27274): AllocatorTagModUnionCardSet active\u003d5300 max\u003d5920 total\u003d56020\nI/art     (27274): AllocatorTagModUnionReferenceArray active\u003d24864 max\u003d24864 total\u003d24864\nI/art     (27274): AllocatorTagJNILibrarires active\u003d320 max\u003d320 total\u003d320\nI/art     (27274): AllocatorTagOatFile active\u003d1400 max\u003d1400 total\u003d5852\n\nChange-Id: Ibb470ef2e9c9a24563bb46422d46a55799704d82\n\n(cherry picked from commit 5369c40f75fdcb1be7a7c06db212ce965c83a164)\n"
    },
    {
      "commit": "5369c40f75fdcb1be7a7c06db212ce965c83a164",
      "tree": "0beace7590b66dd18470e9862602a14ef4c0f9cc",
      "parents": [
        "f59b605f82c0e2b7bfc6019ee7bd650628f50d3a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Aug 25 13:08:22 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 29 16:32:03 2014 -0700"
      },
      "message": "Add native memory accounting through custom allocator.\n\nAdded a custom allocator that lets you pass in a special tag which\nspecifices where the allocation came from. This is used when\ndumping. The performance overhead is low since each allocation only\ndoes a atomic add/sub for each allocation/free.\n\nThe measurements are dumped to traces.txt during SIGQUIT.\n\nExample output:\nI/art     (27274): AllocatorTagHeap active\u003d120 max\u003d120 total\u003d168\nI/art     (27274): AllocatorTagMonitorList active\u003d1572 max\u003d6240 total\u003d11724\nI/art     (27274): AllocatorTagClassTable active\u003d185208 max\u003d185208 total\u003d268608\nI/art     (27274): AllocatorTagInternTable active\u003d430368 max\u003d430368 total\u003d436080\nI/art     (27274): AllocatorTagMaps active\u003d5616 max\u003d6168 total\u003d34392\nI/art     (27274): AllocatorTagLOS active\u003d1024 max\u003d1536 total\u003d2044\nI/art     (27274): AllocatorTagSafeMap active\u003d0 max\u003d51936 total\u003d533688\nI/art     (27274): AllocatorTagLOSMaps active\u003d144 max\u003d1248 total\u003d5760\nI/art     (27274): AllocatorTagReferenceTable active\u003d10944 max\u003d11840 total\u003d19136\nI/art     (27274): AllocatorTagHeapBitmap active\u003d32 max\u003d40 total\u003d56\nI/art     (27274): AllocatorTagHeapBitmapLOS active\u003d8 max\u003d8 total\u003d8\nI/art     (27274): AllocatorTagVerifier active\u003d0 max\u003d18844 total\u003d1073156\nI/art     (27274): AllocatorTagModUnionCardSet active\u003d5300 max\u003d5920 total\u003d56020\nI/art     (27274): AllocatorTagModUnionReferenceArray active\u003d24864 max\u003d24864 total\u003d24864\nI/art     (27274): AllocatorTagJNILibrarires active\u003d320 max\u003d320 total\u003d320\nI/art     (27274): AllocatorTagOatFile active\u003d1400 max\u003d1400 total\u003d5852\n\nBug: 16238192\n\nChange-Id: Ibb470ef2e9c9a24563bb46422d46a55799704d82\n"
    },
    {
      "commit": "93de4273d72a2558a7b3423547b5074cd76c5796",
      "tree": "227453bdc534d34c05bdaf6a0e34edf555da5b19",
      "parents": [
        "4f1d05f0531b980b16dbff18161f02160919ec31"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 12 20:55:20 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Aug 15 13:27:42 2014 +0100"
      },
      "message": "[ART] Move to system/core native bridge library\n\nSome cleanups on the way:\n- move NativeBridgeRuntimeCallbacks from a global to a field\n- rename native_bridge_library_string to the more suggestive\nnavtive_bridge_library_path\n- clean up imports\n\nBug: 16884833\n\n(cherry picked from commit I73aab8e212860ba5aee9444d801806d3da326a41)\n\nChange-Id: I67f037ea81d2a4ede4294afd8b84b7640e534a13\n"
    },
    {
      "commit": "37f048b19da5ac245a6b2a8473b326d2167cc692",
      "tree": "bf3faf13e33e22c2029b63784c1fefd13cc7484e",
      "parents": [
        "d684cbfbe8abfb9aea4de27687041243217295c7",
        "c8423521c1d1136c70b153479b7df3bf4fd7fc2a"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Aug 15 11:35:52 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 15 04:45:58 2014 +0000"
      },
      "message": "Merge \"[ART] Move to system/core native bridge library\""
    },
    {
      "commit": "c8423521c1d1136c70b153479b7df3bf4fd7fc2a",
      "tree": "f7a0d12391f843d1b1eac1b0227c3237e7da3920",
      "parents": [
        "02a6317297b8745637b265ab75abbfa685879882"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Aug 12 20:55:20 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Aug 15 10:10:09 2014 +0100"
      },
      "message": "[ART] Move to system/core native bridge library\n\nSome cleanups on the way:\n- move NativeBridgeRuntimeCallbacks from a global to a field\n- rename native_bridge_library_string to the more suggestive\nnavtive_bridge_library_path\n- clean up imports\n\nBug: 16884833\nChange-Id: I73aab8e212860ba5aee9444d801806d3da326a41\n"
    },
    {
      "commit": "20ae1d77463d1c3f206eac8d541124b4555464de",
      "tree": "2d6ee2f380b553a968993b397d83c64b97b28d80",
      "parents": [
        "7e9cdbbc14c015028d4b239a09c5af33ffc2087c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 11:09:10 2014 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Aug 14 12:08:15 2014 +0100"
      },
      "message": "Clean up native bridge\n\n(partially cherry picked from commit\n68d8b42ddec39ec0174162d90d4abaa004d1983e)\n\nChange-Id: I85813e97d73b1b331646dd0e880108dfbfe80f69\n"
    },
    {
      "commit": "cb6b0f31ede2275e79e6199ec391147585a37a2a",
      "tree": "91eba661ab7dd329463104da33395d85df521399",
      "parents": [
        "5f1dcee2b3cdaf0f745958ff366a84279940c65e"
      ],
      "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": "Wed Aug 13 10:19:45 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\nConflicts:\n\truntime/utils.cc\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": "68d8b42ddec39ec0174162d90d4abaa004d1983e",
      "tree": "0bb6ccf3b996bb8363c10d07aa39cde221980602",
      "parents": [
        "9c522c2cbbf50dc687728747b37ad59985750b65"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 11:09:10 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 08 08:29:53 2014 -0700"
      },
      "message": "Wire up check JNI force copy mode.\n\nIncrease check JNI checks.\nBreak apart jni_internal.h in to jni_env_ext.h and java_vm_ext.h.\nFix the abuse of ScopedObjectAccess/annotalysis by ScopedCheck in the case\nof VM routines.\nMake class loader override and shared library class loader JNI global\nreferences rather than mirror pointers.\nClean-ups to native bridge.\n\nChange-Id: If7c6110b5aade7a402bfb67534af86a7b2cdeb55\n"
    },
    {
      "commit": "1268b742c8cff7318dc0b5b283cbaeabfe0725ba",
      "tree": "62ccc7504d91617154c6474b933562cc70255fce",
      "parents": [
        "89c210bf418a152ccabfbbf853ddcce33aea450d"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jul 11 19:15:11 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 01 14:53:30 2014 +0100"
      },
      "message": "Fix broken JNI IsAssignableFrom.\n\nThe expected argument order was the opposite of what the spec\ndictated.\n\nReported-By: Mikhail Naganov \u003cmnaganov@google.com\u003e\nbug: 16531674\n\nChange-Id: I1ebc6d5814ebb4feeb96f3ecdf1a4602da4ba7ce\n"
    },
    {
      "commit": "94f7b49578b6aaa80de8ffed230648d601393905",
      "tree": "cfc69e453faefee38178ceb85378e1f0f1e17812",
      "parents": [
        "8df73882c60451e7f789bf9b1f3db2d7dc228640"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 22 18:08:23 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 29 13:30:46 2014 -0700"
      },
      "message": "Add GcRoot to clean up and enforce read barriers.\n\nIntroduce a value-type wrapper around Object* for GC roots so that 1)\nwe won\u0027t have to directly add the read barrier code in many places and\n2) we can avoid accidentally bypassing/missing read barriers on GC\nroots (the GcRoot interface ensures that the read barrier is executed\non a read).\n\nThe jdwp test passed.\n\nBug: 12687968\nChange-Id: Ib167c7c325b3c7e3900133578815f04d219972a1\n"
    },
    {
      "commit": "355383f61d28f2dc8072fbde2639c80627adf16d",
      "tree": "87b5a523f17813ae83acd2b821d9dbd0cb4440f1",
      "parents": [
        "54f3c041365647fc79260b65e70b4290d0b50f1c"
      ],
      "author": {
        "name": "Yong WU",
        "email": "yong.wu@intel.com",
        "time": "Thu Jul 24 21:32:15 2014 +0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 24 20:52:27 2014 -0700"
      },
      "message": "Integrate ART with NativeBridge interfaces\n\nNative-bridge will provide the following interfaces to ART:\n\nstruct NativeBridgeCallbacks {\n  bool  (*initialize   )(NativeBridgeArtCallbacks* vm_itf);\n  void* (*loadLibrary  )(const char* libpath, int flag);\n  void* (*getTrampoline)(void* handle, const char* name, const char* shorty,\n                         uint32_t len);\n  bool  (*isSupported  )(const char* libpath);\n};\n\nNative-bridge will expose a symbol NativeBridgeItf with the\ntype of NativeBridgeCallbacks to ART.\n\nAnd ART will provide the interfaces below to native-bridge:\n\nstruct NativeBridgeArtCallbacks {\n  int   (*logger               )(int prio, const char* tag, const char* fmt, ...);\n  const char* (*getMethodShorty)(JNIEnv* env, jmethodID mid);\n  int   (*getNativeMethodCount )(JNIEnv* env, jclass clazz);\n  int   (*getNativeMethods     )(JNIEnv* env, jclass clazz, JNINativeMethod* methods,\n                                 uint32_t method_count);\n};\n\nBased on the interfaces, if an ART call to dlopen fails to open a native library,\nit queries the native bridge by using NativeBridgeCallbacks::isSupported(). If the\nnative library is supported by native-bridge, ART can load the native library\nusing NativeBridgeCallbacks::loadLibrary() and get a trampoline for a specific\nnative method using NativeBridgeCallbacks::getTrampoline(). ART can then call\nthe native method using the normal signature and the address of the trampoline.\n\nOn the other side, in the case of a native method calling JNI native function\nCallXXXXMethodY(), native-bridge calls back to Art for the shorty of the method\nusing NativeBridgeArtCallbacks::getMethodShorty() so that it can prepare based\non host calling convention.\n\nIn case of JNI function RegisterNatives()/UnregisterNatives(), native bridge can\ncall back to NativeBridgeArtCallbacks::getNativeMethodCount() and NativeBridgeArtCallbacks\n::getNativeMethods() to get all native methods of specified class so that all\ncorresponding trampolines can be prepared/destroyed.\n\nClass NativeBridge is created to encapsulate the function pointers of\nNativeBridgeCallbacks and provides better abstraction to ART.\n\nNote: functionality is turned off in native_bridge.cc at the moment.\n\nChange-Id: I652755044957a7960254648652b538cce70dd011\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": "e63db27db913f1a88e2095a1ee8239b2bb9124e8",
      "tree": "893dee6783bca6717259321a6e4ba029c9c123e2",
      "parents": [
        "07b8441303ea82fca3cb85d71ecf8752d73cedd7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 15:36:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 17:07:49 2014 -0700"
      },
      "message": "Break apart header files.\n\nCreate libart-gtest for common runtime and compiler gtest routines.\nRename CompilerCallbacksImpl that is quick compiler specific.\nRename trace clock source constants to not use the overloaded profiler term.\n\nChange-Id: I4aac4bdc7e7850c68335f81e59a390133b54e933\n"
    },
    {
      "commit": "fa65e846362829d6e444bd88b12fe2496b3d5647",
      "tree": "d17bdf533529d158278e2fbe64214ea71aa7e228",
      "parents": [
        "555377d55c37db860583e0655f63a1dacb589921"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jul 03 09:39:53 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jul 03 11:18:06 2014 +0200"
      },
      "message": "More checks in JNI RegisterNatives\n\nThrows NoSuchMethodError (and returns JNI_ERR) when given method name, method\nsignature or native function is null.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d72293\nBug: 15886341\nChange-Id: I1c0582d54031eaa58a6025a2417d65090a2a622a\n"
    },
    {
      "commit": "3a1444ccb92fb1b11d4943c3baa1f0a3abed4f10",
      "tree": "0eba34d67a39959197877d5ce8924f935a1daaed",
      "parents": [
        "29978887552542e3b7e7792070dad06392377648"
      ],
      "author": {
        "name": "Alexei Zavjalov",
        "email": "alexei.zavjalov@intel.com",
        "time": "Wed Jun 25 16:04:55 2014 +0700"
      },
      "committer": {
        "name": "Alexei Zavjalov",
        "email": "alexei.zavjalov@intel.com",
        "time": "Wed Jul 02 13:16:59 2014 +0700"
      },
      "message": "ART: JNI ExceptionDescribe crashes if no exception occurred\n\nSome tests are calling ExceptionDescribe without checking if\nwe have an exception occurred. The most JVM\u0027s like Dalvik can\nhandle this in a good way, but art crashes with JNI error.\n\nThis adds a check in art::ExceptionDescribe for a case when it\ncalled without exception.\n\nChange-Id: Id9eddcc73e78b1197109be5a6340f9ff60940c74\nSigned-off-by: Alexei Zavjalov \u003calexei.zavjalov@intel.com\u003e\n"
    },
    {
      "commit": "d3333767dc25566ad207c90c897adaefd813588d",
      "tree": "9c31cbcc5ebdc77dc7865953bddb973c45d03acd",
      "parents": [
        "0c1734665c38b3116e38a90ad06c3f152d9316c5"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jun 26 14:45:07 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jun 26 14:45:28 2014 +0200"
      },
      "message": "Fix JNI ToReflectedMethod for constructor\n\nReturns java.lang.reflect.Constructor object for \u003cinit\u003e and \u003cclinit\u003e methods.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d72312\nBug: 15885285\nChange-Id: I2f4a266b2d9574659673dc6966104860578d709e\n"
    },
    {
      "commit": "85a93364e5111dc56a73eed0130856e66cab0802",
      "tree": "db599a034e018c8ba5718650ab0dbe5a5e6deee1",
      "parents": [
        "ebeaf8f7c88af0917f4b7b1137dd78d56d66dd59"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 25 09:30:52 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 25 09:30:56 2014 -0700"
      },
      "message": "Address comments on change 45d26c86b00580593067ca42091ad66cf7dc4f7c\n\nChange-Id: Ibb559ae41654660064f4a8df71274c4e4f16807a\n"
    },
    {
      "commit": "45d26c86b00580593067ca42091ad66cf7dc4f7c",
      "tree": "b5fa7e7df42c1f7e7efb21b085980faac0e67937",
      "parents": [
        "b5dc9444777bb027b070d3ff3fcf7a2a3fb7e3dc"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jun 24 23:36:28 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 25 01:44:33 2014 -0700"
      },
      "message": "Treat larger than jint capacity in NewDirectByteBuffer as an error\n\nBug: 15854028\nChange-Id: If78921f4ba2b38a9d0bb421acf9c8bca962ed42a\n"
    },
    {
      "commit": "8d16f203d40ab4018986baa018e52185ad05dae6",
      "tree": "a70a734448245abc4138eddea84d14e7dfbb286d",
      "parents": [
        "2d2d6bb1ff8692efdddf104dabfb4a2d39877ff6",
        "ea2e1bd713ca8295ba4fcd01e77a3ce532ea61e4"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 20 19:30:53 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 20 02:09:57 2014 +0000"
      },
      "message": "Merge \"Add more read barriers for JNI roots.\""
    },
    {
      "commit": "ea2e1bd713ca8295ba4fcd01e77a3ce532ea61e4",
      "tree": "d41be4b08041c5a2b1af626d8cdf6b69280723d5",
      "parents": [
        "241fd1192dfc0f7322660343179f9fc0591ed9ff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jun 18 13:47:35 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 20 11:23:58 2014 -0700"
      },
      "message": "Add more read barriers for JNI roots.\n\nTo make it possible to concurrently scan the JNI global roots (that\nis, the roots visited by JavaVMExt::VisitRoots()), add read barriers\nto the indirect reference table and the reference table.\n\nAlso, add read barriers to the jmethodID/jfieldID decode routines\n(ScopedObjectAccessAlreadyRunnable::DecodeField/DecodeMethod) so that\nwe can concurrently handle (encoded) fields and methods.\n\nBug: 12687968\nChange-Id: I3df4e4e622a572ff0ea8d44b2dc70a4d6b3ba058\n"
    },
    {
      "commit": "6c5cb212fa7010ae7caf9dc765533aa967c95342",
      "tree": "c31c46eb7b284b317455fdab48317de92b81dd28",
      "parents": [
        "241fd1192dfc0f7322660343179f9fc0591ed9ff"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 18 16:07:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 18 16:39:29 2014 -0700"
      },
      "message": "Ensure classes are initialized rather than initializing.\n\nA class can be being initialized on a different thread, in that case other\nthreads should block trying to access the class. The initializing state shows\nthe class is being initialized but not that its safe for other threads to\naccess. Change occurances of IsInitializing to IsInitialized primarily in\nslow-path code.\nBug: 15347354\n\nChange-Id: Ib586d0a385be6086a890dfbf8868d76f16767fac\n"
    },
    {
      "commit": "004644fe87046b965442b1ee1008b7206817d187",
      "tree": "f5ade3240a9f969a359491990fd967a32173959d",
      "parents": [
        "df88a9e44673655009cc560947d29c1400516f12"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 18 08:34:01 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jun 18 09:36:33 2014 -0700"
      },
      "message": "Fix GetMethodID to find an interface method from a super-interface\n\nBug: 15651032\nChange-Id: I5df113e9489a1615e901f03bed92ed2a1a42bd67\n"
    },
    {
      "commit": "9f1020305292a21fd14a402b189c765a125226ab",
      "tree": "6b730cbe56ded370d1b4293629826ad2c7b06f7f",
      "parents": [
        "bc72903b909f5147b8cb207f3e5d02a8ef85e4e7"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 23 08:59:42 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jun 11 14:29:00 2014 +0200"
      },
      "message": "Fix exception reporting from interpreter\n\nTo comply with JDWP exception report rules, we must report an exception at the\nlocation of the throw (or the first instruction encountered after a native\ncall). To do this, we use the CatchLocationFinder visitor to look for a catch\nhandler until we reach a native frame or the top frame.\n\nBecause interpreter handles pending exception on a method-by-method basis, we\nneed a flag to remember we already reported the exception and avoid reporting\nit multiple times when unwinding methods. The drawback is we need to maintain\nthe state of this flag. We clear it when the exception is cleared. In the case\nwe temporarily clear the exception (when finding a catch handler for instance),\nwe restore the flag to its previous value at the same time we restore the\npending exception.\n\nBump oat version to force recompilation because we modify Thread offsets.\n\nBug: 14402770\nChange-Id: Ic059c58f80b2023b118038301f8f0a24f1e18241\n"
    },
    {
      "commit": "56890e2615ab3dd612f1f81c3cadab6299eceacb",
      "tree": "4e164a9f5aa3582d9fc5d9051375ce87d2568cc6",
      "parents": [
        "502a1975e146b288356e49a3af82629637da5ece"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Mon Jun 02 11:11:52 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Mon Jun 02 19:34:39 2014 -0700"
      },
      "message": "Modified functions to return pointers where appropriate\n\nGetStringChars will return a pointer to the underlying char array iff\nit is not movable. Otherwise, it will return a copy of the char array.\nFor consistency, the null terminating character has been removed as the\nspecification for a jchar strings are not null terminated:\n\nhttp://developer.android.com/training/articles/perf-jni.html\n\nGetStringCritical will now always return a pointer to the char array.\nThe char array is pinned and moving gc is disabled until the pointer is\nreleased.\n\nChange-Id: I19c8cbaecc1f3f723d80acec074fb8c5e2d489c3\n"
    },
    {
      "commit": "a309d76d4c9f4e5564b09708004bf4b2e3401bb3",
      "tree": "64390ebfb947779a72bf1c3cb950778d1c90b9bc",
      "parents": [
        "e4283be97047a26d3476acd3863dcc386498be17"
      ],
      "author": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon May 26 11:23:39 2014 +0700"
      },
      "committer": {
        "name": "Serguei Katkov",
        "email": "serguei.i.katkov@intel.com",
        "time": "Mon Jun 02 10:41:55 2014 +0700"
      },
      "message": "Fix GC race condition in visit roots\n\nWhile GC visits roots other code can change the set pending exception\ndue to lack of synchronization.\n\nChange-Id: If387944ac933a66fe176df066c3a0ea52131cad4\nSigned-off-by: Serguei Katkov \u003cserguei.i.katkov@intel.com\u003e\n"
    },
    {
      "commit": "b379e8d107b9131d9b6c7b48aea01f9866e4047b",
      "tree": "1eed73cb1dd37de984e8f74b1870e3cf44c24404",
      "parents": [
        "e4e04bbd86d1131b9f380a52a46b1a3b83335d5f",
        "b74cd29802f364b4cec88f4913fa38ade26b8fab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 30 21:15:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 30 21:15:32 2014 +0000"
      },
      "message": "Merge \"Compaction cleanup for FindArrayClass.\""
    },
    {
      "commit": "b74cd29802f364b4cec88f4913fa38ade26b8fab",
      "tree": "73ccdce1c5a6e57d5763cae1f889e53dca2b5e24",
      "parents": [
        "11138c73e0c5f8a90d1eeed3c48a2b63b310671c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 29 14:31:33 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 30 13:58:22 2014 -0700"
      },
      "message": "Compaction cleanup for FindArrayClass.\n\nWe now pass double pointer in to signify that it can cause thread\nsuspension, this double pointer gets wrapped by a handle if don\u0027t\nfind the array class in the cache.\n\nChange-Id: I43436b6c35597c7252b65d1180baddb5ac4caabb\n"
    },
    {
      "commit": "196851b634a5bfdd8ab3fb59a320e550b21b0f4d",
      "tree": "f9fca2858b6213163d358c2eb2b2f88aa88a027b",
      "parents": [
        "ea0b6e284cab12eed88eebf6aa19e6292af57389"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 29 12:16:04 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu May 29 12:37:49 2014 -0700"
      },
      "message": "Add read barriers for the weak roots in the JNI weak globals.\n\nBug: 12687968\nChange-Id: Ic265a0e162e8cc9edc4ab7fa34f8afd5ce968d08\n"
    },
    {
      "commit": "0cd81352a7c06e381951cea1b104fd73516f4341",
      "tree": "fcc8ff9cdeb608d0913097aa1fb64d1879f11ffa",
      "parents": [
        "dfd301f19800a4f168283cf2d0b15b2c09071955"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 16:48:55 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 23 12:55:45 2014 -0700"
      },
      "message": "Revert \"Revert \"Fix an outstanding compaction bug in interpreter.\"\"\n\nFixed the generic trampoline to not use ToJObject when unnecessary.\n\nBug: 15167269\n\nThis reverts commit 3bdb873122964da7937eb070cbcf2ef638a8e459.\n\nChange-Id: I0525d0e0f3afb753c770e1572070a0fa22b02271\n"
    },
    {
      "commit": "3bdb873122964da7937eb070cbcf2ef638a8e459",
      "tree": "3d29123f33853e11adb67bdd6ac56f19ee798a1f",
      "parents": [
        "e09ae0920be57760fb390b6944bce420fa0b5582"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 22:06:51 2014 +0000"
      },
      "message": "Revert \"Fix an outstanding compaction bug in interpreter.\"\n\nThis reverts commit e09ae0920be57760fb390b6944bce420fa0b5582.\n\nChange-Id: I48036306130d5ccfec683d0dc3e9a642a02ee9c1\n"
    },
    {
      "commit": "e09ae0920be57760fb390b6944bce420fa0b5582",
      "tree": "acc40266093df4289ffb6728c979cafd6b5114d2",
      "parents": [
        "b8033db2a8dc6f7c7e29b1552177542964f56e44"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 15 12:39:19 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 22 10:47:44 2014 -0700"
      },
      "message": "Fix an outstanding compaction bug in interpreter.\n\nFixed a bug in DoFieldPut where the FieldHelper GetType could cause\nthread suspension which would result in a stale obj.\n\nAdded more handles in the class linker to facilitate moving fiels\nand methods in the future.\n\nRemoved un-necessarly passing handle references since these are value\ntypes and don\u0027t need to be passed by reference.\n\nAdded a special NullHandle type which allows null handles without a\nhandle scope.\n\nChange-Id: I1b51723920a2e4f4f8b2907066f578a3e879fd5b\n"
    },
    {
      "commit": "35aef2ce9d9cbfb37e9b2f6776afce3caed37063",
      "tree": "db1ce2f734a7ff0ad8cd4107a1aef85e7fdf8e0a",
      "parents": [
        "27a2b70f612af9afc0fb5392fb10059f6a0a3569"
      ],
      "author": {
        "name": "Yevgeny Rouban",
        "email": "yevgeny.y.rouban@intel.com",
        "time": "Mon May 19 16:19:36 2014 +0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 20 10:44:00 2014 -0700"
      },
      "message": "Fix race condition between GCDaemon and DeleteLocalReference\n\nThere is a race condition between the GCDaemon visiting\nthread local roots starting from the thread\u0027s indirect ref table (IRT)\nand another thread calling JNI::DeleteLocalReference, which is clearing\none of the indirect references.\n\nTo cope with the race condition the DeleteLocalReference used to transit\nfrom suspended to running state by creating a ScopedObjectReference(env).\nBut this transition was removed with the following patch:\nhttps://android.googlesource.com/platform/art/+/ef28b14268ed0f9db0c7bbd571aa514354a360bd%5E!/#F0\n\nIf so the GCDaemon must be careful to work with IRT entries.\n\nThis new patch:\n1. calls the visitor only if the reference is not null. This if-null\n   behavior of ART GC is consistent with what Dalvik GC does.\n2. But this might be not enough for some future sophisticated GC algorithms.\n   For example, if GC moves an object, then the IRT entry must be changed\n   with CAS only if it has not been cleared. So, for the safety reasons\n   the patch put backs the ScopedObjectReference soa(env) to\n   DeleteLocalReference.\n\nOnly one of those two changes would be enough.\n\nmathieuc note: I decided to delete the root null check but kept the\nScopedObjectAccess in DeleteLocalRef and added missing annotations as\nwell as more ScopedObjectAccess in jni internals.\n\nBug: 14626564\n\nChange-Id: I90d4b8494f61404579ecdd2918d1482093d99387\nSigned-off-by: Yevgeny Rouban \u003cyevgeny.y.rouban@intel.com\u003e\nSigned-off-by: Yang Chang \u003cyang.chang@intel.com\u003e\n"
    },
    {
      "commit": "700a402244a1a423da4f3ba8032459f4b65fa18f",
      "tree": "4c22fcda04d271bd55a37aff30650214af17a90c",
      "parents": [
        "047c11adcbcbc0bcf210defdfcbada763961ffee"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 16:49:03 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 19 22:27:39 2014 -0700"
      },
      "message": "Now we have a proper C++ library, use std::unique_ptr.\n\nAlso remove the Android.libcxx.mk and other bits of stlport compatibility\nmechanics.\n\nChange-Id: Icdf7188ba3c79cdf5617672c1cfd0a68ae596a61\n"
    },
    {
      "commit": "f832284dd847ff077577bb5712225430bbbb3b67",
      "tree": "44f6b91098639c6ebc438b4ec998d0dc128cef9a",
      "parents": [
        "8f0776768712b2021aa8fb649b51017b9f0fc7a9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 16 10:59:25 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 18 12:50:33 2014 -0700"
      },
      "message": "Delete ClassHelper and fix compaction bug in GetDirectInterface\n\nCleanup helps to prevent compaction bugs. Fixed a fairly serious\ncompaction error caused by calling ClassHelper::GetDirectInterface\nwithout handling the case where it causes thread suspension due to\nResolveType.\n\nBug: 8981901\n\nChange-Id: I82b3bb6dd48d21eb6ece7aae0733c4a23c2bc408\n"
    },
    {
      "commit": "507dfdd147c97bfbadebfd63584d094b6a4e7b47",
      "tree": "cce43931b6dcd088cb2932c2491f86116353a27f",
      "parents": [
        "922ddb30982d2597eab634d8b8598bec0eb7d3b7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:42:40 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 15 16:50:51 2014 -0700"
      },
      "message": "Compatibility layer to transition from UniquePtr to std::unique_ptr.\n\nUse ART_WITH_STLPORT (enabled for the target) to cause the use of UniquePtr,\nfor the host switch to std::unique_ptr. For now the type remains called\nUniquePtr.\nMake dalvik compile with clang on the host, move its build to C++11.\n\nChange-Id: I5ba8d2757904bc089ed62047ea03de3c0853fb12\n"
    },
    {
      "commit": "cbfb8b2f30de46632d3499a838661765451845c5",
      "tree": "1c1e2bacb0dd16a7bb22cf26cbd7ad84d6a7f370",
      "parents": [
        "6099df8c0695a81a8f25c47ff801998b12d09d1b",
        "2d10b206f9d0b97396b7dadb9a6415cd39efd341"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 14 19:09:45 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 14 19:09:45 2014 +0000"
      },
      "message": "Merge \"Ensure JNI primitive array type is appropriate.\""
    },
    {
      "commit": "2d10b206f9d0b97396b7dadb9a6415cd39efd341",
      "tree": "032625cf6175d1749739bca3c9d673b027ba92c1",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 12 19:15:18 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 14 12:03:16 2014 -0700"
      },
      "message": "Ensure JNI primitive array type is appropriate.\n\nCheck the primitive array type for GetPrimitiveArray, ReleasePrimitiveArray,\nGetPrimitiveArrayRegion and SetPrimitiveArrayRegion matches the given array\ntype. Check the GetPrimitiveArrayCritical and ReleasePrimitiveArrayCritical are\ngiven a primitive array.\nAdd unit tests that null parameters lead to fatal errors, not crashes. Fix\nissues where CheckJNI assumed non-null arguments.\nTidy testing code via the use of nullptr. Add a few extra checks.\nEnsure arrays of void are not able to be created, use RI compatible\nNoClassDefError.\n\nBug: 14817823\n\nChange-Id: I9903bcd800d0da1988ced07f61fb97b783c5deab\n"
    },
    {
      "commit": "eb8167a4f4d27fce0530f6724ab8032610cd146b",
      "tree": "bcfeaf13ad78f2dd68466bbd0e20c71944f7e854",
      "parents": [
        "6fb66a2bc4e1c0b7931101153e58714991237af7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 07 15:43:14 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue May 13 14:45:54 2014 -0700"
      },
      "message": "Add Handle/HandleScope and delete SirtRef.\n\nDelete SirtRef and replaced it with Handle. Handles are value types\nwhich wrap around StackReference*.\n\nRenamed StackIndirectReferenceTable to HandleScope.\n\nAdded a scoped handle wrapper which wraps around an Object** and\nrestores it in its destructor.\n\nRenamed Handle::get -\u003e Get.\n\nBug: 8473721\n\nChange-Id: Idbfebd4f35af629f0f43931b7c5184b334822c7a\n"
    },
    {
      "commit": "c56057e40938c587a74984651a510e320a8cb4fd",
      "tree": "6595bb7aa27ecf91dc9121d25722b40dec803ee6",
      "parents": [
        "0b8027003514c4fa6a850e5087076e991daaf4c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun May 04 13:18:58 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 05 15:46:09 2014 -0700"
      },
      "message": "Add lockless SynchronizedGet for indirect reference table.\n\nUsed for decoding global references without holding locks.\n\nResults on JniCallback:\nBefore: 615ms (3 samples).\nAfter: 585ms (3 samples).\n\nChange-Id: Ifcac8d0359cf658d87f695c6eb869d148af002e5\n"
    },
    {
      "commit": "b0fa5dc7769c1e054032f39de0a3f6d6dd06f8cf",
      "tree": "839d13ebfa7170967dd9b4abd434b7abda53da99",
      "parents": [
        "948740c1938860df055ddc801f20fd1707331e38"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 28 16:47:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 29 14:36:28 2014 -0700"
      },
      "message": "Force inlining on trivial accessors.\n\nMake volatility for GetFieldObject a template parameter.\nMove some trivial mirror::String routines to a -inl.h.\n\nBug: 14285442\n\nChange-Id: Ie23b11d4f18cb15a62c3bbb42837a8aaf6b68f92\n"
    },
    {
      "commit": "3b60fea8458f0bf65ef4530e1c4ee6fdd4b199e9",
      "tree": "8f08fe83b1a2ee414b4d01611729e7ef4b1fb200",
      "parents": [
        "81d79dc3e2a5e92c65bad955f2bea7ee161f66aa"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 24 17:17:21 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 24 17:30:00 2014 -0700"
      },
      "message": "Use __FUNCTION__ in CHECK_NON_NULL_*ARGUMENT.\n\nPrevents naming errors and reduces code maintenance requirements.\n\nChange-Id: I14aba05f0d5dab8009f472b3af0b698551ac2a7e\n"
    },
    {
      "commit": "92b7889dfbfb44e875ba46c4e9ec3235c37b7709",
      "tree": "c95e28ad4b90d731fcffe159bf9f46d35772b7ad",
      "parents": [
        "17c50db442d2791d9c4d7d1e98060556c323ce9b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 24 16:14:43 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 24 16:16:23 2014 -0700"
      },
      "message": "Clean up ScopedThreadStateChange + Get/SetPrimtiveArrayRegion\n\nSimplified code in ScopedThreadStateChange and fixed an incorrect\nname in Get/SetPrimitiveArrayRegion.\n\nChange-Id: Id71affec1d64911449d792911cd52104dd179840\n"
    },
    {
      "commit": "35d5c3baf701ca3d1e2d5b0b3653a5ca16f21f7e",
      "tree": "9b52bbf9851c3e2f3a2b73b50b7bdedb238ba435",
      "parents": [
        "125011d70aa84b3fd9052f1c90101401b0851928"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Apr 23 14:56:31 2014 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Apr 23 15:03:24 2014 -0700"
      },
      "message": "art: fix dlopen error message\n\ndetail is a std::string *, dereference it when logging the error\nmessage.\n\nChange-Id: If73a5806445df17d91ff1a7f4f3a6d31f0e9f54e\n"
    },
    {
      "commit": "987560fee798e48fb725c44b796d8ca7a5872ad6",
      "tree": "d61f35a129847f3f5fbed1436649e75acd940b3f",
      "parents": [
        "44b0053fdb7ad8a30138d29f714172a7dc69efb8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 22 11:42:59 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 22 14:52:19 2014 -0700"
      },
      "message": "Remove support for app JNI workarounds.\n\nChange-Id: I4396df7e93fcace4b5b19c2c387e5c30089182a6\n"
    },
    {
      "commit": "dd7624d2b9e599d57762d12031b10b89defc9807",
      "tree": "c972296737f992a84b1552561f823991d28403f0",
      "parents": [
        "8464a64a50190c06e95015a932eda9511fa6473d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 17:43:00 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 01 08:24:16 2014 -0700"
      },
      "message": "Allow mixing of thread offsets between 32 and 64bit architectures.\n\nBegin a more full implementation x86-64 REX prefixes.\nDoesn\u0027t implement 64bit thread offset support for the JNI compiler.\n\nChange-Id: If9af2f08a1833c21ddb4b4077f9b03add1a05147\n"
    },
    {
      "commit": "62f0512bf6d9bc6141358bf22e93afa70dc58b1a",
      "tree": "7fdc0b9be0df2da5ff2575862a24db5c10eae9dc",
      "parents": [
        "215f3e60cd97471c0843eae22a041c335e89071c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 21 11:21:29 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 21 11:25:56 2014 -0700"
      },
      "message": "Improvements to Field.get/set.\n\nAvoid unnecessary repeated computation in Field.get/set.\nRefactor FromReflectedField and FromReflectedMethod into common helpers in\nmirror::ArtField and mirror::ArtMethod, and make use of thereby avoiding\ntransitions through JNI.\nAvoid JNI use from within FromReflectedField and FromReflectedMethod.\nTidy up Field.get/set wrt moving collector support.\nBug: 12189533\n\nChange-Id: I643ab3474bade4abac3a3ae2b6e373b2bb0891c8\n"
    },
    {
      "commit": "53b8b09fc80329539585dcf43657bc5f4ecefdff",
      "tree": "cac0f82fbb89bd907104e3fed6c36203e11a3de0",
      "parents": [
        "0dea9872082bc3e576ed6cefed86b0d6c0c45ffd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 13 23:45:53 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Mar 14 11:28:10 2014 -0700"
      },
      "message": "Refactor reflective method invocation.\n\nMove invocation code out of JNI internal into reflection, including ArgArray\ncode. Make reflective invocation use the ArgArray to build arguments rather\nthan allocating a jvalue[] and unboxing arguments into that.\nMove reflection part of jni_internal_test into reflection_test.\nMake greater use of fast JNI.\n\nChange-Id: Ib381372df5f9a83679e30e7275de24fa0e6b1057\n"
    },
    {
      "commit": "5647d189c3ea5324e569d96cef67c87879d6cd05",
      "tree": "bdf872592ef681147d9b28af2c38b11f603fe910",
      "parents": [
        "aa00fe010eb7b61c2de82611ce3f6fc0918a4f9e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 15:00:39 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 07 15:28:43 2014 -0800"
      },
      "message": "Fix tests to pass with VerifyObject.\n\nA SIRT ref with a null class was causing object verification problems\nin space_test.\n\nChange-Id: I95cfc3da5e0fec0155387f75612b0a3f26f6d3c9\n"
    }
  ],
  "next": "c645f1ddb7c40bea6a38eda4b3f83f6b6dec405b"
}
