)]}'
{
  "log": [
    {
      "commit": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\n"
    },
    {
      "commit": "3c539ffccabada93c404c0dfba8b52926ae06d0c",
      "tree": "e3cb6ad4bb75ef94e0267be2c3945bc9b0d8fdeb",
      "parents": [
        "45478f42a780d9852892c97c876d5d969d26533c"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Thu Jun 20 08:58:23 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Thu Jun 20 08:58:23 2013 -0700"
      },
      "message": "Improve Logging\n\nA couple of changes here to improve logging. First, we eliminate some red herrings when a java app\nis aborting by guarding some lock invariant checking when aborting.  Second, we print the name of the\nthread (if it exists) if we try to suspend a thread with no peer.  A separate CL is coming that\neliminates most, if not all, of the occurences of this that we\u0027re seeing on device.\n\nChange-Id: I9177e45462b1f0ff9b88be4d72c7d77edf6ac43c\n"
    },
    {
      "commit": "e4c891a0dc88cd3c5891372f28659f6bea0cbcfd",
      "tree": "a6973d6ea9446efb1d56a42a54dd96efeeffbbc0",
      "parents": [
        "50239c75041df9e12f9cbb018ccc08af6890e102",
        "fa42b4410d49134a8e63dc2196be4013d286f2d6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jun 18 13:17:01 2013 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 18 13:17:01 2013 -0700"
      },
      "message": "am fa42b441: Move to new art dalvikvm\n\n* commit \u0027fa42b4410d49134a8e63dc2196be4013d286f2d6\u0027:\n  Move to new art dalvikvm\n"
    },
    {
      "commit": "fa42b4410d49134a8e63dc2196be4013d286f2d6",
      "tree": "71e325089092167f202fbdf763daaf700cfd4a4b",
      "parents": [
        "7675e16bcae06c0fe258aad89b3d511037dec399"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 17 12:53:45 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jun 17 19:01:40 2013 -0700"
      },
      "message": "Move to new art dalvikvm\n\nChange-Id: Ib04bc9853b7084965fa0c9899c3e5f5ac42d4ce7\n"
    },
    {
      "commit": "e3359f7ad7671c5816f17145ca3a01516512e8d6",
      "tree": "bfb5a78fb6c42ea5fc93638d6aaa82fdf7a201a6",
      "parents": [
        "62342ec720069cebe55f45aea2ff8512a17e7d62"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 11 15:14:11 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 11 15:14:11 2013 -0700"
      },
      "message": "Don\u0027t recursively take ClassLinker::dex_lock_.\n\nFix for Bug: 9285048.\n\nChange-Id: I4bdefdc7e1de2eec6488e8d629147d9699f4d099\n"
    },
    {
      "commit": "ccf124800fe025be3ca05c28a60514909ca66a11",
      "tree": "40e29f7c4036ec5d70fabef4a5fd28eeaa390fe9",
      "parents": [
        "d752f996d1789dfbd724ae3f55009273f5411d1c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jun 10 23:19:30 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jun 10 23:19:30 2013 -0700"
      },
      "message": "Always enable lock level checks.\n\nGathering data for Bug: 9285048.\n\nChange-Id: I2569f2fcc428df4ee43695bb9144c05f204a3070\n"
    },
    {
      "commit": "39ebcb800aabedd0ffa6aa4aeac8aa4194c66e61",
      "tree": "3efbbafa4cc39683a8bcbc2d76103c3d5bfbf072",
      "parents": [
        "f89eccd509475cb1949c729e796b26a2a248ae04"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 30 16:57:23 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri May 31 11:43:42 2013 -0700"
      },
      "message": "More profiler driven tweaks.\n\nMake more code inlinable by moving to header files.\nUse reserve on std::vectors to avoid reallocation.\n\nChange-Id: I1bf67d32dd58ff5c06dec73a247fadc3de593e91\n"
    },
    {
      "commit": "1d9314c989114f330297d52dae3fe0cd4848b183",
      "tree": "4535deb9faf85612d54b44b69ed7834ace36ac83",
      "parents": [
        "63937db1cec24d065e2b4cdb7a41809528b5085b"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 24 10:44:48 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 24 10:44:48 2013 -0700"
      },
      "message": "fix indentation\n\nfixing indentation to align with rest of the file.\n\nChange-Id: I27b5cabee25c4de552d0c1bae3e2f3f53cf0fcc9\n"
    },
    {
      "commit": "63937db1cec24d065e2b4cdb7a41809528b5085b",
      "tree": "dcdbad47af267bbb79fa16a2847ad47cc94ab76a",
      "parents": [
        "b1a00bdce9391a8f23cc2f3ef3dd9eedaafa8d49"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 24 09:08:32 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Fri May 24 09:53:55 2013 -0700"
      },
      "message": "Fix mac build\n\nSmall fix for mac build: apple\u0027s gcc doesn\u0027t comprehend __attribute__((hot))\n\nChange-Id: I2cab22e5bfdc1d22027b12d8103bd56cb407a609\n"
    },
    {
      "commit": "74c070440e9c3f362cd0e9e13754bc8693ed9073",
      "tree": "00d99e15e0b8297ab08bfb1cf1abe51fda5799ef",
      "parents": [
        "e606010a5e5ea803736576b47740a2551e5d0dfc"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 14:04:12 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri May 17 14:04:12 2013 +0200"
      },
      "message": "Help inline LogMessage::stream method.\n\nA very simple method that should be safely inlined by compiler.\n\nChange-Id: I7a2fa41d566e36b30b1afd6a2f6b0c2f986dc46f\n"
    },
    {
      "commit": "c4ee12e73fc844f28a9812a9141985cf05143a57",
      "tree": "59ea9f105b39b05beea9ff17cda83f1122461629",
      "parents": [
        "d8274bcbc565fff1254574b3cbf46dc4e7b52812"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 16 11:19:53 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 16 11:26:24 2013 -0700"
      },
      "message": "Avoid recursion if logging lock is corrupt.\n\nIf the logging lock is corrupt then using LOG fails and recursive death ensues.\nMake Mutex a friend of LogMessage so that it can do raw logging in this special\nsituation.\nOpportunistically also make fields of LogMessage and LogMessageData that can be\nconst, const.\n\nChange-Id: I9e0d07c3224096bcf03d6410cd64bb8b5c831fac\n"
    },
    {
      "commit": "8a01a3a8caee37d4c4cf1a8c673f897c74aaf785",
      "tree": "2abfaf7d42e5aaabdc1faaeeda01f5a904fd64ed",
      "parents": [
        "bf47e5f28b1aa39748dce8ac5abbabca1baee093"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 06 13:25:44 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 06 16:04:04 2013 -0700"
      },
      "message": "Make ShadowFrame fields const when not in portable.\n\nShadowFrames in quick don\u0027t need the HasReferenceArray test as they always have\na reference array. Make the method_ and number_of_vregs_ fields const to aid\nG++\u0027s optimization of the interpreter.\n\nModify the OFFSETOF_MEMBER macro to handle const fields.\n\nChange-Id: I696480789190f7c5190449b9c278d37853903a5e\n"
    },
    {
      "commit": "bab74963db2484ea5f10a82ea26e8a99722bfefe",
      "tree": "7cc9087efc79c8c0ac8a03a6dfc2758ffc432767",
      "parents": [
        "9365f5890eb27e1c98038ecf5a7fa2cad0aa62e6"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 19 10:04:10 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 19 10:04:10 2013 -0700"
      },
      "message": "Remove unnecessary use of std::string.\n\nChange-Id: I479adb087dcaf70bb4eab87840e42fc8998b8d7f\n"
    },
    {
      "commit": "453570570b00ea7990c8d45506d1311f5228c6f0",
      "tree": "c41cc1c5ef93b149b172bde05d3654b0985f65f2",
      "parents": [
        "1bd4b4ca7f4f44c55ded050e5a6be09811e1b283"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 20:49:43 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 20:49:43 2013 -0700"
      },
      "message": "Fixes for timing logger and histogram.\n\nReorder when the index is checked in Percentile to avoid reading from a\nnegative index.\nAdd missing copyright to histogram unit test.\nSwitch histogram test to use UniquePtr rather than new/delete (MeanTest had\nmissed the delete).\nMake timing/cumulative logger fields that can be const const. Document SetName\nfor cumulative logger. Place the cumulative logger\u0027s std::string lock name in\nthe cumulative logger so its lifespan is clearly the same.\n\nChange-Id: I4056c6b6ee8efdb73f7b10f690fc9d959fd4a569\n"
    },
    {
      "commit": "23055dc5d7a90c4a12e259fd0ed7cd4d04d89182",
      "tree": "ef7ae39a1c99fd7c57cf93473c27ba92c92299a0",
      "parents": [
        "d914eb2a839f7b40156ff0299a60e5cb80080b73"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 16:29:16 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 16:29:16 2013 -0700"
      },
      "message": "Mutex tidy up.\n\nCondition variable names needn\u0027t be strings - the use was leading to valgrind\nwarnings.\nDon\u0027t fail AssertSharedHeld when self isn\u0027t known.\nAllow gtest thread chance to merge to avoid memory leak.\nMake barrier test log output more human readable.\n\nChange-Id: If1923c69a2965d933036c496dc5b1d64ec887db2\n"
    },
    {
      "commit": "f08e473519dc5c7ccb85eb2b333f9d0aff23a329",
      "tree": "796cb1f9102e07c33de163281a2e34af5bf634d0",
      "parents": [
        "10e75abe80fc86ff5a6a5b4b3bcef382b3c596be"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 09 09:45:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 09 09:45:49 2013 -0700"
      },
      "message": "Fix abort regression.\n\nChange https://googleplex-android-review.googlesource.com/#/c/249463/ set a\nboolean prior to testing it meaning that all aborts were seen as recursive and\nno meaningful log information was given.\n\nAlso a fix related to https://googleplex-android-review.googlesource.com/293665\nwhere we were attempting to dump other threads stacks during aborting even\nthough those threads weren\u0027t suspended.\n\nChange-Id: I1f848512c5e380529579db3d16bb8f5ddda36ad3\n"
    },
    {
      "commit": "62d6c772205b8859f0ebf7ad105402ec4c3e2e01",
      "tree": "e2f2ba6d71ed5a39c9f6909e3f7c08e998053315",
      "parents": [
        "c9b17c7ee96cd04fac9048aab624ed554fe260bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 08:32:07 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 08 14:24:13 2013 -0700"
      },
      "message": "Interpreter entries and instrumentation as a listener.\n\nMake the instrumentation responsible for whether we want method entry/exit\nstubs, and allow it to use interpreter entry stubs when instruction by\ninstruction instrumentation is required. Improve deoptimization so more JDWP\ntest cases are passing.\n\nRefactor exception debug posting, in particular improve reporting in the\ninterpreter. Improve class linker exception throwing so that broken dex files\nare more likely to be reported. Fixes the performance issue Bug: 8410519.\n\nFix some error reporting lock level errors for the large object space. Make\nfast object verification faster.\n\nAdd some debug mode robustness to finding dex PCs in GC maps.\n\nAdd printf attributes to JniAbortF and fix errors.\n\nExpand run-test 044 to test return behaviors and fix issues with not throwing\nappropriate exceptions for proxies.\n\nEnsure causes are reported with a class linker NoClassDefFoundError and JNI\nNoSuchFieldError.\n\nRemove unused debugMe and updateDebuggerFromCode.\n\nThere\u0027s a minor sizing tweak to the arg array builder, and an extra reference\narray check in the interpreter.\n\nSome clean-up of trace code.\n\nFix reg type cache destructor if it is called after the reg type cache is\nshutdown (as is the case in oatdump).\n\nChange-Id: I6519c7b35df77f978d011999354c864f4918e8ce\n"
    },
    {
      "commit": "04d7aa92bc5548bc4d272b9480614f06248194cc",
      "tree": "2b399853daab91995488c7d19a694063262f6531",
      "parents": [
        "aed0716b9592bb3095cdfc4b111011f9ed74877d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 16 14:29:17 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 16 14:29:17 2013 -0700"
      },
      "message": "Fix object verification.\n\nRefactor VERIFY_OBJECT_ENABLED to become less brittle to change enum and global\nconstant.\n\nChange-Id: Ie405106be81dce9a913730c7f46a5659582fa18b\n"
    },
    {
      "commit": "b45ccbf0e3c8f576de2f8608e12dc8c6ad002e0b",
      "tree": "9f6821ef6fab98425bbbc38850845938f9c1d9ca",
      "parents": [
        "8692215f793cbf8be9c3d25a705074ca877e09b8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 13 15:14:24 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 13 15:14:24 2013 -0700"
      },
      "message": "Add some checks for bad inputs when opening files\n\nChange-Id: I1cf9a3a0d5ca61c5e3bc375d28bd81a788a9fac5\n"
    },
    {
      "commit": "0f827169742aad6209d830db773a101849c32a83",
      "tree": "df06bd3d9fa91757d2c87fbe891007184f823e9d",
      "parents": [
        "eb5cb608fcb0d636961653ad561b2c7ee40de1ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 26 12:12:58 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 26 12:12:58 2013 -0800"
      },
      "message": "Fix JDWP ObjectRegistry lock ordering.\n\nAlso make debugging lock ordering violations nicer by using our\nLockLevel operator\u003c\u003c.\n\nChange-Id: Ic15ebe70363a90a09f6491bd5c336a604e9d6c48\n"
    },
    {
      "commit": "857a0781af16dfc4a6108735ef1689bf2819fd12",
      "tree": "b87e476e03d5bdf088e2be400a41543e42e6fdc2",
      "parents": [
        "cb69306eefc1e6e42b3eaec8b479a268222b01b6"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Thu Feb 21 11:00:20 2013 -0800"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Thu Feb 21 15:02:54 2013 -0800"
      },
      "message": "Upper and lower capping for percentiles\n\n  This is a work around to hide the loss of statistical accuracy due to\n  data binning in histograms. For cases where a percentile value is lower\n  than the minimum or greater than maximum read values percentile is capped\n  to minimum\\maximum value accordingly.\n\n  Fixed the message printed by \"PrintConfidenceIntervals(double)\", instead\n  of printing 0.99% it now prints 99%.\n\n  Added more test cases to cover corner cases for clipping.\n\nChange-Id: Ifae41336282a4dfdbeb325b2c2b87c41c8030c38\n"
    },
    {
      "commit": "c081e369040bd46919f8d48607494780611442ac",
      "tree": "6efab4fdeb94d891128595f02c6cfd1d2f1b83d8",
      "parents": [
        "64f574f474aa77c72778640ab21f8cfa72546812"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Wed Feb 20 16:45:38 2013 -0800"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Wed Feb 20 16:45:38 2013 -0800"
      },
      "message": "Improving histogram test cases\n\n  Getting rid of the use or rand() in SpikyValues test cases to\n  make the test deterministic.\n\n  Improving accuracy for the histogram percentiles by selecting\n  more restricted  lower and upper bound for a percentile.\n\nChange-Id: If38750945e1980e8f637e836de02bee6f608e945\n"
    },
    {
      "commit": "a84395489098e4531619b1cffd1afc282b14510e",
      "tree": "f326a29ddb0c1b2f211484c6192f185a2698260e",
      "parents": [
        "addf1a8da2ece5ee9d6747a176f960ab7291f718"
      ],
      "author": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Thu Feb 14 16:06:42 2013 -0800"
      },
      "committer": {
        "name": "Sameer Abu Asal",
        "email": "sasal@google.com",
        "time": "Tue Feb 19 15:13:46 2013 -0800"
      },
      "message": "Using histograms for timing statistics.\n\n  Histogram class and test cases added.\n  Modified make file to add test cases and class file.\n  Added a guard to avoid race condition in Cumulative logger that\n  was possible race between Addlogger and Dump() functions.\n\nChange-Id: I060a0d65648c7120963856624e7008c0aa681eb7\n"
    },
    {
      "commit": "e8ae0dcbbaed4681a56edb38d2a7976a444b1795",
      "tree": "9d28e868e742205699b0ffd74b81ec1b6c9c1f4b",
      "parents": [
        "8dbb708c7dc05c786329eb5c3fff3194ab6472ac"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 07 10:20:45 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 07 10:20:45 2013 -0800"
      },
      "message": "Fix ALWAYS_INLINE.\n\nChange-Id: Ibac2f8f98dbbb95a2e4c0e791d73954076620f46\n"
    },
    {
      "commit": "1ffa32f0be7becec4907b26ead353e4b17e1219c",
      "tree": "4b023e55080f75a4945a44588d12bfbb3aec8bd3",
      "parents": [
        "c0fa3ad44a84b7f658d16a717027bf95abc85db6"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 05 18:29:08 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 05 18:29:08 2013 -0800"
      },
      "message": "Reduce inlining in debug builds.\n\nFixes 018-stack-overflow on the host with interpreter.\n\nChange-Id: Ieed091b341b7812cfe898421a74d2f41f6a6a8bc\n"
    },
    {
      "commit": "c0fa3ad44a84b7f658d16a717027bf95abc85db6",
      "tree": "fd6b01ebb129a624da2cf73c1e27b5c488fccb47",
      "parents": [
        "b6c31ea69973b41d57146ab0c319613213a9a85e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 05 00:11:55 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 05 10:56:54 2013 -0800"
      },
      "message": "Improve performance of JNI field operations.\n\nChange improves performance of JniField Fadden test by around 25%, we\u0027re still\n2x slower than Dalvik.\nAggressively inline ScopedObjectAccess, Thread::SetState and field helpers.\nIf we\u0027re not contention logging don\u0027t call MilliTime (avoids a double register\nspill).\nRemove (broken?) thread checks in scoped object access, they are redundant with\nones being performed in check JNI.\n\nChange-Id: I128eed1e4205d4d540d5c6f430ef9e3853745585\n"
    },
    {
      "commit": "b6c31ea69973b41d57146ab0c319613213a9a85e",
      "tree": "14bed22d29a40de9658f1370689610dc6fc9491d",
      "parents": [
        "7cb0f9cf9c7798ae9c4d6cad47e7861f7a511f7e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 04 18:11:33 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 04 18:12:41 2013 -0800"
      },
      "message": "Move hot routine out of mutex.cc.\n\nChange-Id: I06c48481f0072e93dc2c23d4fd5e562f13003673\n"
    },
    {
      "commit": "693ff61274cd2c9b8eb7e68c370f84a911b8ca52",
      "tree": "11f1f6b3e5302b8a58c5ca44c3a1bec1b16d90a4",
      "parents": [
        "12a2bdd245ea866b665d4800b493397ec412892a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 01 10:56:12 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 01 21:29:49 2013 -0800"
      },
      "message": "Performance improvements by removing a DMB and inlining.\n\nCorrect the version of CAS used by Mutex::Lock to be acquire and not release.\nDon\u0027t do a memory barrier in thread transitions when there is already a\nbarrier associated with the mutator lock.\nForce inlining of the hot thread and shared lock code, heavily used by down\ncalls and JNI.\nForce inlining of mirror routines that are used by runtime support and hot.\n\nPerformance was measured and improved using perf and maps.\n\nChange-Id: I012580e337143236d8b6d06c1e270183ae51083c\n"
    },
    {
      "commit": "2dd0e2cea360bc9206eb88ecc40d259e796c239d",
      "tree": "9d619dc9508cbe73e4793bf6f08cbc761abfb48a",
      "parents": [
        "ac21b797b3a425975d656d6b84a7b24401d35f42"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 24 12:42:14 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 30 16:48:31 2013 -0800"
      },
      "message": "Directory restructuring of object.h\n\nBreak object.h into constituent files.\nReduce number of #includes in other GC header files.\nIntroduce -inl.h files to avoid mirror files #include-ing each other.\nCheck invariants of verifier RegTypes for all constructors.\n\nChange-Id: Iecf1171c02910ac152d52947330ef456df4043bc\n"
    },
    {
      "commit": "56edc432fa914f7ccfa87ce443e64f5ef475666d",
      "tree": "4e05c32f3524043614a2f368a6d49f7f3bc24616",
      "parents": [
        "d75afb99f0c8b8a27ad84e2e31010383ecf72120"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 18 16:51:51 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jan 22 08:47:33 2013 -0800"
      },
      "message": "Support for contention logging with ART futexes.\n\nRemove dangerous postfix operators on AtomicInteger. Clean up the atomic stack.\nFactor nanosleep into a useful shared utils.h routine.\n\nChange-Id: I417a73007c23fe247f410f41b2fa41a717c22139\n"
    },
    {
      "commit": "a6f3aaf8ca5385d870c35d1555b7787d56a70c95",
      "tree": "e9c1140154867e65d0aa54a213129559974ebec5",
      "parents": [
        "dd7bf568b28efb65c0322979790552946eda1fc1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 16 15:17:58 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 16 15:34:20 2013 -0800"
      },
      "message": "MIPS fixes.\n\nMIPS\u0027 futexes lack sufficient support for ART_USE_FUTEXES, fall-back on pthread\nmutexes. Fixes ThreadStress.\nMissing REM_FLOAT codegen for MIPS following recent refactorings. Fixes\nomnibus-opcodes. -Wunreachable-code is no longer supported in GCC, a shame as\nit would have caught this.\n\nChange-Id: I10d0827da373fd270639f6a9c52278864a015815\n"
    },
    {
      "commit": "e222ee0b794f941af4fb1b32fb8224e32942ea7b",
      "tree": "0b9f5fe6398663c9d871881cf7de28eca8bdfc6f",
      "parents": [
        "1aa246dec5abe212f699de1413a0c4a191ca364a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 14:41:43 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 15:24:45 2012 -0800"
      },
      "message": "Move stringpiece.h and stringprintf.h to base/.\n\nChange-Id: I7f71b4a12f99c5f81771146c66629ae5a947b229\n"
    },
    {
      "commit": "1aa246dec5abe212f699de1413a0c4a191ca364a",
      "tree": "ee9f5be423f56620f211525070273afc7a19c27d",
      "parents": [
        "07ed66b5ae659c452cbe1ab20c3dbf1d6f546461"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 09:29:36 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 13 09:29:36 2012 -0800"
      },
      "message": "Move casts.h and stl_util.h into base/.\n\nChange-Id: Idb3bfa5cec3d146e488031d91265737cde2b4cf4\n"
    },
    {
      "commit": "07ed66b5ae659c452cbe1ab20c3dbf1d6f546461",
      "tree": "2350745da33df6fcb9fb0c9059e55ea5d5ea8f67",
      "parents": [
        "76b6167407c2b6f5d40ad895b2793a6b037f54b2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:34:25 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:35:05 2012 -0800"
      },
      "message": "Move logging.h into base/logging.h.\n\nChange-Id: Id68f85f7c3a71b156cb40dec63f94d4fb827f279\n"
    },
    {
      "commit": "76b6167407c2b6f5d40ad895b2793a6b037f54b2",
      "tree": "5c433a0907ddf401f4078b6703253b1ae75e723e",
      "parents": [
        "f66330a747eff155eb571b634fc9d901c55a78a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 17:47:30 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 18:11:44 2012 -0800"
      },
      "message": "Move mutex.h into base/mutex.h.\n\nWe don\u0027t actually need any hackery to get the right mutex.h any\nmore, but since we planned on having the google3-like stuff\nin google3-like locations, this is an easy one to fix.\n\nChange-Id: Ie27464ebbc208a6f4e694a97cf26b1cee0737009\n"
    },
    {
      "commit": "761600567d73b23324ae0251e871c15d6849ffd8",
      "tree": "4757cb01233394fa2e9c461a68fc37a35c12dabb",
      "parents": [
        "89c41e5f2fa10e7b97698b9714bd4883a73132f0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 16:31:20 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Dec 12 16:31:20 2012 -0800"
      },
      "message": "Switch over to the google3 unix_file File*.\n\nI also moved macros.h to base/macros.h to ease google3 porting, at\nthe expense of a larger than necessary change. (I learned my lesson,\nthough, and didn\u0027t make the equivalent base/logging.h change.)\n\nI\u0027m not sure whether we want to keep the unix_file MappedFile given\nour existing MemMap, but it\u0027s easier to bring it over and then remove\nit (and possibly revert the removal) than to bring it over later.\n\nChange-Id: Id50a66faa5ab17b9bc936cc9043dbc26f791f0ca\n"
    }
  ]
}
