)]}'
{
  "log": [
    {
      "commit": "e34a42cd37b2b3b6b21280df14fa6f40917b5d6e",
      "tree": "b9a9362bdd3db787caffbe9ab72b3b3ad810bff9",
      "parents": [
        "3f4fa70a251443b7e35ee0464120e53daf4ae9c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 14:44:29 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 17:07:07 2015 -0700"
      },
      "message": "ART: Fix Trace types, check minimum buf size\n\nAlso make streaming mode adhere to the given buffer (and fix the\ncase where the buffer is too small for a packet). This is important\nto not lose too much tracing information when the runtime is destroyed\nwith an unflushed buffer.\n\nChange-Id: I6525fe4326ac5c3d7c9cda41c54a2a911ca889b7\n"
    },
    {
      "commit": "0cd91f05f11ccf7d55bf744053b0aae5e0e7aa36",
      "tree": "85246170653a221dc3ca535d1bbab89019985b40",
      "parents": [
        "18772f087eb0eb14ba816ed088107c43958eb8c3",
        "f36cb5f65cb150151aa40b23937e2b0ad75cc546"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Apr 25 22:36:26 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Apr 25 22:36:27 2015 +0000"
      },
      "message": "Merge \"Move Class.newInstance to native\""
    },
    {
      "commit": "f36cb5f65cb150151aa40b23937e2b0ad75cc546",
      "tree": "25365c69a089bc491a4b070ee3403be964cfc606",
      "parents": [
        "33984b4d6b79b2d65258e69506e5669be704db82"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 24 16:55:16 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Apr 25 22:08:16 2015 +0000"
      },
      "message": "Move Class.newInstance to native\n\nAvoids 1 allocation and several JNI transitions.\n\nBefore:\nClass_classNewInstance: 4462.39 ns; σ\u003d39.42 ns @ 3 trials\n\nAfter:\nClass_classNewInstance: 1073.39 ns; σ\u003d24.14 ns @ 10 trials\n\nBug: 20269715\nBug: 20566996\nChange-Id: Icd52155ce79a978a4d869855bfdfd7735abd8187\n"
    },
    {
      "commit": "00bb87898502fae7d46e196f5170bad9993877f6",
      "tree": "101c9be3f3d23f927ef34488ff2188fd6d376b84",
      "parents": [
        "33984b4d6b79b2d65258e69506e5669be704db82"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 24 16:33:43 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 24 16:34:30 2015 -0700"
      },
      "message": "ART: Add GENERATE_CFI to the ZygoteHooks debug flags\n\nAdd code to understand the implications of the debug.gencfi system\nproperty that forces generation of CFI data.\n\nChange-Id: Ida66f8c1567634d05cfdbba1a982be3684e94369\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": "598854726a5d50c18fa720af6b097279e5e01584",
      "tree": "f33f3c24d65dc128d709fd89abe4bcf6f919e463",
      "parents": [
        "08faf72e16a3b73b205e9f1ca618470b78174d4e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Apr 20 21:55:19 2015 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Apr 21 20:11:03 2015 -0700"
      },
      "message": "Class.forName(..., ..., null) fixes\n- Add test for Class.forName(..., ..., null)\n- Simplify VMStack.getClosestUserClassLoader based on new behavior of Class.forName(..., ..., null)\n\nChange-Id: I6bc470e20fa177e8a3debe55c90a84eef7ef518e\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": "40da286d3207d88ed8ff3f5caac4873874603428",
      "tree": "3f9720425b2a024a5a54a0a71447dcea107229a8",
      "parents": [
        "6508158f8388847f4cc3693e2cc1dbee6c2c7d18"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 12:49:04 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 15 20:45:35 2015 -0700"
      },
      "message": "ART: Streaming trace mode\n\nAdd a streaming mode for tracing. Streaming uses a buffer of 16KB\nand writes to the output when that buffer gets full. Streaming mode\ncan be enabled with -Xmethod-trace-stream and is currently not\nexposed otherwise.\n\nAdd a python script that can parse the streaming format, which\nsimply contains strings for newly encountered threads and methods\ninline, and create output that can be used with traceview.\n\nAdd Trace::Pause and Trace::Abort, which can pause and abort tracing.\nAbort is different from Stop in that it does not write the data.\n\nAdd code to the zygote hooks JNI implementation that pauses tracing\nbefore the fork, making sure that a child cannot clobber the parent\u0027s\ndata.\n\nAdd code to the zygote hooks JNI implementation that aborts old\ntracing and starts new tracing in the child after the fork. Currently\nbase the output on the pid. This will not work on an unmodified\ndevice, as the profiles directory is not generally writable, but\nwe do not have enough information at that point. Consider a scheme\nthat restarts tracing later.\n\nChange-Id: I93c7bf87e35af582bdfdd3ecc7c52454514220dd\n"
    },
    {
      "commit": "0cbb4a8cab4c7824ab702404b832ee1ea5950aad",
      "tree": "eb43fda0667e44673fefdb718115a129163565cd",
      "parents": [
        "e689c8a41355621e1a4c738ffb9d527e2a567b80",
        "f865ea9557e6fe017caf99832dc3adf9fadbf86f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 14 21:06:16 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 21:06:16 2015 +0000"
      },
      "message": "Merge \"ART: Make the PathClassLoader fast-path recursive\""
    },
    {
      "commit": "f865ea9557e6fe017caf99832dc3adf9fadbf86f",
      "tree": "e6b94a730b832496eaf4f652a9839ed3a78cd366",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 13 22:14:19 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 14 13:45:04 2015 -0700"
      },
      "message": "ART: Make the PathClassLoader fast-path recursive\n\nAllow an arbitrary nesting of path class-loaders. This will also\nhandle the fake java.lang.BootClassLoader as a class-loader object\ncorrectly (which is of some importance to compile-time initialization).\n\nBug: 19781184\nBug: 19542228\nChange-Id: I61f0249cf4ec8df08a83ccbd29bcf067619c28c0\n"
    },
    {
      "commit": "1e6c489d95afa6c13aa7cf1c213093b8f9b41f1c",
      "tree": "e68ac05fdf7d6c686b36ddf0d00f9d135440c964",
      "parents": [
        "8d20011a9de7cd94bee59db3ae8c0cbbf55911d9",
        "a1c9f013c034fbddb9337cc5c7ecf0e5a8b77547"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Apr 14 17:31:12 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 17:31:13 2015 +0000"
      },
      "message": "Merge \"getRuntimeStat() support (ART).\""
    },
    {
      "commit": "d3ed9a320a89cb9b91b2361892c043ab7e112717",
      "tree": "94d2b646e8ff9b28e0bef735804ce17a6a8be729",
      "parents": [
        "4b5673b7387804947a1605a906deee132ab28f14"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 14:23:35 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 13 16:15:22 2015 -0700"
      },
      "message": "Fix DCHECK failures from Class::VisitFieldRoots\n\nWe now use GetDeclaringClassUnchecked when marking roots to fix\nflaky test failures. Fixed a race condition in root marking where\nwe could have non zero field array length with a null pointer.\nFixed a race condition where we could be marking roots before\nFixupTemporaryDeclaringClass had finished. The solution is to\nonly do the declaring class CHECK if we are at least resolved.\nFixed JDWP tests by changing FieldId / MethodId to be 64 bits.\n\nAlso some cleanup.\n\nChange-Id: Ibac09519860d93c3f68a5cc964bbc91dc10a279a\n"
    },
    {
      "commit": "a1c9f013c034fbddb9337cc5c7ecf0e5a8b77547",
      "tree": "77a722cae515f6b3c7ea54f5b0fd2435682ae55b",
      "parents": [
        "67592a44cd5600b3c007b9215e3e5296a61118e8"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Apr 02 10:18:12 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Apr 13 15:37:40 2015 -0700"
      },
      "message": "getRuntimeStat() support (ART).\n\nExport some runtime stats (currently GC stats) via\nVMDebug.getRuntimeStat().\n\nAdded several new GC stats such as blocking GC counts and GC count\nhistograms.\n\nBug: 19825248\nChange-Id: I8ece9ed241dc3982dfd983d7159090ba82940dce\n"
    },
    {
      "commit": "3481ba2c4e4f3aa80d8c6d50a9f85dacb56b508b",
      "tree": "77551c0a6d060e5a3723ad35d2ab101038f9328a",
      "parents": [
        "095d209342420563becfec6676b46a6c6b839107"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 13 12:22:36 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 13 16:30:13 2015 +0100"
      },
      "message": "ART: Clean up includes.\n\nReduce dependencies to improve incremental build times.\nBreak up circular dependency involving class_linker-inl.h.\n\nChange-Id: I4be742c5c2b5cd9855beea86630fd68aab76b0db\n"
    },
    {
      "commit": "e598e0439ab825ea1a42fe8002b54241c6163ce6",
      "tree": "307be41594ff3c804d5dcda890ac055a6a4f7674",
      "parents": [
        "1b743777e6b6cec3387b0ee347b6a8a03779c345"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 14:57:10 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 15:34:32 2015 -0700"
      },
      "message": "ART: Add Array.createObjectArray to unstarted runtime\n\nNecessary for compile-time initialization of android.text.Layout.\n\nBug: 19542228\nChange-Id: I4220c65fcc3a8aaa2765b6f07f1f81c330484244\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": "1e7e85a40744ddd0c36b206d0960fc3cf24a7e62",
      "tree": "87d0f3e876214c877d76a12588b1192c672c4d98",
      "parents": [
        "6977899440206c7b0a9a3e38650338fd052666f9",
        "c136312832d4be25db2ecc5673967d71d0ad4b9c"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 10 18:22:10 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 10 18:22:10 2015 +0000"
      },
      "message": "Merge \"Avoid using dex cache array pointers in libart.\""
    },
    {
      "commit": "c136312832d4be25db2ecc5673967d71d0ad4b9c",
      "tree": "b9cdcccdd947632b2031ae2b4c3a9c3658ef3366",
      "parents": [
        "1576be32be4a99a1cffdaaf209a3cd67e8b2f88a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 09 14:13:13 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 10 18:46:03 2015 +0100"
      },
      "message": "Avoid using dex cache array pointers in libart.\n\nIn preparation for making dex cache arrays native, avoid\nusing them in Java code.\n\nThis causes a performance regression for our reflection\nbenchmarks. Class_getDeclaredMethod and Class_getMethod\ntake an up to 30% hit, measured using the Quick compiler.\nWe accept this hit at this stage and we will tune the\nperformance after we\u0027re done with the larger effort.\n\nCompanion libcore/ change:\n    https://android-review.googlesource.com/146069\n\nBug: 20134538\nChange-Id: Ibbef3b50043a1311cd40723ed42e1f1c609b8fc1\n"
    },
    {
      "commit": "a528e850b0444419e709e4151c992efafcf512fe",
      "tree": "3909748be4b2da46b815558531b9aa0b12a63ac9",
      "parents": [
        "96159860fc6c4bf68a51a8a57941971f122685d6",
        "95abd04d211470ea4b9b9191b96dd0f32e7ce3a4"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Apr 09 14:13:29 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Apr 09 14:13:30 2015 +0000"
      },
      "message": "Merge \"Rename isDexOptNeededInternal and add kSelfPatchOatNeeded\""
    },
    {
      "commit": "bb87e0f1a52de656bc77cb01cb887e51a0e5198b",
      "tree": "113f014c6e20fab3e936a3ac05f9f738639541f6",
      "parents": [
        "e57fc0f0260fcb1d08cbb720ec95c04c0f394b91"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 03 11:21:55 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 06 10:44:37 2015 -0700"
      },
      "message": "Refactor and improve GC root handling\n\nChanged GcRoot to use compressed references. Changed root visiting to\nuse virtual functions instead of function pointers. Changed root visting\ninterface to be an array of roots instead of a single root at a time.\nAdded buffered root marking helper to avoid dispatch overhead.\n\nRoot marking seems a bit faster on EvaluateAndApplyChanges due to batch\nmarking. Pause times unaffected.\n\nMips64 is untested but might work, maybe.\n\nBefore:\nMarkConcurrentRoots: Sum: 67.678ms 99% C.I. 2us-664.999us Avg: 161.138us Max: 671us\n\nAfter:\nMarkConcurrentRoots: Sum: 54.806ms 99% C.I. 2us-499.986us Avg: 136.333us Max: 602us\n\nBug: 19264997\n\nChange-Id: I0a71ebb5928f205b9b3f7945b25db6489d5657ca\n"
    },
    {
      "commit": "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": "95abd04d211470ea4b9b9191b96dd0f32e7ce3a4",
      "tree": "68d61705d30c6ea5ebd1b4d2f8306f32c01aecb5",
      "parents": [
        "425587d25832145a45a0b76beaa93996b0226f0d"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Mar 24 09:51:28 2015 -0700"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Apr 03 13:10:30 2015 -0700"
      },
      "message": "Rename isDexOptNeededInternal and add kSelfPatchOatNeeded\n\nThis change renames isDexOptNeededInternal to getDexOptNeeded and adds\nanother possible result: kSelfPatchOatNeeded. kSelfPatchOatNeeded is\nreturned when there is no odex file to relocate from but there is an\noat file that can be relocated in place.\n\nChange-Id: Ib9a6373f98474f1242367b5285086251a9d580e5\n"
    },
    {
      "commit": "a3d40d5f764adfde8fa40d826cd93ba36cd15437",
      "tree": "c83ae300ed8429c10fec05f53137b911cff41b43",
      "parents": [
        "af38d89634edbef394b3ef2cb3390d08dfb8d939",
        "ca239af73e512df5eeb80fe6c09c2ca614649e06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 30 01:57:02 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 30 01:57:02 2015 +0000"
      },
      "message": "Merge \"Fix some reflection errors\""
    },
    {
      "commit": "ca239af73e512df5eeb80fe6c09c2ca614649e06",
      "tree": "cee8641c42385f40b567c686cd5053fde152a088",
      "parents": [
        "f381645a336f7092ab6f5900c0a2cf183a9dbdf7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 29 18:27:50 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 29 18:54:20 2015 -0700"
      },
      "message": "Fix some reflection errors\n\nFixed incorrectly using 2nd frame instead of 1st in VerifyAccess.\nAdded regression test to ART. Fixed broken setShort,\ngetDeclaredFieldInternal.\n\nChange-Id: I4b21d52d998cb768fe9503b8bccec506b7b972e5\n"
    },
    {
      "commit": "af38d89634edbef394b3ef2cb3390d08dfb8d939",
      "tree": "d201eb23ef8bdef663a7580289cece348903adba",
      "parents": [
        "f381645a336f7092ab6f5900c0a2cf183a9dbdf7",
        "7e7e0f47628fb358da70c5e2766545c4f0596235"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 30 01:04:12 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 30 01:04:12 2015 +0000"
      },
      "message": "Merge \"ART: Use enums in Trace\""
    },
    {
      "commit": "7e7e0f47628fb358da70c5e2766545c4f0596235",
      "tree": "5f1473cb0aa149fee476966ffb23ec8f8941b208",
      "parents": [
        "68e22f3b982ff9ccbdfb3b65b7cfc16fcae907ba"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Mar 29 15:26:23 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sun Mar 29 15:26:23 2015 -0700"
      },
      "message": "ART: Use enums in Trace\n\nMove away from booleans. Will make introduction of streaming mode\na bit easier / obvious.\n\nChange-Id: Id7ae92f6b97f627e848510d473931537d7db0db8\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": "785049f8083e56e88dfeab5ff74fb3817f9854e3",
      "tree": "ab06a7fb4acb2ed73eed4b58327ba485f61560c4",
      "parents": [
        "f5988cf0c47ff935bb19c89ed0398be5fbe44bb6"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Jul 18 10:08:57 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 23 11:38:54 2015 -0700"
      },
      "message": "Add paths to apk!lib/\u003cabi\u003e to LD_LIBRARY_PATH\n\n  Add paths to .apk to LD_LIBRARY_PATH to enable\n  bionic linker\u0027s \"open from zip-file\" feature.\n\nBug: 8076853\nChange-Id: I1aa2c039bb2a590ae72f256acc9ba5401c2c59b1\n"
    },
    {
      "commit": "455f67c4cf0b4f04e117db3024fd189fa1c7dab9",
      "tree": "3f89fdc8ba9b31cc0205945410a75d63e2f25000",
      "parents": [
        "5747266d57445ecdd026a4705d62768faad09b01"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 17 13:48:29 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Mar 18 18:49:28 2015 -0700"
      },
      "message": "Fix JIT options with late init\n\nPreviously we couldn\u0027t create the JIT since we didn\u0027t have any\nJITOptions.\n\nBug: 19735273\n\nChange-Id: I24b8ed131ed8b18f75ec94291e135d8a1c089ebd\n"
    },
    {
      "commit": "6eff38d6a949c5be1532c1ed881a6c2d7bf0991a",
      "tree": "7eb1e54cd1345d37364d42c0e8453180cf8363ff",
      "parents": [
        "ea2a45669b807486b0570c66d29a721e684f8d47"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 17 09:52:22 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 17 11:40:27 2015 -0700"
      },
      "message": "Add JIT zygote hook\n\nBug: 19735273\nChange-Id: I1983852e80010c344b45e0bb459de47c56adfce8\n"
    },
    {
      "commit": "2af72de83957fb52426b8f9144e9814d35b78951",
      "tree": "6f76addd2e75e6599080166e22c11c5575a172cb",
      "parents": [
        "072e48ed63aa4f99bec1dbbe8a7872a4bcc03e41",
        "0aa50ce2fb75bfc2e815a0c33adf9b049561923b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 15:08:13 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Mar 10 15:08:13 2015 +0000"
      },
      "message": "Merge \"Remove ThrowLocation.\""
    },
    {
      "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": "66d874d96d5699bb090c59f47a5a528956ca053e",
      "tree": "d59bf83a08fead7d9823230831bea63c9e43a62c",
      "parents": [
        "2cfdabd2bb4833d7092819d27ef08a9e1cdffead"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Thu Jan 15 09:37:19 2015 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Mar 09 14:46:23 2015 -0700"
      },
      "message": "Create OatFileAssistant class for assisting with oat files.\n\nThe oat file assistant is used for determining whether dex2oat or\npatchoat is needed, for running dex2oat or patchoat as needed to make\nan oat file up to date, and to load dex files associated with a given\ndex location.\n\nThe introduction of the OatFileAssistant class is meant to clean up and\nconsolidate code related to the management of oat files that was\nduplicated and spread across dalvik_system_DexFile.cc and\nclass_linker.cc.\n\nBug: 11301553\nChange-Id: I0c16027b9bae4570c2c50faa9c14f581c0cbafb8\n"
    },
    {
      "commit": "324b9bb2f48be39e20077c1d7da45cf3dc47fe06",
      "tree": "d7efdc9aade5c693ace5dfbf9871ea6dfa7625d9",
      "parents": [
        "9e80e7fa5ef60f02f35823bc58969c3d5a03453e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 23 16:33:22 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 24 21:57:08 2015 -0800"
      },
      "message": "ART: Move DexFile vector to Java array\n\nTo avoid having native vectors only referenced by Java objects,\nwhich look like leaks to Valgrind, use a Java array to store\nreferences to native DexFile objects.\n\nChange-Id: If3c2b31b9d0914ed1965cfd5e3fdb94ea41b1477\n"
    },
    {
      "commit": "794ad76e8d5b5b9132819d5b08a0570e27615644",
      "tree": "74b420e4337ecf9e5df689cc376fa965d765a908",
      "parents": [
        "d98ff78976696fdde1e7868d4687719a0439544b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 23 08:12:24 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 23 10:23:06 2015 -0800"
      },
      "message": "ART: Introduce NO_RETURN, Mark DoLongJump noreturn\n\nAdd NO_RETURN macro that adds C++11 noreturn attribute. Mark\nDoLongJump methods as noreturn.\n\nChange-Id: Ifde4318e370493237050d4c1349285a0382df23f\n"
    },
    {
      "commit": "e4301ffb56f9be6f6c2640bfb1870b74f4a37ad2",
      "tree": "b21393462212ed0cf6a19e6a4454db9548ab48a2",
      "parents": [
        "17609db47537ea6da03db1be530ad13e67cf24db"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 17 19:25:29 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 17 19:25:29 2015 -0800"
      },
      "message": "ART: Make run-tests more verbose\n\nMake run-tests log ERROR level on host. Adjust some internal LOG(ERROR)\nto LOG(WARNING). Add check scripts to adjust for other LOG(ERROR)\nmessages.\n\nBug: 18713034\nChange-Id: I2a3e055baa6a0e31f106364c300c20963a59ed94\n"
    },
    {
      "commit": "0c8c303c20cdaaf54d26e45cc17dc5afb820d8ef",
      "tree": "d3289457acd74e6aa3296bbeef1f8a7619537eec",
      "parents": [
        "97d9f286971a4c1eec70e08f9f18f990d21780d5"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jan 16 16:54:35 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jan 20 12:40:59 2015 -0800"
      },
      "message": "Clean up the locks around Heap::VisitObjects().\n\nThis is so that we could support suspending all threads when visiting\nobjects in the presence of a concurrent, moving collector.\n\nBug: 12687968\nChange-Id: Icc8e60630465afde948ebc6ea91d4ebaff5d7837\n"
    },
    {
      "commit": "e34fa1df67fbe0173b4ea9abddcc3ae3d0537037",
      "tree": "a5148f079b5671a95f60910c41981ebf91db3a02",
      "parents": [
        "9f06b1946ae3ef1d2fd75bbf7f0a288bc611fe58"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 14 14:55:47 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 15 12:23:28 2015 -0800"
      },
      "message": "Print more info in MarkSweep::VerifyRoot\n\nRefactored old root callback to use a new class called RootInfo.\nRootInfo contains all the relevant info related to the root\nassociated with the callback. The MarkSweep::VerifyRoot function\nnow uses this info to print the StackVisitor\u0027s described location\nif the GC root is of the type kRootJavaFrame.\n\nSome other cleanup.\n\nExample output:\nE/art     (12167): Tried to mark 0x123 not contained by any spaces\nE/art     (12167): Attempting see if it\u0027s a bad root\nE/art     (12167): Found invalid root: 0x123 with type RootJavaFrame\nE/art     (12167): Location\u003dVisiting method\n\u0027void java.lang.Runtime.gc()\u0027 at dex PC 0xffffffff (native PC 0x0)\nvreg\u003d0\n\n(cherry picked from commit 12f7423a2bb4bfab76700d84eb6d4338d211983a)\n\nBug: 18588862\nChange-Id: Ic5a2781f704e931265ffb3621c2eab4b2e25f60f\n"
    },
    {
      "commit": "fbef44de596d298dc6430f482dffc933a046dd28",
      "tree": "57345e86b7dda80b82a263069230b7e312db5ef2",
      "parents": [
        "603104b5b5c3759b0bc2733bda2f972686a775a3"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Dec 23 09:48:51 2014 -0800"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Tue Jan 13 16:32:34 2015 -0800"
      },
      "message": "Use unique_ptr to track ownership of dex files.\n\nBug: 18809837\nChange-Id: Ie571eae8fc19ee9207390cff5c7e2a38071b126a\n"
    },
    {
      "commit": "1de532495b2669ce4fae9b9d20848d78d83813d8",
      "tree": "362fff8964f1f2cd52beaf5b7445cb117f9c2dc4",
      "parents": [
        "25d034cedea702c1f9ecb7a3a3ca977b07b9c3ba",
        "0a18df82f4dea95b7398f8c934341fccbf04eeee"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 23:23:36 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 09 23:23:36 2015 +0000"
      },
      "message": "Merge \"Clean up some #ifdefs.\""
    },
    {
      "commit": "0a18df82f4dea95b7398f8c934341fccbf04eeee",
      "tree": "125c8285763ffc6d9c00b27eaed6a7aad5b317ee",
      "parents": [
        "553727e466942a10e11ee39dcb67e3f9562b471e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 09 15:16:16 2015 -0800"
      },
      "message": "Clean up some #ifdefs.\n\nOnly the Mac doesn\u0027t have POSIX clocks. (And it still doesn\u0027t, a decade\nlater.)\n\nglibc gained pthread_setname_np in 2.12.\n\nOnly the Mac doesn\u0027t have prctl.\n\nChange-Id: I218e409f7e133736e15fb68e8a254cdc5799d667\n"
    },
    {
      "commit": "379d09fe3c3feb7c2a2fb5a3623689b5ace7e79b",
      "tree": "680b4173130057a1f70ad321eaf4cfbeba0e291c",
      "parents": [
        "ca7d89d09294254f16db170a53b0f8dfbf0213ac"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 08 11:28:13 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jan 08 16:02:00 2015 -0800"
      },
      "message": "Add clamp growth limit\n\nClamp growth limit shrinks the space memmaps to the current growth\nlimit. This reduces virtual memory usage for apps with small heaps.\n\nBug: 18387825\nBug: 17131630\n\nChange-Id: I4a8fdc335d2c40492e991708adabcc46299efb7d\n"
    },
    {
      "commit": "9851595177fec4d5e328f201f1992719fb40db2a",
      "tree": "8740bff7fbb0c317a8fb4d22870beb8c51651321",
      "parents": [
        "95d9a03db4471ef6d72853aedaa2bcd896ff0ca7"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 06 12:05:34 2015 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 06 12:05:34 2015 -0800"
      },
      "message": "Mute common case DexFile.isDexOptNeeded log spam\n\nBug: 18914409\nChange-Id: I885f1aa87c48ff25353d44b720c7cff24ed01e45\n"
    },
    {
      "commit": "094368ae2fa7a4eeaafb44f6018e498c1054af60",
      "tree": "660d6f3881fd0df7754547ba213839c98a73fbfa",
      "parents": [
        "48e7f3374eb6f042c12cd540ce73c7cddc366bb4",
        "d2abbc9829ea0f657557c247a7c48c825dacfccd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Dec 20 07:25:59 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Dec 20 07:26:00 2014 +0000"
      },
      "message": "Merge \"ART: Use interpret-only for vmSafeMode\""
    },
    {
      "commit": "d2abbc9829ea0f657557c247a7c48c825dacfccd",
      "tree": "210fd9c022f990eb87463781f67fb6bdd6a220c4",
      "parents": [
        "6d1a047b4b3f9707d4ee1cc19e99717ee021ef48"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 19 09:53:27 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Dec 19 23:13:40 2014 -0800"
      },
      "message": "ART: Use interpret-only for vmSafeMode\n\nSet the compiler filter when the zygote tells us that the app is\nin vmSafeMode. This ensures that secondary dex files will also be\ncompiled interpret-only.\n\nBug: 18812762\n\n(cherry picked from commit 44893692bfb25ceb5c7c5b2e5c606948fbdea298)\n\nChange-Id: Idb61870beebe2eeb5b11554f95ea6a725c77f16a\n"
    },
    {
      "commit": "a5eae69589ff562ad66c57665882cd16f237321c",
      "tree": "b80e50c050f5d32fc7b258ef1446a245a97c3df8",
      "parents": [
        "6d1a047b4b3f9707d4ee1cc19e99717ee021ef48"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 17 17:56:03 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Dec 19 17:08:43 2014 -0800"
      },
      "message": "Add heap task processor\n\nThe heap task processor processes async tasks which may be delayed.\nThe motivation for this change is preventing deadlocks which\ncan occur when the daemon threads get suspended by GetThreadStack.\n\nOther improvements, reduces daemon thread count by one.\nCleaner pending transition VS heap trimming logic.\n\nBug: 18739541\n\nChange-Id: Idab52b2d9661a6385cada74b93ff297ddc55fc78\n"
    },
    {
      "commit": "079101a17575114622f6e1d5be5c9ba643630e9a",
      "tree": "bc9ff009cca8e649f24adb8f7626c95b7930be40",
      "parents": [
        "81d035213b0426ee076cc0d017c895c7833d32e8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 15 14:23:10 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 15 15:18:46 2014 -0800"
      },
      "message": "Move GC daemon locking logic into heap\n\nFixes deadlock caused by acquirng the mutator lock while\nsynchronizing on the daemon thread.\n\nBug: 18739541\nChange-Id: I925b8f0f3b58178da6eff17b9c073f655c39597b\n"
    },
    {
      "commit": "08f1f50d6c2e8f247b8f5f19711d75a792851c7a",
      "tree": "dca490545d56168f7f9ae4a4616199b1b1c8ba0c",
      "parents": [
        "8443637f71a777a13317fe7635028d758a0adf97"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:04:37 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:12:27 2014 -0800"
      },
      "message": "Remove FieldHelper.\n\nChange-Id: I2d74e2d5b3c35a691c95339de0db9361847fca11\n"
    },
    {
      "commit": "9f612ffab2b188d80027d961d7118eb2c461b5ad",
      "tree": "aa5a5c83810b13f726b16670bc4442a4f271ee55",
      "parents": [
        "c6c88d2079f0d47eb86a2e2e2f53cab25b0503c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 24 13:42:22 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 24 13:43:11 2014 -0800"
      },
      "message": "ART: Fix unused variables and functions\n\nChange-Id: Icbab884d2dfd71656347368b424cb35cbf524051\n"
    },
    {
      "commit": "d582fa4ea62083a7598dded5b82dc2198b3daac7",
      "tree": "c76704c266ef4687eab425612ddf3fd24f93fe8d",
      "parents": [
        "f20076ff813b8012096ff31af236d59db3c0f4e1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 05 23:46:43 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 13 16:17:46 2014 -0800"
      },
      "message": "Instruction set features for ARM64, MIPS and X86.\n\nAlso, refactor how feature strings are handled so they are additive or\nsubtractive.\nMake MIPS have features for FPU 32-bit and MIPS v2. Use in the quick compiler\nrather than #ifdefs that wouldn\u0027t have worked in cross-compilation.\nAdd SIMD features for x86/x86-64 proposed in:\n  https://android-review.googlesource.com/#/c/112370/\n\nBug: 18056890\n\nChange-Id: Ic88ff84a714926bd277beb74a430c5c7d5ed7666\n"
    },
    {
      "commit": "4ad5cd3e7d519484559ef778d96fb3f0be8919fa",
      "tree": "9870938a0552b4fe472d9994a55a3bf761fc69d5",
      "parents": [
        "741e287b60136db49ecf8da72f2b5ca48b0a39bd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 11 23:08:07 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 12 15:29:12 2014 -0800"
      },
      "message": "Modify the behavior of thread suspend shootouts.\n\nThe thread doing the suspension doesn\u0027t attempt to suspend the other thread\nunless it knows another thread isn\u0027t trying to suspend it. Use the suspend\ncount, and its lock, for this purpose.\nRe-enable ThreadStress test.\nBug: 15446488\n\nChange-Id: Idd34410c7b89d8abd6973e5699a15ca699472c78\n"
    },
    {
      "commit": "e7c9a8c2b8481aafbc6af4ce6229bd361ba24742",
      "tree": "f6d8fe8fd7aeae117a6547dc4f012cd4085cb4e8",
      "parents": [
        "00b2da5c02339c36ffa4006f731f55203b09265d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 06 16:35:45 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 07 11:45:06 2014 -0800"
      },
      "message": "Add hash map, reduce excessive hashing\n\nChanged the class def index to use a HashMap instead of unordered_map\nso that we can use FindWithHash to reduce how often we need to compute\nhashes.\n\nFixed a bug in ClassLinker::UpdateClass where we didn\u0027t properly\nhandle classes with the same descriptor but different class loaders.\nIntroduced by previous CL.\n\nBefore (fb launch):\n1.74% art::ComputeModifiedUtf8Hash(char const*)\n\nAfter:\n0.95% art::ComputeModifiedUtf8Hash(char const*)\n\nBug: 18054905\nBug: 16828525\n\nChange-Id: Iba2ee37c9837289e0ea187800ba4af322225a994\n\n(cherry picked from commit 564ff985184737977aa26c485d0c1a413e530705)\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": "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": "46774767fcf7780d1455e755729198648d08742e",
      "tree": "09a5d87ff0acbc7eb1fa94ec901ba10009178f03",
      "parents": [
        "11bd683f6dbebe2f3d02fa383fc9dbc69a83ace8"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 22 11:37:02 2014 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Oct 27 20:19:37 2014 -0700"
      },
      "message": "ART: Add support for patching and loading OAT files compiled with PIC\n\n* Images (.art) compiled with pic now have a new field added.\n* isDexOptNeeded will now skip patch-ing for apps compiled PIC\n* First-boot patching now only copies boot.art, boot.oat is linked\n\nAs a result, all system preopted dex files (with --compile-pic) no\nlonger take up any space in /data/dalvik-cache/\u003cisa\u003e.\n\nBug: 18035729\nChange-Id: Ie1acad81a0fd8b2f24e1f3f07a06e6fdb548be62\n"
    },
    {
      "commit": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "c7dd295a4e0cc1d15c0c96088e55a85389bade74",
      "tree": "0c08a2236bc9ba5d9a4dc75d4dd0ed2d76f8f1c6",
      "parents": [
        "94e5af8602150efa95bde35cc9be9891ddf30135"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 21 23:31:19 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 12:06:23 2014 -0700"
      },
      "message": "Tidy up logging.\n\nMove gVerboseMethods to CompilerOptions. Now \"--verbose-methods\u003d\" option to\ndex2oat rather than runtime argument \"-verbose-methods:\".\nMove ToStr and Dumpable out of logging.h, move LogMessageData into logging.cc\nexcept for a forward declaration.\nRemove ConstDumpable as Dump methods are all const (and make this so if not\ncurrently true).\nMake LogSeverity an enum and improve compile time assertions and type checking.\nRemove log_severity.h that\u0027s only used in logging.h.\nWith system headers gone from logging.h, go add to .cc files missing system\nheader includes.\nAlso, make operator new in ValueObject private for compile time instantiation\nchecking.\n\nChange-Id: I3228f614500ccc9b14b49c72b9821c8b0db3d641\n"
    },
    {
      "commit": "667ab7c174ebdb16fc18487901c6857709adcdb8",
      "tree": "49ba1b6cac63a4c85b2b91b7e8c06e4539ecf4bf",
      "parents": [
        "61634cec710b8837df5d0dbe2ed3efce1c61c359"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 16 19:12:28 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Oct 16 20:52:50 2014 -0700"
      },
      "message": "Some additional verbose logging for DexFile_defineClassNative\n\nChange-Id: I6a86352e9eecf4cc5b529feb784e6cd5e8ec0a45\n"
    },
    {
      "commit": "7223d44a4893522e90d00bca38b119f710e55122",
      "tree": "c0bbe3f7b3cf04750b4b5359a03c2d63fc90978b",
      "parents": [
        "3f5b8a1e7dfdf010591e17396d1d126740c5706c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 20:05:39 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 20:05:39 2014 -0700"
      },
      "message": "Switch to C++11 style [[noreturn]].\n\nAlso remove old comment about calls to Abort getting merged. We have few\nLOG(FATAL)s so merging is less of an issue. Also, recompiling with O0 and\nsimilar will avoid the optimization and we expect that for GDB debugging.\n\nChange-Id: I840dc6f4b8511294be0e117c634ec15b745e7be5\n"
    },
    {
      "commit": "647b1a86f518d8db0331b3d52a96392b7a62504b",
      "tree": "7370f795ef3c7fbdd2695d23bc6f8171f40f43f1",
      "parents": [
        "acfbbd4df2fc1c79a7102587bebf398f95b5e5de"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 11:02:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 10 12:26:02 2014 -0700"
      },
      "message": "Fix 2 new sets of clang compiler warnings.\n\nFix issues that are flagged by -Wfloat-equal and -Wmissing-noreturn.\nIn the case of -Wfloat-equal the current cases in regular code are deliberate,\nso the change is to silence the warning. For gtest code the appropriate fix is\nto switch from EXPECT_EQ to EXPECT_(FLOAT|DOUBLE)_EQ.\nThe -Wmissing-noreturn warning isn\u0027t enabled due to a missing noreturn in\ngtest. This issue has been reported to gtest.\n\nChange-Id: Id84c70c21c542716c9ee0c41492e8ff8788c4ef8\n"
    },
    {
      "commit": "fc787ecd91127b2c8458afd94e5148e2ae51a1f5",
      "tree": "ef48c0f511ee9bf4ed85607cc4d530bace7e6cae",
      "parents": [
        "8fa8c904f7c783204a1dc9438429391d256658da"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 21:56:44 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 22:22:46 2014 -0700"
      },
      "message": "Enable -Wimplicit-fallthrough.\n\nFalling through switch cases on a clang build must now annotate the fallthrough\nwith the FALLTHROUGH_INTENDED macro.\nBug: 17731372\n\nChange-Id: I836451cd5f96b01d1ababdbf9eef677fe8fa8324\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "31d8f5295c24730a57cb36cbc41197f0b7e8397c",
      "tree": "e37953f590f924e06b9905f922407559a3661cb6",
      "parents": [
        "8283e079a209e81caafd123a12a525922368fd34"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 29 11:22:54 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 30 21:49:43 2014 -0700"
      },
      "message": "Add VMRuntime.isBootClassPathOnDisk\n\nBug: 17679443\n\n(cherry picked from commit 95a935415d44903b28326424beb4db5c013ef089)\n\nChange-Id: Iba40291dead3f0b6715903c986370fd0cf1e41e1\n"
    },
    {
      "commit": "c0d8229898c44c0f604f08a5df1de83ff56c18fd",
      "tree": "13b150e68e806204c547e04bc071246c06199c37",
      "parents": [
        "c70535b4f9f1ff3e3da451734bb7d9601012ccc1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 23 10:38:30 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 11:40:16 2014 -0700"
      },
      "message": "ART: Better IllegalAccessException message\n\nBug: 17618578\nBug: 17614623\nChange-Id: I0e3f15e676acd6ed5844fc86e136f75cc335372d\n"
    },
    {
      "commit": "76433275dbe39e5ced1c223b006d1b900b1937f6",
      "tree": "a72c101defa86ceff8b633cf2eaa606c87f783eb",
      "parents": [
        "88adf36315237947d3a5d10b28fdf8b9da7794a4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 26 14:32:37 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 26 19:54:39 2014 -0700"
      },
      "message": "Optimize get/set reflection performance\n\nSpeedups mostly from reducing how often access checks are needed,\nand adding more inlining, and adding templates.\n\nField_getInt from ~850ns -\u003e 350ns.\nField_setInt from ~900ns -\u003e 370ns.\n\nBug: 14063288\n\n(cherry picked from commit ffc788cb7b5b9f53734d7bb8af2d5e45d885546b)\n\nChange-Id: I2441581ff3478c6ae43b6aa49939ff3f07555ec8\n"
    },
    {
      "commit": "9ef78b59da51080882e47505896b420977fd79ae",
      "tree": "6c568756e4e16e68d5d3346261009350969d5b77",
      "parents": [
        "95f03e6a4737f90685fab86e98709f1c4393d5ef"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 25 17:03:12 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 26 16:04:56 2014 -0700"
      },
      "message": "Fix broken runtime SetStatsEnabled logic\n\nPreviously, Runtime::SetStatsEnabled wouldn\u0027t take stats_enabled_\ninto account when deciding whether or not to increment / decrement\nteh stats enabled counter. This resulted in counter underflows and\nother errors which caused some CTS tests to fail.\n\nAlso added some locking to prevent race conditions.\n\nBug: 17360878\n\n(cherry picked from commit a98ffd745bbecb2e84a492194950c0b94966546b)\n\nChange-Id: I21d241a58d35bd6a607aa2305c6da81720bd0886\n"
    },
    {
      "commit": "f0edfc355893d53d1104b05501c99ad5ccf305c4",
      "tree": "7e1fa49875759512f5d02b1c45435d3e3366b920",
      "parents": [
        "1ed5b27ee329208fd8ae22b8a9a61d708e2c1ffb"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 11:46:46 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 15:53:54 2014 -0700"
      },
      "message": "Some optimizations for the array alloc path.\n\n- Force Array::Alloc() to be inlined.\n- Simplify the array size overflow check.\n- Turn fill_usable into a template parameter.\n- Remove a branch in Array::DataOffset() and avoid\n  Primitive::ComponentSize(), which has a switch, in the array alloc\n  path.\n- Strength reductions in the array size computation by using component\n  size shifts instead of component sizes. Store component size shift\n  in the upper 16 bits of primitive_type field.\n- Speedup: ~4% (3435-\u003e3284) in MemAllocTest on N4.\n\nBug: 9986565\n\nChange-Id: I4b142ffac4ab8b5b915836f1660a949d6442344c\n"
    },
    {
      "commit": "a460bb07bb9000c6e299ee5cfa8e788d0fbd15f2",
      "tree": "c9b117702aca4d52506ed372e41c5b7fef5244e2",
      "parents": [
        "5957d54ac0de8a318dbc5a163734f877b1185e38",
        "a6da74e941d7cee498ac3880018a1d8dc953c6eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 24 22:00:11 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 24 22:00:12 2014 +0000"
      },
      "message": "Merge \"ART: Update for split native bridge initialization\""
    },
    {
      "commit": "e8e39895249d24c9fe6f4eb0afa78b39ce0648bb",
      "tree": "cfb5bd0305dddd937ba211a0a7fbdbdfe519864b",
      "parents": [
        "c0d36abb12cdbb9469039c1dc153a586bd984015"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 23 13:53:28 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 24 09:35:17 2014 -0700"
      },
      "message": "Restore kReasonLogging for kDexoptNeeded and kPatchoatNeeded\n\nBug: 17565501\n\n(cherry picked from commit 63582f211b7123d02f18dfa7075f6758ccb2b07c)\n\nChange-Id: Ie1196191d92286e543ed099c7d1ea4712802912d\n"
    },
    {
      "commit": "a6da74e941d7cee498ac3880018a1d8dc953c6eb",
      "tree": "bb36d90e914f8a842abd7dd854ba168f9441e8db",
      "parents": [
        "a20b7b3ecf90bb761d7085403782721f2fb474c5"
      ],
      "author": {
        "name": "jgu21",
        "email": "jinghui.gu@intel.com",
        "time": "Wed Sep 10 06:57:17 2014 -0400"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 23 20:11:31 2014 -0700"
      },
      "message": "ART: Update for split native bridge initialization\n\nChange-Id: I0b93da93251c6b4638de786bf98cf99df07c3fc2\n"
    },
    {
      "commit": "3c13a794845e0cf7887e33b2ec20de7e6ba85f8f",
      "tree": "ab9a9a426a371de0c32e48a85fdda44a321a06a0",
      "parents": [
        "5cdd0734d2f79eedc530f5f1e876cd2110e29c86"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 20:56:04 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 23:43:07 2014 -0700"
      },
      "message": "ART: Only allow the zygote to create the global boot image\n\nDo not allow arbitrary processes, even when root, to write the\nboot image in /data/dalvik-cache.\n\nBug: 17478752, 17510489, 17439961\nChange-Id: Iba2b74be6d0752f4221f4ff5ee295b45a34cb2e1\n(cherry picked from commit 33c36d4f22ab6a5e61eb47b654deaf647c34e49c)\n"
    },
    {
      "commit": "69dbec6d9d55eeb2867949c2791d01dc9aa916c8",
      "tree": "be4eca8161eafb4a8466f5adf28a2c8f27cd37d1",
      "parents": [
        "926d8e99aa69151a271180299df68963688010d8"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Sep 15 18:03:41 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 17 14:31:55 2014 -0700"
      },
      "message": "Avoid suspending for alloc trace enabling when already suspended.\n\nBug: 17499772\n\n(cherry picked from commit 1d6ee090fddd4bfd35c304d6ceb929d5c529dfcc)\n\nChange-Id: Id09809c476c685f0a197ee75bb08638931364efd\n"
    },
    {
      "commit": "a5a53efea976af505f4f849b5925d5e14c4f8e5c",
      "tree": "455a536a9394908c17ec1ede04ab7ec49f9d3420",
      "parents": [
        "91bbd5347b391278b56440b2dbb0b77526bae4e8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 12 12:58:05 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Sep 14 14:48:24 2014 -0700"
      },
      "message": "Add native support for FinalizerList.makeCircularListIfUnenqueued\n\nCalled from FinalizerReference.enqueueSentinelReference to prevent\na race where the GC updates pendingNext of the sentinel reference\nbefore enqueueSentinelReference.\n\nBug: 17462553\n\n(cherry picked from commit 3256166df40981f1f1997a5f00303712277c963f)\n\nChange-Id: I7ad2fd250c2715d1aeb919bd548ef9aab24f30a2\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": "ab0ed82ff64ba5a751dcc0a38d0e0c41c53dc923",
      "tree": "c67cceb67994868c42cc16ab8416fa93b56ce682",
      "parents": [
        "3fec7718041302f769995eedda9beef362131842"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 14:21:41 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 18:04:33 2014 -0700"
      },
      "message": "Add fast path to VMClassLoader.findLoadedClass\n\nVMClassLoader.findLoadedClass now calls FindClassInPathClassLoader\nas a fast path. Exclusive time results (trace view maps launch):\n\nBefore:\nnativeFillInStackTrace 1.4%\ndefineClassNative 1.2%\nfindLoadedClass 0.2%\n\nAfter:\nnativeFillInStackTrace 0.5%\ndefineClassNative 0.0%\nfindLoadedClass 0.9%\n\n(cherry picked from commit 194116c836080de14245a3a7c4617d07b8abf8cf)\n\nChange-Id: I63fd7b4bccb71789e92bd39d1d3f9d0de22535de\n"
    },
    {
      "commit": "cd48f2d86197d4fe87cc88077bc4af5ba66e5295",
      "tree": "a678a9eafd72d80cb6d7581b99cc11bc9cf64911",
      "parents": [
        "5bc47ebe278af65e8e2a2d6b603ac94a020285f7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 09 13:51:09 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 09 13:51:09 2014 -0700"
      },
      "message": "Change Reference.get() intrinsic to Reference.getReferent().\n\nThe reference intrinsic was incorrectly inlining\nPhantomReference.get(). We now get around this by adding a\nlayer of indirection. Reference.get() now calls getReferent()\nwhich is intrinsified and inlined.\n\nRequires:\nhttps://android-review.googlesource.com/#/c/107100/\n\nBug: 17429865\nChange-Id: Ie91e70abf43cedf3c707c7bb8a5059e19d2a2577\n"
    },
    {
      "commit": "0e59bf8b767e9be7ea22c67011ea902d597fe43f",
      "tree": "bf6fbf9900ecf85d331023341af7908642825b23",
      "parents": [
        "552da6697f77b1d94a69b0ba54509a25a0de3ae7",
        "6be67eeedbe60afce42300ae3e7f0e7180a96efa"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 04 21:47:08 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 04 21:47:08 2014 +0000"
      },
      "message": "Merge \"ART: Change ART for new native bridge sequence\""
    },
    {
      "commit": "6be67eeedbe60afce42300ae3e7f0e7180a96efa",
      "tree": "404ed85d5c31744e66405d0147d9f14a67887428",
      "parents": [
        "47e877ab2d6744f4360d37f179eb5affd6a46470"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 02 21:22:18 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 04 12:46:09 2014 -0700"
      },
      "message": "ART: Change ART for new native bridge sequence\n\nInitialize or unload after a fork.\n\nChange-Id: I5a20de1cb68dd1802937b369b14c50c9c1031c67\n"
    },
    {
      "commit": "8ec31f9835a8d1513be9be7f9fa236fe4715750d",
      "tree": "2b161b3683e559c66ae1926250583165499862e9",
      "parents": [
        "badae981ada1fa279e54360df177ab6f40c299b9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 03 10:30:11 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 03 21:35:32 2014 -0700"
      },
      "message": "Fix native allocation watermark clamping.\n\nThe main issue causing the test to fail is that\nnative_footprint_gc_watermark_ becoming \u003e growth_limit_ due to no\nclamping.\n\nTemporary runFinalization fix is calling runFinalization 2x.\n\nBug: 17371542\n\n(cherry picked from commit 4c7fc5950853b0c368e2148db77ced7c4d3c303c)\n\nChange-Id: I05b85e95560c32c33d53bc96abf87d5262007395\n"
    },
    {
      "commit": "ba32de47e32f436d7c11cb4a2e78bdd4ad4dc5d2",
      "tree": "1b56397dfce317d2034feebfb2191bcb09b78823",
      "parents": [
        "14515d738dadf88e3e00b7dd1bd69899c4df4b91"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 27 23:43:46 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 28 15:37:27 2014 -0700"
      },
      "message": "Fix issue with Thread.setName hanging after Thread.start\n\nWhen suspending a thread by peer the invariant that only attached threads are\nsuspended must be maintained. Add a ThreadList::Contains check which requires\nmaking this method non-static.\nAdd some extra thread logging.\n\nBug: 17302037\n\n(cherry picked from commit 37c16453a92bbf1a47f042000318a1b60381017d)\n\nChange-Id: I51832785d4b4b431e035318e75635f442e89a1fb\n"
    },
    {
      "commit": "20c89303a9d89ba857bf969ad14a31f12c3be878",
      "tree": "b7072ce69f3c6896e70e84cfb7ae1058e7e7a55f",
      "parents": [
        "192da5675b2e219f26a107bd7b60c755cd46ba74"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 19 17:28:06 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 20 15:25:48 2014 -0700"
      },
      "message": "ART: Relax GetInstructionSetFromString\n\nDo not abort on an unknown instruction set string. Instead return\nkNone and let the caller handle this.\n\nAlso simplify the patchoat tool to use this.\n\nBug: 17136416\n\n(cherry picked from commit aabbb2066a715b3fd8e752291f74c6d77b970450)\n\nChange-Id: I24131914bcf91c04ae93179bf809a2907f1f2b7a\n"
    },
    {
      "commit": "0d334ce54efd791da14536b6a16f61d9085b8785",
      "tree": "1ae8dda45a1d253dd5aced580850bce5f5481923",
      "parents": [
        "70acd53dafbd74d3cd72924216e438fce820beb1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 13 23:05:38 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 14 09:12:38 2014 -0700"
      },
      "message": "ART: Fix another potential N-th visitor issue\n\nBug: 16867274\n\n(cherry picked from commit ab61295e55c38072095e498053b8f5bebf46ad63)\n\nChange-Id: I5466af563032041ef4a547894f40f303871302c6\n"
    },
    {
      "commit": "718ac65aa78403124c2269f0dcadd341a18b8efe",
      "tree": "64bc497fb0366c7df8464c972601132e84579954",
      "parents": [
        "e8bf3df2bcc61c12a7e66b4995a083f9ed3939e0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 11 18:51:53 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 13 22:19:48 2014 -0700"
      },
      "message": "ART: Tolerate shallow call stack in VMStack_getCallingClassLoader\n\nWhen the call stack does not have the three methods we expect,\nthe visitor will return a nullptr value.\n\nAdd a test to JniTest (and refactor the test a little for code reuse).\n\nBug: 16867274\n\n(cherry picked from commit 61bf6a1c80bf797af5d7911ff71fc367fdb36742)\n\nChange-Id: I5fb8f91f372a41e0bc11ef9f70640834591afa53\n"
    },
    {
      "commit": "4fcdc94d22a4608e355aa8df36240181149d10e8",
      "tree": "cb600df7e9b585720c03a08b10509151aa96d5dd",
      "parents": [
        "b66252112d45fd24eab85122fa8902afd1324542"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 22 10:48:00 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 13 18:01:51 2014 +0100"
      },
      "message": "Execute an application even when dex2oat crashes.\n\nBug: 17000769\n\nChange-Id: Iffeb582862a5e794b6c7364c7ec2368cfd0f2214\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": "1d84f85cfd5693cea6872cff326b7ba881ebf7d9",
      "tree": "b976c8c975ac8d66a50eef5a98a850802d76baad",
      "parents": [
        "fa5ca01dafbed01ea46226a9cf8ddeb2de2920b7",
        "68d8b42ddec39ec0174162d90d4abaa004d1983e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 08 17:48:58 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 08 17:27:05 2014 +0000"
      },
      "message": "Merge \"Wire up check JNI force copy mode.\""
    },
    {
      "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": "202d1f0fd21260216cead743376c6eb4de0f7298",
      "tree": "6efb6b2e54178c3dd0a65da310f2f3330ff3e7b0",
      "parents": [
        "147594f8815ed0982d7e5676dc8b6fed5a0ba9e6"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 08 16:19:44 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 08 16:43:39 2014 +0100"
      },
      "message": "Use the right instruction set for checking dex-cache staleness.\n\nWe should use the instruction set we\u0027re asked to use, and not\nthe instruction set of the current runtime.\n\nbug: 16876489\n\n(cherry picked from commit 24e928bddaf8b4af6cdf6d64a7c35bfde059995c)\n\nChange-Id: I07901f059f9966b961e76bc055eaa04ea0227824\n"
    },
    {
      "commit": "a2069c7152eb46e8c64b4c8d7e19e5fab5de6df4",
      "tree": "9f4d36211f527ab4c03e126187732a9fd71151bf",
      "parents": [
        "484e2c2d3531e5bb36f0e1e12f26c708939c6579"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 06 19:07:41 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Aug 06 20:10:36 2014 +0100"
      },
      "message": "Revert \"Rename openDexFileNative to openDexFile.\"\n\nhttps://android-review.googlesource.com/#/c/103383/ introduces\nabsolute paths so we need back the old method name\n\nBug: 16644204\n\nThis reverts commit 350b626eb1cfbaee7619e9453a4c018c07aed003.\n\nChange-Id: I10f430a536bb1906a8452fea5846ec9e725e84bd\n"
    },
    {
      "commit": "6e183f2e973a20f2eaca135c240908e1bf98c5d0",
      "tree": "8a989eb8dbaca6a2c505569784740f9581fe7e98",
      "parents": [
        "eb76e11d836ea953b4e40a28e3e69d3b0f4c86fa"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 18 14:57:04 2014 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 05 10:22:08 2014 -0700"
      },
      "message": "Make system use patchoat to relocate during runtime.\n\nChange dalvik_system_DexFile.cc so that isDexOptNeededInternal will be\nable to indicate that a patchoat is required. Change default of relocate\noption to be on.\n\nBug: 15358152\n\nChange-Id: Ibe92d8b55a24bbf718b0416a21b76e5df7a2de26\n"
    },
    {
      "commit": "108437eb35895e7fd461b131c6ceb383a7ca6ca2",
      "tree": "799dd4a1415be4acf1043c27b5785ee0893490b5",
      "parents": [
        "7906b25f79f24af3a8b8eee0454b4db1278b9b77"
      ],
      "author": {
        "name": "Dmitry Petrochenko",
        "email": "dmitry.petrochenko@intel.com",
        "time": "Thu Jul 03 17:07:45 2014 +0700"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Aug 04 17:42:00 2014 +0100"
      },
      "message": "Inform about System.exit() call in logcat\n\nThis diagnostic message helps to filter out crashes during System.exit()\nwhen thread\u0027s behaviour is undefined.\n\nChange-Id: I772932a35b503b1efca695e7da7bf2e562c03a7c\nSigned-off-by: Dmitry Petrochenko \u003cdmitry.petrochenko@intel.com\u003e\n"
    },
    {
      "commit": "350b626eb1cfbaee7619e9453a4c018c07aed003",
      "tree": "f2994cca6435c728c9f041dc9e9a7ec64f106398",
      "parents": [
        "e2f654a463976f811c5358fc0de68c0492601274"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Jul 16 17:55:55 2014 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Jul 25 14:52:47 2014 +0100"
      },
      "message": "Rename openDexFileNative to openDexFile.\n\nWe no longer need two distinct methods.\n\nBug: 15563230\n\n(cherry picked from commit 8edcb9c8bc62fcbd181e136c32086f2b970306a4)\n\nChange-Id: Ib95098af0dd26733b5946d8e24ae4dfbcdbec3ba\n"
    },
    {
      "commit": "cb8f9e8a2941971c049b26745ea713c859342d9b",
      "tree": "c1600a19f134f45ecb8f4feea8c543df751f348f",
      "parents": [
        "80b3f96ec1e408f34b8e7b76b14774794fa1abd8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 24 15:35:50 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 24 15:35:50 2014 -0700"
      },
      "message": "ART: Account for multidex location strings in VMClassLoader\n\nTo look up resources, look in the unadorned location.\n\nBug: 16530747\nChange-Id: Ia97e39366444f6666a78ade7298d3c22b4b79f8a\n"
    },
    {
      "commit": "c114b5fbc91e6d19ef430d9bc3468386ca61b324",
      "tree": "209973deaf02fdcccabc6e2c52a6db5df512aed9",
      "parents": [
        "a6d4bc19b0f68286862ce315377aaeb1e26a726b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 21 08:55:01 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 21 08:55:01 2014 -0700"
      },
      "message": "Fix erroneous behaviors with OOME present.\n\nBug: 16454510\nChange-Id: I757088a7b82ff73f58aba8d357080028b56442e6\n"
    },
    {
      "commit": "f3d874c60ee3ada19ce26a5c4e532312b6f3a9e9",
      "tree": "de14ab8b610f43a2c2c4c02f4ac67d614919fde2",
      "parents": [
        "031ddea20cb311dfdb3bd16a13750f9cb426b299"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 18:52:42 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 18:59:40 2014 -0700"
      },
      "message": "Avoid race in single thread suspension.\n\nDon\u0027t allow more than one concurrent single thread suspension to avoid\npotential cycles and deadlocks where threads try to suspend each other.\nBug: 16364458, 16354227\n\nChange-Id: I907f1d5591a6aa5c241d37d6b4a34f968f98df77\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": "9531f62ef260cbd0d0512e4c96f5d5dd2f4fdbb2",
      "tree": "709512d91bb357131ec9d0881826b7b43d08e95e",
      "parents": [
        "f08f0ca4b9538bff516f354532ced57cf077da66",
        "d8434439dc64add41cdfa69ddf96b960af9050de"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Sat Jul 12 01:07:25 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jul 11 23:26:34 2014 +0000"
      },
      "message": "Merge \"Call strong CAS from unsafe. Add more CAS versions.\""
    },
    {
      "commit": "d8434439dc64add41cdfa69ddf96b960af9050de",
      "tree": "f1d90394dc3b11fd80397ff702413c8710cf1a65",
      "parents": [
        "3d71f321f4b87ba13113dc0457fd9c3470a2b380"
      ],
      "author": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 11 09:56:07 2014 -0700"
      },
      "committer": {
        "name": "Hans Boehm",
        "email": "hboehm@google.com",
        "time": "Fri Jul 11 16:50:37 2014 -0700"
      },
      "message": "Call strong CAS from unsafe. Add more CAS versions.\n\nAdds a number of additional CAS versions.  Calls the correct\none from sun.misc.unsafe, fixing a recently introduced bug.\nAvoid unnecessary ordering constraint when installing hash code.\n\nChange-Id: I7c09d0c95ceb2a549ec28ee34084198ab3107946\n"
    },
    {
      "commit": "98d1cc8033251c93786e2fa8c59a2e555a9493be",
      "tree": "f0a76b8fff060ee484af09028da65a8339d57057",
      "parents": [
        "aebf3cda094f34cf846d19a7724bdc8005267c95"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 15 17:02:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 11 17:17:10 2014 -0700"
      },
      "message": "Improve performance of invokevirtual/invokeinterface with embedded imt/vtable\n\nAdd an embedded version of imt/vtable into class object. Both tables start at\nfixed offset within class object so method/entry point can be loaded directly\nfrom class object for invokeinterface/invokevirtual.\n\nBug: 8142917\nChange-Id: I4240d58cfbe9250107c95c0708c036854c455968\n"
    },
    {
      "commit": "228602f562f1d130d06e60a98752d99c2d467d6a",
      "tree": "ee5b543695843ce48ebec4ffc88514ff679f4e93",
      "parents": [
        "be2a1df15a31a5223ee9af3015a00c31d2ad2e10"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 02:07:54 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 10 02:07:54 2014 -0700"
      },
      "message": "Make CAS operations in Object use art::Atomic.\n\nMake naming consistent with art::Atomic.\n\nChange-Id: If3abdb019ef8b53bd809e3fef3fd5248aeb27e9a\n"
    }
  ],
  "next": "0f635b103c1fff6439d47bdae363afeffe7327fd"
}
