)]}'
{
  "log": [
    {
      "commit": "58c3f6a0d15a4340c0a11ab7fbc8c4b990c64b77",
      "tree": "18788ed5f6ffb44679acaee8faff9a5caf237f13",
      "parents": [
        "e4cdd4dbcbc75e373917d22214cd431643cd3610"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Dec 01 14:21:11 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 06 11:01:52 2016 -0800"
      },
      "message": "Reduce calls to DescriptorEquals\n\nStore the low 3 bits of the descriptor hash inside of class set\nentries. Compare these bits before comparing descriptors.\n\nSimpleperf interpret-only compile of facebook:\nmirror::Class::DescriptorEquals(char const*): 3.66% -\u003e 1.03%\n\nBug: 32641252\n\nTest: test-art-host\n\nChange-Id: I8d898d4ac7c95383c49401fbcd85bfde226e026c\n"
    },
    {
      "commit": "3398c7874e002beaa6c2b2fadf183e7d1ddad23a",
      "tree": "7db754b5b0c3a6c68bc1f91d7cb2477f534d2ad3",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 10:27:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 14:06:27 2016 -0700"
      },
      "message": "Move ArtField to ObjPtr\n\nAdded EXPECT_OBJ_PTR_EQ and variants to gtests.\n\nFixed moving GC bugs in:\nClassLinker::CreatePathClassLoader\nClassLinkerTest: StaticFields\n\nObjPtr Decode call sites: 186 -\u003e 181.\n\nSome tests fail due to ResolvedFieldAccessTest, will fix in follow\nup CL.\n\nBug: 31113334\n\nTest: test-art-host CC baker\n\nChange-Id: I8b266ad00f3c20c8cbe7cfdf280d175083df0b88\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "65975776f807d55c83af6cca1e447f8daa794413",
      "tree": "3b30b9a6ba00e72df89f59387c383ef747772025",
      "parents": [
        "3f3201a89ec19257b3bc93c25b20abdcfe61f3e4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 05 10:46:36 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 09 10:45:18 2016 -0700"
      },
      "message": "Card mark holding class instead of declaring class\n\nFor profiling info, we need to mark the card of the holding class\ninstead of declaring class. This is required for GC correctness since\nthe GC relies on the card table to track cross space references.\n\nTest: test-art-host ART_TEST_JIT\u003dtrue\n\nBug: 30655270\n\nChange-Id: Ia4690219ded0df38032b644440273e06bc303956\n"
    },
    {
      "commit": "0d5a281c671444bfa75d63caf1427a8c0e6e1177",
      "tree": "fd9bbe0f1c581bcc7c05bbfb2643ffe0b1fb014e",
      "parents": [
        "dd4cbcc924c8ba2a578914a4a366996693bdcd74"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Nov 13 10:07:31 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Sun Nov 15 12:16:41 2015 +0000"
      },
      "message": "x86/x86-64 read barrier support for concurrent GC in Optimizing.\n\nThis first implementation uses slow paths to instrument heap\nreference loads and GC root loads for the concurrent copying\ncollector, respectively calling the artReadBarrierSlow and\nartReadBarrierForRootSlow (new) runtime entry points.\n\nNotes:\n- This implementation does not instrument HInvokeVirtual\n  nor HInvokeInterface instructions (for class reference\n  loads), as the corresponding read barriers are not stricly\n  required with the current concurrent copying collector.\n- Intrinsics which may eventually call (on slow path) are\n  disabled when read barriers are enabled, as the current\n  slow path infrastructure does not support this case.\n- When read barriers are enabled, the code generated for a\n  HArraySet instruction always go into the array set slow\n  path for object arrays (delegating the operation to the\n  runtime), as we are lacking a mechanism to keep a\n  temporary register live accross a runtime call (needed for\n  the instrumentation of type checking code, which requires\n  two successive read barriers).\n\nBug: 12687968\nChange-Id: I14cd6107233c326389120336f93955b28ffbb329\n"
    },
    {
      "commit": "9b1c71ec77d92d63f1c2183b0cd3588727b2c265",
      "tree": "1f8cfa8487497a24cd8fdb0269242ea9e6873544",
      "parents": [
        "5fbb15fe05fb8814907e00fdc0ca34d9b6113c9f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 02 18:51:54 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 04 15:44:45 2015 -0700"
      },
      "message": "Make class loaders weak roots\n\nMaking the class loaders weak roots in the class linker prevents them\nfrom keeping the classes as live. However we currently do mark them\nas strong roots to make sure no accidental class unloading occurs\nuntil the logic to free from linear alloc is complete.\n\nBug: 22720414\n\nChange-Id: I57466236d9ce6fd064dda9a30ce8ab68094fb8b0\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": "1ed11b9ad5512cf464cb1686640df53201fa5297",
      "tree": "7466c110f74fb736a8f00e60a24ac841d1c0213a",
      "parents": [
        "5aa39bb7f93cf2e8f73d06980b588519825c0ebe"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Thu Jun 11 22:47:35 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Mon Jun 22 16:52:08 2015 -0700"
      },
      "message": "Restore DDMS recent allocation tracking\u0027s behavior\n\nMake the allocation tracker mark recently allocated objects as roots,\nso the allocation records are not swept. Because DDMS needs recent\nallocation tracking records even for dead objects. This should fix\nthe flaky failures for 098-ddmc test, but it cannot pass GC stress\ntest (OOM). Re-enabled 098-ddmc for other tests.\n\nThere should be an option to not mark them as roots, when user only\nneeds HPROF dump with traces but not DDMS\u0027s recent allocation tracking.\nProbably need to add a new JNI API function for this option.\n\nThere could be another way to keep a second list of recent allocation\nrecords and maintain a type cache for them, so not to make the objects\nroots. But it\u0027s more complex, and not sure which is better.\n\nAlso reduce memory usage for AllocRecordStackTrace objects, and change\ndefault stack depth to 16. Rename the property that controls the stack\ndepth to \"debug.allocTracker.maxStackDepth\" so developer can change it.\n\nBug:20037135\nChange-Id: Ic6b9ae87bdcda558be6f14ded8057e763439881c\n"
    },
    {
      "commit": "3f64f25151780fdea3511be62b4fe50775f86541",
      "tree": "732f9761dce6ef0d4ab6fad18c92137f38248cc5",
      "parents": [
        "8d73a91d8f4c89ac152d18081b07093f68c56a11"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Jun 12 18:35:06 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jun 15 17:09:33 2015 -0700"
      },
      "message": "Print more diagnosis info on to-space invariant violation.\n\nPass the method/field (in GcRootSource) to the read barrier to print\nmore info when a to-space invariant violation is detected on a\nmethod/field GC root access.\n\nRefactor ConcurrentCopying::AssertToSpaceInvariant().\n\nBug: 12687968\nBug: 21564728\n\nChange-Id: I3a5fde1f41969349b0fee6cd9217b948d5241a7c\n"
    },
    {
      "commit": "9086b65b2ad35dd39a8afc62d535be8217208d08",
      "tree": "3abc6e3297b840289bc240e3a9bc7e61b7a99cbc",
      "parents": [
        "8d20011a9de7cd94bee59db3ae8c0cbbf55911d9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 14 09:35:18 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 14 11:06:34 2015 -0700"
      },
      "message": "Fix valgrind tests\n\nDelete large objects in space destructor. Also some cleanup.\n\nChange-Id: I4c4e90149841a156b7a3236201b37683e14890fb\n"
    },
    {
      "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": "4809d0a8a5fca85a67dd0588ead5dfbd0f1acf96",
      "tree": "12853aa2c6a6238cac7c66b5d5610735a2f31591",
      "parents": [
        "63a99fce3ceac3c9de1f47b88a75094e3e1ffba3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 07 10:39:04 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 07 10:42:46 2015 -0700"
      },
      "message": "Fix CC root visiting bug\n\nAlso some cleanup.\n\nChange-Id: Ia3de8f2d409770be3619ec116e8b06ecd82338fe\n"
    },
    {
      "commit": "758a801b66c134361a7b43f7e83f85d1fb800c4c",
      "tree": "35b060c780fcf6e7c268fec47df40c74b5ab8b05",
      "parents": [
        "e8aae00fa400efbb8f998a5dbf68eb42810889c1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 03 21:28:42 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 06 14:03:17 2015 -0700"
      },
      "message": "ART: Enable Clang\u0027s -Wdeprecated\n\nReplace throw() with noexcept.\n\nAdd default copy constructors and copy assignment constructors for\ncases with destructors, as the implicit definition is deprecated.\n\nChange-Id: Ice306a3f510b072b00bec4d4360f7c8055135c9d\n"
    },
    {
      "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": "9e47bfa71d42df101aff9d156a1b296eaf6566a2",
      "tree": "5122555b45668ab6cf0037772ffb50aacf46142e",
      "parents": [
        "d98ff78976696fdde1e7868d4687719a0439544b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Feb 23 11:14:40 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Feb 23 11:25:51 2015 -0800"
      },
      "message": "Avoid unaligned accesses (SIGBUG/BUS_ADRALN) in IRT.\n\nPointers in IrtEntry aren\u0027t currently aligned under 64 bit builds. But\nunaligned atomic stores (store exclusive) do not work on arm64 (causes\nSIGBUG/BUS_ADRALN). Fix CC collector crashes caused by this.\n\nBug: 12687968\nChange-Id: I1d2f5376778a9a1e5cfea876f1f57d7a88ad5445\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": "c2e20629c7dfdb0f679fa30c14b41fe68588697f",
      "tree": "ee428a17f93922e6f78e3482c348e6e7b81a8e4f",
      "parents": [
        "f55996d6b4a672e09fbe3a3563646a7682719b4a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 03 11:41:47 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 06 16:27:00 2014 -0800"
      },
      "message": "Add hash set\n\nMore memory efficient than libcxx since we do not box the values.\n\nChange intern table to use new hash set. Clean up intern table by\nremoving const casts and deleting unnecessary code.\n\nChanged the class linker to use a hash set, also added a pre-zygote\nclass table.\n\n5 samples of:\nadb shell stop \u0026\u0026 adb shell start \u0026\u0026 sleep 60 \u0026\u0026 adb shell dumpsys meminfo\nBefore:\n165929 kB: Native\n175859 kB: Native\n168434 kB: Native\n166559 kB: Native\n169958 kB: Native\n\nAfter:\n160972 kB: Native\n159439 kB: Native\n157204 kB: Native\n165093 kB: Native\n163039 kB: Native\n\nTODO: Add HashTable which is implemented by using a HashSet.\nTODO: Use for DexFile::find_class_def_misses_.\nTODO: Investigate using mem maps instead of native heap.\n\nBug: 17808975\n\nChange-Id: I93e376cf6eb9628cf52f4aefdadb6157acfb799a\n\n(cherry picked from commit e05d1d5fd86867afc7513b1c546375dba11eee50)\n"
    },
    {
      "commit": "eb175f70ef352ce0b9bcafdf06c5ac22b0ff626a",
      "tree": "a69840165ef62cd918c001a421373bec9121314d",
      "parents": [
        "07f09809c0575e985249450843b06f266b831fe1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 31 11:49:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 03 10:17:41 2014 -0800"
      },
      "message": "Add image strings to intern table\n\nWhen we create the runtime, we now add the image strings to the\nintern table if we are the zygote. This caused some memory bloat,\nso I added an extra unordered set to the intern table.\n\nThere is now two unordered sets (hash talbe). One for pre-zygote\ninterns and one for post-zygote interns. This helps since the\npre-zygote hash table doesn\u0027t get dirtied. Even with adding\nthe image strings, we get total memory savings of around 5-7 MB\nnative PSS after device boot.\n\nFB launch Before:\n2.20% art::DexFile::FindStringId(char const*) const\nTotalTime: 2069\nTotalTime: 1985\nTotalTime: 2088\nTotalTime: 2003\nTotalTime: 2034\nTotalTime: 2049\nAfter boot native PSS: 175585 kB: Native\n\nAfter:\n0.27% art::DexFile::FindStringId(char const*) const\nTotalTime: 1682\nTotalTime: 1756\nTotalTime: 1825\nTotalTime: 1751\nTotalTime: 1666\nTotalTime: 1813\nAfter boot native PSS: 167089 kB: Native\n\nBug: 18054905\nBug: 16828525\nBug: 17808975\n\n(cherry picked from commit b6e292bf7eac9d73c6b79b1e9b7b87beb02436c9)\n\nChange-Id: Ie367f3222f8c4db409ec49c3845276908b51e9c9\n"
    },
    {
      "commit": "c2bda539093db61be1f4095e579f6e68db8a23f1",
      "tree": "38ae12dc45d237de694441ee302ba3c48ac22bc2",
      "parents": [
        "62bcfec936692ff4f75cdc3267c081080b0e6acc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 02 16:20:45 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 02 16:42:08 2014 -0700"
      },
      "message": "Add missing read barriers to intern table.\n\nAlso deleted GcRoot::Assign.\n\nChange-Id: Ib1ea739cf79c72fc92a8628cd9095c11b660e018\n"
    },
    {
      "commit": "cdfd39f579574a75b98e7ad48c69826b00361b27",
      "tree": "0f057472d19bf290766e20ea3ad63d0b28ee83a1",
      "parents": [
        "9a4f02722051955e536d6aacb776d637a6713545"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 29 18:16:58 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 02 14:39:49 2014 -0700"
      },
      "message": "Change intern table to unordered set.\n\nIntern table active used bytes goes from 430k to 317k on system\nserver. Similar %wise savings on other apps.\n\nBug: 16238192\n\n(cherry picked from commit d910fcef539e12ab181e56ec80684f39c4e95733)\n\nChange-Id: Ic70395124435c6f420a77e6d8639404a160f395a\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": "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"
    }
  ]
}
