)]}'
{
  "log": [
    {
      "commit": "14632857428b7e37761e6e811c19021715a400f8",
      "tree": "1774ef3ed5b973ce661b761814bd86bdbfa8fdbc",
      "parents": [
        "8ecc1357e2c682165467ca8e10c7a748f7554df2"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 17 12:07:23 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 17 14:49:34 2015 +0100"
      },
      "message": "ART: Rename ArtMethod\u0027s size and alignment methods.\n\nRemove the historical prefix \"Object\" to avoid confusion\nwith Java objects.\n\nChange-Id: Ib36422c9a24878d8d4bd757977d99cbf66b3d567\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "fc58af45e342ba9e18bbdf597f205a58ec731658",
      "tree": "3f93906235cb4d2462d237223b72ccf4eedef645",
      "parents": [
        "bbf02afc641a393d33342976e269218668c07386"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Apr 16 18:00:39 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 15:51:29 2015 -0700"
      },
      "message": "Add AbstractMethod, Constructor, Method\n\nMoves functionality to ART from libcore. Precursor to moving\nArtMethods to native. Mostly performance improvements.\n\nN5 perf before (irrelevant results removed):\n            Class_getConstructor  962.87 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n         Class_getDeclaredMethod 2394.37 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                 Class_getMethod 2509.20 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n               Class_newInstance 1999.81 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeI 1439.02 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n          Method_invokePreBoxedI 1415.82 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticI 1456.24 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n    Method_invokeStaticPreBoxedI 1427.32 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticV  814.47 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeV  816.56 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nAfter:\n                       benchmark      ns linear runtime\n            Class_getConstructor 1302.04 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n         Class_getDeclaredMethod 1459.01 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                 Class_getMethod 1560.40 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n               Class_newInstance 2029.94 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeI 1312.89 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n          Method_invokePreBoxedI 1255.01 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticI 1289.13 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n    Method_invokeStaticPreBoxedI 1196.52 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n            Method_invokeStaticV  790.82 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Method_invokeV  791.73 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nPerformance improvements are more than just fixing regressions introduced\nin: http://android-review.googlesource.com/#/c/146069/\n\nBug: 19264997\n\nChange-Id: Ife79c469fdb09f30e3aefcfc3e0ce5ed32303fce\n"
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "0aa50ce2fb75bfc2e815a0c33adf9b049561923b",
      "tree": "9a3f9603ab30d5cbc7fc21aee0ceb48bbb0dd25a",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 11:03:29 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 14:51:11 2015 +0000"
      },
      "message": "Remove ThrowLocation.\n\nNote that this is a cleanup change, and has no functionality change.\nThe ThrowLocation had no use anymore.\n\nChange-Id: I3d2126af1dc673cec3a0453ff3d56a172663a5f6\n"
    },
    {
      "commit": "14691c5e786e8c2c5734f687e4c96217340771be",
      "tree": "7c2156671b323c70ffdd1d48d5e2f1d1de79c5fc",
      "parents": [
        "3d7d2af4c6502b771b032ee9bf3ab30e78f9c60d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 10:40:17 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:09:33 2015 +0000"
      },
      "message": "Compute the right catch location for the debugger.\n\nAlso remove tls ThrowLocation, it is not needed anymore.\n\nChange-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9\n"
    },
    {
      "commit": "1de0f5c219d31a0aa5a5ee0c1cae989253b19a8a",
      "tree": "e380ecc214b969ba07c0cc3c96a58632e27d7bd1",
      "parents": [
        "3f43b5f4881db5a1f7bd13a095f720b7c1ddba6a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 19 10:54:31 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 19 10:54:31 2015 -0800"
      },
      "message": "ART: Make error messages for StackOverflow WARNINGs\n\nLog error messages as LOG(WARNING). We\u0027ll throw either a (partial)\nStackOverflow or OutOfMemoryError anyways.\n\nBug: 18713034\nChange-Id: If51c0d6745b02f5ecb98b1387f8bde1e2e57e0c0\n"
    },
    {
      "commit": "50c138f7f89ed03d49aa4bdde7351c26b3403e90",
      "tree": "e87e85e58e782d7792c46927d2c6693fe507495a",
      "parents": [
        "4ea18c02148cffe72e025990e9b2727bfec563da"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 07 16:00:03 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 07 16:50:55 2015 -0800"
      },
      "message": "Fix signal test to work with gcstress\n\nWe now avoid running GC if we are handling a stack overflow, this\nhelps prevent running past the end of the stack overflow reserved\nbytes.\n\nAdded logic in ThrowStackOverflowError to use a stack overflow\nexception without a stack trace if we fail to allocate the stack\ntrace.\n\nBug: 16406852\nChange-Id: Ib34e235cd0af6d7c4c93c9705fa822f2b9b23b38\n"
    },
    {
      "commit": "1cc7dbabd03e0a6c09d68161417a21bd6f9df371",
      "tree": "8557bdff971e366909351af95a7c8ead82792986",
      "parents": [
        "5e0a9849d4e353c3726095b65ab07cefce40a636"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 17 18:43:01 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 29 10:52:02 2014 -0800"
      },
      "message": "ART: Reorder entrypoint argument order\n\nShuffle the ArtMethod* referrer backwards for easier removal.\n\nClean up ARM \u0026 MIPS assembly code.\n\nChange some macros to make future changes easier.\n\nChange-Id: Ie2862b68bd6e519438e83eecd9e1611df51d7945\n"
    },
    {
      "commit": "e94652f1e321b2c8b71acbe5b07d2ebf69fbdb99",
      "tree": "b4c2a4435800222fa740a5ae57fa217b6aed0875",
      "parents": [
        "f25c2ec6b63e116f24f359a10b59c78768fde67a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:19 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:49 2014 -0800"
      },
      "message": "Remove MethodHelper from the interpreter.\n\nUse ShadowFrame to get the executing method to avoid a handle for the current\nmethod.\nVarious associated bits of header file clean-up and removal of an unnecessary\nuse of MethodHelper in CompilerDriver.\n\nChange-Id: I3b6f4413701e8fc6b0c58b0041a0dd15472bedaa\n"
    },
    {
      "commit": "ded66a01f81812e0129d17c3d08d5eda18433062",
      "tree": "74a3f7bad1c020b0136d6c173633a361a479f5cb",
      "parents": [
        "e0205d519dd417f749243b42b8711dfa313e5390"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 18:12:55 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 18:36:32 2014 -0700"
      },
      "message": "Move MethodHelper::GetReturnType to mirror::ArtMethod.\n\nAlso, fix missing handle in HasSameSignatureWithDifferentClassLoaders.\n\nChange-Id: I9e1ffd09be950ecc8346fc3c485760d82d9ecab3\n"
    },
    {
      "commit": "832336b3c9eb892045a8de1bb12c9361112ca3c5",
      "tree": "0e8696869a28ee0dee34d130b586b1bf6f072d6e",
      "parents": [
        "f1f05d303988a5c071c87b760056be8358276c94"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 15:35:22 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 16:00:31 2014 -0700"
      },
      "message": "Don\u0027t copy fill array data to quick literal pool.\n\nCurrently quick copies the fill array data from the dex file to the literal\npool. It then has to go through hoops to pass this PC relative address down\nto out-of-line code. Instead, pass the offset of the table to the out-of-line\ncode and use the CodeItem data associated with the ArtMethod. This reduces\nthe size of oat code while greatly simplifying it.\nUnify the FillArrayData implementation in quick, portable and the interpreters.\n\nChange-Id: I9c6971cf46285fbf197856627368c0185fdc98ca\n"
    },
    {
      "commit": "f0edfc355893d53d1104b05501c99ad5ccf305c4",
      "tree": "7e1fa49875759512f5d02b1c45435d3e3366b920",
      "parents": [
        "1ed5b27ee329208fd8ae22b8a9a61d708e2c1ffb"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 11:46:46 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 15:53:54 2014 -0700"
      },
      "message": "Some optimizations for the array alloc path.\n\n- Force Array::Alloc() to be inlined.\n- Simplify the array size overflow check.\n- Turn fill_usable into a template parameter.\n- Remove a branch in Array::DataOffset() and avoid\n  Primitive::ComponentSize(), which has a switch, in the array alloc\n  path.\n- Strength reductions in the array size computation by using component\n  size shifts instead of component sizes. Store component size shift\n  in the upper 16 bits of primitive_type field.\n- Speedup: ~4% (3435-\u003e3284) in MemAllocTest on N4.\n\nBug: 9986565\n\nChange-Id: I4b142ffac4ab8b5b915836f1660a949d6442344c\n"
    },
    {
      "commit": "3437531f515d84609fa43baaec32a0d1cc0e3fe0",
      "tree": "2331d63b2299babe5adb7240e7864695eb4bb34d",
      "parents": [
        "967e1a56df7675c8d38d411736fc081039f1a9f9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 10 23:10:47 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Sep 11 12:09:40 2014 -0700"
      },
      "message": "Use WellKnownClasses in ThrowStackOverflowError to reduce changes of further stack overflow\n\nBug: 17463118\n\n(cherry picked from commit bfc2b98a3cf7a9d580f2477e54aabded5004fd26)\n\nChange-Id: Iea04bb7f6c4daa9cbdb8ee6ce8ddcbeb9f05aa3d\n"
    },
    {
      "commit": "68caf9e7232109c698e7f91f64b348cf37b432dd",
      "tree": "2a7a5390eb54ceb846f0cee1afd956076216695e",
      "parents": [
        "5355835411cafcc2772e061cb7aef3b8ca1e6ea1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 03 13:48:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 04 09:57:38 2014 -0700"
      },
      "message": "Fix stack overflow and duplicate methods while tracing.\n\nBug: 16386215\nChange-Id: I0d0ae0113a3a00013ce84a1f5a110e2c52f19b86\n(cherry picked from commit 6b28a456b075fe53dfb7e924a44dbf35d0d41eb3)\n"
    },
    {
      "commit": "c0542af3e2170143ba40d89136e284997e16bf64",
      "tree": "a61e3b9cd297a4c52a0c0488a502cb77c47f0690",
      "parents": [
        "d3c9358544bbab15093614c5c2b6a9de86e11f7b"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 16:16:56 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 17:15:54 2014 -0700"
      },
      "message": "Remove abuse of mirror::Object* to reference special values.\n\nRemove kInvalidIndirectRefObject, kClearedJniWeakGlobal and\nObjectRegistry::kInvalidObject. Handle error conditions by passing in or\nreturning an error value.\nGetObjectRefType is simplified to be faster and not return invalid references\nthat are not expected according to the spec. Adjust check JNI and\njni_internal_test appropriately.\nFix cases in the debugger/JDWP of out arguments being passed by reference.\nBug: 17376993\n\nChange-Id: I3ce8a28c01827e163f4dc288449959464da788b1\n"
    },
    {
      "commit": "b090a18e4292dc339a3b2668bf6dc855928dee3a",
      "tree": "fa12ca73ca33f48e2d2a1539db830a63996f8161",
      "parents": [
        "75dd98835859ca98c9f98339da8b64640d09a175"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Aug 14 17:02:48 2014 +0000"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Aug 19 09:30:39 2014 -0700"
      },
      "message": "Merge stack usage reduction for overflow checks\n\nCherry pick from: b038ba66a166fb264ca121632f447712e0973b5b\n\nChange-Id: I19999e72ff731d4fc73d91b9ff767de5858c15ee\n"
    },
    {
      "commit": "648d7112609dd19c38131b3e71c37bcbbd19d11e",
      "tree": "54062831327c660acb309e877e8d8df9ba0c2d5d",
      "parents": [
        "99c251bbd225dd97d0deece29559a430b12a0b66"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Fri Jul 25 16:15:27 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Wed Aug 13 09:01:41 2014 -0700"
      },
      "message": "Reduce stack usage for overflow checks\n\nThis reduces the stack space reserved for overflow checks to 12K, split\ninto an 8K gap and a 4K protected region.  GC needs over 8K when running\nin a stack overflow situation.\n\nAlso prevents signal runaway by detecting a signal inside code that\nresulted from a signal handler invokation.  And adds a max signal count to\nthe SignalTest to prevent it running forever.\n\nAlso reduces the number of iterations for the InterfaceTest as this was\ntaking (almost) forever with the --trace option on run-test.\n\nBug: 15435566\n\nChange-Id: Id4fd46f22d52d42a9eb431ca07948673e8fda694\n"
    },
    {
      "commit": "68d8b42ddec39ec0174162d90d4abaa004d1983e",
      "tree": "0bb6ccf3b996bb8363c10d07aa39cde221980602",
      "parents": [
        "9c522c2cbbf50dc687728747b37ad59985750b65"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 11:09:10 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 08 08:29:53 2014 -0700"
      },
      "message": "Wire up check JNI force copy mode.\n\nIncrease check JNI checks.\nBreak apart jni_internal.h in to jni_env_ext.h and java_vm_ext.h.\nFix the abuse of ScopedObjectAccess/annotalysis by ScopedCheck in the case\nof VM routines.\nMake class loader override and shared library class loader JNI global\nreferences rather than mirror pointers.\nClean-ups to native bridge.\n\nChange-Id: If7c6110b5aade7a402bfb67534af86a7b2cdeb55\n"
    },
    {
      "commit": "58a5af8568d224ca7eccf2483396ff9862f8d1ee",
      "tree": "4dfac17316970040e079244523b9b1e2ea163f05",
      "parents": [
        "1b192268f167f603fc372f02f9067f3ce5d82daf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 31 16:23:49 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 06 15:57:05 2014 -0700"
      },
      "message": "ART: Add guards to the dex cache and its shortcuts\n\nDo not return fields, methods or classes if the (declaring) class is\nerroneous.\n\nBug: 16692788\nChange-Id: If43c2414ad0eb22db5eba7cf66396c7f16c26597\n"
    },
    {
      "commit": "7ea6f79bbddd69d5db86a8656a31aaaf64ae2582",
      "tree": "c64f89b15ca71e87317f6dd405ef4a5560b73e01",
      "parents": [
        "e72ff8022968b23efedc56c0afdc1d24e8a928c2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 14 16:21:44 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 21 23:36:31 2014 -0700"
      },
      "message": "ART: Throw StackOverflowError in native code\n\nInitialize stack-overflow errors in native code to be able to reduce\nthe preserved area size of the stack.\n\nIncludes a refactoring away from constexpr in instruction_set.h to allow\nfor easy changing of the values.\n\nChange-Id: I117cc8485f43da5f0a470f0f5e5b3dc3b5a06246\n"
    },
    {
      "commit": "e5877a12c30afe10a5c6a1afaff7a47ef44a2a5f",
      "tree": "161535abb39394fc3b1d96d31625ba7eb61c8497",
      "parents": [
        "aab012d6196bd29b3167963ec8acb0b9780672b2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 12:06:35 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 12:06:35 2014 -0700"
      },
      "message": "Fix x86 build.\n\nAlso fix attributes/annotalysis on entrypoint_utils functions now we have\nclang that is smarter wrt warnings than GCC.\n\nChange-Id: I69257b4ad9a27d07acbc973d21a1cfa4260a8ed6\n"
    },
    {
      "commit": "22d5e735f403c57525fe868304c7123f0ce66399",
      "tree": "2458684efa56f0b800dd75a9dedd0449f76f581f",
      "parents": [
        "fbde4dd1cb6db729e3f3ee5bdae0cdd824d73054"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 15 22:23:51 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jul 16 06:13:46 2014 -0700"
      },
      "message": "Remove object_utils.h.\n\nBreak into object_lock, field_helper and method_helper.\nClean up header files following this.\nAlso tidy some of the Handle code in response to compiler errors when resolving\nthe changes in this CL.\n\nChange-Id: I73e63015a0f02a754d0866bfaf58208aebcaa295\n"
    },
    {
      "commit": "98d1cc8033251c93786e2fa8c59a2e555a9493be",
      "tree": "f0a76b8fff060ee484af09028da65a8339d57057",
      "parents": [
        "aebf3cda094f34cf846d19a7724bdc8005267c95"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu May 15 17:02:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 11 17:17:10 2014 -0700"
      },
      "message": "Improve performance of invokevirtual/invokeinterface with embedded imt/vtable\n\nAdd an embedded version of imt/vtable into class object. Both tables start at\nfixed offset within class object so method/entry point can be loaded directly\nfrom class object for invokeinterface/invokevirtual.\n\nBug: 8142917\nChange-Id: I4240d58cfbe9250107c95c0708c036854c455968\n"
    },
    {
      "commit": "bfd9a4378eacaf2dc2bbe05ad48c5164fc93c9fe",
      "tree": "3d3f667c8232a9c1bb6fe9daea0d364f9ae01d8c",
      "parents": [
        "2e1ca953c7fb165da36cc26ea74d3045d7e272c8"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 21 17:43:44 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jun 09 12:46:32 2014 -0700"
      },
      "message": "Change MethodHelper to use a Handle.\n\nAdded ConstHandle to help prevent errors where you modify the value\nstored in the handle of the caller. Also fixed compaction bugs\nrelated to not knowing MethodHelper::GetReturnType can resolve types.\nThis bug was present in interpreter RETURN_OBJECT.\n\nBug: 13077697\n\nChange-Id: I71f964d4d810ab4debda1a09bc968af8f3c874a3\n"
    },
    {
      "commit": "f00571c4e1ae202b3b4acb6b47cbe23a65178f7f",
      "tree": "484d129a8265d03eff56c796e92e302e23ad5e16",
      "parents": [
        "f6b5378ba182c5c26c556ae34638afc38adef519"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu May 29 17:29:47 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jun 02 09:59:22 2014 -0700"
      },
      "message": "Added workaround passing empty arg array for proxy invocation.\n\nThis recreates old Dalvik behavior for older target sdk versions,\nbut will still pass null for newer ones.\n\nBug: 13247236\n\n(cherry picked from commit 01d5a146e20660bd06f026c16f19ec080f8fdd7b)\n\nChange-Id: I911889cf559ad8d9f37ea9be3929387c86446851\n"
    },
    {
      "commit": "2b7c4d196c8abe32f4ca633534917da9de53c359",
      "tree": "f14dc45f53d5681a5c0e57b8a8cc6b35eee6e896",
      "parents": [
        "84e524207b23d58a1b1e5f4443000ccac97c4184"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 19 10:52:16 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon May 19 15:19:28 2014 -0700"
      },
      "message": "Don\u0027t get and restore thread state for ScopedFastNativeObjectAccess.\n\nBefore we would ensure that we were runnable for fast native object\naccess. However, these are done when you are already runnable.\n\nChange-Id: Ia4c6e4c83d146fe2a988b37b3133ca46b0f0fa42\n"
    },
    {
      "commit": "f943914730db8ad2ff03d49a2cacd31885d08fd7",
      "tree": "885a781e5f8bd852e2c1615108ae7b17576a6567",
      "parents": [
        "cfd5acf281b0c509f86b13d73c6a8dfa3ea9922c"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Mar 27 15:10:22 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon Mar 31 18:04:08 2014 -0700"
      },
      "message": "Implement implicit stack overflow checks\n\nThis also fixes some failing run tests due to missing\nnull pointer markers.\n\nThe implementation of the implicit stack overflow checks introduces\nthe ability to have a gap in the stack that is skipped during\nstack walk backs.  This gap is protected against read/write and\nis used to trigger a SIGSEGV at function entry if the stack\nwill overflow.\n\nChange-Id: I0c3e214c8b87dc250cf886472c6d327b5d58653e\n"
    },
    {
      "commit": "84956ff6c0ff150d86a08157216ded79217d860a",
      "tree": "04177625872b89f27f00a53b574085416617ee0d",
      "parents": [
        "636583c586b78e188168e510452cef0645578f8d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 26 23:52:41 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Mar 26 23:56:58 2014 -0700"
      },
      "message": "Reflection tidying.\n\nMove out arguments to the right and make pointer not reference types.\nRemove unused unbox for argument routine.\nSimplify convert primitive routine for the case of identical types.\n\nChange-Id: I6456331b0f3f3e5f0b2c361a9f50b4ed1c9462a3\n"
    },
    {
      "commit": "6fac447555dc94a935b78198479cce645c837b89",
      "tree": "bcf1449999084b1e1dec3dac287f6f3670d7eda0",
      "parents": [
        "7f0ff7e7fff82566bca5f9353eaa2c4f81f0671a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 25 17:01:10 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Feb 26 16:38:22 2014 -0800"
      },
      "message": "Make allocations report usable size.\n\nWork-in-progress to allow arrays to fill usable size. Bug: 13028925.\nUse C++11\u0027s override keyword on GCC \u003e\u003d 2.7 to ensure that we override GC and\nallocator methods.\nMove initial mirror::Class set up into a Functor so that all allocated objects\nhave non-zero sizes. Use this property to assert that all objects are never\nlarger than their usable size.\nOther bits of GC related clean-up, missing initialization, missing use of\nconst, hot methods in .cc files, \"unimplemented\" functions that fail at\nruntime in header files, reducing header file includes, move valgrind\u0027s space\ninto its own files, reduce number of array allocation routines.\n\nChange-Id: Id5760041a2d7f94dcaf17ec760f6095ec75dadaa\n"
    },
    {
      "commit": "d2fe10a3a34af171bf1631219cd2d6ff6b7778b5",
      "tree": "b6b7eb8eba23a5c2723518da99c03bf47b97f58a",
      "parents": [
        "5a3f55ad9519e87c0d3bbddaf3d8a186a887a79b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Jan 15 10:20:56 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Feb 17 11:32:15 2014 +0100"
      },
      "message": "Remove blacklist\n\nRemoves the class initialization blacklist and use transaction to detect and\nrevert class initialization attempting to invoke native method. This only\nconcerns class initialization happening at compilation time when generating an\nimage (like boot.art for the system).\n\nIn transactional mode, we log every object\u0027s field assignment and array update.\nTherefore we\u0027re able to abort a transaction to restore values of fields and\narray as they were before the transaction starts. We also log changes to the\nintern string table so we can restore its state prior to transaction start.\n\nSince transactional mode only happens at compilation time, we don\u0027t need to log\nall these changes at runtime. In order to reduce the overhead of testing if\ntransactional mode is on/off, we templatize interfaces of mirror::Object and\nmirror::Array, respectively responsible for setting a field and setting an\narray element.\n\nFor various reasons, we skip some specific fields from transaction:\n- Object\u0027s class and array\u0027s length must remain unchanged so garbage collector\ncan compute object\u0027s size.\n- Immutable fields only set during class loading: list of fields, method,\ndex caches, vtables, ... as all classes have been loaded and verified before a\ntransaction occurs.\n- Object\u0027s monitor for performance reason.\n\nBefore generating the image, we browse the heap to collect objects that need to\nbe written into it. Since the heap may still holds references to unreachable\nobjects due to aborted transactions, we trigger one collection at the end of\nthe class preinitialization phase.\n\nSince the transaction is held by the runtime and all compilation threads share\nthe same runtime, we need to ensure only one compilation thread has exclusive\naccess to the runtime. To workaround this issue, we force class initialization\nphase to run with only one thread. Note this is only done when generating image\nso application compilation is not impacted. This issue will be addressed in a\nseparate CL.\n\nBug: 9676614\nChange-Id: I221910a9183a5ba6c2b99a277f5a5a68bc69b5f9\n"
    },
    {
      "commit": "e6da9af8dfe0a3e3fbc2be700554f6478380e7b9",
      "tree": "127a0565fce79f05d82d0ff242fbbffa6e2bc6b3",
      "parents": [
        "977d409b959497eecc44a35cff16115d0f04ccab"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 16 11:54:42 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jan 08 14:16:12 2014 -0800"
      },
      "message": "Background compaction support.\n\nWhen the process state changes to a state which does not perceives\njank, we copy from the main free-list backed allocation space to\nthe bump pointer space and enable the semispace allocator.\n\nWhen we transition back to foreground, we copy back to a free-list\nbacked space.\n\nCreate a seperate non-moving space which only holds non-movable\nobjects. This enables us to quickly wipe the current alloc space\n(DlMalloc / RosAlloc) when we transition to background.\n\nAdded multiple alloc space support to the sticky mark sweep GC.\n\nAdded a -XX:BackgroundGC option which lets you specify\nwhich GC to use for background apps. Passing in\n-XX:BackgroundGC\u003dSS makes the heap compact the heap for apps which\ndo not perceive jank.\n\nResults:\nSimple background foreground test:\n0. Reboot phone, unlock.\n1. Open browser, click on home.\n2. Open calculator, click on home.\n3. Open calendar, click on home.\n4. Open camera, click on home.\n5. Open clock, click on home.\n6. adb shell dumpsys meminfo\n\nPSS Normal ART:\nSample 1:\n    88468 kB: Dalvik\n     3188 kB: Dalvik Other\nSample 2:\n    81125 kB: Dalvik\n     3080 kB: Dalvik Other\n\nPSS Dalvik:\nTotal PSS by category:\nSample 1:\n    81033 kB: Dalvik\n    27787 kB: Dalvik Other\nSample 2:\n    81901 kB: Dalvik\n    28869 kB: Dalvik Other\n\nPSS ART + Background Compaction:\nSample 1:\n    71014 kB: Dalvik\n     1412 kB: Dalvik Other\nSample 2:\n    73859 kB: Dalvik\n     1400 kB: Dalvik Other\n\nDalvik other reduction can be explained by less deep allocation\nstacks / less live bitmaps / less dirty cards.\n\nTODO improvements: Recycle mem-maps which are unused in the current\nstate. Not hardcode 64 MB capacity of non movable space (avoid\nreturning linear alloc nightmares). Figure out ways to deal with low\nvirtual address memory problems.\n\nBug: 8981901\n\nChange-Id: Ib235d03f45548ffc08a06b8ae57bf5bada49d6f3\n"
    },
    {
      "commit": "4fa0bcd2142793e1f105b24b658de3635652b957",
      "tree": "6d65a1fe48a8914e86ff63549429edd820412d21",
      "parents": [
        "dd668730cf052178c679119dfc932b4db354c835"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Dec 10 11:24:21 2013 -0800"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Dec 10 11:24:21 2013 -0800"
      },
      "message": "Remove unneeded quoting\n\nChange-Id: I87f452e338bd4ff0587e3fc7b0bec3f08a1e7fe6\n"
    },
    {
      "commit": "cbb2d20bea2861f244da2e2318d8c088300a3710",
      "tree": "9735d496716cf165ea0ee2d7e2f62d723ffc7734",
      "parents": [
        "d31fb9718a6180304cd951619dc36be8e090a641"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 14 17:45:16 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 20 11:14:11 2013 -0800"
      },
      "message": "Refactor allocation entrypoints.\n\nAdds support for switching entrypoints during runtime. Enables\naddition of new allocators with out requiring significant copy\npaste. Slight speedup on ritzperf probably due to more inlining.\n\nTODO: Ensuring that the entire allocation path is inlined so\nthat the switch statement in the allocation code is optimized\nout.\n\nRosalloc measurements:\n4583\n4453\n4439\n4434\n4751\n\nAfter change:\n4184\n4287\n4131\n4335\n4097\n\nChange-Id: I1352a3cbcdf6dae93921582726324d91312df5c9\n"
    },
    {
      "commit": "590fee9e8972f872301c2d16a575d579ee564bee",
      "tree": "b02db45c72f1911ec896b93379ada0276aea3199",
      "parents": [
        "5b70680b8df6d8fa95bb8e1070d0107f3d388940"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 13 13:46:47 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 11 15:34:27 2013 -0800"
      },
      "message": "Compacting collector.\n\nThe compacting collector is currently similar to semispace. It works by\ncopying objects back and forth between two bump pointer spaces. There\nare types of objects which are \"non-movable\" due to current runtime\nlimitations. These are Classes, Methods, and Fields.\n\nBump pointer spaces are a new type of continuous alloc space which have\nno lock in the allocation code path. When you allocate from these it uses\natomic operations to increase an index. Traversing the objects in the bump\npointer space relies on Object::SizeOf matching the allocated size exactly.\n\nRuntime changes:\nJNI::GetArrayElements returns copies objects if you attempt to get the\nbacking data of a movable array. For GetArrayElementsCritical, we return\ndirect backing storage for any types of arrays, but temporarily disable\nthe GC until the critical region is completed.\n\nAdded a new runtime call called VisitObjects, this is used in place of\nthe old pattern which was flushing the allocation stack and walking\nthe bitmaps.\n\nChanged image writer to be compaction safe and use object monitor word\nfor forwarding addresses.\n\nAdded a bunch of added SIRTs to ClassLinker, MethodLinker, etc..\n\nTODO: Enable switching allocators, compacting on background, etc..\n\nBug: 8981901\n\nChange-Id: I3c886fd322a6eef2b99388d19a765042ec26ab99\n"
    },
    {
      "commit": "d4beb6bc2b42b176c6d04fdd91d6c758e542c7c2",
      "tree": "083f8c75e44105e98688eff3e206e5a7fd188912",
      "parents": [
        "57e6d8a99058e5c74d5244b68a5f4d53526fa108"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Oct 02 17:07:20 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Mon Oct 28 18:12:22 2013 +0100"
      },
      "message": "Inline field and method resolution.\n\nAccording to profiling results, field and method resolutions are hot points\nduring interpreter execution. This CL attempts to speed up these resolutions.\n\nForces aggressive inlining of FindFieldFromCode and FindMethodFromCode. This\nallows to reduce the overhead of access check code when the interpreter runs\nwithout these checks. Templatize these functions to optimize inlining and their\ncallers.\n\nAlso spread the use of C++11 \"nullptr\" in place of \"NULL\" in field access and\ninvoke helpers.\n\nChange-Id: Ic1a69834d8975b2cddcddaae32f08a7de146a951\n"
    },
    {
      "commit": "3b4c18933c24b8a33f38573c2ebcdb9aa16efeb5",
      "tree": "5298ccd9c1f1f6b329c0cb6cefac6a8df43dd633",
      "parents": [
        "f7e090ebcded6d6693894c018d89c4add79253ff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 12 21:33:12 2013 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Sep 25 20:28:49 2013 -0700"
      },
      "message": "Split the allocation path into \u0027instrumented\u0027 and \u0027uninstrumented\u0027\nones.\n\nThe instrumented path is equivalent to the existing allocation path\nthat checks for three instrumentation mechanisms (the debugger\nallocation tracking, the runtime allocation stats collection, and\nvalgrind) for every allocation. The uinstrumented path does not\nperform these checks. We use the uninstrumented path by default and\nenable the instrumented path only when any of the three mechanisms is\nenabled. The uninstrumented version of Heap::AllocObject() is inlined.\n\nThis change improves the Ritz MemAllocTest by ~4% on Nexus 4 and ~3%\non Host/x86.\n\nBug: 9986565\nChange-Id: I3e68dfff6789d77bbdcea98457b694e1b5fcef5f\n"
    },
    {
      "commit": "bd136a29f08486525d6abc7d0a0006ce5b4011c1",
      "tree": "71a61d4545e7fa871d2cafee23dd5e3beb6619ee",
      "parents": [
        "7d70a7932f0ba09eb01a93caab060aef1403d4e6"
      ],
      "author": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Tue Aug 13 18:07:04 2013 -0700"
      },
      "committer": {
        "name": "Dragos Sbirlea",
        "email": "dragoss@google.com",
        "time": "Thu Aug 15 15:10:55 2013 -0700"
      },
      "message": "Get PORTABLE + SMALL on x86.\n\nImplemented the portable resolution trampoline and\nthe portable to interpreter bridge.\nAlso work on integrating SEA_IR in the PORTABLE+SMALL framework.\nRefactor some naming and correct indenting.\n\nChange-Id: Ibd97da5e5b6f5148274c9bff368e3654b661ef51\n"
    },
    {
      "commit": "7571e8b761ebc2c923525e12ea9fcf07e62cb33e",
      "tree": "5d90ecf4d0ba1a72b040a376f227df1ba9278889",
      "parents": [
        "2e250c826b3c405d675017efe79e5db3651c9ee6"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 12 17:04:14 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Thu Aug 15 10:33:53 2013 -0700"
      },
      "message": "Add flock(2)ing on dex-cache files to prevent races\n\nBug: 9071417\nChange-Id: I1ee9ff281867f90fba7a8ed8bbf06b33ac29d511\n"
    },
    {
      "commit": "ea46f950e7a51585db293cd7f047de190a482414",
      "tree": "9dddc8073547a2dcb58a19e1728932a89cb149c3",
      "parents": [
        "5e3572709b5a5d59957f835db4f73760ecef08da"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Jul 30 01:26:50 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 13 18:09:46 2013 -0700"
      },
      "message": "Refactor java.lang.reflect implementation\n\nCherry-picked from commit ed41d5c44299ec5d44b8514f6e17f802f48094d1.\n\nMove to ArtMethod/Field instead of AbstractMethod/Field and have\njava.lang.reflect APIs delegate to ArtMethod/ArtField.\n\nBug: 10014286.\n\nChange-Id: Iafc1d8c5b62562c9af8fb9fd8c5e1d61270536e7\n"
    },
    {
      "commit": "7655f29fabc0a12765de828914a18314382e5a35",
      "tree": "219f2df20cf7f053a73a345ae20e131a73759c79",
      "parents": [
        "1a8080d4c2e1772cfcc5e9d6587bc63bba3945d9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 11:07:13 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Jul 30 16:00:24 2013 -0700"
      },
      "message": "Portable refactorings.\n\nSeparate quick from portable entrypoints.\nMove architectural dependencies into arch.\n\nChange-Id: I9adbc0a9782e2959fdc3308215f01e3107632b7c\n"
    },
    {
      "commit": "7934ac288acfb2552bb0b06ec1f61e5820d924a4",
      "tree": "43f3acd8af7fd34d4ae7b64f6e06bb8429d74bb8",
      "parents": [
        "fb331d7ca004f39608fcfdae49d38df90c702ea9"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 10:54:15 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Jul 26 11:55:10 2013 -0700"
      },
      "message": "Fix cpplint whitespace/comments issues\n\nChange-Id: Iae286862c85fb8fd8901eae1204cd6d271d69496\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": "1d54e73444e017d3a65234e0f193846f3e27472b",
      "tree": "1de93661e95a0ce6fa78fdfc23d0cfd3dd2a06f7",
      "parents": [
        "4c22e7eabef3f815841dfc6e0d5bbead96150752"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu May 02 21:10:01 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jun 21 11:10:42 2013 -0700"
      },
      "message": "GC clean up.\n\nGreater use of directories and namespaces.\nFix bugs that cause verify options to fail.\nAddress numerous other issues:\n\nGC barrier wait occurring holding locks:\nGC barrier waits occur when we wait for threads to run the check point function\non themselves. This is happening with the heap bitmap and mutator lock held\nmeaning that a thread that tries to take either lock exclusively will block\nwaiting on a thread that is waiting. If this thread is the thread we\u0027re waiting\nto run the check point then the VM will deadlock.\nThis deadlock occurred unnoticed as the call to check for wait safety was\nremoved in: https://googleplex-android-review.googlesource.com/#/c/249423/1.\n\nNewTimingLogger:\nExisting timing log states when a split ends but not when it begins. This isn\u0027t\ngood for systrace, in the context of GC it means that races between mutators\nand the GC are hard to discover what phase the GC is in, we know what phase it\njust finished and derive but that\u0027s not ideal.\n\nSupport for only 1 discontinuous space:\nCode special cases continuous and large object space, rather than assuming we\ncan have a collection of both.\n\nSorted atomic stacks:\nUsed to improve verification performance. Simplify their use and add extra\nchecks.\n\nSimplify mod-union table abstractions.\n\nReduce use of std::strings and their associated overhead in hot code.\n\nMake time units of fields explicit.\n\nReduce confusion that IsAllocSpace is really IsDlMallocSpace.\n\nMake GetTotalMemory (exposed via System) equal to the footprint (as in Dalvik)\nrather than the max memory footprint.\n\nChange-Id: Ie87067140fa4499b15edab691fe6565d79599812\n"
    },
    {
      "commit": "233ea8e084a95ad2a3af746dddbadb155db6a814",
      "tree": "be5eeee19b2274e1b199a230e9297f277b47d155",
      "parents": [
        "8afe6e0d8c4151ac74afc4ebe0dab85550821243"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jun 06 11:57:09 2013 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Jun 13 17:15:16 2013 +0200"
      },
      "message": "No access check support.\n\nThis CL adds support to disable access check when a method is preverified (at\ncompilation time) and we know we don\u0027t need to do any access check.\n\nThe interpreter has now two modes of execution: with or without access check.\nThis is realized by using a template function.\n\nA new runtime access flag kAccPreverified is added onto each method belonging\nto a preverified class. If this flag is set, we enter the interpreter in \"no\naccess check\" mode. Otherwise, we enter the interpreter in \"with access check\"\nmode.\n\nChange-Id: Ic34163421d5b0aca3d1bce22ef7c095dcf465a18\n"
    },
    {
      "commit": "fa46d3ee8cba2985c5c8bdfe47d15daf0613ebdc",
      "tree": "2743be5358aef17e9ae21b0626409feeea919771",
      "parents": [
        "9cec247849c248f6c45a14eae5414b69eb8fc67d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 15 00:16:04 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed May 15 11:03:44 2013 -0700"
      },
      "message": "Interpreter tweaks\n\nIncrease the amount of inlining and hot function hints in the interpreter\nto encourage the hot Execute function to be faster.\nPerformance is 3x slower than Dalvik+JIT on FibonacciFast and similar\nmicrobenchmarks.\n\nChange-Id: I2b1a0c7545f86036b9b1b5ccac881d06292356d8\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": "8447d84d847d4562d7a7bce62768c27e7d20a9aa",
      "tree": "46aad5bf1bc3d3ce28b24ef1fcc5463224083991",
      "parents": [
        "88fc036842eb3c48acd5d3b01e75b3012c996d90"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Apr 30 17:27:40 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Tue Apr 30 20:32:59 2013 -0700"
      },
      "message": "Compile filter for small applications and methods\n\nAdds a filter per method and program size (in method count). Right now, options are treated\nas runtime options...but we might want to change this and separate options for compilers and\nruntime.\n\nChange-Id: I8c3e925116119af8ffa95ff09f77bcfdd173767b\n"
    },
    {
      "commit": "ede1807e3481a6937416964bb7556364f2d428e1",
      "tree": "cdc097338a565c497c65ec51f6360c32c6e6692b",
      "parents": [
        "4da103fcb867f4bcb8d631f781862f76956215ef"
      ],
      "author": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Mon Apr 22 16:39:48 2013 -0700"
      },
      "committer": {
        "name": "Anwar Ghuloum",
        "email": "anwarg@google.com",
        "time": "Mon Apr 22 16:51:48 2013 -0700"
      },
      "message": "Fix Monkeys failure\n\nIan\u0027s handy work: Interpreter was checking whether initializer was in\nprogress instead of falling through to ensureinitialized.  Should have\ninstead check whether initialized and then fall through otherwise.\n\nChange-Id: Idc2f4724ea7c675b1682c2c4c88402bd46cf092f\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": "4f6ad8ab428038129b2d0d6c40b7fd625cca15e1",
      "tree": "d1025ed9203d0cdf7aa959d9cecd8dc1f0c0bfeb",
      "parents": [
        "aabe8adacc7bf3a8ab6f6f3dd37fc839b6fd762f"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:27:28 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Mar 18 15:29:59 2013 -0700"
      },
      "message": "Various performance improvements.\n\nPerformance had regressed due to verify object and method invocation changes.\nAvoid trampolines for static calls in same class.\nVarious inlining changes.\nMake verify object something that\u0027s only compiled-in in debug builds.\n\nChange-Id: Ia261a52232c3b10667c668f8adfadc0da3048bc5\n"
    },
    {
      "commit": "530f71c040cb1a7b946d5566d5a746f08f2d082c",
      "tree": "b350413f9cccdac06730518a9ad2eb7ef8a6f083",
      "parents": [
        "5fe2c162a422426687ba3570df1dc68864386764"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 22 23:29:00 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Feb 25 08:54:25 2013 -0800"
      },
      "message": "Fix proxy return ClassCastException and add test.\n\nAdd test for Bug: 8250775 that doesn\u0027t effect ART. Expand test case further.\nClassCastException has no constructor expecting a cause and so using this\ncreates a JNI failure. Switch to not using a wrapped exception as the wrapping\nitself wasn\u0027t adding information.\n\nChange-Id: I32dd541e1a1022089ec993fa4f4646042c5bf1fa\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": "af6e67a4816d2593586115b89faa659225363246",
      "tree": "e3b330d6ed994f82972da4e5b8c3d06be2c66eae",
      "parents": [
        "a6f3aaf8ca5385d870c35d1555b7787d56a70c95"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 16 08:38:37 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jan 16 15:37:56 2013 -0800"
      },
      "message": "Further proxy refactorings.\n\nFactor the crawling of the quick stack arguments into a common visitor.\nFactor the proxy invocation dispatch into common runtime support code,\nfix numerous bugs relating to GC in the LLVM runtime support with this.\nClean up BoxPrimitive to not use an in argument as an out.\n\nChange-Id: I7b12c8d88d5083614e480b8fb1d2f2ef7c0a51b7\n"
    },
    {
      "commit": "262e251e56d66bd309c6165964ac0a0be24447fe",
      "tree": "89453b090d7213e21d6c79ad731511bd8d1094af",
      "parents": [
        "4f3d94b4e3b40fa7aa2bb5007fa4bb5703189b61"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Dec 11 09:46:43 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Dec 11 10:05:24 2012 -0800"
      },
      "message": "Fixed slow path for invoke-direct with null this pointer.\n\nMoved the null pointer check until after the class linker tries to\nresolve the method on the slow path.\n\nChange-Id: Ie0f9e279a98a7e3a40899fee92337ef454c9a468\n"
    },
    {
      "commit": "d752132c73072084a3def9257cca4fcee76047b6",
      "tree": "92c7bc15db2328db7c14c31f77504a7e879e8467",
      "parents": [
        "278b0db1ee55106486a7aecf39a581aac09fb619"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 21 15:38:24 2012 -0800"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Nov 21 15:38:24 2012 -0800"
      },
      "message": "Various fixes to the interpreter. First 23 run-test tests pass.\n\n- Factored out code to throw stack overflow error into its own method.\n- Increased kStackOverflowReservedBytes to 10kB to support interpreter.\n- Reordered return type checks to prevent type resolution with an\n  exception pending.\n- Fixed field checks so they pass if the field is static or the object\n  is the declaring class.\n- Suppressed using the interpreter for proxy methods.\n\nChange-Id: Ide73ec928ab0aa7b31229c4e69679a35dd948e43\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": "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": "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": "9a4f003f9a6da8e4c6ee279bd2a13aac37648183",
      "tree": "ce78afe7c842c8ff99d52c0a09bfe758d67d037f",
      "parents": [
        "cfb21d92796087963c092b69110a2e7ff7a03a55"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 16:17:40 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 31 10:49:06 2012 -0700"
      },
      "message": "Remove the THROW_VERIFICATION_ERROR op and supporting code.\n\nChange-Id: Idc40a2c379048c7e3d74f50b2bd765a507a417ce\n"
    },
    {
      "commit": "e4f0b2ab4abd8e942a099e9b9b4682fbdd9eb21c",
      "tree": "1f7f1365914264de80ac992916d1bcea5c1e709e",
      "parents": [
        "2fc1427ee9c534ed44d72184ad6d74ea65f3d5b3"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 11:18:57 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 30 11:18:57 2012 -0700"
      },
      "message": "Allow soft failures at runtime and fix null referrer for ICCE and NSME.\n\nChange-Id: I814369f4e41cebf37007cb514a8bf19cbaf17e94\n"
    },
    {
      "commit": "2fc1427ee9c534ed44d72184ad6d74ea65f3d5b3",
      "tree": "7759b3b2f7e25ac66a2d05a48ac9ff918b95eb80",
      "parents": [
        "b9a287cc1c1f4f303acc186b7c97756f326d3537"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 30 10:56:57 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 30 10:56:57 2012 -0700"
      },
      "message": "Fix location of ICCEs and NoSuchMethodErrors.\n\nAlso add detail as to why verifier believes an ICCE.\n\nChange-Id: Ie16ea2847fb94e157969c560a780c9345b1e7441\n"
    },
    {
      "commit": "c0228b8f02c05ed58bea58490e0d8bdcaf8c5bb8",
      "tree": "afbfe1592284d1978ae619e0f9b5aae642b48197",
      "parents": [
        "08f753d5859936f8d3524e9e4faa6cee353873ea"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 29 18:15:05 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 29 18:29:36 2012 -0700"
      },
      "message": "Fixes to verifier and slowpaths for cts invoke tests.\n\nInstructions are never rewritten, so that has been removed from the\nverifier. Also, the slowpath now checks for access errors when it\ncan\u0027t properly resolve a method.\n\nChange-Id: Ie38eacec8eb092ba23502471a0b27ca8ce38fe68\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": "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": "008fa5114f356861f74f086f0b0c50fe42ef2891",
      "tree": "4e02644aad39bad7debe1acf0fd2fe8509ed5e51",
      "parents": [
        "a64f157a79bec7215e29f18a5a73d70edb0f8abf"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Fri Jun 22 08:09:57 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Fri Jun 22 08:53:36 2012 -0700"
      },
      "message": "Fix d2i, f2i runtime support regression.\n\n(double)(int32_t)(0x80000000ul) is not equal to\nstatic_cast\u003cdouble\u003e(0x80000000ul).  We should use\nstatic_cast\u003cdouble\u003e(static_cast\u003cint32_t\u003e(0x80000000))\ninstead.\n\nChange-Id: Idfc39ec7c990056bd157689fe4cdb899e62c0f10\n"
    },
    {
      "commit": "748474146da0c6484fa3dca0a700f612d47550c3",
      "tree": "58837d0fa82d4099eb4b82b2fd3d2bbf4294e4aa",
      "parents": [
        "92e3134cd84c134f167175288671a1e6838c908f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 20 18:10:21 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 21 09:14:27 2012 -0700"
      },
      "message": "Fix a bunch of lint.\n\nThere are still about 1800 lint warnings, so don\u0027t get too excited...\n\nChange-Id: I2394bd6e750b94060231378b3a7a88b87f70c757\n"
    },
    {
      "commit": "6fcce3092040f829afd68862091ce00c7661d8ed",
      "tree": "438147684436ab04308a6ff01942a1e78304e778",
      "parents": [
        "72e401c59bce47fdf0274a0d47f0340b05e4f27f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 19 16:54:19 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 19 16:54:19 2012 -0700"
      },
      "message": "More tests for detail messages, plus a new one.\n\nThe array-length instruction is likely to encounter nulls.\n\nChange-Id: I628f5f00dfaff9414740e2f7015b9fb3d34a1bc9\n"
    },
    {
      "commit": "a4f94740f9d66b21f4bcd3a225c434aa29cfa323",
      "tree": "88e3834418ac3e12d2c270fed3a370bda2643d0b",
      "parents": [
        "214d307f3d5bbfe6254ae9e96d504d3e665baa2c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 16:28:38 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 29 16:28:38 2012 -0700"
      },
      "message": "Finish cleanup of class/field/method caching.\n\nChange-Id: I289ae724cbd98487429275837d23b7b2d7096156\n"
    },
    {
      "commit": "eac766769e3114a078c188ea26776a81f0edb3cf",
      "tree": "4b9b8dfc89725173431817baba4455c013e40577",
      "parents": [
        "3f9ace8d90bfc48c8d7bf35af66de8ce8238de7f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 21:56:51 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 25 12:04:43 2012 -0700"
      },
      "message": "DO NOT MERGE Fix all unsafe caching to be like libcore.\n\nThis way, if a runtime is restarted within a process, we re-initialize all\nthe cached data.\n\nConflicts:\n\n\tsrc/native/java_lang_Runtime.cc -- nativeExit lost an argument in dalvik-dev\n\n(cherry picked from commit 7756d5473fa27ce7e6ac7c31770eef7030431da4)\n\nChange-Id: I6184fc20c2a9ec16c4b053584a4d1c3b64452d0f\n"
    },
    {
      "commit": "41005ddb5576b8630a1084fbb3979ffa602c0599",
      "tree": "af8d74573cc3a98c959566233d12bdb15251910c",
      "parents": [
        "c3f8fa57268740f95a3c25e605bcab638b18d7b9"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed May 09 17:58:52 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue May 15 15:44:18 2012 -0700"
      },
      "message": "Fix x86 type conversions. test-art-host-oat passes.\n\n- test-art-host-oat enabled in test builds.\n\n- Created inline versions of float-to-int and double-to-int.\n\n- Fixed calls to helper functions for long-to-float/double and\n  float/double-to-long.\n\n- Removed storePair and replaced its use with storeBaseDispWide (fixes\n  iput-wide and aput-wide with doubles).\n\n- Renamed helper functions to have art_ prefix.\n\n- Fixed move-exception to store the result back.\n\n- Fixed floating point comparison when the destination reg is the same as\n  a source. The typing would get confused since the source is floating\n  point, but the result is int, and a clobber is needed to overwrite the\n  expected result type. A similar thing happens in float/double-to-int.\n\nChange-Id: I0a876072254411aa42d6acadb8723be030727219\n"
    },
    {
      "commit": "ad0b3a35857d2cd2db720028ebc51176191e2219",
      "tree": "e6cfbb8a5c9e6127796e0dd5912787416ec87bfd",
      "parents": [
        "174651dea03956e160a2cff0d842954823c49134"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 16 14:50:24 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Apr 20 19:01:23 2012 -0700"
      },
      "message": "Support for a set of verifier failures.\n\n(cherry picked from commit 0d60484cbb0c70acc60965b015e94c2e9cb9f1e7)\n\nChange-Id: I70eb1121390305c436a2bed2c7835c870c0c3972\n"
    },
    {
      "commit": "e1758feb293c7ff67d6fe59dbc31af0811863ce5",
      "tree": "eebf758848f8f4cd8dcb2f3a8299a6f98412e0f8",
      "parents": [
        "0d60484cbb0c70acc60965b015e94c2e9cb9f1e7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Apr 19 11:31:15 2012 -0700"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Apr 19 11:31:15 2012 -0700"
      },
      "message": "Revert \"Support for a set of verifier failures.\"\n\nThis reverts commit 0d60484cbb0c70acc60965b015e94c2e9cb9f1e7"
    },
    {
      "commit": "0d60484cbb0c70acc60965b015e94c2e9cb9f1e7",
      "tree": "2b6e289a5f507590722f66d0a157fa5b293cd78f",
      "parents": [
        "a7e6cb4efd9384ac1520976f2d620c72bb08b758"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Apr 16 14:50:24 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Apr 18 17:45:18 2012 -0700"
      },
      "message": "Support for a set of verifier failures.\n\nChange-Id: Idd0f8944bde7ee27271c3f68a2141b5a5265c382\n"
    },
    {
      "commit": "776ac1fa61237db645adb4370a4aab888530caf4",
      "tree": "fbdfe1dec5f1c890d479f700f2b11549d5574119",
      "parents": [
        "42f302c1da4cf1abf935d7aee29ece8d90441e0c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Apr 13 23:36:36 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Apr 14 13:38:06 2012 -0700"
      },
      "message": "Separate out more of LLVM build. Move verifier.\n\nMove the verifier to its own directory and break out major components.\nAvoid compiling unused files as part of the LLVM build, increase the use\nof unimplemented for LLVM.\n\nChange-Id: Icd3b1708363fb70ae99417d06ef8669d60446533\n"
    },
    {
      "commit": "e2645d3e2db211bfd75775a2185c135ff387161a",
      "tree": "623fdeb19171df63c01d0a36f75ecf6ec53dde8e",
      "parents": [
        "4b952e74b4b2efa15cecedfc643c212eaeac2cc7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Apr 11 14:42:42 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Apr 11 15:32:48 2012 -0700"
      },
      "message": "Fix bug in protected field access.\n\nChange-Id: I38b094e54025d26950c0d8c8bb79d2de81d28428\n"
    },
    {
      "commit": "5bb8601175bbb9cd761c715f4ba04f84d65e913b",
      "tree": "441c62e467b6c7a355d9ad65ea88a923abbb409b",
      "parents": [
        "933abf8ce64e522b1c45b191b796bf2208a760d9"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Wed Apr 11 05:57:28 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Wed Apr 11 11:01:21 2012 -0700"
      },
      "message": "Fix 044-proxy. Implement proxy for now, working on x86 and ARM.\n\nAlready added a TODO to do the assembly code for x86 and ARM for proxy.\nUse LLVM .ll for multi-architecture now.\n\nChange-Id: Ibdeeee113dcf284592e9d7769d3044438cb1e453\n"
    },
    {
      "commit": "b92bcabcbb28f69fe99e1c2f2e5559ab2c47aa60",
      "tree": "40c39c168b520afb6b62d3659c2a06c282e7f844",
      "parents": [
        "05c87bea99bbabc36d0db569af735f9459ad8f1a"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 08 00:09:51 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 10 14:57:01 2012 -0700"
      },
      "message": "Fix run-test on host.\n\nChange-Id: I44ebb4cdc2f5966be51a063e3c7256ab3016c404\n"
    },
    {
      "commit": "9e5f5c1dc6cc6551db082fdcf484a145bfb684fd",
      "tree": "532222b9ea20b7bfd689adbb022d9206f13d556e",
      "parents": [
        "a0f746b20d7587281df825689e36ab52af3d3149"
      ],
      "author": {
        "name": "Logan Chien",
        "email": "loganchien@google.com",
        "time": "Tue Apr 10 13:51:45 2012 +0800"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 10 09:14:39 2012 -0700"
      },
      "message": "Implement throw-verification-error opcode in LLVM-based compiler.\n\nChange-Id: I3b902e593f380d7524c8a2d94800d0323364c613\n"
    },
    {
      "commit": "3f9137d85b3c2c0800fb26e3415ace1a6b7cc4de",
      "tree": "7b2c72c1ccf3512fb52fc48ecfb84f9c5c680a82",
      "parents": [
        "6ac6a365a9bdb00e85b46eb8fadfb0cebf653cba"
      ],
      "author": {
        "name": "TDYa127",
        "email": "tdy@google.com",
        "time": "Sun Apr 08 15:59:19 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Apr 10 04:49:44 2012 -0700"
      },
      "message": "Fix NPE message in LLVM.\n\nChange-Id: Ie65060d065d747a6c9ad22c61d5fb29f6cf3c249\n"
    },
    {
      "commit": "0045a290e6b79a274250e3112880c04bde437d4a",
      "tree": "a125d556b6c817218b14f6f3f72079b83d0032c4",
      "parents": [
        "d23f5206cf72ca3fb53ac3049649bb7d018232bf"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 31 21:08:41 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 31 22:38:22 2012 -0700"
      },
      "message": "Avoid a case of eager initialization.\n\nDon\u0027t mark as initialized classes that contain static field\ninitialization.\n\nChange-Id: Iedcabbdf355e8861eb7731650eee1467f68ae0cd\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": "5b21308bfa0f4d25a3fd2f5346e51bd66d4722e8",
      "tree": "5deea0c751a373d7536dc65510c7f8f9d1642a46",
      "parents": [
        "9b2ba2ee9fafe46a08473657a2387fd20ab49a35"
      ],
      "author": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Tue Mar 20 04:26:01 2012 -0700"
      },
      "committer": {
        "name": "Shih-wei Liao",
        "email": "sliao@google.com",
        "time": "Mon Mar 26 21:08:41 2012 -0700"
      },
      "message": "Implement for AME for the LLVM version. Fix the compiler_test.\n\nAME (Abstract Method Error) processing is different for LLVM version,\nbecause we uses return-style exception handling. We have our LLVM version\nof runtime support in runtime_support_llvm.cc, but we have to share this\none: ThrowAbstractMethodErrorFromCode() because it\u0027s called from the\nstub/assembly code for AME exception. Those tricky assembly code\nshouldn\u0027t be duplicated to 2 versions. Instead, we try to just limit\nto return processing. Only differ in the DeliverException case in\nThrowAbstractMethodErrorFromCode().\n\nI.e., LLVM is using return-style and no need for long-jump delivery.\n\nCompiler_test passes now.\n\n(cherry picked from commit c33262b21ece4072cc229511ba9d878981fc5d3c)\n\nChange-Id: If959d100a9e157cbc3618770f6ff1118dce066f5\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": "d5347e08172d6d462c703c0f5e1ce9ef070ec69d",
      "tree": "1d1a72647ac7e2f8ee58c08dbd652500c19bdf5f",
      "parents": [
        "942df41c03ddb9f7b47a34fcfc4414d8b8ca8ce1"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Thu Mar 22 17:25:05 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Mon Mar 26 10:47:57 2012 -0700"
      },
      "message": "Split VERIFY_ERROR_GENERIC into VERIFY_ERROR_BAD_CLASS_HARD/SOFT.\n\nThe verifier was suppressing compilation of some classes that were able\nto verify at runtime. Now VERIFY_ERROR_BAD_CLASS_HARD is used for\nstructural errors to prevent compilation, and\nVERIFY_ERROR_BAD_CLASS_HARD is used for all other verify errors.\n\n(cherry picked from commit da4dc735b9650f63e13b85c9775416006717d27c)\n\nChange-Id: I339639fa94af30f93be12f1ab9d4ef4cec6767e6\n"
    },
    {
      "commit": "441d9126a8682da29f0ea3fa0040b7e0c63025be",
      "tree": "9d856632c8d19394d5f0561b1ce3199c8ecba099",
      "parents": [
        "a035e838be7df28c354b75cfa30296c4d0da0b8b"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Wed Mar 21 17:29:10 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 23 17:15:47 2012 -0700"
      },
      "message": "Class getField/Method returns NULL if type/args are unresolved.\n\nThese changes check that a field\u0027s type is resolved before returning it\nthrough getDeclaredField, and that a method\u0027s return type and argument\ntypes are resolved before returning it through getDeclaredMethods. This\nfixes test failures in libcore MissingClassesTest.\n\n(cherry picked from commit 1ae431a01516b6c91f031aff37c756b7e4f63dd1)\n\nChange-Id: I6bd5601a975e677be6438b1efcb1b1f1ecde900c\n"
    },
    {
      "commit": "250455229aa0cc07bbd18174efe510bd52631a99",
      "tree": "1499cfc216d6092057a4c4bf996c2ce1a2c360ca",
      "parents": [
        "eb5701498830a406e957d11481296eb11734e850"
      ],
      "author": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Tue Mar 13 19:34:37 2012 -0700"
      },
      "committer": {
        "name": "jeffhao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 23 16:49:39 2012 -0700"
      },
      "message": "Added option to allow verification of objects on the stack.\n\nCurrently it\u0027s defined out by VERIFY_OBJECT_ENABLED. Also made various\nfixes to allow heap object verification to work again.\n\n(cherry picked from commit d4983495782be8d54c9c1f0266dc52395b947724)\n\nChange-Id: Icd625e1e0dc240c0ad1d10e2c58c7d5d63fec030\n"
    },
    {
      "commit": "634eb2eb14f87753519d0ef2c5f256e55888f378",
      "tree": "798e5596e1229248b6b297eb51542078ce86c1f9",
      "parents": [
        "8fb932e9410dbd1791dc2b56b67e977607793e05"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 16:06:28 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 22 16:06:28 2012 -0700"
      },
      "message": "Add some extra debugging/diagnostic support.\n\nCHECK that we don\u0027t bring a class back from a \"permanent\" error status in the\noat file at runtime.\n\nCHECK that runtime_support.cc doesn\u0027t hand out 0 as an address for its caller\nto branch to.\n\nAlso remove some accidentally left in debugging output.\n\nAlso fix a few comment typos.\n\nChange-Id: Ibf4224940e9013184888c7854e675b17e0500ac9\n"
    },
    {
      "commit": "051c9fc1de07bbc265af38cf60f061394163c68f",
      "tree": "55e45440cadf3f379655310378a74985aae7abbc",
      "parents": [
        "f24132c3320cca583e69edbc19491f82c1c7466a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 21 12:24:55 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 21 12:24:55 2012 -0700"
      },
      "message": "Fix ProxyTest.\n\nOne of our failing CTS tests was because we weren\u0027t implement \"strict\" mode. I\nadded a CHECK here the other day while touching all callers, which conveniently\nmade us abort in that case, pointing to the error. Throwing instead gives us\nthe behavior we want.\n\nChange-Id: Ia93900dd5157685f5142cd9662088c1417299c09\n"
    },
    {
      "commit": "2ed3b9536ccfd7c7321cc18650820b093b22d6c9",
      "tree": "c0e211414d0fed674ed2d1fbb340433b49adb57b",
      "parents": [
        "e9dc4c0beae58d7d6d4cf43140c233251e06bbb7"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 17 11:49:39 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sat Mar 17 12:34:56 2012 -0700"
      },
      "message": "Implement direct apk -\u003e boot calling\n\nAlso sharpen super calls.\n\nChange-Id: Ie4d3ab2cbf2961a06ec86762a53132f49a4ed922\n"
    },
    {
      "commit": "dbac3090ace708eb27c707d4b72efc48c069129c",
      "tree": "2b811b40af24ce849d327643f05b4244ca2449fb",
      "parents": [
        "5efa670d6a8cf6ad3771b9fb7d4c10598ad78f9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 18:00:30 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 16 18:00:30 2012 -0700"
      },
      "message": "Ensure that BoxPrimitive only sees clean data...\n\n...rather than forcing it to zero irrelevant bits itself.\n\nChange-Id: Ibbd28db08b68fac84704a911a6f927f7d9343055\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": "88c5c355fc3d881f905564911d746b2313d5fc89",
      "tree": "d5b11b85131064cb6200465e674060933f48ebd7",
      "parents": [
        "141b0c75986949da0adbf9c07ad92bc675f1bfed"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 18:49:48 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 15 21:14:57 2012 -0700"
      },
      "message": "Make CheckJNI and JNI workarounds mutually exclusive...\n\n...in the opposite direction; needing workarounds turns off CheckJNI.\nThis isn\u0027t necessarily a good idea, but I like the cleanup parts of\nthis change.\n\nChange-Id: I708235ea3e5cc35ef90b01dd810e097e3ff9dd26\n"
    },
    {
      "commit": "98d39884f64d13aada5e716bb38e2f069c7ad0a7",
      "tree": "a4b110f88872719da560e8c3708bd5f597c3e6e0",
      "parents": [
        "f7d9ad39541dd09030e26d54d3b73a076f90cc74"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 15 01:42:12 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Mar 15 01:51:33 2012 -0700"
      },
      "message": "Add detail message to null pointer exceptions.\n\nRemove redundant location of NPE in detail message of throw NPE for\nmethod access as the information is available via the stack.\n\nChange-Id: Iee3400c21a0348f6c4e7530b990bc546a80a513c\n"
    },
    {
      "commit": "b600b3f8360f535913fedc91aef7c8e5abaca48a",
      "tree": "b8f4fdca44a70caec314b210372d678ad9501dbf",
      "parents": [
        "002b915276064dbe2ce9caf7474d3032301d8d7c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 14 13:57:24 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Mar 14 13:57:24 2012 -0700"
      },
      "message": "Fix/improve exception detail messages for unboxing.\n\nThis fixes libcore/luni/src/test/java/libcore/java/lang/reflect/MethodTest.java\nfailures.\n\nChange-Id: Idf6aae169bd72f0534d4094170536e6b2515ca07\n"
    },
    {
      "commit": "0ece7b950dc5821e79c930acf31fb7e73c570849",
      "tree": "ce4006468c5ea8b068055b5f770b058477e35a25",
      "parents": [
        "e663a5b5b218deae32de739d89f888ceeeba65df"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 09 18:14:40 2012 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Sat Mar 10 09:51:21 2012 -0800"
      },
      "message": "Remove an unnecessary \"art\" prefix on functions in the art namespace.\n\nChange-Id: I160bc78ef9000364f657a9972dd8c648ca2f53aa\n"
    }
  ],
  "next": "d20db02db57625150058f1face0efad610ec7b25"
}
