)]}'
{
  "log": [
    {
      "commit": "0cd7ec2dcd8d7ba30bf3ca420b40dac52849876c",
      "tree": "525a0f99f9381156367c988133b5d51d5dfef6f7",
      "parents": [
        "f69863b3039fc621ff4250e262d2a024d5e79ec8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 23:40:20 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Jul 18 00:12:43 2013 -0700"
      },
      "message": "Fix cpplint whitespace/blank_line issues\n\nChange-Id: Ice937e95e23dd622c17054551d4ae4cebd0ef8a2\n"
    },
    {
      "commit": "fc0e3219edc9a5bf81b166e82fd5db2796eb6a0d",
      "tree": "5fc7f5b941724a62f8e3411df09fae431ff5e3cf",
      "parents": [
        "56d947fbc9bc2992e2f93112fafb73e50d2aaa7a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 14:40:12 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jul 17 16:49:05 2013 -0700"
      },
      "message": "Fix multiple inclusion guards to match new pathnames\n\nChange-Id: Id7735be1d75bc315733b1773fba45c1deb8ace43\n"
    },
    {
      "commit": "7940e44f4517de5e2634a7e07d58d0fb26160513",
      "tree": "ac90242d96229a6942f6e24ab137bc1f8f2e0025",
      "parents": [
        "5cd9e3b122f276f610980cbaf0d2ad6ed4cd9088"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 13:46:57 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 12 17:49:01 2013 -0700"
      },
      "message": "Create separate Android.mk for main build targets\n\nThe runtime, compiler, dex2oat, and oatdump now are in seperate trees\nto prevent dependency creep.  They can now be individually built\nwithout rebuilding the rest of the art projects. dalvikvm and jdwpspy\nwere already this way. Builds in the art directory should behave as\nbefore, building everything including tests.\n\nChange-Id: Ic6b1151e5ed0f823c3dd301afd2b13eb2d8feb81\n"
    },
    {
      "commit": "e701f48eb06fa59871412a11286429111270b211",
      "tree": "8026f7b25596642e142b67768047484a5307c149",
      "parents": [
        "5243e912875026f99428088db7e80cb11651d64e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 24 11:50:49 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 03 14:26:02 2013 -0700"
      },
      "message": "Clean up shadow frame.\n\nCreated version of GetThisObject that takes num_ins to get the object\nwithout having to get the code item again. Also using memset to clear\nthe registers on initialization.\n\nChange-Id: I02b255f0c47d2d3c55783f4c96dc93983015f019\n"
    },
    {
      "commit": "6613519990bdb5616f2858c146f162ef760f03d2",
      "tree": "9ea428594c2062b9e97a7735f0cdadc1e8e85d5a",
      "parents": [
        "807a25640d4f4de8143b160b3bb8f552ffbf6f4a"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 14 11:02:41 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 14 11:37:40 2013 -0700"
      },
      "message": "Allocate shadow frames in interpreter on stack instead of on heap.\n\nInstead of using new, the shadow frames are allocated using alloca.\n\nChange-Id: Idc92fbccf1fe7589ace7b97811b21a5c67c97fd2\n"
    },
    {
      "commit": "807a25640d4f4de8143b160b3bb8f552ffbf6f4a",
      "tree": "3972b74f95282a292f9fa8bfca82bd8bbe736cfc",
      "parents": [
        "cf479b20dc78d08af75fac7192a92f7c4b259d54"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Apr 15 09:33:39 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue May 14 17:48:52 2013 +0200"
      },
      "message": "Improve interpreter performance.\n\nBug: 8196227\n\nThis CL removes the use of DecodedInstruction to read instruction opcode and\noperands. It now directly access to each operand according to instruction\nformat (like VRegA_11x for accessing register vA with format 11x).\n\nIt also caches some information used for instrumentation like \u0027this\u0027 object\nand current method and add missing check about pending exception.\n\nChange-Id: I8c03c0aea9d75068b89e3cb2c8c12383d7928281\n"
    },
    {
      "commit": "167436311a08a65dea28dda079a137893821c9c7",
      "tree": "4754f47306a0ffa0ad97635015d9596b427dd425",
      "parents": [
        "c44f68fb6a6d55c0df28dd05b93d8906ec20bd08"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed May 08 10:59:04 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 10 17:16:00 2013 -0700"
      },
      "message": "Improve interpreter to interpreter invokes.\n\nThe interpreter constructs a shadow frame instead of arg array to make\ninterpreter to interpreter transitions faster. This adds a pointer to\nan entry for the interpreter to each method.\n\nChange-Id: If48911d3aa3470847b8548a9e92090b829f4f254\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": "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": "a7b0c42fee3e01e657634be2bba9318eeaec591a",
      "tree": "749397cd4c2aec7fe37370d0e51b942fa51e98a6",
      "parents": [
        "4c6aad2bbe24e5a1a95fc4d08a4b6bb4d1609669"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 05 16:19:39 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 05 16:21:15 2013 +0200"
      },
      "message": "Fix crash in stack walking.\n\nBug: 8537133\n\nThe G+ app throws an exception which leads to a crash when walking the stack.\nThe cause is the compiled code tries to set the top of quick stack while the\ncurrent managed stack is shadow frame based.\n\nThis CL adds the missing \"pop\" of the shadow frame and also some checks enabled\nin debug only.\n\nChange-Id: Iac04993b287abadee7a3c240e2e9cf1a07e50ce5\n"
    },
    {
      "commit": "11ffc2d02b7d979f26a8a04013fce3eb4f9a2816",
      "tree": "a54cdfe70f2bd45ea36bfd6cf9e7ad8783a29234",
      "parents": [
        "e9de2dd6bd51f9be3457b5e2ffdd97f457ddebcb"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Feb 01 11:52:17 2013 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Feb 01 14:45:01 2013 -0800"
      },
      "message": "Changes to LLVM to support deoptimization.\n\nAdded a magic exception value (-1) and a handler to transition\nto the interpreter. This is currently untested.\n\nChange-Id: I2f53135e7505c54355ecf7c579897f68bbdcbda3\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": "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": "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"
    },
    {
      "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": "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": "df1ce91ba97bc79a0637e5504b39318fb1c9f577",
      "tree": "06fee7c60611e94264b3b6b2b318fec899c6e450",
      "parents": [
        "af1b89281fd1f86efeb791b61f5a3f2031c70312"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 27 17:07:11 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Nov 27 17:19:09 2012 -0800"
      },
      "message": "Add alignment attribute to packed.\n\nMake packed objects 4 byte aligned or else GCC becomes paranoid and\nassumes only byte alignment on whole objects.\nChange CHECK in GetCalleeSaveMethod to DCHECK to encourage inlining.\n\nChange-Id: I79f1a13752492413c919b36f4e207e637647834f\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": "2fa6b2e2fc3d2a2fc27808ce518dc76b80ce369a",
      "tree": "daba5f5e64409452e31ae42e3b1b6b6491ccb007",
      "parents": [
        "6ed960d260d0ec3cbbef455c646ccd47f4e78119"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 17 00:10:17 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 26 16:12:59 2012 -0700"
      },
      "message": "Interpreter.\n\nThe opcodes filled-new-array and packed-switch aren\u0027t implemented but\nare trivial given that they are variants of implemented opcodes.\nRefactor Field::Get routines to take the declaring class in the case of\nstatic field accesses. This avoids a check on every use of a field.\nRefactor arg array builder to be shared by JNI invokes and invocations\ninto the interpreter.\nFix benign bug in const decoding in the verifier.\n\nChange-Id: I8dee6c1f4b7f033e6c003422c56e9471cfaccda8\n"
    },
    {
      "commit": "5438ad85f97c5f7fe030a490fd98841a34d3c961",
      "tree": "8f3ae8276e56e099121ff907af03579f94bd2fe0",
      "parents": [
        "c604d731730b43231f63040c8db1d58304da0cf3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 15 17:22:44 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 15 17:24:05 2012 -0700"
      },
      "message": "Add vregs to ShadowFrame.\n\nChange-Id: I870ab3c19c0e727f0e67b570eb55d45c3497d2ad\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": "b23a7729cf7855fa05345d03a4d84111d5ec7172",
      "tree": "5313e076b19387db3cbcac95225d3f098f19451d",
      "parents": [
        "137e88f798857321f4007631fdf052d2830ec2c4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 09 16:54:26 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 09 16:54:26 2012 -0700"
      },
      "message": "Dump maps inline in disassembled code.\n\nIn pursuit of Bug: 7250540, dump mapping and GC map tables inline such\nas:\n\n0x607333a8: f8dfe11c    ldr.w   lr, [pc, #284]  ; 0x6076416d\n0x607333ac: 1c05        mov     r5, r0\n0x607333ae: f8df0144    ldr.w   r0, [pc, #324]  ; 0x6003ba08\n0x607333b2: 9a0b        ldr     r2, [sp, #44]\n0x607333b4: f04f0b2f    orr     r11, pc, ThumbExpand(47)\n0x607333b8: 1c29        mov     r1, r5\n0x607333ba: 465b        mov     r3, r11\n0x607333bc: 2900        cmp     r1, #0\n0x607333be: f0008070    beq.w   +224 (0x607334a2)\n0x607333c2: 47f0        blx     lr\nsuspend point dex PC: 44\nGC map objects:  v2 (r7), v3 (r5), v6 ([sp + #84]), v7 (r6)\n...\n\nAs GC map and mapping tables are inline, don\u0027t dump them.\nAlso dump dex instructions before code.\n\nChange-Id: I9f0c04182a4cda6844027eae22e8151f2827dc99\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": "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": "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": "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": "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": "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": "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": "57b47f9b59b8850c5cf7ddba587cc0cb094ca878",
      "tree": "359c7720dc0dd5f7dc4f942d6ba2df35923b701d",
      "parents": [
        "46b8a62388f6ac5209371515e48915c32e6d62b9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 25 12:12:19 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 25 12:12:19 2012 -0700"
      },
      "message": "Break an unnecessary dependency.\n\nChange-Id: Ib0ee0f6c673e6a3b11ba0800395b4a2bca45c9e8\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": "a21039c3ae2b20e44ceb2735251c04d0aac89afd",
      "tree": "66b6fa437e7e4286b50bdef224500f9049633701",
      "parents": [
        "3d9d49fa2d025a041f57ea306ea551ef990177db"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 12:09:25 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 13:04:41 2012 -0700"
      },
      "message": "Fix a bunch more lint.\n\n(If you ignore the compilers, we\u0027ve got relatively little lint now. Fits on\na single screen.)\n\nChange-Id: I51389002894d4fd8cf46f79d2bac57079322a030\n"
    },
    {
      "commit": "efccc565091b3409ed1372615b4ea4e2f6c39323",
      "tree": "c0987fb6051a0c4abe2129dc3564c51274fab7e1",
      "parents": [
        "904667a58fa38437d1be6907beb3fb76d1982e0b"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 11 11:19:28 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Sun Mar 11 11:19:28 2012 -0700"
      },
      "message": "Frame layout change\n\nThis CL slightly changes the frame layout to remove an old unnecessary\nslot, allow for the inclusion of compiler-generated temps and\nunifies all variable offset calculation into a single function shared\nby the compilers and the runtime system.\n\n   o Update the GetVRegOffset function in stack.cc to understand the\n     new layout.\n\n   o Remove compiler-private offset calculation code and route\n     everything through the shared GetVRegOffset in thread.cc.\n\n   o Remove \"filler word\" that existed immediately after the last\n     Dalvik local.  This was there to address an initial concern that\n     I had about a single argument register being reused later as a\n     long.  Now convinced that it won\u0027t happen.\n\n   o Extend the old \"padding\" region to include compiler-created temps\n     that can appear to the rest of the rest of the system as\n     Dalvik registers.  The new temps will have Dalvik register numbers\n     of -2 and lower.\n\n   o Treat Method* for the current method as a special Dalvik register\n     denoted by reg number -1.\n\nChange-Id: I5b5f3aef9c6a01d3a647ced6ec06981ed228c785\n"
    },
    {
      "commit": "91bf6cd47174f5c17265320f7a350722720390a5",
      "tree": "f4823c09793162e00b2fdd43990e12f2837d7562",
      "parents": [
        "f05d0dd011d3dbcf78bf35d0771f67371f5f6b58"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 14 17:27:48 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 14 17:27:48 2012 -0800"
      },
      "message": "More debugger support.\n\nThis wires up method-entry events and fixes a bug in exception events.\n\nChange-Id: Ia7c46786a8073434fbb4546615072622f301ef84\n"
    },
    {
      "commit": "215f3144be114ac27002059330d903bf1ff5a592",
      "tree": "a1d274b36e26ddc922a6533bfc9ed2bcc3ce9db5",
      "parents": [
        "e65a6c99b0fd8908484b61c3c8f5a43cf0081f3c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 19 00:22:47 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 19 00:22:47 2012 -0800"
      },
      "message": "Even more Mac build fixes.\n\nThe stack one is a punt until I\u0027ve got an actual machine to test on.\n\nChange-Id: Ibb2132511f4c9f50f1f21651ca9ba7d5bed67e09\n"
    },
    {
      "commit": "e343b76af81a005ef64f5e75a555389fd9147dab",
      "tree": "f6ec517c56338244d06723c49d610b5d948c3fa7",
      "parents": [
        "5b245f344cbe8402cfe35c3a42988081e71208bc"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Dec 05 16:36:44 2011 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Dec 07 16:34:28 2011 -0800"
      },
      "message": "Stub to capture method entry/exit.\n\nAdded stubs to allow traceview to do method tracing. Currently only\noutputs to logcat, and a later change will generate the proper log file.\n\nChange-Id: Icaafc50e2eaf042ddc4d882011f7e8121bdd8b1c\n"
    },
    {
      "commit": "6d4d9fcb4f01e287ee29e81cd1c941ee5d11d379",
      "tree": "4c715bef86a3c5a47f9cea43c4a092cf4766ed4b",
      "parents": [
        "86b0010c79ef95b5333cd540b7d3af34a9f1a643"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 30 16:24:48 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 06 14:02:09 2011 -0800"
      },
      "message": "Reduce meta-data object sizes, introduce meta-data helper classes.\n\nChange-Id: Id14ad218f1c74c659701352fdf1a45bf6444daa3\n"
    },
    {
      "commit": "cccd84f1f972f1a260c3be418c8388a5d30cf59e",
      "tree": "659537150070497c1afea72e67466619301f0bc3",
      "parents": [
        "3325596fbbcc9a0a93937976b5c128fd34851670"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 05 16:51:54 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 05 16:51:54 2011 -0800"
      },
      "message": "Implement local setting.\n\nI\u0027ve also worked out how to test CreateString and CreateObject, but\nnot CreateArrayObject yet.\n\nAlso stop saying \"cnt\".\n\nChange-Id: I26569ff6c4fa356fb91e6c22cbf8ced95094fabd\n"
    },
    {
      "commit": "1bba14f20039b6e706b719fdd5754eb30088d014",
      "tree": "be62972c4ff6a9afca9cf05259b624f4cdadafd9",
      "parents": [
        "c1f143de3d0370a17a4561eb83bf10a5d7908aa3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 18:00:36 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 01 18:41:01 2011 -0800"
      },
      "message": "Implement getting of 64-bit locals (double, long).\n\nAlso implement the JDWP \"GetClassLoader\" request, used by jswat\u0027s \"classes\"\ncommand.\n\nAlso implement the JDWP \"exit\" request, tested with jswat\u0027s \"shutdown\".\n\nChange-Id: Ic8424a332151242211d8a772721deb3199b24682\n"
    },
    {
      "commit": "bfe487be25652c5456236661b9d9c3579d2296c1",
      "tree": "03e98cfc794946a85a5dfcc3170ae138f78da9b1",
      "parents": [
        "234ab15b00f8120282d1833e5d7480eca2e35a29"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 15:48:55 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 26 16:52:02 2011 -0700"
      },
      "message": "Makes objects known to the debugger GC roots, implements the THST message, and lets DDMS request stack traces.\n\nThis fills out correct data in all columns of the \"Threads\" table, and\ndouble-clicking on a thread shows that thread\u0027s stack.\n\nChange-Id: I48f63c3612e12d35269158dc3a283f07db28c8e7\n"
    },
    {
      "commit": "68e76526e98432625464022cb26f66b9ef6f5af4",
      "tree": "e657a389a34e5c14f0be60621b71124f15c2be4d",
      "parents": [
        "99f272349671e14ceada1cc795ce4c66a38ddd3e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 05 13:22:16 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 05 13:22:16 2011 -0700"
      },
      "message": "Start moving stack-related stuff out of thread.h.\n\nThis was in preparation for implementing \"SmartFrame\", which is back on hold\nwhile I finish finalization.\n\nChange-Id: I006c9cfbc34520b9b0a72972611036d908a1d84b\n"
    }
  ]
}
