)]}'
{
  "log": [
    {
      "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": "9bc81918a2c663339f7739d9cf968f354506e3a7",
      "tree": "372dc5beb2969c5467d1553cee583130085e442f",
      "parents": [
        "3cc3981018b0eb2c4f1b05ed620d8aad36098e7e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 21:43:36 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 11 22:56:17 2012 -0700"
      },
      "message": "Flatten interface entries into the iftable.\n\nAvoid an indirection when scanning the iftable by inlining the interface\nentry into the iftable.\nCopy the iftable for marker interfaces from parents to their children\n(for example for exceptions).\nDon\u0027t allocate method arrays for 0 element interface method tables.\n\nChange-Id: I8402960d4ddbe4b1ffd335ed4ce4b4825210fd0d\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": "a5b3024aed77a8204d5fb48ba7f763fb8c60fa76",
      "tree": "d9b046896b73519302c8b54a97a3abfa8ecfdf4c",
      "parents": [
        "a75a01313e801c53145df00bad1842d9f643c0a1"
      ],
      "author": {
        "name": "Bill Buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 28 07:19:44 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Sep 28 15:41:57 2012 -0700"
      },
      "message": "Split dex_pc\u003c-\u003enative_pc mapping table\n\nFirst of 2 related CLs - this one moves to a split table, a future\nCL will compress the table to save image space.\n\nThe current MappingTable mixes two flavors of entries: dex-\u003epc and\npc(return address)-\u003edex.  The problem is that we can have two\nentries with the same native pc address but two different dex pcs.\nThe reason is that when we go from native pc to dex, the native\npc is actually the return address from the previous call, whereas\nwhen we go from dex to native pc, the mapping refers to the first\nnative instruction of the sequence.\n\nPreviously, the first entry in the mapping table was the number\nof subsequent entries.  That will remain the same, but now\nthe second entry will be a count of the number of entries in\nthe pc-\u003edex section of the table.  The difference between the\ntwo counts gives us the number of entries in the following dex-\u003epc\nsection.\n\nChange-Id: Ibadb96cb50bf1f93e079dff3832130b9f9782723\n"
    },
    {
      "commit": "a1d7993c5469f828d369d97d36179cc3dcfd3e1d",
      "tree": "b569f2f7b33f6b694e5990ffd6d7234b84afcf59",
      "parents": [
        "4d980b0e085ea59bc243da3eff5ea84acc7afc24"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 00:33:21 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 27 00:33:21 2012 -0700"
      },
      "message": "Force inlining of ObjectArray::Get.\n\nHot array access used in Class::Implements, forcing inlining moves\nInstanceOfNot DalvikPerf benchmark from 416 to 176.\n\nChange-Id: Ibf06d46ed82a50dbdc5620ed2b81a3f3d173ad41\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": "e0f0cb3d855cb5e926452b5e1ec8457adc4e454e",
      "tree": "20d9b12d5c27761905c3e8aed007d53734b55556",
      "parents": [
        "23435d0df17e19fe312a08ff151464d4b9f83e81"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 28 11:26:00 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 24 14:05:08 2012 -0700"
      },
      "message": "Large object space\n\nThe large object space helps prevent fragmentation by putting large objects in mem maps insead of the alloc space.\n\nInstead of mark and live bitmaps it uses mark and live sets.\n\nChange-Id: Iada5db70b88a1572007d8af921fa353681a55dc7\n"
    },
    {
      "commit": "23435d0df17e19fe312a08ff151464d4b9f83e81",
      "tree": "3d0e4ad4d6f0f0852fa1736eaa0077399622263e",
      "parents": [
        "5a6220c9068f8401394664b56a725441dba17948"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 24 11:23:12 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 24 11:48:14 2012 -0700"
      },
      "message": "Assignability checks for SetFieldObject.\n\nAdds check to SetFieldObject that is enabled with VERIFY_OBJECT_ENABLED.\nThe check verifies that the object being set to the field is assignable\nto that field.\n\nFix bug that iftable was typed to be Object[][] but being assigned a\nObject[].\n\nChange-Id: I3d3744347f2dd142ca90db321ed876eaebfe7f7f\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": "9ffb039a548996bdc136ae0b2eb42b709d64f1cc",
      "tree": "5de92142b169253a4602a188ee37d97cd0c07081",
      "parents": [
        "18c24b6e05e7591069f1a2ac9c614b28fc0853ac"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 10 11:56:50 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 10 13:47:05 2012 -0700"
      },
      "message": "Don\u0027t retry verification at compile time.\n\nWe don\u0027t re-verify verified or erroneous classes at compile time. We\nalso need to not re-verify compile time verified classes or else the\nclass status can become misleading.\n\nThis should fix races seen in dalvik-dev builds since parallel\nverification was re-enabled.\n\nSome other code and logic clean up.\n\nChange-Id: Iff8987292064b825742c52e408d38c31eb25c526\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": "fd678beb171a4686a4f2d53ca4188a4ade8fa54e",
      "tree": "ab932e92d683d8033241bb2248da98e76249d3eb",
      "parents": [
        "5bfa60ffcc953340feb711ed05cf576ac821905e"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 30 14:50:54 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 04 14:58:14 2012 -0700"
      },
      "message": "Additional heap verification for the Gc\n\nThere are now two verification booleans which can be enabled. When these get enabled, it verifies that each live object only references other live objects.\n\nChanged SetClass to use SetFieldPtr to avoid having an extra card mark. This is safe since all classes are held live by the class linker.\n\nChange-Id: I005bb59e5cc8153a79d3ccb3d7b5cabd29fb4051\n"
    },
    {
      "commit": "87e552db94588455c081efd87dbde0cd96d02942",
      "tree": "02fc47be772d65e3ba4f2453f5d330b7dd111d1a",
      "parents": [
        "c747cffa950b8398cb8844d47e2253214c855750"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 31 15:54:48 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Sep 01 00:23:33 2012 -0700"
      },
      "message": "Make ICCE logic common, refactor throws.\n\nThere were 2 sets of ICCE logic in ClassLinker::ResolveMethod and\nMethod::CheckIncompatibleClassChange, merged into just 1 piece of logic\nin Method::CheckIncompatibleClassChange.\n\nMove Throw... routines into own file and make adding the dex location to\nthe detail message more thorough.\n\nChange-Id: I953dbfa3fed3767f35799b2f82b16637c437dbbe\n"
    },
    {
      "commit": "08f753d5859936f8d3524e9e4faa6cee353873ea",
      "tree": "5679a9ad8be6827e2a10de282cd28e3d000917de",
      "parents": [
        "b0b2be7688109cff548d2ddc8f02eecbad49ecd2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 24 14:35:25 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 28 11:34:56 2012 -0700"
      },
      "message": "Avoid compile time rewriting of dex code by verifier.\n\nCompile time rewriting of dex code leads to dead code that is causing\nissues with the LLVM compiler. Make instantiation and incompatible class\nchange errors be detected in slow path field and invoke logic so its\nsafe for the compile time verification just to softly fail the effected\nclasses.\n\nThis change places incompatible class change logic into the class\nlinkers ResolveMethod and consequently changes a number of APIs.\n\nChange-Id: Ifb25f09accea348d15180f6ff041e38dfe0d536e\n"
    },
    {
      "commit": "1b09b094a85e03f6ef5f687f58bb91c433273ba1",
      "tree": "6b039e520ee3b73e6ba5fb23954b9e01ecc68fc9",
      "parents": [
        "931c278aed62d7a97b87cf1bb9cfdd189e77eb24"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 15:35:52 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 15:35:52 2012 -0700"
      },
      "message": "Syntax clean up to make clang happy.\n\nChange-Id: I0984c395bbd1ee4b206eafd19915b6f68781dd16\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": "1c849e5badc85b6753dee0c0487729b2c0529f51",
      "tree": "5f5c602d60404f66d363fe1b4f619d89087fef33",
      "parents": [
        "78a5e15629e6591090582cd83b1ec1380a50a840"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 28 14:00:33 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jun 28 14:00:33 2012 -0700"
      },
      "message": "Clean up kAccWritable in the verifier.\n\nkAccVerifier was deprecated, instead memory permissions were used in its\nstead.\n\nMove dead code scanning in the verifier to be enabled when the results\nwill be logged.\n\nChange-Id: Id20e62eefe958bd577b86bd7396a439d7a01c1b3\n"
    },
    {
      "commit": "4284bb9e8b79add46e61da897fa02df3625888f7",
      "tree": "704478e602e229e460f9310f51490582697ab322",
      "parents": [
        "1fb3bd3559eb6fc34f7ba429adf9bb15c05939b0"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Jun 06 15:30:44 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 27 03:15:27 2012 -0700"
      },
      "message": "Add thumb-specific code for invoke stub.\n\nOn LLVM-based compiler, we are compiling the invoke stubs\ninto Thumb2 instruction set.  Thus, we should take care\nof the thumb offset for invoke stub as well.\n\nChange-Id: Ifc0b0099f2f035a64e89350086d6435e733224b8\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": "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": "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": "7a2a23a44d27f769718e28327af671f4e486c49a",
      "tree": "345a05da812927dafe13af82a4926257c3b368e9",
      "parents": [
        "95dfa6a8c522ad84a492d88666ea69fe7a3852c5"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Wed Jun 06 11:01:00 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Jun 06 21:22:11 2012 -0700"
      },
      "message": "Cleanup proxy stub compiler code.\n\nChange-Id: I2a5815cc2a38f5cea9e9c36e5e6db92c1a861eaa\n"
    },
    {
      "commit": "4825756c621ff709079ef3cd3f981e7036c0ebdb",
      "tree": "29f2db93457dc7eca2ccc95d20e0e159283e9edf",
      "parents": [
        "6c564a8138d1b2a230d55e1f5850a95b6fb42582"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 17:42:44 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 17:44:43 2012 -0700"
      },
      "message": "Auto-generate operator\u003c\u003c for enum ::art:Class::Status.\n\nThis requires a bit more work in the script to support\nenums nested inside classes.\n\nChange-Id: Id0e3561c3675214f74f47ac9f36ba82c41fa775d\n"
    },
    {
      "commit": "a9b3bf4b42d80cfcc27b6f8da7e28ced04a1619b",
      "tree": "cca2c257e6fdc90e520eddc5a43d7f113ead8cfc",
      "parents": [
        "ebe2e0f2e5145ef8433c1459b9cd60ecd853ee76"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jun 06 17:18:39 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jun 06 17:18:39 2012 -0700"
      },
      "message": "More fixes to make new Class status work properly.\n\nInitializeClass should only check for an exception from VerifyClass if\nthe class is erroneous. Also, the status ordering was changed so that\nkStatusRetryVerificationAtRuntime is after kStatusVerifying.\n\nChange-Id: Ibbfb1696dfee88cb8fcef5673f7e353f30a8fe5a\n"
    },
    {
      "commit": "f1e6b7c8cd78c02f4eb36574f0e417c4edc2b91e",
      "tree": "3ddb49fd0230cdef765ff7fb95f049a990cce018",
      "parents": [
        "662618fa6725631353a115993feaf2a9897b094a"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Jun 05 18:33:30 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Jun 06 13:21:14 2012 -0700"
      },
      "message": "Added new state and Soft/Hard error return to verifier for bad supers.\n\nMarket was failing because a superclass failed with a soft error, and\nthen its subclass would be rejected with a hard error. New states and\nreturn values were added, and now ClassLinker::VerifyClass allows a\nsuperclass to have either kStatusVerified or\nkStatusRetryVerificationAtRuntime as valid states.\n\nChange-Id: I72f23d25fa3bdcfd08f3113b091303535a327c14\n"
    },
    {
      "commit": "262e5ffa1d4b23f23af3dea762a71a0af4bfd4a9",
      "tree": "f8378de518cdf8a6067d74aaa5808624d8c7709f",
      "parents": [
        "2792fade8cb6554f81008b7635cec6ed0e914b3c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 01 17:35:38 2012 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 05 17:15:28 2012 -0700"
      },
      "message": "Enable card cleaning\n\nCards which do not map to image spaces are now cleared at the start of GC. Cards which map to image spaces are now processed when we go through all the dirty cards after recursive mark. Dirty cards are handled based on if they are either image space cards or cards invalidated by mutators during CMS.\n\nChange-Id: I6c2dc177ebd3f7dc7bbbbd19ae67221371851ebe\n"
    },
    {
      "commit": "eead4ac17ec9d5e750269a7d36bf6c36a6fd60c6",
      "tree": "911602ed79cde974cba5b6a18d57fc27987436ef",
      "parents": [
        "de479be99328d2113bf483e082c9ecf235a34d69"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Jun 03 07:15:25 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Sun Jun 03 09:12:30 2012 -0700"
      },
      "message": "Implement proxy stub for compiler_llvm.\n\nChange-Id: Id8ba59c62795d885a18b3cc634e7ef370a2d2f97\n"
    },
    {
      "commit": "7c6169de901fd0a39c8e0c078874dc25207f5b59",
      "tree": "dd7adafc6bcdb734c26a495e4bd923081ef637e7",
      "parents": [
        "736df0253aa65ebccb29ddb6443c31b7730ca3e5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 02 16:11:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 02 16:11:48 2012 -0700"
      },
      "message": "Port my AOSP QuasiAtomic rewrite to art.\n\nChange-Id: I9e8fe487b15083cfc441a90ec1ec0eb5e645229e\n"
    },
    {
      "commit": "110bcbafbbc4c27bf31d32732aab06f900c02653",
      "tree": "c7467d4871b658c06f5ba7c527cb2847ae28913a",
      "parents": [
        "fd8ea97f64fb6d32cbfe35729b816a22dfa18224"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Mon Apr 16 19:11:28 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Apr 16 04:56:13 2012 -0700"
      },
      "message": "Update frame size after the bitcode is translated into machine code.\n\nChange-Id: I59923a6cb1a1079d9cfe6d995fe0067ee1c49e80\n"
    },
    {
      "commit": "f24d3cedd395690f6904aaac80f84a100420f7a3",
      "tree": "1867ff0b6f3bebb4f611eaf72b05b14843c55d93",
      "parents": [
        "14fe6aea00598ba5d40d3e5bfa62f26a1c8cfdff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 11 17:43:37 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 11 17:43:37 2012 -0700"
      },
      "message": "Enforce the use of accessors on JValue so we can ensure sign extension.\n\nChange-Id: I34810af7661d8674c84707afe5cfdf9e2c233f8b\n"
    },
    {
      "commit": "1d878f3e1c39162496d7c061f7f6710e414d182b",
      "tree": "203a26165bff88dd352580c088c0775b953d363a",
      "parents": [
        "4b952e74b4b2efa15cecedfc643c212eaeac2cc7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 11 15:17:54 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 11 15:17:54 2012 -0700"
      },
      "message": "Add a default constructor to JValue.\n\nChange-Id: I7abe801b26f5003c480215c1f1ca64dfc07667ed\n"
    },
    {
      "commit": "dd361c9eab3284e76e2d07c2e7d371b0f5269942",
      "tree": "04dbcea72d196e5202aa71c2e54d7833b276f9b9",
      "parents": [
        "7e7fabccba62ec3d7c04b33e9b8fdb7981bdc833"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Apr 10 23:40:37 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 10 15:55:46 2012 -0700"
      },
      "message": "Fix 065 and 066 tests (NULL Method bug). Don\u0027t use Method in LLVM method compiler.\n\nChange-Id: I98e4e9b329448b1b72c3b5c9d712ea68dab624bd\n"
    },
    {
      "commit": "0f3c55331439970e01af67f80ac117c473bc04cf",
      "tree": "cfa28ad2a58af1ffddb0a2ce90443ad4606743c3",
      "parents": [
        "273cf36d199cf73de3cf61a559ad27c9d23f9825"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:51:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 30 14:51:51 2012 -0700"
      },
      "message": "Kill constants.h and fix some copyright headers.\n\nChange-Id: I51c04d731d6de035328781d8ac134ad6fcf49897\n"
    },
    {
      "commit": "57b86d47b66322693a070185fadfb43cb9c12eab",
      "tree": "81d53304a63a660a683917a19f7dd83723a397ad",
      "parents": [
        "68aefb06c449df0bd8a34f3491f7594ee3f9dd0b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Mar 27 16:05:41 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 29 11:51:44 2012 -0700"
      },
      "message": "Refactor runtime support.\n\nChange-Id: Id7470a4105838150d5ceb73ab2c8c83e739660df\n"
    },
    {
      "commit": "0ce131582cc78d1fcd918620e7da992df93fdff7",
      "tree": "4b3e5d7c0befc3a6ec93661d6f9f3cc25f5ea5ba",
      "parents": [
        "a43e0937c62719a405ce64888892facaead122df"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 27 19:45:50 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 28 11:28:54 2012 -0700"
      },
      "message": "Fix GetUtfLength to add offset to char array data.\n\nGetUtfLength isn\u0027t used by much, so I made ToModifiedUtf8 use it so it\ncan be exercised more. Also added a test to make sure it\u0027s working.\n\nChange-Id: I9d569642aaf2313cc70a2e22f631aec138e2e71b\n"
    },
    {
      "commit": "28f1a147d77ec772db98bed890b50a9ddcff2365",
      "tree": "bebca04cea429109260854778da197ae594450d7",
      "parents": [
        "1cb0ae742072b5ea2c7f677e6ad220ba01255dae"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Thu Mar 15 21:51:52 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 20:53:38 2012 -0700"
      },
      "message": "Implement LLVM version of jni_compiler to pass 17 jni_compiler tests.\n\nBecause we now have both shadow_frame and sirt (which is just for SirtRef\u003c\u003e\nin the LLVM version), we define a new function NumStackReferences() as follows:\n  NumStackReferences() \u003d NumSirtReferences() + NumShadowFrameReferences().\n\n(cherry picked from commit 18fe89a14d212da9ec6841f4d19d08482a9610b7)\n\nChange-Id: Idd95ee4276801b1555be87934cd9c4f33ab8a88a\n"
    },
    {
      "commit": "b25c3f6a86dc634ce44fb2849385b49465caa84d",
      "tree": "f359c72d821d913f78b977d8dde0fc7023afb511",
      "parents": [
        "fc9e6fabed89d948fa8c0e9d673e430076712c60"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 16:35:06 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 17:11:59 2012 -0700"
      },
      "message": "Fix cpplint\u0027s whitespace complaints.\n\nChange-Id: I11fd2db2badf7bd98e7866ca2155d8ef1e112408\n"
    },
    {
      "commit": "fc9e6fabed89d948fa8c0e9d673e430076712c60",
      "tree": "12e01ab3a937729d9482ab7fded1f1e0ab73dbd7",
      "parents": [
        "67d920071fe4a0aa8b8bc339e93b18276238c320"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Mar 23 15:14:29 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Mon Mar 26 16:06:01 2012 -0700"
      },
      "message": "Compiler intrinsics\n\nAdd intrinsic support.  Some of these appear to be of\nlimited value, so we may end up removing a few.  In general,\nthe instrinsics provide small, but measurable, gains.\n\nOnly Arm is currently supported, but most of these should\nwork for our other targets as well.\n\nThis is an interim solution.  My plan is to the intrinsic\nrecognition action up into the basic block building phase once\nwe start doing inlining.\n\nChange-Id: Ia2913f2cdecaa4e80469caf69dbf8e2f61d4506a\n"
    },
    {
      "commit": "67d920071fe4a0aa8b8bc339e93b18276238c320",
      "tree": "a665c6bdeecf149fc976b992c71543642b44e464",
      "parents": [
        "16da17c8d39a813f1b880f576fd2f8bc98ac4a9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 15:08:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 15:08:51 2012 -0700"
      },
      "message": "Add a compile-time constant bool equivalent to !defined(NDEBUG).\n\nThis makes some code slightly less awkward.\n\nChange-Id: Iafd359dd0baa65510ed9510a7d93ee01605f51e4\n"
    },
    {
      "commit": "81ff3184e7eb8de4605c7646674ea4f9fa29b5f3",
      "tree": "eaf443fcc575d3a793af3ab3e435211981a1c1b1",
      "parents": [
        "5147733292cd0b80ca7da3099e43cc549d67526b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 23 20:35:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 26 08:38:34 2012 -0700"
      },
      "message": "Nomenclature improvements.\n\nChange-Id: I809ab04b6ee74bb8141791e1f3f5d7e3f4efb61c\n"
    },
    {
      "commit": "2ed52c4419dd537c98cd7898bc8bdcf8826b8940",
      "tree": "e90598e39df514d8a86cbb160288b4fd563eb1c1",
      "parents": [
        "051c9fc1de07bbc265af38cf60f061394163c68f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 21 16:56:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 21 16:57:43 2012 -0700"
      },
      "message": "Stash the directly-implemented interfaces in Proxy so we can implement Class.getInterfaces.\n\nAlso extend test 044 to spot this (found by a libcore test).\n\nChange-Id: I50019db49c549f045d94173c3ed9ae81f05ef858\n"
    },
    {
      "commit": "16da88c70c4bdbd97b8482be8b42103a52f22d59",
      "tree": "905c1bfc68c7a301706a5cd2b7a3d7d9084a06b3",
      "parents": [
        "b41b33b5e5f08083e35f84818b4f44d26feb4a8b"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 20 10:38:17 2012 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Tue Mar 20 14:36:11 2012 -0700"
      },
      "message": "Custom codegen for small frameless methods.\n\nAdded a general mechanism that will allow pattern matching of\nsmall methods and (generally) frameless code generation.  Prevously,\nall frames were at least 16 bytes, not you can have zero-length\nframes (and thus some old asserts had to go).\n\nChange-Id: Ic786940a602e25b48cbc317ac601ac84cc307762\n"
    },
    {
      "commit": "f582258f0e296223a091fd64231a203ad71e9649",
      "tree": "23049122f075220421803a1745cf634337360a40",
      "parents": [
        "a7c12688da57ea052e127776ad3043ca5079488d"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 19 22:34:31 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Mar 19 22:59:13 2012 -0700"
      },
      "message": "oat file patching\n\nChange-Id: Idbbdf19f3a77498d79d043fd33ca12ce39cafbb7\n"
    },
    {
      "commit": "76e3694db07d068d1a5e0ae7088b6f7bff6e9d43",
      "tree": "93f1864b147f2854f1917e4b2a225bd43b62834f",
      "parents": [
        "907a0dbe5bbb536391158e8188b4c064c8898eff"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 13:44:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 13:44:56 2012 -0700"
      },
      "message": "Clean up the trivial uses of __attribute__((unused)).\n\nMy usual objection would be that this leads to breakage, but since we compile\nall variants all the time anyway, I think this is probably the better choice.\nIn particular, it means we can notice when no variant needs the parameter any\nmore.\n\nChange-Id: Ia7e5c1a58597d9f9ff6f337c3d9cf00ecdf4c208\n"
    },
    {
      "commit": "1bac54ffa933fbe9b92b62437577f2f4583eff1a",
      "tree": "a27134343ed3cd45a286c3a68b9a4469e70f13e7",
      "parents": [
        "96970cdab3e28511322ce37fa578f6eff8931d72"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 12:48:31 2012 -0700"
      },
      "message": "Fix all our unused parameter warnings so we let GCC report them.\n\nThere were a couple of genuine bugs here (fixed), plus there\u0027s a missing\nfeature in trace.cc that I\u0027ve just added a TODO for.\n\nAlso note that I haven\u0027t touched the compilers; this warning is still\nexplicitly disabled for that code. I\u0027ll do that when there\u0027s less going\non in those directories.\n\nChange-Id: Ic3570bf82411a07c7530bfaf1995ac995b9fc00f\n"
    },
    {
      "commit": "77405796564c6c1353807cda18b28678a719bd68",
      "tree": "948781c769760d71c7aff4e8db57aa5a9e311372",
      "parents": [
        "f8bbb8448c733e9e3ad43aad69774c37888329b1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 15:22:12 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 15:46:59 2012 -0700"
      },
      "message": "Rewrite the invoke stubs to use JValue[]s.\n\nThe tests were only testing the static stubs, so extend the tests to include\nnon-static stubs too.\n\nAlso add just enough of an ARM disassembler to disassemble the invoke stubs.\n\nChange-Id: If71dfb66b8b8188f9d871914f0eaf1013c9993b9\n"
    },
    {
      "commit": "f8bbb8448c733e9e3ad43aad69774c37888329b1",
      "tree": "b0f488b0d95c1fe79bc0473e4a98670ceb905139",
      "parents": [
        "98d39884f64d13aada5e716bb38e2f069c7ad0a7"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Mar 14 03:01:42 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Mar 15 03:30:20 2012 -0700"
      },
      "message": "Add code size to oat files\n\nChange-Id: Ic2519551864dd7090ba98f2fc92318f95f92947f\n"
    },
    {
      "commit": "b3bd5f07884f5a1f2b84224363b1372d7c28d447",
      "tree": "6e2997ab64b4a4f32d7ef539a4649adc736ea553",
      "parents": [
        "ddbd01ac1660d57416879d5a576482f1048dde64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 08 21:05:27 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 15:37:46 2012 -0800"
      },
      "message": "Refactor the compilers out of libart.\n\nThis builds three separate compilers and dynamically links with the right one\nat runtime.\n\nChange-Id: I59d22b9884f41de733c09f97e29ee290236d5f4b\n"
    },
    {
      "commit": "5b8b1edc803a85bb3172560826d6a23fb23c3452",
      "tree": "43fe7644011ad6b8c7175ee9748f5fd27e0d27af",
      "parents": [
        "31a4a6f5717f645da6b97ccc1e420ae1e1c71ce0"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Feb 23 23:48:21 2012 -0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Thu Mar 01 11:44:02 2012 -0800"
      },
      "message": "Implement Link-loading and pass 62 tests in JniInternalTest.\n\nThe passed tests include the 12 originally ARM-only tests. Now it works\non x86 as well if defined(ART_USE_LLVM_COMPILER).\n\nChange-Id: I03092637fa4f0979ca77e0cac06e5d31a867e465\n"
    },
    {
      "commit": "a15e67d5ee5aa9615596cee2be42c2b2caf128c6",
      "tree": "cd126ce1e809688011385d521abf19c9c302d1b1",
      "parents": [
        "9b5ee8837b4864b6ac114e9fead17bdeb04c6d55"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 28 13:51:55 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 28 15:21:27 2012 -0800"
      },
      "message": "Remove pad word from arrays\n\nThis change removes the 4 byte pad from all arrays except longs and\ndoubles. It saves 76kb from the boot image, and will also reduce the\nsize of arrays in the heap (and thereby reduce garbage collection).\n\nChange-Id: I3ff277d5bf14c57c0f7552215818e588ec6cc275\n"
    },
    {
      "commit": "1984651929744dd603fd082e23eacd877b9bc177",
      "tree": "ffa10973a88f0f2743f3fbfaf5e7e4235d5f262d",
      "parents": [
        "f3c01c530ab3a645bd5a980522df4d396dcbf228"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 24 11:42:47 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 27 16:08:56 2012 -0800"
      },
      "message": "Invoke static/direct dispatch change.\n\nThere was a subtle race in static/direct dispatch via the code and methods\ntable. This patch removes the table in preparation of architectures like\nx86 which will more aggressively sink loads.\n\nRemoves unused fields, code.. Brings back resolved methods table\nshort-cut and associated fast paths to use this (such as in Proxy). Adds\na resolution method that is used as the trampoline for static and direct\nmethods.\n\nAdd source file and line number to Throwable::Dump.\n\nMethodHelper knowledge of runtime methods.\n\nChange-Id: Ieae1b74c24072e6327a5bb2cad466f04e3c46c4d\n"
    },
    {
      "commit": "60db5ab3a2e480db9236325a14cb5a867881d8bb",
      "tree": "c4a514941c2d41b82581d2c3d83ecb742e575231",
      "parents": [
        "6a91799974e992e915facb9d9372dc8847a09a64"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 20 17:02:00 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 20 18:15:35 2012 -0800"
      },
      "message": "SIRT work around JNI support for legacy apps\n\nLegacy apps may be broken and expect a jobject to equal an Object*. This\nis a work around to support outgoing SIRT arguments being converted to\nbe Object*s. It steals the unused GC map pointer on native methods.\n\nChange-Id: I8fb3701b0cdf15be9e8f9b722e47386505482666\n"
    },
    {
      "commit": "c8b306f5221658c7e4b5516be8917dc8c9288e7e",
      "tree": "d8d3499030152361129f002e99d2b4a10d36660d",
      "parents": [
        "6c6f12d0ed64e0f4bcbb7139eca8fe564302f385"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 17 21:34:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 17 23:52:39 2012 -0800"
      },
      "message": "Run time illegal access checks on static and direct methods\n\nFixes test 075.\n\nChange-Id: I28b20451dcae8000dc0e2cb9068dfa5166659d43\n"
    },
    {
      "commit": "7b0c5b4739e3d9df11caa883de01cc5f4ea30753",
      "tree": "b8754300b1de8f3787803aff764463cb1c2879de",
      "parents": [
        "283ed0d9db3084d0fee46d47cd73bf84bd0cfc16"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 16 15:29:07 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 16 16:05:30 2012 -0800"
      },
      "message": "Various dex index tweaks to improve verifier performance\n\nChange-Id: I9369443495b69fc8092f6a69118691c056db3188\n"
    },
    {
      "commit": "fca7e87c4831ac52073bdd0b2c7342488ce286d8",
      "tree": "058bbda5b4ea617ebef826f2e4b4fd08773e84d6",
      "parents": [
        "53a25dba44cb38d83931d47613cfe5b2abc5c299"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Dec 20 20:08:22 2011 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Feb 15 23:30:22 2012 -0800"
      },
      "message": "Add inferred register category map to Method object.\n\nChange-Id: I69456c79eb3ce3df1924bffe4db5314b0552f1de\n"
    },
    {
      "commit": "16f93671923979733cb46fc6f053c8f65754d5eb",
      "tree": "1bcb06e29786c5c93e0dc588b4ad6e8e94de0034",
      "parents": [
        "b305770f45e9cec66c3bdf792c4e7fa9cff5ec6e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 14 12:29:06 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 14 14:39:26 2012 -0800"
      },
      "message": "Remove dexCacheResolvedMethods, address Proxy issue\n\nChange-Id: Iab8c7edb954d241bd5a92260db07696b9559155f\n"
    },
    {
      "commit": "b5d6a4983732387dd9fe9f0024d19a766819755d",
      "tree": "c7945cf6ebf6ebe0438421758884abb7ad240046",
      "parents": [
        "42882d1ae5a297b037f560a6ec190be1a584579d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 14 04:00:51 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Feb 14 04:00:51 2012 -0800"
      },
      "message": "Revert \"Remove dexCacheResolvedMethods from Method/Constructor\"\n\nThis reverts commit 42882d1ae5a297b037f560a6ec190be1a584579d"
    },
    {
      "commit": "42882d1ae5a297b037f560a6ec190be1a584579d",
      "tree": "b702812d71828f757872b5cd1b915f2baf74a251",
      "parents": [
        "60f83e3274739317d8c3a1b069cebc6bf1e40f29"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 19:18:37 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 22:00:50 2012 -0800"
      },
      "message": "Remove dexCacheResolvedMethods from Method/Constructor\n\nThis short-cut is no longer directly accessed via compiled code.\n\nAlso fix compiler_test which requires isFinalizable to be explicitly\ncompiled when Object.\u003cinit\u003e is handled in managed code.\n\nChange-Id: I028cf0fc8fa25a44df4adacc7c686ade413a5a42\n"
    },
    {
      "commit": "a32a6fd4a781262dff4fec102da053d16b7ef6c0",
      "tree": "5c2a35aec522902cfdf508a74898ee091c91f7ab",
      "parents": [
        "d08547a802e6dbb71fde3ed3dac9aa0b03a5b17b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 06 20:18:44 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 13 15:41:26 2012 -0800"
      },
      "message": "Runtime access checks on virtual method calls\n\nAt verification time we may not know that an illegal access or method\nnot found exception should be raised and so we defer the decision to\nruntime. When the decision is deferred we perform an appropriate slow\npath method invocation that can check for access violations.\n\nThis change also attempts to reduce code duplication, improve the\ndiagnostic information in exceptions, clean up field slow paths slightly\nand to move the slow path calls lower in the Thread class so that they\ndon\u0027t effect the offsets of data items when calls are added or removed.\n\nChange-Id: I8376b83dcd7e302cbbddf44c1a55a25687b9dcdb\n"
    },
    {
      "commit": "53a77a5d06ce865d0524bf3a0dd9b586caa9bede",
      "tree": "dbdf636acdb6bf8f67333fb15b54f279183c66c4",
      "parents": [
        "1bddec3a6521f16df37499754000a3b1787a52e9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 06 09:47:45 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 06 09:49:41 2012 -0800"
      },
      "message": "Remove Method\u0027s dex_cache_resolved_fields_\n\nWe no longer generate code to access dex_cache_resolved_fields_ and the\nslow paths can access the dex cache with extra indirections. Removing\nthe field saves image space.\n\nThis change also requires Change I2e16e99d\n\nChange-Id: Ic64df15f3982a2655942d7cd5157eb497f70af7d\n"
    },
    {
      "commit": "5167c97a4f672ba821453418e3943988fabbfc43",
      "tree": "7046f25582fd55e6bb4b19bb2fb7781b0d6c60a6",
      "parents": [
        "f2e08b29d3e49f491cd1c29c226154e92380c179"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 10:41:20 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 03 10:49:06 2012 -0800"
      },
      "message": "Improve debug-ability of native method registration\n\nIf we fail to register a native we construct a stack trace which needs\nThrowable and stack trace support. Registering Throwable\u0027s natives first\nand making Throwable a root supports this. Previously we could only\ngenerate a stack trace when thread start up was complete.\n\nChange-Id: Icc7c1657988c7f36aceb1d4f3e61e7218f55e055\n"
    },
    {
      "commit": "1c5eb704b61511cdc649cad032d29940857c9fe9",
      "tree": "9950f70d497a58cb1d07712a90b72ce19d783eb5",
      "parents": [
        "02fbef0e356ca43b2032044f870d59de4a4ae92a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 09:18:34 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 01 10:42:11 2012 -0800"
      },
      "message": "Move super class verification to class linker\n\nVerify super classes in the class linker and chain exceptions when super\nclass verification fails. Add support for dumping chained exceptions to\nThrowable::Dump. Improve verifier error detail messages.\n\nFixes problem where super class verification would leave a pending\nexception that would be tripped over elsewhere.\n\nChange-Id: I3ca850fc66674c8601132d7ec40bebbf9c108ae3\n"
    },
    {
      "commit": "4d9716c19cc25911e639272048abd0d6702bb082",
      "tree": "fdd9d47f7ebb3bcbb19224a34eb7216f3d212821",
      "parents": [
        "0f09676a8f61809c474e71b4a677093615bfba19"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Jan 30 01:49:33 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 31 12:01:50 2012 -0800"
      },
      "message": "Class::SetStatus(kStatusError) now checks that an exception is pending and uses it to SetVerifyErrorClass\n\nChange-Id: I02f4adc51ac6da88d4969655fa828f93941c4c0a\n"
    },
    {
      "commit": "d418edaf4df0a410d678389e171ac6d96ae2af15",
      "tree": "d90fedd6af5fb69e9e983a68723cdded97354ed0",
      "parents": [
        "160f3e20e81a9137e75a18a8613c09c51c8c004f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 30 12:14:28 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 30 15:41:32 2012 -0800"
      },
      "message": "Class clean-up and compute name during image writing.\n\nName is computed lazily, if this occurs for an image class it will cause\na card mark and for that part of the image to be scanned every GC. By\nprecomputing the name we avoid the GC overhead, speed up some reflection\noperations, save allocation heap footprint at a cost of ~300kb in the\nimage.\n\nRemove and reorganize reflection native methods to agree with patch to\nlibcore.\n\nChange-Id: I4b621be4a9d9bb381a647963066c3305ce40745f\n"
    },
    {
      "commit": "30fab40ee5a07af6b8c3b6b0e9438071695a57f4",
      "tree": "86514e3535c8b23cf52249a202076b59ac532021",
      "parents": [
        "f3778f66879fa038a7c9ebe46d5bc4167ddef7d8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 23 15:43:46 2012 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jan 26 17:32:10 2012 -0800"
      },
      "message": "Upgrade to latest dlmalloc. Refactor Heap and related APIs to use STL like naming.\n\nWe fail assertions in the existing heap code, as does Dalvik. This refactoring\nis to clean the heap and space APIs and to reduce duplication of data\nand thereby solve a failing assertion in the card table.\n\nThis change also wires up clearing of soft references including before\nout-of-memory errors are reported.\n\nIn doing this change it was made clear that mspaces are buggy (and\nviolating invariants with the garbage collector). This\nchange upgrades to an un-Android molested version of dlmalloc-2.8.5 and\nimplements a version of the mspace morecore routine under ART control.\n\nrun-test 061-out-of-memory is updated for current heap sizes.\n\nChange-Id: I377e83ab2a8c78afb9b1881f03356929e2c9dc64\n"
    },
    {
      "commit": "ff17f1fd3ff32f93e45588eb2b158832d73f9afa",
      "tree": "deab04f6a2ad7f1dbaf0e6be266512d663e3dd91",
      "parents": [
        "a7679b67ca945194fa2442015e606cd250f0de2b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 18:12:29 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 24 18:12:29 2012 -0800"
      },
      "message": "Remove various bits of lint.\n\nChange-Id: I5f8f61766d2add7fd7ff40d463ea03cb20515988\n"
    },
    {
      "commit": "11d1b0c31ddd710d26068da8e0e4621002205b4b",
      "tree": "8d9c9c0dd5741214466775b86069032d609fd91c",
      "parents": [
        "bbdb1437f55948e5395b4dcb306e25605539a444"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 23 16:57:47 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jan 23 17:26:10 2012 -0800"
      },
      "message": "Reduce namespace pollution.\n\nThis leaves us with just the mspace stuff and three libdex functions to clean\nup. We deliberately expose the JII API, and I don\u0027t think there\u0027s anything we\ncan really do about the art_..._from_code stuff (and at least that starts with\n\"art_\").\n\nChange-Id: I77e58e8330cd2afeb496642302dfe3311e68091a\n"
    },
    {
      "commit": "e7d856b911222aa000ca2be0f8f63f5b292141c3",
      "tree": "9628ef94e879c7ae026dd37ec05e1ab3251d830a",
      "parents": [
        "a51dc5b0a57fdf0574c069a15e065ccc96958f02"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Jan 11 18:10:55 2012 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jan 17 17:42:34 2012 -0800"
      },
      "message": "Add GC map to oat file\n\nChange-Id: Ied0462c711a09e2542f231c3b2fa31239958bd28\n"
    },
    {
      "commit": "eaa200d9b8a28f1a23b6ded7875d2b8fca555254",
      "tree": "f95f311b5909e680ad114825b33d1b507487e990",
      "parents": [
        "a10df0fd98f6ff81c5ec2639fb4e385b39c28845"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 05 16:30:31 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 05 16:35:50 2012 -0800"
      },
      "message": "Remove unnecessary casts.\n\nAlso turn up strict-aliasing warnings to the maximum (and default!) level.\n\nChange-Id: I97f1d2c180ce515719f8c92d54b8a6ae6a6942c4\n"
    },
    {
      "commit": "90040194a1b5c441dde5c8a8b6d637c23972e0f3",
      "tree": "729962d80228061d6f186c579440893c8eacd2b1",
      "parents": [
        "6b0870dfaaa2e69a900ad7ed88e4e1d3697445aa"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 16 08:54:29 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Dec 16 09:29:04 2011 -0800"
      },
      "message": "Fixes for verifier access checks.\n\nClass::CanAccessMember ignores the class we\u0027re checking access for,\nexcept for protected fields. Document this behavior.\nWhen getting static and instance fields perform the same class access\nchecks we already perform for methods.\n\nChange-Id: I00719de2e346e9f3faa199e1976151493708fff7\n"
    },
    {
      "commit": "c2b4447ae9c0c1e77595620acac6508999df6698",
      "tree": "20192c2044d004b364a7f8aa6c9cd3a272e3e706",
      "parents": [
        "fbef9462e3bf2301dd5b337d351b6b70f7e31bc8"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 14 21:17:17 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 15 06:45:50 2011 -0800"
      },
      "message": "Fix for test 044-proxy\n\nProxy implementation was incomplete following meta-data refactoring,\ncomplete this change.\n\nChange-Id: Ic0567bdef373dbae17031a30aabc779027173229\n"
    },
    {
      "commit": "f239165736be1ae0460ef042195c579a7becec11",
      "tree": "1bf297537287014cf3e1b84565ebaa308a432bd9",
      "parents": [
        "4d3c95bd7ee7d67993dc09617ee4138fa33af70f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 14 12:50:52 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 14 12:50:52 2011 -0800"
      },
      "message": "Improve documentation on CanAccessMember\n\nAlso move the quick identity check earlier.\n\nChange-Id: Ie1c913ab4f69995d4500c995b0b7a4aead51c2a8\n"
    },
    {
      "commit": "4d3c95bd7ee7d67993dc09617ee4138fa33af70f",
      "tree": "722cbcc7b71439d29a8723b8185eff9039c419aa",
      "parents": [
        "b067ac2fe225c76fc9eb9434ef62cbb797bfa425"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 14 07:46:38 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 14 07:46:38 2011 -0800"
      },
      "message": "Fix for 075-verification-error\n\nChange-Id: I907a9b0baaedb86a40b9baf18e0f21a43d660bd2\n"
    },
    {
      "commit": "b067ac2fe225c76fc9eb9434ef62cbb797bfa425",
      "tree": "7afaac5b70dbcc2515f769b0d000240b1f20f4ab",
      "parents": [
        "91250e0c3fb0ad758b9b97042a3fa86d5ae76763"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 18:05:09 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Dec 14 07:03:49 2011 -0800"
      },
      "message": "Fix for 073-mismatched-field test\n\nART distinguishes between static and instance field resolution whereas\nJava doesn\u0027t. Interface static fields bind more closely than those of\nsuperclasses. Implement field resolution code for the verifier so that\nit can determine incompatible class change errors when a static field\nbinds before an instance field.\nAlso don\u0027t search all iftable interfaces, search them in superclass\norder (as the specification dictates).\n\nChange-Id: I43b45bada8b9099ad805b244be10833d59bacfe3\n"
    },
    {
      "commit": "5fc5a0c8801028195ead49910b98a3490aa506ea",
      "tree": "20228918159eeb1b32ec05850d1761111bc4bf4f",
      "parents": [
        "96835e7b2b6c1e06e747cf8cf97a206fb902205a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 10:39:49 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 13 10:39:49 2011 -0800"
      },
      "message": "Fix VM test 065 and 066\n\nFix bug in setting the VerifyErrorClass, set this when super and\ninterface types are incorrect.\n\nChange-Id: Ib779e3e5c5aaa8ae4f83a673194f27bb31b37d13\n"
    },
    {
      "commit": "7b3cdfcca472b779cf8745fb8460935e56229f11",
      "tree": "e74e88286c9f121ed1312faece45981ba4e0b14c",
      "parents": [
        "6f1dfe415019de95f0305de66b3afb40005fe382"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 08 21:28:17 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Dec 08 21:45:49 2011 -0800"
      },
      "message": "More JDWP robustness.\n\nWe pass a lot more JDWP tests with this (fewer total failures than dalvik,\nbecause although dalvik implements more requests, it assumes that the debuggers\nonly send it valid input).\n\nI\u0027ve also added some of the missing constants (there are tests of modifier 12,\nSourceNameMatch, which was added in Java 6).\n\nChange-Id: I502e87b50fb305c5c8b061421339c8ceab104640\n"
    },
    {
      "commit": "6f1dfe415019de95f0305de66b3afb40005fe382",
      "tree": "93a39a7cd459a25bfe6b30fbf105518a549dc593",
      "parents": [
        "c2a2f295a15492ebbdb2613df97f9f7d331310e3"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 08 17:28:34 2011 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Dec 08 17:52:16 2011 -0800"
      },
      "message": "Ensure referenced catch block exceptions are in the image.\n\nThis addresses Bug: 5732744.\n\nChange-Id: Ia9319b821f94bb27a11358f11b5473bb405277bb\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": "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": "68fdbd07fc2b8856905e06f3cc945b046c3bfcd3",
      "tree": "b8982040e6a2fe250b3db127ea0b1dfdba552616",
      "parents": [
        "8aa6fc39f5cc0279d4ba2ee064de9758560dfedd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 29 19:22:47 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 30 12:11:23 2011 -0800"
      },
      "message": "Return values for locals, so \"locals\" can show them.\n\nAlso implement a couple of other JDWP commands so jdb can show the length\nof arrays and the value of strings.\n\nChange-Id: Ib2a4dc2ee784ee10bdb924e91b0150aa8a96845d\n"
    },
    {
      "commit": "c129a6b44193ac3a872f852a69d336e0e7ed8640",
      "tree": "ff5b5503aff4e5173c570b2e471d2df0895b7b2b",
      "parents": [
        "434424a3f60f2129aaa1780ac6a5c2618bc789e0"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Thu Nov 24 14:47:46 2011 -0500"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Thu Nov 24 14:47:46 2011 -0500"
      },
      "message": "Make methods and fields accessible by default in art.\n\nThis also fixes a corner-case bug where calling Field.setBoolean()\non a non-boolean field would crash the runtime.\n\nChange-Id: I2f6693e3c3fe3bf23b4761335300506b3fbd3008\n"
    },
    {
      "commit": "dbb4079eb1e7d7738c81a97c8dd2550885c1093a",
      "tree": "733d5c08027ae65fb89132609d2aec9e6e2d747d",
      "parents": [
        "25e79a5e9ecd4bf30e0ea90a7dd4313f7f44bc3c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 18 17:05:22 2011 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Nov 18 17:47:00 2011 -0800"
      },
      "message": "Start implementing jdb \"locals\".\n\nThis lets us show the names and types of the locals, but all the values\nwill show up as 0/null. We\u0027re going to have to walk the whole stack and\ntake callee-save frames into account to do that right.\n\nChange-Id: Ic6e115513b6e65ae7ed4b7274e70bc514e83190a\n"
    },
    {
      "commit": "0571d357843c53e042f370f5f2c2e9aa3fe803a9",
      "tree": "197e5b1c0b1bf0ee8cc0e1960470d0a8d203b4af",
      "parents": [
        "33dc7717cd16592bcc825350bea6305be9eb2ea1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Nov 03 19:51:38 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Nov 13 11:57:18 2011 -0800"
      },
      "message": "Refactor the use of Method by the compiler.\n\nRemove the dependence on the Method object in dex2oat, allowing lazier\nresolution.\nIntroduce new find and iterators in DexFile to simplify common\noperations and avoid misuse of class data items.\n\nChange-Id: I39fb8252190f543d89d8b233076355cec310fe08\n"
    },
    {
      "commit": "1121e0b619d0c9df36c57396b2234a9d570b4923",
      "tree": "958c023685f88bcffc7626eb3bc7f8e37db1aa02",
      "parents": [
        "9717051c5c961d7b2d809654adc2a135fca8e6db"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Mon Nov 07 15:37:42 2011 -0500"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Mon Nov 07 18:03:57 2011 -0500"
      },
      "message": "Wire up hprof.\n\nI tested this with test 074-gc-thrash, which creates a .hprof file\nthat can be read with hat.\n\nChange-Id: Ie75b7a7cf3c2ee32189df47ab0129e99449ebc6c\n"
    },
    {
      "commit": "64155032b391fd7132bdd04ec0669135ae1176a2",
      "tree": "f5379d9cb293c9f5b370c40fe6c0df19fe24b2a3",
      "parents": [
        "f8a199cb0c53b7a6f0def21ec5b462992d93746b"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Nov 03 17:56:34 2011 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Nov 03 18:26:34 2011 -0700"
      },
      "message": "Added caching of indexes for annotations.\n\nThis is a multiproject change, along with changes to libcore and\nframeworks/base.\n\nChange-Id: I333ffd264f58667f1ee25845e1de12ca99a8c299\n"
    },
    {
      "commit": "5d76c435082332ef79a22962386fa92a0870e378",
      "tree": "db8fdd7bfba3617494157b483e9df979f76dfdcc",
      "parents": [
        "4b6fe5a568ca2bc5e8fa110bf7af692cab220a15"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 31 21:42:49 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 02 01:25:57 2011 -0700"
      },
      "message": "Mark non-image spaces and use write barrier for image spaces.\n\nDon\u0027t mark string and class roots that are in the image, alloc space\nreferences will be caught by the write barrier.\n\nChange-Id: Idcf9e4ede3b83556d4f8a01276273726dc6eea46\n"
    },
    {
      "commit": "c4824e60fef6cb9fdf0f8442408338f4141e09de",
      "tree": "61a25e09218cfb815875076a54fe351b3a426b10",
      "parents": [
        "387b699e3dc55309023ae2427a76a1ca1d51b0cd"
      ],
      "author": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Nov 01 14:39:04 2011 -0400"
      },
      "committer": {
        "name": "Jesse Wilson",
        "email": "jessewilson@google.com",
        "time": "Tue Nov 01 14:53:54 2011 -0400"
      },
      "message": "Add hprof. This code builds but is untested.\n\nChange-Id: Ied6549ef903761447fb3d28cf28b8bbc76e5ef35\n"
    },
    {
      "commit": "28ad40dc3ec2f09b0ffd4f6d6787bf1b532ccd5d",
      "tree": "f5628e47948a0d255112a3a7a01b67db41c8d424",
      "parents": [
        "e0918556e7551de638870dcad3f2023f94f85a50"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 27 15:19:26 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 28 23:14:15 2011 -0700"
      },
      "message": "Support for unresolved types in new-instance during verification.\n\nAlso, ensure that classes that don\u0027t load are erroneous, warn early\nabout exceptions left on a thread by the verifier/compiler, factor out\nslowpath checks for the compiler and fix the slowpath selector for\nconst-class.\n\nThis change causes more dex cache misses at runtime (more slowpath\nexecution). It also requires a \"mm clean-oat\".\n\nChange-Id: I014b49ebdd7d8f7dd2e39cc0958fc0b708d58c4c\n"
    },
    {
      "commit": "9074b99bfbd5419e340f138a018b673ce71f77e8",
      "tree": "0910d8eb0e08eb6cb45a1f307b31b1bc17d70c31",
      "parents": [
        "b82b6878fb000d4731063b1bf15c39ff7c50b61f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 26 17:41:55 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 26 22:53:21 2011 -0700"
      },
      "message": "Better unresolved type support.\n\nAlso fix bug where miranda methods were changing their declaring class\nand thereby breaking their return type indices.\nAdd support for dumping stacks on abort.\n\nChange-Id: I3782864736b12d1f81ab9aea4909213d3344ba13\n"
    },
    {
      "commit": "6b4ef025af12b158d117fc80fc79acf620f411a0",
      "tree": "223c580477cbb7bde240b599da4bbee793b8dcaf",
      "parents": [
        "21b9f1355f0311b5c67bfdfa9dd63cacb1fba502"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Sun Oct 23 14:59:04 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 25 00:03:03 2011 -0700"
      },
      "message": "Make ResolveField not rely on Field::GetType resolution\n\nChange-Id: I10f4a874809ac9db2cd54e200cf10eb7c8979fce\n"
    },
    {
      "commit": "d81871cbbaa34c649e488f94f61a981db33123e5",
      "tree": "a3adf3b7469fee507a4d4c4491942fbd48b4483d",
      "parents": [
        "262bf46ddc91e5b4fbd367127ff21a1877d939f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 03 13:57:23 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 24 11:56:15 2011 -0700"
      },
      "message": "Verifier clean up.\n\nThis is the first part in trying to move to a more rigorous mode of\nasserting the validity of garbage collection maps.\nIn the bring over of the verifier from Dalvik a large class had been\ncreated where all of the Dalvik/Dex functions were static methods of\nthat class. This rewrite introduces 3 key classes, Verifier that\norchestrates the verification of a method, RegisterLine which describes\nthe types associated with registers for a particular PC and RegType\nwhich describes the current type of a register within a line. The\nfunctionality is brought over from Dalvik but cleaned up to not do\nthings like goto. Failing within the verifier is also cleaned up. By\nvirtue of having stateful objects the interfaces between different\naspects of the verifier are greatly simplified.\nTo save space, RegTypes are cached upto a maximum possible 2^16, and\ngiven an Id. As the number of RegTypes is typically small this means\nthat we have a full OO implementation but at a lower space cost than the\ncurrent convention that uses botched together enum values requiring\n32bits of storage in a RegisterLine rather than 16bits (ie half the\nspace requirement per register in a register line). To make use of\nthis space more rigorous monitor verification is brought back, and\nultimately I think we can work around bug 3215458 with richer RegTypes\nthat are aware of literal objects.\nThe code removes short cuts that had been added to Dalvik\u0027s verifier and\nappear illegitimate, it also fixes a large number of bugs in the\ndescription of the verifier.\nWhere possible the spaghetti of code is replaced with straight line\nif-then-elsif.. code that clearly follows the ordering semantics of the\nspecification. The code is also aiming toward having a more type\nrigorous description of the verification process, and when this isn\u0027t\npossible following the description convention of the specification.\n\nChange-Id: Id25b742018a2ad5ea95687973cca610d7e19513c\n"
    },
    {
      "commit": "b06631143b944388fc68bedf6679c006dde5f461",
      "tree": "b616aeabb016370def3d2730f3722866cf9fd1f3",
      "parents": [
        "c393a4f7c91534ac41a81d66b12c22e68df28fc7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 19 18:16:37 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 19 18:16:37 2011 -0700"
      },
      "message": "Some low-hanging GC performance fruit.\n\nHalves the GC pause in my test benchmark (using libart rather than libartd).\n\nChange-Id: I57e5f9e312fd59ea62eea9da37a116e1ad21d4ec\n"
    },
    {
      "commit": "362f9bc807169bcfc8761dde067bbfb79b5ad0fd",
      "tree": "100689aa13a39913b43cb12780ba472897cd665a",
      "parents": [
        "fc86162ce2a3467acb690e18cc8bd9b3daafc606"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 18:56:41 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 17 20:26:54 2011 -0700"
      },
      "message": "Fix cpplint\u0027s whitespace warnings.\n\nChange-Id: I16b69d773e59b49e8e30227b5aa5cb1959a8930f\n"
    },
    {
      "commit": "24a3c2e9924e8765c4a9b4d383cb8f3b922f9c9f",
      "tree": "1f61ecb377be4abcba4838651bc9d98b548a3f81",
      "parents": [
        "3535c22d05bb4600255db90b490e625eda874b53"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 17 18:07:52 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Oct 17 18:17:36 2011 -0700"
      },
      "message": "ClassLinker changes\n\n- Add ClassLinker::LockOwner for SignalCatcher\n- ClassLinker::ResolveMethod now sets CodeAndDirectMethod when code is available\n\nChange-Id: I404b80d1994808e018d00e0b30e8ba4f9d08fecc\n"
    },
    {
      "commit": "b04f69f90d2594092bec5b294bbe7329d295bd66",
      "tree": "b0b0bb6c4db1da0dbe5ff4025013247cc7815b41",
      "parents": [
        "0691851db8fb542f4058dfb6e75faf3f9a9f5ff4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 17 00:40:54 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 17 00:41:31 2011 -0700"
      },
      "message": "Fix for test 069.\n\nCan\u0027t throw exception in fast interface lookup. Extra debugging that\nmethods look sane when creating native to managed records.\n\nChange-Id: If0b970c418db5ff075334af8359541a94e8680b7\n"
    },
    {
      "commit": "06b37d91bb3d543002b1aee9829691f5e8bebc7e",
      "tree": "15d08cf8993856596ca8567507a8e87d4569bd32",
      "parents": [
        "3b6baaa203fa63f1522b2172a1645f90412afdae"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 16 11:51:29 2011 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sun Oct 16 11:51:29 2011 -0700"
      },
      "message": "Always log the value when an alignment check fails.\n\nAnd move checking that the alignment is a power of two to compile-time.\n\nChange-Id: I551f364af05912958ed2d4d095b1ce35b6abaf6e\n"
    },
    {
      "commit": "466bb25416b88fabd5d4387b7c7e5cc1ece78b8c",
      "tree": "8d0952cbd850f1d0ac2e43a8372ce571fb4982d1",
      "parents": [
        "a10cd94bb77ed66fa0a8b66141c4504045c92d30"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 14 03:29:56 2011 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 14 21:45:27 2011 -0700"
      },
      "message": "Proxy implementation\n\nThis rounds out the proxy implementation by adding missing pieces to the\nclass linker, extending tests and fixing issues in the runtime support.\nThere are also some tweaks for performance and to clean up Method/Object\na little.\nA unit test of the functionality is \"art/test/run-test 044\"\n\nChange-Id: Id94102d10b81cd9b12b95ba8618f6187490204c4\n"
    }
  ],
  "next": "95caa791e560da97363c0c0d22bfda4a7e7377c3"
}
