)]}'
{
  "log": [
    {
      "commit": "0dc9d342bed34c3f1ce5268ff7a6e27cdb9490d9",
      "tree": "5f66873965e314b8897799b38e10003af247df3c",
      "parents": [
        "45ee8ebcc4a5eb2ca888f8ccd20d64207791aedc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jun 10 11:34:34 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jun 10 11:34:34 2013 -0700"
      },
      "message": "Add missing ENTRY_POINT_INFOs.\n\nMissed in change 0aba0ba155bef7346bde19e53581200b89ae8a7a.\n\nChange-Id: Ib85514184c8c58ca37a8de95a5d27b8771dabd55\n"
    },
    {
      "commit": "0aba0ba155bef7346bde19e53581200b89ae8a7a",
      "tree": "6590f8a50bde7c30b57f1bb0ae67c6d88cea8116",
      "parents": [
        "515661b14b60ab9684efa1ab1d5124934406094e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 03 14:49:28 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Jun 07 14:43:24 2013 -0700"
      },
      "message": "Created compiled stubs in image.\n\nSaves class linker from having to set code pointers when loading\nfrom an image. Added stubs for quick and portable resolution\ntrampolines, and interpreter-to-interpreter and interpreter-to-quick\nentry points. Also added sizing stats output for oat writer.\n\nChange-Id: I3905fae81047742c23d1cf0ca001db798db971b1\n"
    },
    {
      "commit": "d090cf4f2420a228251e27dbae600f4f44ae2c57",
      "tree": "bee68fc19e535effde1f0a6d3f0130a6df9b97cb",
      "parents": [
        "9b36039438c06e3c39324914fc13389b36c68dd2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 06 15:35:18 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 06 15:39:59 2013 -0700"
      },
      "message": "Always dump stacks if we\u0027re aborting.\n\nIn Bug:9285048 we don\u0027t see the stack of the offending thread as it is not\nsuspending. Break thread-safety by attempting to dump all threads when the\nglobal aborting flag is raised.\n\nChange-Id: Icb72642833e73ed4c06fa2771695fcd6d9899c78\n"
    },
    {
      "commit": "ca39692028741f795132d68fe24f43488eeaae3b",
      "tree": "d71d4ef13fec33abb6e6476f9e8689ff50f0dea9",
      "parents": [
        "33e15bcb4c0873cbce9d039fbc9bc7f4cf257765",
        "33e9566255c426e7a2c8fca5b8a1b6a94a5d352c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue May 21 14:59:00 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue May 21 14:59:00 2013 +0000"
      },
      "message": "Merge \"Various GCC 3.6 and clang build fixes.\" into dalvik-dev"
    },
    {
      "commit": "33e9566255c426e7a2c8fca5b8a1b6a94a5d352c",
      "tree": "80965d3d329c09ec5a574863a356562e42f639ff",
      "parents": [
        "34d64cba998cb86867109db351113e6f7c9293f7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 20:29:14 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 21:16:03 2013 -0700"
      },
      "message": "Various GCC 3.6 and clang build fixes.\n\nRemove #error in common_test.h that fires with clang build and replace with\nruntime error.\nFix bit rot caused by not compiling with Wthread-safety.\nFix clang build issues in compiler relating to missing header file definitions\nin object files.\nOther minor build and tidying issues.\n\nChange-Id: Ife829ab0664581936155be524de46e6181c750b0\n"
    },
    {
      "commit": "33e15bcb4c0873cbce9d039fbc9bc7f4cf257765",
      "tree": "72ef6a1befcf021ee23c76a199d8f5bbdd6da51a",
      "parents": [
        "34d64cba998cb86867109db351113e6f7c9293f7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 20:04:20 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon May 20 20:36:20 2013 -0700"
      },
      "message": "Fix bug in OOME inside an OOME hampering run-test 061.\n\nIf we\u0027re throwing an OOME inside an OOME we don\u0027t want to clear the current\nthread\u0027s throwing OOME flag.\n\nChange-Id: I9aa362263dc4fca84f3d3a629c480112c3263008\n"
    },
    {
      "commit": "79fe539587d4c09244172d0168eeed0ec9770466",
      "tree": "4fb8fbd03727a74acb4dfde7e969adf32ee32750",
      "parents": [
        "09b55e1df3b0bcecee25882e45e882887cc8654f"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 24 18:41:58 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 26 14:50:52 2013 -0700"
      },
      "message": "Removing remaining compiled stubs from image.\n\nAbstract method error stub and jni dlsym lookup stubs are gone.\nAfter this change, the image no longer needs to be executable.\n\nChange-Id: Ic75d72bf7e76e3b8ecc596e82af68ab592dde15e\n"
    },
    {
      "commit": "a6227676df130164322b1ac66a429eb0bfd0df62",
      "tree": "b9d115ba5a49654bec45edb7125eeb57e4696fd6",
      "parents": [
        "58df32711162823647356afe25ae2cde04133563"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 23 20:56:54 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Apr 23 20:57:41 2013 -0700"
      },
      "message": "Robustify Thread::DumpState.\n\nCheck Thread::Current isn\u0027t NULL before using in ScopedObjectAccess that will\nattempt to dereference it.\n\nChange-Id: Ia3fc84dbf649edfa7fda5202abf9e397a794e0cd\n"
    },
    {
      "commit": "58df32711162823647356afe25ae2cde04133563",
      "tree": "df1b2b43b90f4861b475f1452b175353a56ec3d7",
      "parents": [
        "ede1807e3481a6937416964bb7556364f2d428e1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 22 15:28:53 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 23 16:34:16 2013 -0700"
      },
      "message": "Removed compiled resolution trampoline.\n\nCreated assembly versions of resolution trampoline for portable and\nquick. Removed compiled version from the image.\n\nChange-Id: I183e110c4e102fb45ce6e7f4e855f8bed7986251\n"
    },
    {
      "commit": "0878d654e7be8c9666579e22522704d8887415cc",
      "tree": "0e57c50e7f47a01900e540c0b5e509df4297afed",
      "parents": [
        "f8adc60455b90c95a6a3c8f87830e4e88b2644e1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 17:38:35 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 18 17:42:02 2013 -0700"
      },
      "message": "Thread tidying.\n\nAdd is_started_ boolean to Thread so that we don\u0027t read an uncreated\npthread_key_self_, don\u0027t start twice or call shutdown when not started.\nDon\u0027t use a MutexLock in ThreadList::Unregister, as the MutexLock will\nhold a copy of self for the thread that\u0027s deleted.\nDon\u0027t memory leak the resume condition variable.\n\nChange-Id: I767968a9f785e560fc9e356a339e684de5ce2ffc\n"
    },
    {
      "commit": "ee9889502a34a08741a6f8ecc02917202de9d773",
      "tree": "cdcfd55a15efe64b9acc14c9f0ab7d901f5a07c9",
      "parents": [
        "3e13ae7b85cc559f72bde6d2a3de61b9792f7de5"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 16 14:23:47 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Apr 16 14:41:14 2013 -0700"
      },
      "message": "Add bool to verifier to allow soft failures.\n\nWhen false, soft failures in the verifier become hard failures. It should\nonly be false when not compiling, and calling the verifier from the class\nlinker.\n\nChange-Id: I664e5cbe491784b280aa5bfdb7e7fc0b771814f5\n"
    },
    {
      "commit": "ed1790e83352e54420018d1495eb010f7cd48a64",
      "tree": "0c7f5edca116ca3acb53187cd65578061dda2cb2",
      "parents": [
        "b6026daec5f7888da79f4a6bfc17eb2d6a0d869d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 12 09:58:14 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 12 09:58:14 2013 -0700"
      },
      "message": "Add some comments about thread dumping and suspension.\n\nChange-Id: I7903a363f8ab37a6af936dd963e6a321d61c3084\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": "aef701da38d14bd479cb275f78e2adaa00f1c54a",
      "tree": "7f435bffea07f732f5bdb720aabc71c497cef40a",
      "parents": [
        "5fa60c3db4208df407113b5a69d295a9c93d53b1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 05 18:15:40 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 05 18:15:40 2013 -0700"
      },
      "message": "Dump native stacks for all threads in native code.\n\nart port of dalvik change 890ce010c4846deb82d3ac09b6d2ceb76e59fb67.\n\nBug: 7432159\nChange-Id: Iea1cb9d60fee2ca197f056116836408675b076e6\n"
    },
    {
      "commit": "bf393efe476801b7f27fe6aa47691e3305552e9e",
      "tree": "2bfd05752781815306c115e40aab2b5fef10dfd0",
      "parents": [
        "c404bfb072f9273beb13bf8e098e2a4aa108f18b",
        "b56812165dd3a2e6eb8b85c810943b3d7bd9bfc4"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Mar 30 14:41:33 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sat Mar 30 14:41:33 2013 -0700"
      },
      "message": "Merge branch \u0027dalvik-dev\u0027 of https://googleplex-android.googlesource.com/a/platform/art into fixes-for-art-build-with-mr2\n\nChange-Id: Ie46d1f77f98b8a6f55f02b8614cb88b36b6a2d44\n"
    },
    {
      "commit": "6474d190d5604898354ebf767f1944b6e3e9b445",
      "tree": "ac4be675c62fd8129fe85f740dcd2e3bfee424e2",
      "parents": [
        "52003fe9e2020e9d68cee1300fdb4a3f55be85a5"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 26 14:08:09 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 26 16:03:53 2013 -0700"
      },
      "message": "Remove use of compiled invoke stubs from portable.\n\nNow the invoke stubs can be safely removed. Tested and working on ARM,\nbasic testing done on x86/MIPS, but portable is currently broken for them\neven without the change.\n\nChange-Id: Ib73f2b7aa9d81f5f0e1e817d16b9bec464c5a5aa\n"
    },
    {
      "commit": "52e55cbc6d18694556176b58ef79b5ae52c8039c",
      "tree": "c4e2784e0420ff89f6304a5a649a948783a62ef9",
      "parents": [
        "52003fe9e2020e9d68cee1300fdb4a3f55be85a5"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Mar 22 09:56:53 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Mar 22 09:56:53 2013 -0700"
      },
      "message": "Remove gcc-based tsan support\n\nChange-Id: I145331e295f69e99408e03cb59df26fb337510f5\n"
    },
    {
      "commit": "4f6ad8ab428038129b2d0d6c40b7fd625cca15e1",
      "tree": "d1025ed9203d0cdf7aa959d9cecd8dc1f0c0bfeb",
      "parents": [
        "aabe8adacc7bf3a8ab6f6f3dd37fc839b6fd762f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:27:28 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:29:59 2013 -0700"
      },
      "message": "Various performance improvements.\n\nPerformance had regressed due to verify object and method invocation changes.\nAvoid trampolines for static calls in same class.\nVarious inlining changes.\nMake verify object something that\u0027s only compiled-in in debug builds.\n\nChange-Id: Ia261a52232c3b10667c668f8adfadc0da3048bc5\n"
    },
    {
      "commit": "25337eb2b20e7d058b7fa4b549df01774d57c88a",
      "tree": "bbc3ec4a7696eb0abfbc3ed6d9710cf26a1e7bab",
      "parents": [
        "19ca8cf52b9f825c48e7a52da6f25af4d97a263d",
        "04d7aa92bc5548bc4d272b9480614f06248194cc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 16 21:40:17 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Sat Mar 16 21:40:18 2013 +0000"
      },
      "message": "Merge \"Fix object verification.\" into dalvik-dev"
    },
    {
      "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": "5d9173014c1ca09f7249a6b07629aa37778b5f8f",
      "tree": "80543dbe9af6795212373bb12532b638ff3b22f3",
      "parents": [
        "aed0716b9592bb3095cdfc4b111011f9ed74877d"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Feb 27 17:57:33 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 15 14:18:28 2013 -0700"
      },
      "message": "Changes to remove need for compiled invoke stubs for quick.\n\nARM, x86, and MIPS implementation complete, though MIPS is untested.\n\nThe ArgArray is changed to be a uint32_t array instead of a JValue array.\nAlso, a separate result for float/double was needed for x86/MIPS. The invoke\nstubs are currently still there, but only used for portable.\n\nChange-Id: I0647f8d5d420cea61370e662e85bdc0c13b5e378\n"
    },
    {
      "commit": "c928de90ad22ecdf83c18a07008409595f13d3b1",
      "tree": "065a08f379960f7ba946318aaa742d7ddd0c94bd",
      "parents": [
        "0f827169742aad6209d830db773a101849c32a83"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 27 14:30:44 2013 -0800"
      },
      "message": "Remove Iceland.\n\nART_USE_LLVM_COMPILER is removed and when necessary ART_USE_PORTABLE_COMPILER\nis used in #ifdefs.\n\nChange-Id: Iffa9ce5b0246c7c427ccc4e67ecc134624632e55\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": "cb69306eefc1e6e42b3eaec8b479a268222b01b6",
      "tree": "5a0175557e5c17d7c1d9d0444f2c0112ca00146d",
      "parents": [
        "3afa4c1bae71f3d3cd7004b9b215facbdff22e63"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 21 09:48:08 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 21 11:58:06 2013 -0800"
      },
      "message": "Clean up more of the JDWP request handling.\n\nThere are no longer any naked uint8_t*s; it\u0027s JDWP::Requests all the way.\n\nAlso remove a bunch of the adb/socket transport duplication.\n\nChange-Id: I0a33e393b54924d4ab9cc9f76fb346661931284f\n"
    },
    {
      "commit": "05f3057d6a4d23d712092ccd36a531590bff323b",
      "tree": "3f342c813afdb44a08466e379c060f917d073e5a",
      "parents": [
        "4aeb567fa8b1f5e17ef7beacf86fed505cc7335c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 20 12:13:11 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 20 12:15:09 2013 -0800"
      },
      "message": "Move monitor related object routines to object-inl.h\n\nAlso pass through readily available self Thread. Remove unused wait method.\nRename ObjectLock.Wait to document it doesn\u0027t honor interrupts.\n\nChange-Id: I991e5036997b3f60ee4fdf1a420beabab9a70c85\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": "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": "7a22fa657b972e8323692368975bc5a7be1cc0f5",
      "tree": "4fe55837daae4e252eeaccf1be931f2e7ed434cb",
      "parents": [
        "87b185f3bfd766001dcd5977fc0ee0489e5a8a28"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 23 12:16:16 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 23 12:21:05 2013 -0800"
      },
      "message": "Refactor StackVisitor to take a Thread*.\n\nThis allows assertion checking on the thread, principally that we never try to\nwalk the stack of an unsuspended thread.\nFix bug in the OwnedMonitorVisitor where GetVReg could be called on a\nStackVisitor with no context.\n\nChange-Id: I06539b624b253b6fb7385e7be11a4bced1d417b2\n"
    },
    {
      "commit": "1eab958cde39a7e2f0e5ce01730f4e2e75c72519",
      "tree": "9a1f3f663b891385f8572720c26fef0797510320",
      "parents": [
        "28d76682d591034a5bcb610487c1f2db32d01c84"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jan 22 13:33:52 2013 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jan 22 15:18:31 2013 -0800"
      },
      "message": "Remove kExceptionPending flag from thread and codegen.\n\nCode just checks if exception_ is NULL instead. Compiled code simply\nclears the exception_ field for MOVE_EXCEPTION instead of calling a\nhelper.\n\nChange-Id: Iefaa780f66c327c3d20598bd71d3c14d7a9c8119\n"
    },
    {
      "commit": "f58dffd4bf36b7644e0cec566ab564112f9ee29d",
      "tree": "1a88a708a0c03b2a8363d1283269605ee01829c4",
      "parents": [
        "734b8c62cc637c25f4c2481ca6a48adbd7209c6c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jan 13 09:25:49 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jan 13 09:25:49 2013 -0800"
      },
      "message": "Proxy tidy up and extra asserts.\n\nEnsure we don\u0027t suspend when placing object args into IRT.\nEnsure stack is sane.\n\nChange-Id: I20a8c97002b74878831580da1dd03458363ece82\n"
    },
    {
      "commit": "4993bbc8eda377804e585efd918f8ab9d9eab7d4",
      "tree": "bc49a14ce0c2718155444ac67152382e8c313326",
      "parents": [
        "16848f6c5c4d8394d491e887d7d805beddf173ad"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 15:41:25 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 16:05:44 2013 -0800"
      },
      "message": "Implement ThreadReference.OwnedMonitors.\n\nFix the method verifier so it can cope with not being able to resolve\ntypes in the application class loader, so we can find monitors held in\napplication code (this will improve SIGQUIT too).\n\nAlso remove the sort|uniq of dex pcs by just recording the last work\nline we see.\n\nChange-Id: I86ff27b42800a858489d112931c9aed2fb85ebdc\n"
    },
    {
      "commit": "f327e07b37e349b1ec5eaad6dc294a9b7a081d20",
      "tree": "2c64b1f6212045a529c18d1dbe04b3da8fd1d6e9",
      "parents": [
        "9e0c175a0cea5c8c88a6927e6375554118f74a82"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 16:01:26 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 09 18:07:12 2013 -0800"
      },
      "message": "Implement ObjectReference.MonitorInfo.\n\nChange-Id: Iefc276939b9e569f4ea4d7a5af9a28276a3fb632\n"
    },
    {
      "commit": "80537bb742dff4ccdf6d04b1c0bb7d2179acc8cb",
      "tree": "38c5fc3dd0344ddf721320c07e39136b37a38815",
      "parents": [
        "6641ea12b98dda9ec45d29f20e43f85698b88a02"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 04 16:37:26 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 07 11:24:50 2013 -0800"
      },
      "message": "Fix and reenable lock dumping in stack dumps.\n\nThis patch adds a flag to tell the method verifier not to load\nclasses when resolving types, so that when we ask the method verifier\nto find monitor-enter instructions for stack dumping it doesn\u0027t try\nto allocate (since the most common cause of stack dumping is SIGQUIT).\nWe believe that all the classes we care about will be loaded already\nanyway, since we\u0027re only interested in _held_ locks, and you can only\nhold a lock if you\u0027ve executed the code that leads to the monitor-enter,\nand you can\u0027t execute the code without loading the relevant classes.\nAny not-yet-loaded classes shouldn\u0027t be relevant for our purposes.\n\nAlso clarify the stack dumps when a thread is starting up; although\nstrictly speaking a thread might be in the kNative state, it\u0027s more\nhelpful if we also explicitly say that it\u0027s still starting up.\n\nAlso a few GC log output fixes.\n\nChange-Id: Ibf8519e9bde27838c511eafa5c13734c5bebeab6\n"
    },
    {
      "commit": "306057fd278d75bf3794bd5243a3b6652c487d18",
      "tree": "62652a97caace11e50408d15688ced3514039219",
      "parents": [
        "2d76b041be770102fc912effc398e629a18180d2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 26 12:45:53 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 02 11:15:42 2013 -0800"
      },
      "message": "Support for deoptimization needed for debugging.\n\nThe deoptimization code is untested, and some sanity checks in the\ninstrumentation are disabled because they need debugging.\n\nChange-Id: I1b60a65a60bddc9b107ad4659da097b55ce901c3\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": "df53a6526215ef245e06d9f663ee21de9891879e",
      "tree": "d7876e4e296550c66f0574b861ba46141dfd0c6d",
      "parents": [
        "a592a6df3aaf9b2a7e07bd2046716264726d9567",
        "6702243ea2332b566d8e8b871cc9db0906d835ad"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 11 11:52:24 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Dec 11 11:52:24 2012 -0800"
      },
      "message": "Merge \"Support for SetVReg and add SetGPR.\" into dalvik-dev"
    },
    {
      "commit": "6702243ea2332b566d8e8b871cc9db0906d835ad",
      "tree": "dc530339fa07de6028c0771edb082f58ea3686f9",
      "parents": [
        "a169e1d8d968800380245cda450505d969ebff76"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 29 18:04:50 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 11 11:35:41 2012 -0800"
      },
      "message": "Support for SetVReg and add SetGPR.\n\nThese changes are useful for debugging and are required for being able\nto change all GC roots.\n\nMIPS is untested.\n\nChange-Id: I2ba055de64264098bffe869a4fb192d0975f1c8f\n"
    },
    {
      "commit": "a77f0f68a59870ff027dad654fe31eb3fdaf3d5d",
      "tree": "c041a68efb55db65ab8f195938097a887f5fcc01",
      "parents": [
        "a169e1d8d968800380245cda450505d969ebff76"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Dec 05 17:19:31 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Dec 06 10:14:46 2012 -0800"
      },
      "message": "Various fixes for JDWP.\n\n- Moved lock of thread list lock into DecodeThread from its callers\n- Fixed scope of various locks to prevent locking violations\n- Added transition for current thread from runnable to suspended before\n  suspending vm, and then a transition back\n- Reworked lock ordering to allow JDWP locks to be held while grabbing\n  the thread list lock\n- Moved debugger PostException until after suspension is re-allowed\n\nChange-Id: Ie53e47ff1538e6cd3125c48ddb4c13758b29be63\n"
    },
    {
      "commit": "ce4cc0d1818e872c1c7f3c3519a82259afd5c288",
      "tree": "308f2c30e5a842a5e459d96e730ca4432a020f4f",
      "parents": [
        "823b8acdf2c8274ff93b685e50a93ab9afc6af8b"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Nov 18 16:59:53 2012 -0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Dec 04 11:07:34 2012 -0800"
      },
      "message": "Using gcmap instead of shadow frame.\n\nFix misuse of TBAAJRuntime \u0026 TBAARuntimeInfo. Now, the TBAAJRuntime is\nonly for runtime support function.\n\nUpdate DexPC before lock object and suspend.\n\nChange-Id: I40fa37f4863fe6e127328a8413285ee3c62e8505\n"
    },
    {
      "commit": "07ec8e17c978e3bda0202693e6432b56349a5867",
      "tree": "112bccd79024ebd831507c42672e01abc13b726e",
      "parents": [
        "cfaa455374aae0a08c8cb28b5bb306b17866d652"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Dec 01 01:26:51 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Dec 01 11:44:15 2012 -0800"
      },
      "message": "Intrinsic for java.lang.Thread.currentThread.\n\nChange-Id: I056323a74f8759257bf6b6bb032437e576665006\n"
    },
    {
      "commit": "cfaa455374aae0a08c8cb28b5bb306b17866d652",
      "tree": "ca8f25a06f234385b6e62bb774085f1324e5d519",
      "parents": [
        "3676aeb03d5f70933891bb3b21abb8e31a81e36c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 26 21:00:08 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 30 16:38:21 2012 -0800"
      },
      "message": "Turn the thread peer_ into a Object*.\n\nDon\u0027t use a JNI global ref for the thread peer_ so that we can\nsupport more threads than we can global refs. This fixes run-test 51.\nFix a race in thread destruction where a thread may be requested to\nsuspend while deleting itself.\n\nChange-Id: Id8756a575becf80d2a0be0a213325034556927f1\n"
    },
    {
      "commit": "a3a82b219531effb53aef13f48e50db9bf0f9fb5",
      "tree": "841056cc525f4b8547f914ab39bc17e2cea47c39",
      "parents": [
        "9c85bc0b6577ee00e4e2d3ee9a7d0fd72d7a4966"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Nov 27 16:09:55 2012 -0800"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Nov 27 16:12:37 2012 -0800"
      },
      "message": "Quick compiler: minor cleanup\n\nRemove dead software floating point support.\nMove a common function from target specific to target independent.\n\nChange-Id: Iaf793857f7e0faae02c672b9f1d45a0658143a51\n"
    },
    {
      "commit": "94d6df471a406a03bb1afba8ca3ae9c0fbf366b5",
      "tree": "f89af30dbe4a23dc6f62bb17c3b0a36b778ade33",
      "parents": [
        "5bc252873e6e50f8257e33ca158d0e350413fcbf"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 26 16:02:12 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Nov 26 16:02:12 2012 -0800"
      },
      "message": "Fixes to make all run-tests except 051-thread work.\n\n- Moved exception delivery into common method DeliverException\n- Renamed old DeliverException to QuickDeliverException since it is only\n  used by quick\n- Fixed null checks for arrays returned by GetReference\n- Standardized ArrayStoreException error message\n- Added additional sleeps to ensure threads stay alive long enough in\n  051-thread, and that \u003cclinit\u003e is complete for 084-class-init\n\nChange-Id: I9ca306896a4bd10f453150fcf3965d9750fa0cbd\n"
    },
    {
      "commit": "50ffee20ced9c0c7ac68889c86be8844cf120cf2",
      "tree": "53773866564cf275c7e67309e7529a4c6e45de78",
      "parents": [
        "b212a9974ccd3ce3fafb24ddab3b96762cecb14c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 11:47:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 11:47:44 2012 -0800"
      },
      "message": "Introduce -Xint flag for ART.\n\nChange-Id: I0f7d8c0b0f33e77ca2d3fbf05b7a16fedb86a545\n"
    },
    {
      "commit": "40e3bacfd57bca2ca39c1caec64680bd0ed4a16d",
      "tree": "808eb0b5138cc1690149dc26f6937e0b14924a6c",
      "parents": [
        "11d4ab2dd052b74923d4a3c6afc3ef4b15f064dc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 00:09:14 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 20 00:09:14 2012 -0800"
      },
      "message": "Make stack visitor location for bad roots more verbose.\n\nChange-Id: Ib2f3f48ccf1f5b2f3a4d1a61df553ad1a5c29d38\n"
    },
    {
      "commit": "2bcb4a496b7aa00d996df3a070524f7568fb35a1",
      "tree": "8422ab8d65b7422008094b2eaadec0dad87b2df3",
      "parents": [
        "efc6369224b036a1fb77849f7ae65b3492c832c0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 08 10:39:18 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Nov 16 14:01:34 2012 -0800"
      },
      "message": "Add \"kind\" argument to Get/SetVReg.\n\nIn order to determine where a register is promoted its necessary to know\nthe kind of use of the register.\nExtend notion of precise-ness to numeric verifier register types.\nDump verifier output in oatdump.\nDump vregs with their location or constant value.\nIntroduce indenting ostream utility.\n\nChange-Id: Ia3d29497877976bc24465484743bca08236e1768\n"
    },
    {
      "commit": "725a957985171d712d5c048cc3d00ff14968784b",
      "tree": "3bd4b161268ecd477aa471665316fb27a3dda145",
      "parents": [
        "35883cc623fdf475a4ead1dafcba9e9becc1ed11"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Nov 13 18:20:12 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 14 11:42:33 2012 -0800"
      },
      "message": "Pulled out instrumentation into its own class separate from trace.\n\nThis is in preparation for Ian\u0027s debugger changes. The instrumentation\nstill needs support for debugging, which I\u0027ll add later.\n\nChange-Id: I29ce0af1ff2eaec8f6d2f54963263381363ebf72\n"
    },
    {
      "commit": "664bebf92eb2151b9b570ccd42ac4b6056c3ea9c",
      "tree": "783a4492b398078e8d5747f19f6019e91939c986",
      "parents": [
        "d22d54849c96760aa1efa259d6dcfbace54da2af"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 12 16:54:11 2012 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 12 17:37:38 2012 -0800"
      },
      "message": "Fix occasional deadlock caused by checkpoint root marking.\n\nThere was a race where a new worker thread would attach during the\ncheckpoint. This caused the thread to wait since suspend count !\u003d 0.\nBut when we decremented the suspend count, we did not broadcast to\nthe resume condition.\n\nAdded a create peer parameter to Thread::Attach and\nAttachCurrentThread. This is used by the threadpool since we don\u0027t\nneed a java peer for worker threads.\n\nChange-Id: I632926b5a6b52eeb0684b6e1dcbf3db42ba3d35c\n"
    },
    {
      "commit": "64b6d145fa53b8dfb07a8fc2426af13f155d5a4d",
      "tree": "727647da235e21508d6661c7e2a780ff8ee2003e",
      "parents": [
        "0f79d728370ab51b9b16a356b058c48330f43148"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 29 16:34:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 01 17:26:15 2012 -0700"
      },
      "message": "Interpret class initializers when building image.\n\nWe initialize all image classes with the interpreter if they have a\nclass/static initializer.\nBlack list classes whose initializers need access to on device native\ncode. If such classes are added to the image classes they will fail when\nthey attempt to enter JNI code. A number of \"intrinsic\" style JNI\nroutines are special cased to allow more than just trivial class\ninitializers to run.\nAdd a lock for initialization in the compiler to serialize the execution\nof class initializers and avoid deadlock.\nRemove InSourceSpace from image writer (cruft) and teach the image writer\nto fix up referent fields in references.\nFix bugs in the interprerter and implement filled-new-array.\nFactor some VM code to more easily share between the interpreter and\nJNI entry points.\n\nChange-Id: I6bb811dea84f1b82260b1a4e73ac7412179c0b41\n"
    },
    {
      "commit": "6ed960d260d0ec3cbbef455c646ccd47f4e78119",
      "tree": "73c5db413bab25b3462ddc35e10fd6392123b525",
      "parents": [
        "bf90dbe0ad99b91dc20f6e35ee32a05884c5c481",
        "0e4627e593bc39f8e3d89c31f8977d55054c07cc"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 26 12:01:16 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Fri Oct 26 12:01:17 2012 -0700"
      },
      "message": "Merge \"Add thread pool class\" into dalvik-dev"
    },
    {
      "commit": "0e4627e593bc39f8e3d89c31f8977d55054c07cc",
      "tree": "1d69558732c0c916e51a530985a26d4235ef0e6c",
      "parents": [
        "9281f004db3f194930ef34d31e5d80c98341f38f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 23 16:13:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 26 12:00:03 2012 -0700"
      },
      "message": "Add thread pool class\n\nAdded a thread pool class loosely based on google3 code.\n\nModified the compiler to have a single thread pool instead of creating new threads in ForAll.\n\nMoved barrier to be in top level directory as it is not GC specific code.\n\nPerformance Timings:\n\nReference:\nboot.oat: 14.306596s\ntime mm oat-target:\nreal    2m33.748s\nuser    10m23.190s\nsys 5m54.140s\n\nThread pool:\nboot.oat: 13.111049s\ntime mm oat-target:\nreal    2m29.372s\nuser    10m3.130s\nsys 5m46.290s\n\nThe speed increase is probably just noise.\n\nChange-Id: If3c1280cbaa4c7e4361127d064ac744ea12cdf49\n"
    },
    {
      "commit": "c531cefbfb5394413122e9f57d211ba436cff012",
      "tree": "f1a7183c0aa17414df90409e99dc24e84aaa2562",
      "parents": [
        "9281f004db3f194930ef34d31e5d80c98341f38f"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Oct 18 07:09:20 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Oct 26 10:13:33 2012 -0700"
      },
      "message": "Eliminate #ifdef ART_USE_QUICK_COMPILER\n\nOne of several steps towards having a single compiler build.\nIn this CL, we introduce a compiler_backend command-line option\nto select between Quick, Quick w/ GBC, Portable and Iceland\nback ends.  The Iceland option is temporary, and will go away once\nwe combine with Portable.  The Quick variants are with\nand without GBC conversion.  In time, those will converge to a\nsingle option.\n\nAll uses of \"#if defined(ART_USE_QUICK_COMPILER)\" are eliminated.  All\nprevious uses in the Quick compiler have been converted to runtime\ntests.  On the llvm side, ART_USE_QUICK_COMPILER was previously\nused to differentiate between Portable and Iceland builds.  Those\nusages have been replaced with ART_USE_PORTABLE_COMPILER, and in\na following CL will also be converted to run-time tests.\n\nAs of this CL, we\u0027re still generating separate libraries for\nQuick and Portable/Iceland.  Next up is elminating the target-specific\nlibraries for Quick-arm, Quick-x86 and Quick-mips.  Once that is\ncomplete, we will consoldate Quick and Portable into a single build.\n\nTo build either Iceland or Portable, touch USE_PORTABLE_COMPILER or\nUSE_LLVM_COMPILER as usual.  Otherwise, the build will default\nto Quick (non-GBC).\n\nChange-Id: Ic86c56f51710c9b06d4430b71a429ae12903cc47\n"
    },
    {
      "commit": "858f1c5fd5e528d0b16040ced74d4636046a42d8",
      "tree": "3cfe50b75962353cdd62ec68112f3f148f026506",
      "parents": [
        "ef851d3058abfc56ed544f25d387dc7ff9c32e0b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 17 17:45:55 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 23 10:38:45 2012 -0700"
      },
      "message": "Check point root marking.\n\nAdded thread list checkpoint function, this goes through every thread and runs\nthe checkpoint on each thread. Threads that are runnable run the checkpoint\ncallback themselves in the next suspend check, while suspended threads are\nleft suspended but have the callback called on them.\n\nAdded a checkpoint visitor member to each thread, this visitor called when the\ncheckpoint request flag is set during transitions to suspended from runnable.\n\nUsing the checkpoint to mark the roots reduces the first pause of partial /\nfull gc to around 1 ms.\n\nChange-Id: I97239cc72ee0e4a3397e9138a62ee559268dce0a\n"
    },
    {
      "commit": "4eb68edeecc4d6641bcca2a40620631335e7cadc",
      "tree": "7b627587f60f8cef5a76db2a361ee4ba9a4042e7",
      "parents": [
        "99bc2176824556730c948f17cbdb7993b17fcb6e"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 17 16:41:07 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Oct 18 12:13:33 2012 -0700"
      },
      "message": "More MIPS fixes. Fibonacci and ExceptionTest work.\n\nIn this change:\n- Fixed compilation of div-int and instance-of\n- Fixed VERIFY_OBJECT to compile again\n- Added stack space for passing extra function arguments for\n  REF_ONLY_CALLEE_SAVE functions\n- Fixed AbstractMethodErrorStub to match stack layout\n\nChange-Id: I3d4540a3285a0acf49522ffc6f01d04b888bb8ef\n"
    },
    {
      "commit": "c604d731730b43231f63040c8db1d58304da0cf3",
      "tree": "bb9cd6aa56eb3ba88ff27967efc3cc08da150b87",
      "parents": [
        "0b0b515934b83385e1cea448113783e0b22849ed"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 14 16:09:54 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 15 15:36:32 2012 -0700"
      },
      "message": "Implement mutex requeueing for cv broadcasts.\n\nMake the mutex guarding a condition variable part of its state. On a\nbroadcast requeue waiters on the mutex so they are awoken as the mutex\nis unlocked (thereby avoiding thundering herds). Explicit futex use\nstill guarded behind ART_USE_FUTEXES which remains disabled as I\u0027m\nunhappy with some of the warts of mutex usage. Uploading so that the API\nchanges can stabilize.\n\nChange-Id: Iedb601856ccd8bbc3a64da4ba0cee82246e7bcbf\n"
    },
    {
      "commit": "6f1c94968ada57da433debf8e2d1b38a80ceb510",
      "tree": "3628c7d9f5273d2c83dd7c6f9e816816eed8b70a",
      "parents": [
        "0051be6d118c511308ed7764ef41e0d594292c49"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 12:08:41 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 15 12:37:33 2012 -0700"
      },
      "message": "Add root verification when we try to mark an invalid object.\n\nNow when we try to mark an object not contained by any spaces, We call verify\nroots. This prints the root\u0027s vreg and method when it finds an invalid root.\n\nFixed a error in the total paused time statistic.\n\nChange-Id: Id10e4097cce56bc54ee488de32183c18ba3f3780\n"
    },
    {
      "commit": "7469ebf3888b8037421cb6834f37f946646265ec",
      "tree": "b1eb8cd8d1e3b6263c2de77616020de4b4b5019f",
      "parents": [
        "d8195f19840911a73b1491dfc8e7c18139753731"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 16:28:36 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 08 18:02:42 2012 -0700"
      },
      "message": "Refactor and remove copy mark bits.\n\nRefactor code GC realted code to be in a GC folder.\n\nRemove copy mark bits by using pointer changing instead.\n\nEnable concurrent sweeping of system weaks.\n\nFix non concurrent GC plan.\n\nChange-Id: I9c71478be27d21a75f8a4e6af6faabe896e5e263\n"
    },
    {
      "commit": "4445a7e3398a6143939168097a3aa275b734504d",
      "tree": "9eda34219b4a840125694a86ddba49077e15b944",
      "parents": [
        "50b35e2fd1a68cd1240e4a9d9f363e11764957d1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 17:19:13 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Oct 06 09:48:02 2012 -0700"
      },
      "message": "Class clean-up.\n\nMove Class code out of native and into Java.\nRemove ClassLinker::FindDexFile.\n\nChange-Id: Idd9c4563d2c32e76690675242ff491276ace9848\n"
    },
    {
      "commit": "50b35e2fd1a68cd1240e4a9d9f363e11764957d1",
      "tree": "4f3c58b7b293380f19e4f33357cb352e3330772e",
      "parents": [
        "8e9a1497f0d7da4d55f6e7ed8a7d96ba6db7222d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 10:09:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 05 11:07:39 2012 -0700"
      },
      "message": "Explicitly pass Thread::Current to MutexLock and Alloc.\n\nChange-Id: I8b75bc0617915465f102815b32306aa7760dcae4\n"
    },
    {
      "commit": "2fde53367dbe721e5273c34b590e67112322cc9e",
      "tree": "c5e10aa7d9d41b29298a42a0b96807787e27c574",
      "parents": [
        "2e447e0e8725503d975c50fbbd13df4c769ca85e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 14 14:51:54 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 04 10:14:03 2012 -0700"
      },
      "message": "Refactor spaces and add free list large object space\n\nAdded some more abstraction for spaces, we now have ContinuousSpaces and DiscontinousSpaces.\n\nAdded a free list version of large object space.\n\nPerformance should be better than the memory map version since we avoid creating more than\none memory map.\n\nAdded a cause for Gc which prints with the Gc message, dalvik has this as well.\n\nChange-Id: Ie4aa6b204fbde7193e8305eb246158fae0444cc1\n"
    },
    {
      "commit": "1f5393447b9f45be7918042d9ee7b521376de866",
      "tree": "1793cb0ae00b38a63f8cfd3a25b6cb0ee4edca16",
      "parents": [
        "870ea4772199f8d4cbd9a269f9093620ee50a59c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 21:09:42 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 04 09:27:04 2012 -0700"
      },
      "message": "Make PopSirt inlinable, pass self to SirtRef.\n\nChange-Id: Ieb91526b1cb1f8644ceb3c5b99649f658f43bbc1\n"
    },
    {
      "commit": "120f1c74a9768e958377b6c97897511b27ae58c8",
      "tree": "fa1f90d88ea34d8ef9eec729d27c7a70956a6a09",
      "parents": [
        "cabc60e71a65fa17e5a99fba94fc61523fbeb478"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 17:17:10 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 03 17:29:26 2012 -0700"
      },
      "message": "Fail threads attaching during runtime shutdown.\n\nIntroduce counters to indicate that threads are being born. Don\u0027t allow\nthread birth to occur during runtime shutdown.\n\nBug: 7000936\n\nChange-Id: Ib0d78f78c0ff126a4b5d3b5a6f1a2ff8f5061ae9\n"
    },
    {
      "commit": "01ae5808367e641a983e3f8bb82b3e0d364cd03e",
      "tree": "34ce5f4f5a9405f8270d623571a058dcd993fd39",
      "parents": [
        "a75a01313e801c53145df00bad1842d9f643c0a1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 16:14:01 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 28 16:14:01 2012 -0700"
      },
      "message": "Fix race in thread attaching during GC.\n\nForgot to mask in suspend request if thread is attaching during GC.\nLots of extra assertions and debugging.\n\nChange-Id: Id4d2ab659284acace51b37b86831a968c1945ae8\n"
    },
    {
      "commit": "81d425b0b232962441616f8b14f73620bffef5e5",
      "tree": "cd1e46656269acf20e78817d675e56d9b9133e6c",
      "parents": [
        "bfaf917edbb1de8d158c3615e0da8ac3143d10c8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 16:03:43 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 17:19:25 2012 -0700"
      },
      "message": "Pass self to lock methods.\n\nThis avoids frequent recomputation of\nThread::Current/pthread_getspecific.\n\nAlso add a futex based reader/writer mutex that is disabled.\n\nChange-Id: I118fdb99ef1d1c4bfda6446ba3a0d8b6ab31eaee\n"
    },
    {
      "commit": "30e173f6da202e4caa37ceb477e2fbbe09cec990",
      "tree": "ce694f29d013e8adc6b8218f2434889b2e1f4765",
      "parents": [
        "63818dc8b06af4a1e65c41b453f1a42166c22728"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 26 14:35:03 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 26 14:35:03 2012 -0700"
      },
      "message": "Fix Mac build.\n\nChange-Id: I2d83c018399422af0f8aa1cdaba7ade014053992\n"
    },
    {
      "commit": "dbe6f4613ae0161b169f4fca8a616b0b393370ab",
      "tree": "bcf21fa802f8ae261522e8c9bab3685020908d13",
      "parents": [
        "474b6da273c7ce6df50a4e51eb9929a77e1611c3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 25 16:54:50 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 25 22:36:20 2012 -0700"
      },
      "message": "Change Thread::peer_ to be a jobject instead of an Object*\n\nFixes issue where GC was freeing the java peer if the parent thread exited before the child thread got registered.\n\nChange-Id: I6fbe74865d5827d243ac55fc396679afa97ff2f9\n"
    },
    {
      "commit": "474b6da273c7ce6df50a4e51eb9929a77e1611c3",
      "tree": "b67074e7e4c16e01384c2f7d416f4e4ad3b3bd61",
      "parents": [
        "de1ef40bd5f344dbb0bdb68f555f45868f502ae6"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 25 00:20:38 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 25 17:01:42 2012 -0700"
      },
      "message": "Move thread flags and state into 32bits.\n\nWe need to ensure that transitions to Runnable are atomic wrt to a\nthread modifying the suspend count. Currently this is achieved by\nholding the thread_suspend_count_lock_. This change creates a set of bit\nflags that summarize that the suspend_count_ is raised and also others\nflags that signify the managed code should go into a slow path.\n\nThe effect of this change are two-fold:\n1) transitions from suspended to runnable can CAS the thread state\nrather than holding the suspend_count_lock_. This will make JNI\ntransitions cheaper.\n2) the exception/suspend/interpreter poll needed for shadow frames can\nbe rolled into a single compare of the bit fields against 0.\n\nChange-Id: I589f84e3dca396c3db448bf32d814565acf3d11f\n"
    },
    {
      "commit": "66f19258f9728d4ffe026074d8fd429d639802fa",
      "tree": "fd94009774c6cbbb1528ea096e606133bd35f104",
      "parents": [
        "a5e1e3d153990845d80cb8d013157210f11a473c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 18 08:57:04 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 21 17:32:56 2012 -0700"
      },
      "message": "Change dex cache to be java object instead of array, add pointer to dex file in dex cache.\n\nGeneric clean up to facilitate having GDB macros for Pretty* helper functions.\n\nImproved cleanliness of DexCache since having it as an object array was not the best solution.\n\nFixed a bug in InOrderWalk caused by ResolveType sometimes allocating classes.\n\nRename C++ Method to AbstractMethod and add two new classes Constructor, Method which both inherit from AbstractMethod.\n\nRename done to have the C++ code be closer to the java code.\n\nChange-Id: I4995b4c5e47a3822192b08afa24a639d3b1f4da9\n"
    },
    {
      "commit": "0c7abda482f53db3d153c073d1c7a145f84e0626",
      "tree": "837b89c75f0047cbcd16c9121739069a36b4f22a",
      "parents": [
        "ba0b9c55adce3f533845ab1b25c552589e5b4118"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 19 13:33:42 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 20 15:26:35 2012 -0700"
      },
      "message": "NativePcOffsetToReferenceMap\n\nRather than translate a native PC to a Dex PC and then to the reference\nbitmap, just go straight from the native PC to the reference bitmap.\nEncode the native PC offsets using a hash rather than linearly\nsearching.\n\nChange-Id: Iee1073d93c941c0a31f639e5f23cea9e9f747bee\n"
    },
    {
      "commit": "ba0b9c55adce3f533845ab1b25c552589e5b4118",
      "tree": "053ae9ce87645f18eb380e9709a93ef7608452d9",
      "parents": [
        "46c6bb2f52cef82660b9be7576b49f83845df93a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 20 11:25:12 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 20 11:25:12 2012 -0700"
      },
      "message": "Add the native thread state to art SIGQUIT dumps.\n\nBug: 7053953\nChange-Id: I9be3f828332e5bbb003644802d7770b58d8298ed\n"
    },
    {
      "commit": "46c6bb2f52cef82660b9be7576b49f83845df93a",
      "tree": "3e9768b404a987e481a240a52ee07756323120d9",
      "parents": [
        "e8c819e7dfd1fa9205465843df595f6f227d2d73"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 18 13:47:36 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Sep 18 13:53:50 2012 -0700"
      },
      "message": "Rename PcToReferenceMap adding Dex.\n\nChange-Id: I21ebfe9ac7fd8a627299f1f721eb4b11c87642dc\n"
    },
    {
      "commit": "0183dd7297709ef0beb31e120fc34fdd12f61915",
      "tree": "046d4236a22175d3d983b3131635490a2db8c52c",
      "parents": [
        "221cf4435df4373a6c2d4a3cfc4abd76f1233c81"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 17 23:06:51 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 18 09:15:23 2012 -0700"
      },
      "message": "Sqrt intrinsic\n\nPerform math intrinsics on StrictMath when appropriate following Dalvik\nchange: https://android-review.googlesource.com/42932\n\nFilter package name of intrinsic methods to reduce number of\ncomparisons.\n\nChange-Id: Iff97c501d4386f76d3f2297406417fa3b76d0a8a\n"
    },
    {
      "commit": "21d28f510eb590f52810c83f1f3f37fe5f4adf46",
      "tree": "f937b4d39aab322541b9b83cc5dd59d8e3f2fddd",
      "parents": [
        "0967a25d1482d8f7b4a26c5926263e7ffa63189f"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Jun 12 05:55:00 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sat Sep 15 04:15:17 2012 -0700"
      },
      "message": "GBC Expander. Removed lir.\n\nChange-Id: If8d13e36f1e6d82c2a7f7bfec62b8fb41fd8cdaa\n"
    },
    {
      "commit": "8320f3867c02bae9bef6cdab267820cb7b412781",
      "tree": "7e2211068ccbd17da7e9c83d24b10fdd9db28c39",
      "parents": [
        "c7b83a0d8ac73bdfff751619ae2a34948e3534b7"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Sep 11 16:29:42 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Sep 13 10:49:20 2012 -0700"
      },
      "message": "Prune useless entries from dex to pc map\n\nStep one of the change.  Limit entries in the table to native\ncode safepoint locations (which generally are the return PC\naddresses of any call that might trigger a stack walk and the\nstart addresses of all catch blocks).\n\nPreviously, the mapping_table described ranges.  No longer.  Any\nnative PC located within compiled Dex code that is found in a\nstack walk should have an exact match in the table.\n\nIn future CLs we\u0027ll add data compression (probably uLeb128) and\nmay add inflation on first use to a faster access map (instead of\nthe current linear search).\n\nNote that this CL introduces somewhat of a regression in the\ncapabilities of oat-dump.  Because the mapping table no longer\nassociates each native intruction with its Dex counter-part, the\nnative code disassembly no longer includes interspersed Dex\ndisassembly.\n\nNote also that as of this CL, the compiler is adopting the 100-char\nline length limit used in the rest of Art.  The 80-char limit\nshould still be used in any code that we expect to upstream to\nllvm.\n\nChange-Id: I1beca4d57c41e8161bf746bc62abbce08d5bcb4d\n"
    },
    {
      "commit": "b726dcb581bf72da46527378ccb6889020f0e6e9",
      "tree": "c0383ed788652926e93147e50d659ed226519548",
      "parents": [
        "fd678beb171a4686a4f2d53ca4188a4ade8fa54e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 08:57:23 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 05 09:06:19 2012 -0700"
      },
      "message": "Rename GlobalSynchronization to Locks\n\nAlso address some review comments in common_throws relating to\nToStr\u003cInvokeType\u003e and exception detail messages.\n\nChange-Id: Ibf2c0f147689fa236d349bd7f01eed3c2522552b\n"
    },
    {
      "commit": "c747cffa950b8398cb8844d47e2253214c855750",
      "tree": "4b77ecc1dc6f2a76c755381a2925f34ed080c74f",
      "parents": [
        "faf459e5decdfcf6dd7844947898beefe31e6435"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 31 18:20:08 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 31 18:26:30 2012 -0700"
      },
      "message": "Runnable -\u003e Suspended -\u003e Runnable, avoid 2 locks\n\nAllow some freedom in the Transtion code to change thread state without\nholding a lock in 2 cases where it is safe.\n\n1) into Suspended we know that we\u0027re suspended and so checking the\nsuspend count is a mute point.\n2) when going into Runnable we can do a racy check before doing a\nsecondary check after we\u0027ve acquired a share on the mutator lock.\n\nChange-Id: Ibf0e5f42acc1ff3cf06312ef001a74344d4dfa8c\n"
    },
    {
      "commit": "9a4f003f9a6da8e4c6ee279bd2a13aac37648183",
      "tree": "ce78afe7c842c8ff99d52c0a09bfe758d67d037f",
      "parents": [
        "cfb21d92796087963c092b69110a2e7ff7a03a55"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 16:17:40 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 31 10:49:06 2012 -0700"
      },
      "message": "Remove the THROW_VERIFICATION_ERROR op and supporting code.\n\nChange-Id: Idc40a2c379048c7e3d74f50b2bd765a507a417ce\n"
    },
    {
      "commit": "9efc3e03982f042c3ce67cc2c64dbe0f0986119b",
      "tree": "3b2ba9bc2b64f1ef3bccc10fb62aec37fcac3d43",
      "parents": [
        "cd30d82113913125222454d41981c8740724fb30"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 17 17:47:17 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Aug 17 17:47:17 2012 -0700"
      },
      "message": "Fix x86 build where compiler found lock issue\n\nChange-Id: I00eba554539cf9f700c38ccf42eeafd011725a9f\n"
    },
    {
      "commit": "00f7d0eaa6bd93d33bf0c1429bf4ba0b3f28abac",
      "tree": "6a2172ece15c4699e6c2a67ce76f019db0a9a21d",
      "parents": [
        "634ea28f78c4a138e6a1de54eae8696095422415"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 19 15:28:27 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 14 10:45:52 2012 -0700"
      },
      "message": "Global lock levels.\n\nIntroduce the notion of the mutators/GC being a shared-exclusive (aka\nreader-writer) lock. Introduce globally ordered locks, analysable by\nannotalysis, statically at compile time. Add locking attributes to\nmethods.\n\nMore subtly, remove the heap_lock_ and split between various locks that\nare held for smaller periods (where work doesn\u0027t get blocked). Remove\nbuggy Dalvik style thread transitions. Make GC use CMS in all cases when\nconcurrent is enabled. Fix bug where suspend counts rather than debug\nsuspend counts were sent to JDWP. Move the PathClassLoader to\nWellKnownClasses. In debugger refactor calls to send request and\npossibly suspend. Break apart different VmWait thread states. Move\nidentity hash code to a shared method.\n\nChange-Id: Icdbfc3ce3fcccd14341860ac7305d8e97b51f5c6\n"
    },
    {
      "commit": "6a607ad0902f3b8478e95d0b6b3e63a538571a3f",
      "tree": "a2eba4016ffffffb001425a681b827aa9059ae6f",
      "parents": [
        "3971737ece7c2351c7ae91f488ee73628c75b2e6"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 13 20:40:00 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 13 20:40:00 2012 -0700"
      },
      "message": "Fix QSB, which uses a pthread_key_create destructor to detach.\n\nWe\u0027ve publicly supported this behavior since Eclair.\n\nChange-Id: I323b4981aa87eba7146b9cbab5a68a9fb1f1b5c6\n"
    },
    {
      "commit": "0ec569a3e653e0358fcb59c89f2aad708843db53",
      "tree": "d2526757d84632c3dfd0848873438ce3de9a299c",
      "parents": [
        "02a1e359707c4b4d091ec7b4b5cda3848a6bd8a5"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jul 01 16:43:46 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Jul 01 16:43:46 2012 -0700"
      },
      "message": "Disable dex register descriptions.\n\nDisable dex register descriptions. Make GetVReg and SetVReg frame\nroutines fail in unimplementeds.\n\nChange-Id: I0f05a188d3c81c424018b52e2dcea40891cd307e\n"
    },
    {
      "commit": "caf7654a0e6c76c7489970b1a246fccf220f9982",
      "tree": "bdf74befb18407a3cb5ec4bd406059314b0434a7",
      "parents": [
        "5d96a7168dd3e2a4acf1a947ef12efa8f82b95c0"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 28 16:08:22 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 28 18:53:55 2012 -0700"
      },
      "message": "Fix posting exceptions when a debugger is attached, fix UpdateDebugger, fully implement ThreadGroupReference.Children.\n\nPosting exceptions and UpdateDebugger were broken by the recent stack-walking\nrewrite.\n\ndalvikvm never did ThreadGroupReference.Children correctly; it only admitted\nthat \"system\" is the parent of \"main\".\n\nChange-Id: I386f2fa5e01fba56cb2a1af4f136dbf31da0ff07\n"
    },
    {
      "commit": "52673ffae0025d86f4023735581f19ebcc477487",
      "tree": "f684286493c5a71417b787717526a73de13ae9f0",
      "parents": [
        "9f509b90111ccc88dce25d587b2df4f87eb68013"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 27 23:25:34 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jun 28 00:05:10 2012 -0700"
      },
      "message": "Move IsDaemon to native code.\n\nHaving the daemon status in the managed heap means it is only readable\nby an attached thread in the runnable state. This is problematic when\nterminating the VM.\n\nAdd extra asserts that ScopedJniThreadState and Thread::SetState only\noccur on expected threads.\n\nRemember a cause for no thread suspension asserting.\n\nChange-Id: I8cf35c4c77751f8b1a35a5fb9a7f67682bf153bc\n"
    },
    {
      "commit": "08fc03ae5dded4adc9b45b7014a4b9dfedbe95a6",
      "tree": "3e767d037fd3e47e792b88d982ad38bce26d39e9",
      "parents": [
        "f94404ead1f2e4a1b5a2ff8bbdb65c5e4d4a77ea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 26 17:34:00 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 27 12:18:25 2012 -0700"
      },
      "message": "Include held locks in SIGQUIT thread dumps.\n\nHandy if you have an ANR that\u0027s locking related. Quick tour:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniStaticSynchronizedMethod0(Native method)\n   - locked \u003c0x60135aa8\u003e (a java.lang.Class\u003corg.apache.harmony.dalvik.NativeTestTarget\u003e)\n   at java.lang.reflect.Method.invoke(Native method)\n   at C.whileTrue(Main.java:63)\n   at C.synchronizedOnClassString(Main.java:56)\n   - locked \u003c0x60002a70\u003e (a java.lang.Class\u003cjava.lang.String\u003e)\n   at C.nestedSynchronizationWithTryCatch(Main.java:44)\n   - locked \u003c0x61336b90\u003e (a java.lang.String)\n   - locked \u003c0x61336bd0\u003e (a java.lang.String)\n   at C.nestedSynchronization(Main.java:35)\n   - locked \u003c0x61336b18\u003e (a java.lang.String)\n   - locked \u003c0x61336b50\u003e (a java.lang.String)\n   at C.synchronizedOnClassC(Main.java:30)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at C.noLocks(Main.java:27)\n   at C.\u003cclinit\u003e(Main.java:24)\n   - locked \u003c0x613366f8\u003e (a java.lang.Class\u003cC\u003e)\n   at Main.main(Main.java:19)\n\nA non-static synchronized native method works too:\n\n   at org.apache.harmony.dalvik.NativeTestTarget.emptyJniSynchronizedMethod0(Native method)\n   - locked \u003c0x613371a8\u003e (a org.apache.harmony.dalvik.NativeTestTarget)\n   ...\n\nNote that most stack traces don\u0027t look any different; the above is a\npathological example that exercises different kinds of locking. Testing\nwith system_server shows most threads don\u0027t hold any locks.\n\nFuture work (marked by TODO) is that explicit JNI MonitorEnter calls in\nnative code aren\u0027t shown.\n\nChange-Id: I2747f5cddb4ef64b1935736f084a68fe8e4005e9\n"
    },
    {
      "commit": "ca190666fb11820153f74274c495ba1f913d8a69",
      "tree": "cc813b9fd3b0ad38cec0e6952bcbbbbce78494f9",
      "parents": [
        "1fb3bd3559eb6fc34f7ba429adf9bb15c05939b0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 15:45:57 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 19:50:52 2012 -0700"
      },
      "message": "Fix initializer lists to be Google C++ style.\n\nChange-Id: Iada52ea5cf95492684033993b3299042bdaf6cee\n"
    },
    {
      "commit": "67054b57d056a2c3892a69efbde28a4189bc17b4",
      "tree": "e191d5440c752184ab33afa2d62da77ec2d2691e",
      "parents": [
        "271769a39b900a5f9f752cea318980e96367b55b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 16:02:10 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 16:02:10 2012 -0700"
      },
      "message": "Fix build with object verification enabled.\n\nChange-Id: I8fa1af738e33a1914ab7c29355a121584edc8c82\n"
    },
    {
      "commit": "365c10235438607541fa2259a5fec48061b90bd8",
      "tree": "26516a4985a8bbef4c8da36b99bf1e54af3ad24d",
      "parents": [
        "147440427984816b6ed5235a9b1fb2cbf99496d0"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 22 15:05:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jun 26 15:21:01 2012 -0700"
      },
      "message": "Increase use of ScopedJniThreadState.\n\nMove the routines for changing Object* to jobject and vice-versa\n(AddLocalReference and Decode) to ScopedJniThreadState to enforce use of\nObject*s in the Runnable thread state. In the Runnable thread state\nsuspension is necessary before GC can take place.\n\nReduce use of const ClassLoader* as the code bottoms out in FindClass\nand with a field assignment where the const is cast away (ie if we\u0027re\nnot going to enforce the const-ness we shouldn\u0027t pretend it is).\n\nRefactor the Thread::Attach API so that we\u0027re not handling raw Objects on\nunattached threads.\n\nRemove some unreachable code.\n\nChange-Id: I0fa969f49ee6a8f10752af74a6b0e04d46b4cd97\n"
    },
    {
      "commit": "044288fb8f69e154862763a6b3bfea2bac1b397e",
      "tree": "d8950711187ab4bb72dfb10191a524134af169d2",
      "parents": [
        "57b47f9b59b8850c5cf7ddba587cc0cb094ca878"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 25 14:46:39 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 25 14:46:39 2012 -0700"
      },
      "message": "Move LockOwnerFromThreadLock into monitor.cc, the only place it\u0027s needed.\n\nChange-Id: I2836cc96fb7d8d46f237dc403e19c50fc0f19d49\n"
    },
    {
      "commit": "640495bd1aebcd0b429d59f62b57d0c984b2d8c6",
      "tree": "57373871951b28834a3e6b68c7812a07c0713a2d",
      "parents": [
        "4cf6018b33269cd4009b7c9e4e2fefcb4f90acf9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 22 15:15:47 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 22 15:19:41 2012 -0700"
      },
      "message": "Proxy methods don\u0027t have GC maps.\n\nFix regression caused by stack refactoring.\n\nChange-Id: I942b6f34fb4b1f1504466b46e004d4f92f1cb167\n"
    },
    {
      "commit": "6e9d22c78c1016e70f8c2a9e6bc66c94ec36f728",
      "tree": "eb9c2987d89c3217447dc5029725b20711a42f55",
      "parents": [
        "9c54f613f43bfb76ecb12006177b37222bdedc63"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 22 15:02:37 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 22 15:02:37 2012 -0700"
      },
      "message": "Fix JDWP stack frame regressions.\n\nThe bug was that Dbg::GetThisObject didn\u0027t take a thread argument, so\nalways used the calling thread, which is never the thread whose frames\nyou actually care about.\n\nI\u0027ve also made the JDWP ThreadReference.Frames get all the frames at once\nnow, since we no longer have fast random access to individual frames.\n\nChange-Id: I0ce2bd2088e11d5ea14f9785d7ca0e3890b3cb9b\n"
    },
    {
      "commit": "0399dde18753aa9bd2bd0d7cf60beef154d164a4",
      "tree": "ea88327c01ca321074aaa59b97e4c54348802937",
      "parents": [
        "de5705dcf4ab5f92d48e144bcd7b59f7bcd18e16"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 06 17:09:28 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 21 22:11:24 2012 -0700"
      },
      "message": "Remove Frame, merge shadow and quick representations.\n\nChange-Id: I5ae03a5e52111792d2df7e83cbd89ab25777844b\n"
    },
    {
      "commit": "57aba86f29d7e795bf7e68c65cc464d2291b6af1",
      "tree": "6d03848a0d66c686092d03c063298bac6cefa2f2",
      "parents": [
        "72e401c59bce47fdf0274a0d47f0340b05e4f27f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 20 14:00:47 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 20 14:00:47 2012 -0700"
      },
      "message": "Throw OOME if pthread_create(3) fails.\n\nThis is how dalvik behaved, though we offer useful detail messages.\n\nThis patch also fixes a bug where we weren\u0027t actually including detail\nmessages in OOMEs (not just the pre-allocated one).\n\nChange-Id: If6c8f47008a9bd058d9773f2f2e6e9a4f0d843e1\n"
    },
    {
      "commit": "3f6635a2c84d645002f651c312d53f8348646c1f",
      "tree": "e46caa5d1199aca6f6b3c1cbd5f0e706606682c3",
      "parents": [
        "c553b95527b78c1fcf9b719a87d8875f71280f71"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 19 13:37:49 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 19 14:26:32 2012 -0700"
      },
      "message": "Improve JniAbort (and JNI tests).\n\nThis has been on my to-do list for a while, but it actually bit people\nin the ass yesterday. This change enables us to write a lot more (and\nbetter) tests, but for now I\u0027ve just improved the tests that already\nexisted.\n\nChange-Id: I04a18656de60b47e5a6b5777204c144209d1448e\n"
    },
    {
      "commit": "6cf23884730574ca364b357e823259f4993e6908",
      "tree": "50ad618096847b2dfe423ece38246891870c84ce",
      "parents": [
        "cee4d0c1c2faacf0eae748a24cc7e455e067d977"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 15 15:42:07 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jun 15 15:42:07 2012 -0700"
      },
      "message": "Simplify the default stack size handling.\n\nThe extra 16KB was just silly. We only need a notion of \"default stack size\"\nif there\u0027s an explicit command-line override.\n\nChange-Id: Ia63e00047a420546656ac8d2dad46789994157a3\n"
    },
    {
      "commit": "a168c83a1d247094e9efb1244b0f73a5f1e1ed97",
      "tree": "d0fb5a91a00227eda6b430fd64f2a1bff5271723",
      "parents": [
        "289be85116aaf7c48413858b5d0448868b4e61f3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 15:34:20 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 15:34:20 2012 -0700"
      },
      "message": "Convince tsan that the card table isn\u0027t a problem.\n\nAlso move the #include \u003csys/mman.h\u003e into \"mem_map.h\", since it\u0027s\ncurrently not possible to make any use of the latter without the\nformer. If we care about the pollution, we should offer our own\nconstants as part of our API.\n\nChange-Id: I01ec451d23c1d8afb8cb8a6660af8d9723faf5f5\n"
    },
    {
      "commit": "289be85116aaf7c48413858b5d0448868b4e61f3",
      "tree": "b9302aa89850df080b43d0ca0ddb3636463fb22c",
      "parents": [
        "08fcb2591b4e60eee41d0aab92f3bcc36784fa5a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 13:57:20 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 12 13:57:20 2012 -0700"
      },
      "message": "Include the crashing thread\u0027s name in crash dumps.\n\nChange-Id: I7fd821e3f390fde3a7280689292373d413218893\n"
    },
    {
      "commit": "225f5a1df25241babd16cdba54056b9e2cd166a2",
      "tree": "d3846f2f3a97a59124084d8fd503a3238346e66d",
      "parents": [
        "7664f5cd118b355a5fe0c7536cb48ac991ed2b62"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 11 11:23:48 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Jun 11 11:37:58 2012 -0700"
      },
      "message": "Don\u0027t pre-allocate one OOME per thread.\n\nThere\u0027s no associated stack trace, so we can share one between all\nthreads, saving a little memory and thread start-up time. Speaking\nof stack traces: dump the stack to the log at the point where we\nrealize we\u0027re not going to be able to throw an exception with a\nstack, so the developer has _something_ to work with.\n\nChange-Id: I2246d291855bd9b9ee13f2be5b1ce14f669e9410\n"
    },
    {
      "commit": "7664f5cd118b355a5fe0c7536cb48ac991ed2b62",
      "tree": "0564c36316e2aa0a892ff9914258433f14641a07",
      "parents": [
        "9eb5f03e0dd90ac25e01fcf81f832c50a1f09d2c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 08 18:15:32 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 11 11:17:13 2012 -0700"
      },
      "message": "Fix GC performance regression\n\nEnable CMS and fix performance regression due to recursive marking image spaces. Dependent on my java change list.\n\nChange-Id: I4765792aa8226e811ac158f04ab88217db755573\n"
    }
  ],
  "next": "0d39c12238499ca9ccc34d1532c443335e7c1044"
}
