)]}'
{
  "log": [
    {
      "commit": "804b03ffb9b9dc6cc3153e004c2cd38667508b13",
      "tree": "91c7fd54b5000e041bf9d3d5b233dabce1fad614",
      "parents": [
        "80eb0bc2757274816a014a2997848d288c9ee553"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 16:26:36 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 20 14:55:44 2016 +0100"
      },
      "message": "Change remaining slow path throw entrypoints to save everything.\n\nChange DivZeroCheck, BoundsCheck and explicit NullCheck\nslow path entrypoints to conform to kSaveEverything.\n\nOn Nexus 9, AOSP ToT, the boot.oat size reduction is\n  prebuilt multi-part boot image:\n    - 32-bit boot.oat: -12KiB (-0.04%)\n    - 64-bit boot.oat: -24KiB (-0.06%)\n  on-device built single boot image:\n    - 32-bit boot.oat: -8KiB (-0.03%)\n    - 64-bit boot.oat: -16KiB (-0.04%)\n\nTest: Run ART test suite including gcstress on host and Nexus 9.\nTest: Manually disable implicit null checks and test as above.\nChange-Id: If82a8082ea9ae571c5d03b5e545e67fcefafb163\n"
    },
    {
      "commit": "908eb22e49edc9fe070afe5ab44a5d07299dc976",
      "tree": "dd699fa39f0bf0edc93e138aa301472bbb0ea61d",
      "parents": [
        "58735fbfbb2da0c0a19b3239da07c2353c40767d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 10:29:18 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 15:54:17 2016 +0100"
      },
      "message": "ARM/ARM64: Fix throwing entrypoints to call runtime handlers.\n\nTest: Run ART test suite including gcstress on Nexus 9.\nBug: 31468464\nChange-Id: I2521675125d243be3168a2e87b70185791322b42\n"
    },
    {
      "commit": "05846475c8d48ce191dcd333c76d5ccc17aea9dd",
      "tree": "bfbcbba324eda45fae27b31ce0ce589c5f472474",
      "parents": [
        "e305eaf2c08a203e3e046c3a8608b90b9dc5a080"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 12:49:57 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 12:55:09 2016 +0100"
      },
      "message": "Remove ThrowNoSuchMethod entrypoint.\n\nRun ART test suite on host and Nexus 6.\nBug: 31464666\nChange-Id: I5aa737726031adae0b132f759cf802a93d581a7f\n"
    },
    {
      "commit": "3b7537bfc5a6b7ccb18b3970d8edf14b72464af7",
      "tree": "49996e22e36a64ea862e7b173e9626d862a4d595",
      "parents": [
        "c11d1b42828475ea1e7319fc3eb9402edc5b1c13"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 13 11:56:01 2016 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 14 10:42:08 2016 +0100"
      },
      "message": "Revert \"Revert \"Use implicit null checks inside try blocks.\"\"\n\nFix implicit checks in try blocks to emit stack maps.\nFix arm64 null expection from signal entrypoint to call\nthe runtime handler instead or simply jumping there.\n\nOn Nexus 9, AOSP ToT, the boot.oat size reduction is\n  prebuilt multi-part boot image:\n    - 32-bit boot.oat: -448KiB (-1.3%)\n    - 64-bit boot.oat: -528KiB (-1.2%)\n  on-device built single boot image:\n    - 32-bit boot.oat: -448KiB (-1.4%)\n    - 64-bit boot.oat: -528KiB (-1.3%)\nNote that the oat files no longer contain dex files which\nhave been moved to vdex, so the percentages are not directly\ncomparable with the those reported in the original commit.\n\nTest: Run ART test suite including gc-stress on host and Nexus 9.\nBug: 30212852\nBug: 31468464\n\nThis reverts commit 0719b5b9b458cb3eb9f0823f0dacdfe1a71214dd.\n\nChange-Id: If8a9da8c11adf2aad203e93b6684ce16ed776285\n"
    },
    {
      "commit": "0719b5b9b458cb3eb9f0823f0dacdfe1a71214dd",
      "tree": "cf0844758239b6ec41fa070e4fb4b4fbcbb9e506",
      "parents": [
        "7aa7560683626c7893011271c241b3265ded1dc3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 12 22:05:33 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Sep 12 22:05:33 2016 +0000"
      },
      "message": "Revert \"Use implicit null checks inside try blocks.\"\n\nFails gcstress tests.\n\nThis reverts commit 7aa7560683626c7893011271c241b3265ded1dc3.\n\nChange-Id: I4f5c89048b9ffddbafa02f3001e329ff87058ca2\n"
    },
    {
      "commit": "7aa7560683626c7893011271c241b3265ded1dc3",
      "tree": "8c9839456149d2320995764ebab5d227a6dea8e7",
      "parents": [
        "ae6ba1fd36ef6cd6520354fa874cf9cc2fc5877b"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 07 15:09:21 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 12 14:52:17 2016 +0100"
      },
      "message": "Use implicit null checks inside try blocks.\n\nMake implicit null check entrypoint save all registers, use\nplatform-specific approach to still pass the fault address.\nAllow implicit null checks in try blocks.\n\nOn Nexus 9, AOSP ToT, the boot.oat size reduction is\n  prebuilt multi-part boot image:\n    - 32-bit boot.oat: -452KiB (-0.7%)\n    - 64-bit boot.oat: -482KiB (-0.7%)\n  on-device built single boot image:\n    - 32-bit boot.oat: -444KiB (-0.7%)\n    - 64-bit boot.oat: -488KiB (-0.7%)\n\nTest: Run ART test suite on host and Nexus 9.\nTest: Build aosp_mips64-eng.\nChange-Id: I279f3ab57e2e2f338131c5cac45c51b673bdca19\n"
    },
    {
      "commit": "239d6eaff0cbb5c4c0139f7053a012758799f186",
      "tree": "8de26b30a2dfd94f849a38c8901437facbbc53b3",
      "parents": [
        "9d185da3bef8caf015d3dbf4ad79c520af7ce3b1"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 05 10:44:04 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 06 17:37:41 2016 +0100"
      },
      "message": "Change deoptimize entrypoint to save everything.\n\nAnd implement FPU register retrieval from stack on x86.\n\nOn Nexus 9, AOSP ToT, the boot.oat size reduction is\n  prebuilt multi-part boot image:\n    - 32-bit boot.oat: -20KiB (-0.03%)\n    - 64-bit boot.oat: -45KiB (-0.06%)\n  on-device built single boot image:\n    - 32-bit boot.oat: -24KiB (-0.04%)\n    - 64-bit boot.oat: -36KiB (-0.05%)\n\nTest: Run ART test suite on host and Nexus 9.\nBug: 30212852\nChange-Id: I5d98e2a24363136d73dfec6100ab02f8eb101911\n"
    },
    {
      "commit": "161db1dea4808d32db3623cc1a8e91b53df0fb02",
      "tree": "43b1481040788e63ced53518061714539e5e5406",
      "parents": [
        "4fd93aebe856151f818cfca515a902f7a171c604"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 01 14:06:54 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 02 10:56:08 2016 -0700"
      },
      "message": "Use the fast path object size for RosAlloc asm stubs\n\nAlso address comments. MemAllocTest perf on N5X speedup in the noise.\n\nBug: 9986565\n\nTest: test-art-host -j32, N5X booting\n\nChange-Id: Ic22ca92aab88b37fd66928949bf11264ee3476dc\n"
    },
    {
      "commit": "93bbee0c1c97bd9a5336ed0c9e41cd17613df585",
      "tree": "7f2fe8d9ec240b34e7ee153b95e69b821554ab7e",
      "parents": [
        "1c29876b303ab392e615b2294db009a971613bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 31 09:38:40 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 31 18:32:33 2016 -0700"
      },
      "message": "Faster allocation fast path\n\nAdded a new object size field to class, this field contains the\naligned object size if the object is not finalizable and is\ninitialized. If the object is finalizable or uninitialized the field\nis set to some large value that forces the ASM allocators to go slow\npath.\n\nOnly implemented for region/normal TLAB for now, will add the to\nRosAlloc stubs soon.\n\nCC N6P MemAllocTest: 1067 -\u003e 1039 (25 samples)\nCC N6P EAAC: 1281 -\u003e 1260 (25 samples)\n\nRAM overhead technically 0 since mirror::Class was not 8 byte aligned\npreviously. Since the allocators require 8 byte allignment, there\nwould have been 1 word of padding at the end of the class. If there\nwas actually 4 extra bytes per class, the system overhead would be\n36000 * 4 \u003d 120KB based on old N6P numbers for the number of loaded\nclasses after boot.\n\nBug: 9986565\n\nTest: test-art-host CC baker, N6P phone boot and EAAC runs.\n\nChange-Id: I119a87b8cc6c980bff980a0c62f42610dab5e531\n"
    },
    {
      "commit": "56ece93b527cfd7d3f2a82861c8be4441ff170e1",
      "tree": "853f06fdc558661439788f975c1e78f18f9121aa",
      "parents": [
        "38daddf297d2ce570b92144f168804513c35569f"
      ],
      "author": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Mon Aug 22 18:16:15 2016 -0700"
      },
      "committer": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Tue Aug 23 10:32:46 2016 -0700"
      },
      "message": "ART: Improve art_quick_resolve_string for arm.\n\nCheck gc_is_marking instead of the mark bit first, this makes it that we\ndon\u0027t go slow path if the GC is not running.\n\nTest: test-art-host\n\nBug: 20323084\nChange-Id: I834742fbb670302ba0955a579008ff75914a2673\n"
    },
    {
      "commit": "35ef14b97fb6bd085b09c77e8d179d6204ccc0ad",
      "tree": "983a8bf422c39960169b77658181c21727a62308",
      "parents": [
        "621a27ed21ec5be3c5a2fd473a32bd07260c85e3"
      ],
      "author": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Fri Aug 19 11:24:48 2016 -0700"
      },
      "committer": {
        "name": "Christina Wadsworth",
        "email": "cwadsworth@google.com",
        "time": "Mon Aug 22 13:27:32 2016 -0700"
      },
      "message": "ART: String DexCache asm fast path for ARM\n\nIn the entrypoints, before a string is looked up in the slow path (in\nthe intern table), I added assembly to check the dex cache and return a\nstring pointer if the string is already in the dex cache.\n\nTest: test-art-host\n\nChange-Id: I245946b3efa9c2e4fa56f761effb90963ac22ec4\n"
    },
    {
      "commit": "40df7c16f591e5ec9a2affe711212fa4855a94a4",
      "tree": "1ba08a043d9193f4c8a1b9b1874a7a7ccd8f82a9",
      "parents": [
        "ce999e7c8af5f76a05ab0b2267ef7b74d25c75b5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 22 16:02:12 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 22 16:16:06 2016 +0100"
      },
      "message": "ARM/ARM64: Improve comments for kSaveEverything assembly.\n\nAddresses post-submit comments for\n    https://android-review.googlesource.com/255290\n\nTest: Rely on TreeHugger (just adds comments).\nBug: 30212852\nChange-Id: I6ccc004774e18bbd83e3940e908cfc6c521142db\n"
    },
    {
      "commit": "36c2271ab12a1a74dcaef2593982e1f4b42dffc1",
      "tree": "13dbb900387cc6b3b12bfe823ab8e1e783ba02b8",
      "parents": [
        "ba1642dec60c053895c259deac429463669ddc9b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 12 13:19:44 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Aug 12 17:10:07 2016 -0700"
      },
      "message": "Improve READ_BARRIER_MARK_REG for arm32\n\nUse blocked register IP as scratch, avoid pushing in fast path.\n\nClean up slow path to not have simpler logic and one less memory\nwrite.\n\nAdd simple fast path handling for region space TLAB object\nallocation.\n\nTest: test-art-target, N6P booting with CC baker\n\nBug: 30162165\n\nChange-Id: I6594e42d3d6277ffe7bb79df09df8be6bee85eb5\n"
    },
    {
      "commit": "de5f194bb7c99bb90706497afd9c0f0aa29fa415",
      "tree": "b46ce0f3681772e7b318e0f625af1fe4a1e19e4c",
      "parents": [
        "38dd0e8f0a0158c12eba2a9d91a8086603156f2d"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 10 12:30:05 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 10 20:22:15 2016 +0100"
      },
      "message": "ARM/ARM64: Improve assembler macros for kSaveEverything frame.\n\nOn ARM, use vpush/vpop {d0-d15} instead of {s0-s31}.\nOn ARM64, use 16-byte aligned stp/ldp for FP registers.\n\nTest: Run ART test suite on Nexus 9.\nBug: 30212852\nChange-Id: I36c04d3f1f7e03661c501977c3c9ffa7d2942d2f\n"
    },
    {
      "commit": "fd36f1f927c138575184a1f4c7ea4e7abb3e2dbf",
      "tree": "2debb35c9193ac019071e0625986698ccbcaabb8",
      "parents": [
        "c218427ab96e521e0c4e9a3ffeb87e6c57eea0a5"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 03 18:49:58 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Aug 10 14:19:49 2016 +0100"
      },
      "message": "Rename callee save enumerators.\n\nAnd related image method enumerators, macros, etc.\nClean up some entrypoint assembly comments.\n\nThis is a follow-up to\n    https://android-review.googlesource.com/252348\n\nTest: Run ART test suite on host and Nexus 9.\nBug: 30212852\nChange-Id: I2707342d4255c88c547655be83ed97a67e12ae9e\n"
    },
    {
      "commit": "965c0b9f98a4acbec7be148291196e30784bba2d",
      "tree": "c9b53c36226535f2941d47a1ea222da114266680",
      "parents": [
        "2e98023165349ab91855555f63fed8dad3c471fe",
        "952dbb19cd094b8bfb01dbb33e0878db429e499a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 04 14:44:10 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 04 14:44:10 2016 +0000"
      },
      "message": "Merge \"Change suspend entrypoint to save all registers.\""
    },
    {
      "commit": "952dbb19cd094b8bfb01dbb33e0878db429e499a",
      "tree": "82932c2b00245042e2c129f3d4133f6431657da3",
      "parents": [
        "df638c66d1f385d4e217b2ab22c5e48a7eefdef4"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Jul 28 12:01:51 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Aug 04 14:51:52 2016 +0100"
      },
      "message": "Change suspend entrypoint to save all registers.\n\nWe avoid the need to save/restore registers in slow paths\nand get significant code size savings. On Nexus 9, AOSP:\n  - 32-bit boot.oat: -1.4MiB (-1.9%)\n  - 64-bit boot.oat: -2.0MiB (-2.3%)\n  - other 32-bit oat files in dalvik-cache: -200KiB (-1.7%)\n  - other 64-bit oat files in dalvik-cache: -2.3MiB (-2.1%)\n\nTest: Run ART test suite on host and Nexus 9 with gc stress.\nBug: 30212852\nChange-Id: I7015afc1e7d30341618c9200a3dc9ae277afd134\n"
    },
    {
      "commit": "36a270ae4f288e49493432b7128f899ad579849e",
      "tree": "99f134bbfe111b1c42b1b0c19d8b65175a3e6fc8",
      "parents": [
        "89bd8358c0a69e8cd6456d81d88ef366e261f732"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 28 18:08:51 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 03 15:46:18 2016 -0700"
      },
      "message": "Change one read barrier bit to mark bit\n\nOptimization to help slow path performance. When the GC marks an\nobject through the read barrier slow path. The GC sets the mark bit\nin the lock word of that reference. This bit is checked from the\nassembly entrypoint the common case is that it is set. If the bit is\nset, the read barrier knows the object is already marked and there is\nno work to do.\n\nTo prevent dirty pages in zygote and image, the bit is set by the\nimage writer and zygote space creation.\n\nEAAC score (lower is better):\nN9: 777 -\u003e 700 (average 31 of runs)\nN6P (960000 mhz): 1737.48 -\u003e 1442.31 (average of 25 runs)\n\nBug: 30162165\nBug: 12687968\n\nTest: N9, N6P booting, test-art-host, test-art-target all with CC\n\nChange-Id: Iae0cacfae221e33151d3c0ab65338d1c822ab63d\n"
    },
    {
      "commit": "4359e61927866c254bc2d701e3ea4c48de10b79c",
      "tree": "05d274ecd6b5ff6eb890f64cd3bb670c7170bf15",
      "parents": [
        "2be946bbf995496fe56364d9b7c4957fcb6aeec5"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 20 11:32:19 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 21 11:21:20 2016 +0100"
      },
      "message": "Move caller-saves saving/restoring to ReadBarrierMarkRegX.\n\nInstead of saving/restoring live caller-save registers\nbefore/after the call to read barrier mark entry points\nReadBarrierMarkRegX, have these entry points save/restore\nall the caller-save registers themselves (except register\nrX, which contains the return value).\n\nAlso refactor the assembly code of these entry points\nusing macros.\n\n* Boot image code size variation on Nexus 5X\n  (aosp_bullhead-userdebug build):\n  - total ARM64 framework Oat files size change:\n    119196792 bytes -\u003e 115575920 bytes (-3.04%)\n  - total ARM framework Oat files size change:\n    100435212 bytes -\u003e 97621188 bytes (-2.80%)\n\n* Benchmarks (ARM64) score variations on Nexus 5X\n  (aosp_bullhead-userdebug build):\n  - RitzPerf (lower is better)\n    - average score difference: -2.71%\n  - CaffeineMark (higher is better)\n    - no real difference for most tests\n      (absolute variation lower than 1%)\n    - better score on the \"Method\" benchmark:\n      score variation 41253 -\u003e 44891 (+8.82%)\n\nTest: ART host and target (ARM, ARM64) tests.\nBug: 29506760\nBug: 12687968\nChange-Id: I881bf73139a3f1c2bee9ffc6fc8c00f9a392afa6\n"
    },
    {
      "commit": "011dc2c4b9f3a064cba801679aedd3251fe191e3",
      "tree": "08924388d8a91759c8aa7acfc1bc53153605e4df",
      "parents": [
        "4c489f48ef432126b8e7a84b61c1c13a7514c085"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 18 11:11:45 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Jul 18 15:02:27 2016 -0700"
      },
      "message": "Do allocation fence before pushing on allocation stack\n\nHeap::VisitObjects relies on having valid classes for objects in\nthe allocation stack. If the writes reorder, the thread calling\nVisitObjects could see the free list pointer instead of the class\nof the object. I believe this is causing crashes in VisitObjects.\n\nBug: 28790624\n\nTest: Volantis booted\n\nChange-Id: I0f2d4097de1ef3f5caf670ecc977d4d6837872ca\n"
    },
    {
      "commit": "02b75806a80f8b75c3d6ba2ff97c995117630f36",
      "tree": "ecdb1852c3e33f120110091cc2d07a9737fbd3b5",
      "parents": [
        "5f485719b166ceb8e591329d40e76c5e50988022"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 13 11:54:35 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jul 13 11:54:35 2016 +0100"
      },
      "message": "Introduce more compact ReadBarrierMark slow-paths.\n\nReplace entry point ReadBarrierMark with 32\nReadBarrierMarkRegX entry points, using register\nnumber X as input and output (instead of the standard\nruntime calling convention) to save two moves in Baker\u0027s\nread barrier mark slow-path code.\n\nTest: ART host and target (ARM, ARM64) tests.\nBug: 29506760\nBug: 12687968\nChange-Id: I73cfb82831cf040b8b018e984163c865cc44ed87\n"
    },
    {
      "commit": "aaeef5ed498f83125a54ef1cf2d044d2872f888f",
      "tree": "e6120dcd2b24c41dafafc719794e7f01fb920a61",
      "parents": [
        "1fdb340de4e608a88e8683c857cad5d0da2c16de"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 05 18:43:51 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jul 05 18:43:51 2016 +0100"
      },
      "message": "Remove stray end of macro.\n\nThese lines used to be part of the definition of\nSETUP_REFS_ONLY_CALLEE_SAVE_FRAME_PRESERVE_RTEMP2,\nwhich has been deleted.\n\nTest: ART target (ARM) tests.\nBug: 29259539\nChange-Id: I4eda77cb739e58d387ffab61a127dc7bc24e2374\n"
    },
    {
      "commit": "e8e1127da3f154fae8d2eb16a94203544a182159",
      "tree": "930aa5bd3f4e81dcf1b27043844da55a3dcb5cc4",
      "parents": [
        "739dc72773c5dee583a1d322f91b5abd61f9889d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jun 28 18:08:46 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 29 12:31:52 2016 +0100"
      },
      "message": "Do checks on the fault address when we think it\u0027s an NPE.\n\nbug:29321958\nChange-Id: I28f4da56eb3e0b48721d3ac41114858bc80daadb\n"
    },
    {
      "commit": "87f3fcbd0db352157fc59148e94647ef21b73bce",
      "tree": "5bdeabb246f5de86704333b3fcbccc6e9146d246",
      "parents": [
        "b94b5706f0b8e2e1c7e1db22274f9f4bae0c4b5a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Apr 28 15:52:11 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 21 15:17:38 2016 +0100"
      },
      "message": "Replace String.charAt() with HIR.\n\nReplace String.charAt() with HArrayLength, HBoundsCheck and\nHArrayGet. This allows GVN on the HArrayLength and BCE on\nthe HBoundsCheck as well as using the infrastructure for\nHArrayGet, i.e. better handling of constant indexes than\nthe old intrinsic and using the HArm64IntermediateAddress.\n\nBug: 28330359\nChange-Id: I32bf1da7eeafe82537a60416abf6ac412baa80dc\n"
    },
    {
      "commit": "3098c8cef67748d33366cfdd76e2713f03cce17e",
      "tree": "6884fecf58b61dd01cc5fe7c39ca50b64af6c68a",
      "parents": [
        "63e0a7d057adbe17ba0d34624d83f1120cb1162f"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 14 17:43:17 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 14 19:15:53 2016 +0100"
      },
      "message": "ARM: Use GOT_PREL references for Runtime::Current().\n\nBug: 29259539\nChange-Id: I5039ff016403d438f496a55d4bb1775c3d67c09c\n"
    },
    {
      "commit": "0f838aa279a296b5f14c231065bb2f96b02d9caf",
      "tree": "bfcfb623b4e57ba2b0e4c88e735447b5a6f8f7c6",
      "parents": [
        "616723f67e253c3eba8123029b45684e1f33454e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jun 08 18:01:22 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Jun 09 10:36:15 2016 +0100"
      },
      "message": "Fix FOUR_ARG_DOWNCALL assembly stubs on arm and x86.\n\nThey were creating a stack that the runtime did not understand.\n\nbug:28348339\nChange-Id: Ic03663552209beda8ff1e79db58bedc8f34d9a0e\n"
    },
    {
      "commit": "c25cbf14595799265d3d1b5bafb8dd00b91dbbc1",
      "tree": "3bb842edbcff3de90246eed1672c0cd1069ff17b",
      "parents": [
        "a741785dddab1f4b79253514287860d11c5800c6"
      ],
      "author": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Mon Apr 18 09:00:11 2016 +0100"
      },
      "committer": {
        "name": "Scott Wakeling",
        "email": "scott.wakeling@linaro.org",
        "time": "Fri May 20 11:56:14 2016 +0100"
      },
      "message": "ARM: Add new String.compareTo intrinsic.\n\nBenchmarked on Nexus6P big, little, and all cores. The new intrinsic is\nfaster than pStringCompareTo for compare lengths on [1,512], so the\nruntime call is no longer needed.\n\nChange-Id: If853b592dfc5e561ea3389b51729f37a2c89c18e\n"
    },
    {
      "commit": "c7ed09bd5d6f2c7af3bcba1c39b3f9185af68796",
      "tree": "bfad0c9f5236cc4d158bc0c64d5ef645ce09d283",
      "parents": [
        "0f35e0b26d8c7738ca7b284357afa9dafb659d47"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 25 20:08:55 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 29 16:06:14 2016 -0700"
      },
      "message": "ART: Log all monitor operations to systrace\n\nAdd a VLOG option (\"-verbose:systrace-locks\") to log all monitor\noperations to systrace. This requires non-fastpath thread\nentrypoints, and ATRACE tags for locking and unlocking.\n\nDo a bit of cleanup to the entrypoint initialization to share\ncommon setup.\n\nBug: 28423466\n\n(cherry picked from commit fc6898769ae1ef91ec3e41c0a273401213cb82cd)\n\nChange-Id: Ie67e4aa946ec15f8fcf8cb7134c5d3cff0119ab3\n"
    },
    {
      "commit": "ab4c64b2001e0d517429ffcc03f0f354ea48a840",
      "tree": "6b0e6f95ff57d2d43f18d67bb83de02b0547782d",
      "parents": [
        "dc1d10458ea2cf29fd861f32ab28e9abac0239ec"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Apr 14 11:46:58 2016 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Thu Apr 14 11:48:14 2016 +0200"
      },
      "message": "Fix copy-paste nit\n\nPair ENTRY and END macros.\n\nChange-Id: I17dcc61cdd02b2c26b9920e5385b6cb1420b18dd\n"
    },
    {
      "commit": "59028d90d51a800bcea8be354d77d7be924da3a0",
      "tree": "7e2f5057e3332661dd815d7f916ddb78c853fe6b",
      "parents": [
        "cf0f8560f41467331427418584687830932e66ed"
      ],
      "author": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Tue Mar 29 18:05:03 2016 +0200"
      },
      "committer": {
        "name": "Goran Jakovljevic",
        "email": "Goran.Jakovljevic@imgtec.com",
        "time": "Fri Apr 01 17:13:37 2016 +0200"
      },
      "message": "MIPS: Improving art_quick_imt_conflict_trampoline\n\nThis is fixing stub_test for MIPS32 and MIPS64. This is follow up\nchange for Ie74d1c77cf73d451a1142bdc5e3683f9f84bb4e7.\n\nChange-Id: I3c53ef690aff49d7cf9ad3de3aaed9a3d2e1c6b9\n"
    },
    {
      "commit": "796d63050a18f263b93ea34951a61deaecab3422",
      "tree": "813865c31b25ac06006e4ee3932b4e918c708c9b",
      "parents": [
        "eecf60d51b481647c8508f22b3d6ce437773ea0c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Mar 13 22:22:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 22 15:17:58 2016 +0000"
      },
      "message": "Add an ImtConflictTable to better resolve IMT conflicts.\n\n- Attach a ImtConflictTable to conflict runtime ArtMethod.\n- Initially 0, a new one will be created at the first hit of\n  the conflict method.\n- If the assembly code does not find a target method in the table,\n  we will create a new one again, copying the data from the previous\n  table and adding the new mapping.\n\nImplemented for arm/arm64/x86/x64.\n\nbug:27556801\nbug:24769046\n\nChange-Id: Ie74d1c77cf73d451a1142bdc5e3683f9f84bb4e7\n"
    },
    {
      "commit": "d72945c6b18831630af8755fcf041f5a59c82cae",
      "tree": "413977fb152b0db8b19320431d5d620521d5751a",
      "parents": [
        "8e57978b5f330a322f05644c2db7fa8ce89b1b46"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 16 11:23:10 2016 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 16 13:54:01 2016 -0700"
      },
      "message": "Revert \"Revert \"Assembly TLAB allocation fast path for arm64.\"\"\n\nThis reverts commit 52fa2c698b995c21940f366cf3a44204ddf4f8e9.\n\nFix the mvn instructions.\n\nBug: 9986565\nChange-Id: Ib7b2023cd54c57131442e1de85c64f40b818313d\n"
    },
    {
      "commit": "52fa2c698b995c21940f366cf3a44204ddf4f8e9",
      "tree": "976463c15a1616b128551d32b3fdea6c8b48a3a5",
      "parents": [
        "4344e11598b3079032773ad7e381658f39bed92e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 10:23:03 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 10:23:31 2016 +0000"
      },
      "message": "Revert \"Assembly TLAB allocation fast path for arm64.\"\n\nAssembly code does not compile\nBug: 9986565\n\nThis reverts commit b7e52b02a82c69e59c88f06945fb21672dfe9923.\n\nChange-Id: I80de1bcd6270e2d76f79cb708811a41c039ea5bb\n"
    },
    {
      "commit": "563cf332e4560601207b2d039b42f6b0fdff8ce8",
      "tree": "2584f2a938507b6d0fcd18915f627992f1eccfd6",
      "parents": [
        "448f21e2c1cb43b193736598719979ebd2aed0b0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 10:22:09 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 10:22:09 2016 +0000"
      },
      "message": "Revert \"Tentative fix for build breakage with read barriers.\"\n\nThis reverts commit 448f21e2c1cb43b193736598719979ebd2aed0b0.\n\nChange-Id: Id821effa06697b1464581bcd9c8f34cd0ea69896\n"
    },
    {
      "commit": "448f21e2c1cb43b193736598719979ebd2aed0b0",
      "tree": "eff0cd1fcffd7609cda6ca3018c8945aee0d2949",
      "parents": [
        "553ed05100f079203371da55e8a9d824b8e9948e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 09:36:35 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 09:36:46 2016 +0000"
      },
      "message": "Tentative fix for build breakage with read barriers.\n\nChange-Id: I490821357525bdeb19c330f350635bd645f8ab53\n"
    },
    {
      "commit": "b7e52b02a82c69e59c88f06945fb21672dfe9923",
      "tree": "89700d959a34dfd18a65e98db3b4b22dde6761a0",
      "parents": [
        "2f74be0856b56942614ec65896853a58a37b7aff"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 09 21:14:41 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Mar 15 11:31:18 2016 -0700"
      },
      "message": "Assembly TLAB allocation fast path for arm64.\n\nThis is the arm64 version of CL 187537.\n\nSpeedup (GSS GC with TLAB on N9):\n        BinaryTrees:   591 -\u003e  493 ms (-17%)\n        MemAllocTest:  792 -\u003e  755 ms (-5%)\n\nBug: 9986565\n\nChange-Id: Icdad28cab0fd835679c640b7eae59b33ac2d6654\n"
    },
    {
      "commit": "91cdf71e166630eb5e28e02298b0ba6ed4037553",
      "tree": "ef47c10b5c283fa7ee194db100a18439b7f75ab6",
      "parents": [
        "43bad209f99df82412dadab5e3b735bb12d257ab",
        "10d4c08c0ea9df0a85a11e1c77974df24078c0ec"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 11 21:18:21 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 11 21:18:21 2016 +0000"
      },
      "message": "Merge \"Assembly region TLAB allocation fast path for arm.\""
    },
    {
      "commit": "10d4c08c0ea9df0a85a11e1c77974df24078c0ec",
      "tree": "6d56cd6cfdac03d6fb6a1cb66153f2179c858f49",
      "parents": [
        "da11cef6fb6d8a9e08cb445576a50abff8773a25"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Feb 24 12:51:18 2016 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Mar 11 13:16:55 2016 -0800"
      },
      "message": "Assembly region TLAB allocation fast path for arm.\n\nThis is for the CC collector.\n\nShare the common fast path code with the tlab fast path code.\n\nSpeedup (on N5):\n        BinaryTrees:  2291 -\u003e  902 ms (-60%)\n        MemAllocTest: 2137 -\u003e 1845 ms (-14%)\n\nBug: 9986565\nBug: 12687968\n\nChange-Id: Ica63094ec2f85eaa4fd04d202a20090399275d85\n"
    },
    {
      "commit": "f969a209c30e3af636342d2fb7851d82a2529bf7",
      "tree": "6cf14b0ef2a82f6552c497f1889f967f9f722e5f",
      "parents": [
        "ce51701b0621754a81125df3ed62e07c0497cafd"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Mar 09 16:14:00 2016 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Mar 09 16:14:00 2016 +0000"
      },
      "message": "Fix and enable java.lang.StringFactory intrinsics.\n\nThe following intrinsics were not considered by the\nintrinsics recognizer:\n- StringNewStringFromBytes\n- StringNewStringFromChars\n- StringNewStringFromString\nThis CL enables them and add tests for them.\n\nThis CL also:\n- Fixes the locations of the ARM64 \u0026 MIPS64\n  StringNewStringFromString intrinsics.\n- Fixes the definitions of the FOUR_ARG_DOWNCALL macros on\n  ARM and x86, which are used to implement the\n  art_quick_alloc_string_from_bytes* runtime entry points.\n- Fixes PC info (stack maps) recording in the\n  StringNewStringFromBytes, StringNewStringFromChars and\n  StringNewStringFromString ARM, ARM64 \u0026 MIPS64 intrinsics.\n\nBug: 27425743\nChange-Id: I38c00d3f0b2e6b64f7d3fe9146743493bef9e45c\n"
    },
    {
      "commit": "7e1ce285c3c2cbd8d97c744699c2f2347fa7487b",
      "tree": "40d525eeda56a05576cb396a72479c366d2d463f",
      "parents": [
        "4e4e64511e530db37b33f450016afe49db3c4b20"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Dec 11 15:46:19 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Feb 25 14:00:48 2016 -0800"
      },
      "message": "Assembly TLAB allocation fast path for arm.\n\nSpeedup (GSS GC with TLAB on N5):\n    BinaryTrees:  1872 -\u003e  796 ms (-57%)\n    MemAllocTest: 2522 -\u003e 2219 ms (-12%)\n\nBug: 9986565\nChange-Id: Icb9d1259461f3abe83a4a82c8aff911937eaf57d\n"
    },
    {
      "commit": "d9994f069dfeaa32ba929ca78816b5b83e2a4134",
      "tree": "a826990f89d8f546921902933a4cc05b57196971",
      "parents": [
        "be89a6f1d9e41b154be3fe1da97cedb6964fbd35"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 11 17:35:55 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 11 21:47:46 2016 +0000"
      },
      "message": "Re-enable OSR.\n\nFixes two bugs:\n- Dealing with proxy methods, which the compiler and code cache\n  does not handle.\n- Dealing with phi types, that may have been speculatively optimized\n  but do not hold once jumping to the compiled code.\n\nChange-Id: I7dcd9976ef7b12128fff95d2b7ed3e69cc42e90a\n"
    },
    {
      "commit": "d9bc433a89c41a255d1b669d075f802597839bdc",
      "tree": "8a2a82b3c5457b0a778cb82d5e69b8e2ef8ee3f3",
      "parents": [
        "e6141d7aba1078c0465294408133aaf00ae47f1b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 23:32:25 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 23:32:25 2016 +0000"
      },
      "message": "Point fixes after OSR change.\n\n- ldr -\u003e ldrb in osr stub for arm32\n- disable 570-checker-osr for tracing\n- don\u0027t osr proxy methods.\n\nChange-Id: I9c713c9b7eab86ca9beb75f228fb3b76185621ef\n"
    },
    {
      "commit": "b331febbab8e916680faba722cc84b66b84218a3",
      "tree": "35f985b021e476914bfe91492da23fee218014a7",
      "parents": [
        "586996afc905518ed926e4680aab67bedabec9b7"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 16:51:53 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 05 17:11:54 2016 +0000"
      },
      "message": "Revert \"Revert \"Implement on-stack replacement for arm/arm64/x86/x86_64.\"\"\n\nThis reverts commit bd89a5c556324062b7d841843b039392e84cfaf4.\n\nChange-Id: I08d190431520baa7fcec8fbdb444519f25ac8d44\n"
    },
    {
      "commit": "3a0909248e04b22c3981cbf617bc2502ed5b6380",
      "tree": "b0b7013ea78b10f23fae75ef145e53a696ff797c",
      "parents": [
        "457e874459ae638145cab6d572e34d48480e39d2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 24 09:17:30 2015 +0000"
      },
      "message": "Revert \"lambda: Add support for invoke-interface for boxed innate lambdas\"\n\n955-lambda is flaky\n\nBug: 24618608\nBug: 25107649\n\nThis reverts commit 457e874459ae638145cab6d572e34d48480e39d2.\n\nChange-Id: I24884344d21d7a4262e53e3f5dba57032687ddb7\n"
    },
    {
      "commit": "457e874459ae638145cab6d572e34d48480e39d2",
      "tree": "b192c4698c4889ae90db6abe2652199802213fe6",
      "parents": [
        "3944f7175dcf60316ba58a42698ccf23c65ac57c"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 22 17:37:50 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Nov 20 16:33:06 2015 -0800"
      },
      "message": "lambda: Add support for invoke-interface for boxed innate lambdas\n\nLambda closures created with the \u0027create-lambda\u0027 instruction\n(termed \"innate lambdas\") can be turned into an object with \u0027box-lambda\u0027.\n\nThis CL enables support for those kinds of lambdas to work with\n\u0027invoke-interface\u0027 by generating a proxy class for the lambda.\n\nNote: MIPS32/64 support not included.\n\nBug: 24618608\nBug: 25107649\nChange-Id: Ic8f1bb66ebeaed4097e758a50becf1cff6ccaefb\n"
    },
    {
      "commit": "dc412b6f49a65774b7af654f65cbff619cb7d85a",
      "tree": "f8455c6deb4bb3c96d21e2135d55a1a658045e47",
      "parents": [
        "114873103db3d4d6e0da42ca02bad1ea8826443b"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Oct 15 12:26:57 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Oct 15 15:32:41 2015 -0700"
      },
      "message": "Revert \"Revert \"Implement rosalloc fast path in assembly for 32 bit arm.\"\"\n\nWith a heap poisoning fix.\n\nThis reverts commit cf91c7d973f3b2f491abc61d47c141782c96d46e.\n\nBug: 9986565\nChange-Id: Ia72edbde65ef6119e1931a77cc4c595a0b80ce31\n"
    },
    {
      "commit": "cf91c7d973f3b2f491abc61d47c141782c96d46e",
      "tree": "b94c289f567014ba56bcd4dec76066085819e90b",
      "parents": [
        "e6316940db61faead36f9642cce137d41fc8f606"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 07:29:38 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Oct 15 07:29:38 2015 +0000"
      },
      "message": "Revert \"Implement rosalloc fast path in assembly for 32 bit arm.\"\n\nTentative. Looks like heap poisoning breaks with this change.\n\nbug: 9986565\n\nThis reverts commit e6316940db61faead36f9642cce137d41fc8f606.\n\nChange-Id: I5c63758221464fe319315f40ae79c656048faed0\n"
    },
    {
      "commit": "e6316940db61faead36f9642cce137d41fc8f606",
      "tree": "cf0a97827af4679be4112d056855b5a673ee3a32",
      "parents": [
        "8c812b71552a8a1b2bf06e430d355b12b7084807"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Oct 07 15:41:48 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Oct 13 13:06:20 2015 -0700"
      },
      "message": "Implement rosalloc fast path in assembly for 32 bit arm.\n\nMeasurements (N5, ms)\nBinaryTrees:  1702 -\u003e  987 (-42%)\nMemAllocTest: 2480 -\u003e 2270  (-8%)\n\nBug: 9986565\n\nChange-Id: I460af3626ad724078463d27cf74a94b7ff7468c5\n"
    },
    {
      "commit": "e460d1df1f789c7c8bb97024a8efbd713ac175e9",
      "tree": "3511036fb18828dd0ee140d33a8bcd0535ebeab6",
      "parents": [
        "25217af2a7cae96b32ba566aaf697288f3374c99"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 29 04:52:17 2015 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Oct 02 02:25:18 2015 +0100"
      },
      "message": "Revert \"Revert \"Support unresolved fields in optimizing\"\n\nThe CL also changes the calling convetion for 64bit static field set\nto use kArg2 instead of kArg1. This allows optimizing to keep\nthe asumptions:\n- arm pairs are always of form (even_reg, odd_reg)\n- ecx_edx is not used as a register on x86.\n\nThis reverts commit e6f49b47b6a4dc9c7684e4483757872cfc7ff1a1.\n\nChange-Id: I93159917565824084abc96775f31be1a4249f2f3\n"
    },
    {
      "commit": "639bdd13993644a267f177f8f5936496bda65e2b",
      "tree": "fc68e344355ab1c0cfef4d47dd8f2cbc9fc7e022",
      "parents": [
        "b175a45be78152606a1db1eac0b79ef8777644f5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 03 11:22:45 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 28 15:37:28 2015 -0700"
      },
      "message": "ART: Single-frame deopt\n\nAdd deoptimization of a single frame. Works by removing the managed\ncode frame and jumping into the quick-to-interpreter bridge, and\nthe bridge understanding a stored ShadowFrame.\n\nWe need a separate fixup pass. For x86, we leave the return address\non the stack so we don\u0027t need to push it there.\n\nBug: 21611912\nChange-Id: I06625685ced8b054244f8685ab50b238a705b9d2\n"
    },
    {
      "commit": "c26b4512a01d46756683a4f5e186a0b7f397f251",
      "tree": "46cffba4cf8be737dd93fc744652376c25d1ed1b",
      "parents": [
        "46637e6ad75751fa1db283aee160342dc7e2fd0f",
        "0747466fca310eedea5fc49e37d54f240a0b3c0f"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 01 12:21:18 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 01 12:21:18 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Fix deoptimization with pending exception\"\"\""
    },
    {
      "commit": "0747466fca310eedea5fc49e37d54f240a0b3c0f",
      "tree": "6d27922fa35330dd8d863ea56c82c5f04b711822",
      "parents": [
        "9ee5d6cdc14ac94b64ea1961bf221bad48746929"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Aug 25 15:12:33 2015 +0000"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 26 16:54:32 2015 +0200"
      },
      "message": "Revert \"Revert \"Fix deoptimization with pending exception\"\"\n\nThis reverts commit 6e2d5747d00697a25251d25dd33b953e54709507.\n\nFixes the deoptimization path from compiled code (generated by the\nOptimizing compiler) by adding wrapper artDeoptimizeFromCompiledCode.\nThis wrapper, called through the matching assembler stub\nart_quick_deoptimize_from_compiled_code, pushes the deoptimization\ncontext just before deoptimizing the stack.\n\nBug: 23371176\nBug: 19944235\nChange-Id: Ia7082656998aebdd0157438f7e6504c120e10d3e\n"
    },
    {
      "commit": "6306921722283d2b0f8aac01883ad83215d6e864",
      "tree": "ecd9e47d2095d0b0b518b7c4efc1bd25a527e9e0",
      "parents": [
        "879775bba4903a4d066df3ebeac5cd4faf7da3e4"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Fri Aug 21 15:51:39 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Fri Aug 21 15:51:39 2015 -0700"
      },
      "message": "Add a missing reader barrier in entrypoint stub\n\nAlso refactored some comments.\n\nChange-Id: I5c50f487bf9d71f1be5f6c8814bf039993fc1267\n"
    },
    {
      "commit": "1aee900d5a0b3a8d78725a7551356bda0d8554e1",
      "tree": "325cb4ce99cf7824eb56dda1d85f23ad9c74f10a",
      "parents": [
        "a09d5df5128c5c51226028d4a82ed461cf993024"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Tue Jul 14 22:31:42 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Tue Jul 28 10:45:02 2015 -0700"
      },
      "message": "Add read barrier support to the entrypoints.\n\nAlso remove \"THIS_LOAD_REQUIRES_READ_BARRIER\" since reading\nan ArtMethod* no longer needs read barrier.\n\nstub_test should also work with read barriers now.\n\nChange-Id: I3fba18042de2f867a18dbdc38519986212bd9769\n"
    },
    {
      "commit": "76914b0fc848fe0deed566af2255db7c183deaf2",
      "tree": "32ed181f2e033aaf21efb2e3a829f38614635fc8",
      "parents": [
        "479ebe076561e4a48129ab0c78cf8ca93c44baf6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 17 20:14:50 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 17 20:14:50 2015 -0700"
      },
      "message": "ART: Fix arm32 quick_invoke_stub CFI\n\nFollow-up to 4808846b2a8647a448aaa05d561a4f60b190196b.\n\nChange-Id: I534ba39a4f59eaea9cfec8e81c944675284fc427\n"
    },
    {
      "commit": "3031c8da0c5009183f770b005c245f9bf2a4d01b",
      "tree": "a622d7da2c553111d413fc6e813f944b0d653ea6",
      "parents": [
        "c6f3439b67962584cfb764133e192c3317f0e1fc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 13 20:11:06 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 14 11:09:24 2015 -0700"
      },
      "message": "ART: Remove art_quick_invoke_interface_trampoline\n\nThe function has only been used by the IMT conflict resolution\ntrampoline for a while. Merge the two, which saves a branch.\n\nChange-Id: I2f8c9204adf839ddc5459cc04e70d98f858110a1\n"
    },
    {
      "commit": "3d1e0c971a5022cf3f7d02a45fdfd3381d5a8f3b",
      "tree": "eadd2e8eb6bdcd900e60f400973de7acd5163839",
      "parents": [
        "f470eb88cc3d3654f0fb1ca38622fa3a35fbd8a3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 10 23:51:03 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 10 23:51:03 2015 -0700"
      },
      "message": "ART: Fix arm32 assembly stub CFI\n\nFollow-up to 7ea6a170486d81b127e69673cd1020c4db628c93.\n\nChange-Id: Ib6df28653374994c78cd5586f2381d36b74ca846\n"
    },
    {
      "commit": "c89b047ed85cfabbdc79a7b76be413fb366b501a",
      "tree": "019daaf23a7bba92eb05598a64a7185024bdd515",
      "parents": [
        "eab80576240892148d14321c56c8869358e131ab"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 23 23:28:59 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 24 21:12:57 2015 -0700"
      },
      "message": "ART: Fix arm32 instrumentation exit stub\n\nProperly store, pass and restore floating point result.\n\nBug: 22047833\n\n(cherry picked from commit 844fb67a8b5638c4e195dbbe510dc1626824a16c)\n\nChange-Id: If5d9efbe63334c9b6353f76ce6e4fe519602482a\n"
    },
    {
      "commit": "49e3b6257c1c1a139df75f5f8e80e86f1c473409",
      "tree": "f53cd75800d25ecdc3661807ef10c90ca7f3d7a8",
      "parents": [
        "1aebdae18678403bdac078cbbe1f7dd4243c44f3",
        "5b3ee56cd63ee9e3c70c0412d044b81ab9c94513"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 03 09:45:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 03 09:45:58 2015 +0000"
      },
      "message": "Merge \"Delegate long-to-float type conversions to the runtime on ARM.\""
    },
    {
      "commit": "bfa5eb6e8d15ea73a36f8df449630f285a91e995",
      "tree": "de306b9ffb819e628c49f1c24d1f4ee33ad08319",
      "parents": [
        "61d894850cfcbae91ff472a24b5ae9e33394f24c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri May 29 15:04:41 2015 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jun 02 11:46:14 2015 -0700"
      },
      "message": "Add heap poisoning support to the entrypoints.\n\nIn preparation for full compiler/managed-code support.\n\nEnable stub_test with heap poisoning.\n\nBug: 12687968\nChange-Id: I79fc54ce6386c0a1eb9621759bb4cc23bc393a75\n"
    },
    {
      "commit": "5b3ee56cd63ee9e3c70c0412d044b81ab9c94513",
      "tree": "b57f056c5e4ad18ba7c89034bbbb51b90820e648",
      "parents": [
        "122addc3962207badd364b00a75a58639e76b10c"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Apr 14 16:02:41 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jun 02 17:37:40 2015 +0100"
      },
      "message": "Delegate long-to-float type conversions to the runtime on ARM.\n\nOn ARM, translate long-to-float type conversions (from both\nQuick and Optimizing) as calls to the runtime routine\nart_l2f, instead of generating ad hoc code, so as to improve\nthe precision of the conversions.\n\nBug: 20413424\nChange-Id: I8c414ee1c6f4ff1f32ee78f75734cfd3cf579f71\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": "8ea18d0f066f63fa4e5d154f14327468bf288e2b",
      "tree": "a575e8d0f826ab8b3aaae949c22cc6c73ca040fb",
      "parents": [
        "092a5656937a319449346e8c356f3f4c2870d81c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 26 16:29:08 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 27 12:07:34 2015 +0100"
      },
      "message": "Pass the dex method index directly to interface trampoline.\n\nThis avoids computing the dex pc and re-finding the method\nindex again. I have kept the code for kDebugBuild.\n\nChange-Id: Icd60e0deade755e32b54021c0875b1af592b8c3e\n"
    },
    {
      "commit": "7ea6a170486d81b127e69673cd1020c4db628c93",
      "tree": "02a302e1f952490dc3238eb96c103dab0590e8ff",
      "parents": [
        "dc23a3882b82a7a3dd5078cda3f4b4706e172617"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue May 19 18:58:54 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 20 11:10:36 2015 +0100"
      },
      "message": "Don\u0027t hardcode the location of the caller.\n\nThis is to avoid shooting ourselves in the foot when\ndealing with inlined frames. Instead, use common methods\nfor fetching the caller and its dex pc.\n\nChange-Id: I3467a7b50cf163022d332e80356f0aab747de252\n"
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    },
    {
      "commit": "5ea536aa4a6414db01beaf6f8bd8cb9adc5cfc92",
      "tree": "27b3f1c148744452b26bd4841f0dabe0549c3d86",
      "parents": [
        "c5cb691ca6a746a193bfbe3525aafa7cbb281d40"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 20 20:11:30 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Apr 24 11:08:46 2015 +0100"
      },
      "message": "Remove ArtMethod* parameter from dex cache entry points.\n\nLoad the ArtMethod* using an optimized stack walk instead.\nThis reduces the size of the generated code.\n\nThree of the entry points are called only from a slow-path\nand the fourth (InitializeTypeAndVerifyAccess) is rare and\nalready slow enough that the one or two extra loads\n(depending on whether we already have the ArtMethod* in a\nregister) are insignificant. And as we\u0027re starting to use\nPC-relative addressing of the dex cache arrays (already\ndone by Quick for the boot image), having the ArtMethod* in\na register becomes less likely anyway.\n\nChange-Id: Ib19b9d204e355e13bf386662a8b158178bf8ad28\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": "ff3ef43f3d0f0986fe23286af028b352277b6e1e",
      "tree": "ee9d98ce4598eb664de307d54233896979025d40",
      "parents": [
        "5e42cd3eee2c89214a331a36fe226cfcc57917a3",
        "e15ea086439b41a805d164d2beb07b4ba96aaa97"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Mar 04 01:37:11 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 04 01:37:11 2015 +0000"
      },
      "message": "Merge \"Reserve bits in the lock word for read barriers.\""
    },
    {
      "commit": "e15ea086439b41a805d164d2beb07b4ba96aaa97",
      "tree": "465ee3780acd8b7cb35c8a7f42a1f3c5df3d26ec",
      "parents": [
        "0b25c71ac93fb10c484dbacb9e23db505a8e2353"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Feb 09 17:11:42 2015 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Mar 03 17:33:18 2015 -0800"
      },
      "message": "Reserve bits in the lock word for read barriers.\n\nThis prepares for the CC collector to use the standard object header\nmodel by storing the read barrier state in the lock word.\n\nBug: 19355854\nBug: 12687968\nChange-Id: Ia7585662dd2cebf0479a3e74f734afe5059fb70f\n"
    },
    {
      "commit": "126d65952a03b3e44d5021208673c01920a982a4",
      "tree": "6d5b3e5e93202bc33e73c1726d8a2ca3913dcbf6",
      "parents": [
        "775f1d4096efce112a3bd1e5897c84f898c5f7ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 03 14:28:35 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 03 16:28:18 2015 +0000"
      },
      "message": "Fix generic JNI stubs to not discard the Java native frame.\n\nChange-Id: Ic856b442fdde5ce91673fc5856eb0dfc84c75d28\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": "4808846b2a8647a448aaa05d561a4f60b190196b",
      "tree": "94cbd61f4f19e10b67afe73f0fc4a8c3e0f18d3e",
      "parents": [
        "6b1497421c7c81cb9bf2ce077f1ef3d8ac24cfcb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 12 10:29:38 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 12 10:29:38 2014 +0000"
      },
      "message": "Save all registers in native to Java stubs.\n\nThis will make things more friendly when experimenting with the\nnumber of callee saves in optimizing.\n\nChange-Id: Iefd9a2da329a420eb69fc2fa9e91c06bbda30cdb\n"
    },
    {
      "commit": "d0a0b3e189e6f46d410d61dab4d0cce113be41d5",
      "tree": "2a18b6467fa5f3df9f6e4acbe8b76d291de8367a",
      "parents": [
        "8b9a97e8b6ed97ff1991596cbd0f7ce78f004766"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 30 19:04:13 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Dec 04 12:20:31 2014 -0800"
      },
      "message": "Fix arm unwind data for art code.\n\nBug: 17392751\nChange-Id: Ic85d4468b0f931aa9e38dee12d466a1e04ebf944\n"
    },
    {
      "commit": "2d7210188805292e463be4bcf7a133b654d7e0ea",
      "tree": "7705a3bf841ae44b2396728fa22ed0b5dcb44dbf",
      "parents": [
        "e0491682d101c69bf88c3c24a965312129cbfa38"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 10 11:08:06 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 18 12:27:37 2014 -0800"
      },
      "message": "Change 64 bit ArtMethod fields to be pointer sized\n\nChanged the 64 bit entrypoint and gc map fields in ArtMethod to be\npointer sized. This saves a large amount of memory on 32 bit systems.\nReduces ArtMethod size by 16 bytes on 32 bit.\n\nTotal number of ArtMethod on low memory mako: 169957\nImage size: 49203 methods -\u003e 787248 image size reduction.\nZygote space size: 1070 methods -\u003e 17120 size reduction.\nApp methods: ~120k -\u003e 2 MB savings.\n\nSavings per app on low memory mako: 125K+ per app\n(less active apps -\u003e more image methods per app).\n\nSavings depend on how often the shared methods are on dirty pages vs\nshared.\n\nTODO in another CL, delete gc map field from ArtMethod since we\nshould be able to get it from the Oat method header.\n\nBug: 17643507\n\nChange-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8\n\n(cherry picked from commit e832e64a7e82d7f72aedbd7d798fb929d458ee8f)\n"
    },
    {
      "commit": "5667fdbb6e441dee7534ade18b628ed396daf593",
      "tree": "a06fe0a79b3465571556d13f509daf1f664fc614",
      "parents": [
        "b62ff579cd870b0bf213765b07d7b404d15ece7b"
      ],
      "author": {
        "name": "Zheng Xu",
        "email": "zheng.xu@arm.com",
        "time": "Thu Oct 23 18:29:55 2014 +0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 16:27:22 2014 -0700"
      },
      "message": "ARM: Use hardfp calling convention between java to java call.\n\nThis patch default to use hardfp calling convention. Softfp can be enabled\nby setting kArm32QuickCodeUseSoftFloat to true.\n\nWe get about -1 ~ +5% performance improvement with different benchmark\ntests. Hopefully, we should be able to get more performance by address the left\nTODOs, as some part of the code takes the original assumption which is not\noptimal.\n\nDONE:\n1. Interpreter to quick code\n2. Quick code to interpreter\n3. Transition assembly and callee-saves\n4. Trampoline(generic jni, resolution, invoke with access check and etc.)\n5. Pass fp arg reg following aapcs(gpr and stack do not follow aapcs)\n6. Quick helper assembly routines to handle ABI differences\n7. Quick code method entry\n8. Quick code method invocation\n9. JNI compiler\n\nTODO:\n10. Rework ArgMap, FlushIn, GenDalvikArgs and affected common code.\n11. Rework CallRuntimeHelperXXX().\n\nChange-Id: I9965d8a007f4829f2560b63bcbbde271bdcf6ec2\n"
    },
    {
      "commit": "1d8cdbc5202378a5f1a4b3a1fba610675ed4dcd5",
      "tree": "6a1b0f49aee5a97b513bd0becc734d284aa7fb65",
      "parents": [
        "1c1786f193323d3bd706463894001117f3471595"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Sep 22 22:51:09 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 20 16:01:28 2014 -0700"
      },
      "message": "Refactor quick entrypoints\n\nRemove FinishCalleeSaveFrameSetup.\nAssembly routines write down anchor into TLS as well as placing runtime\nmethod in callee save frame.\nSimplify artSet64InstanceFromCode by not computing the referrer from the\nstack in the C++ code.\nMove assembly offset tests next to constant declaration and tidy arch_test.\n\nChange-Id: Iededeebc05e54a1e2bb7bb3572b8ba012cffa1c8\n"
    },
    {
      "commit": "6f3dbbadf4ce66982eb3d400e0a74cb73eb034f3",
      "tree": "f7a20779e4d665f948c5fbcd26dac0071dafb8d4",
      "parents": [
        "2df6840f68dd18d7dd8dbf53f8b6181bbfdc4fc4"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 14 17:41:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 16 19:27:28 2014 -0700"
      },
      "message": "Make ART compile with GCC -O0 again.\n\nTidy up InstructionSetFeatures so that it has a type hierarchy dependent on\narchitecture.\nAdd to instruction_set_test to warn when InstructionSetFeatures don\u0027t agree\nwith ones from system properties, AT_HWCAP and /proc/cpuinfo.\nClean-up class linker entry point logic to not return entry points but to\ntest whether the passed code is the particular entrypoint. This works around\nimage trampolines that replicate entrypoints.\nBug: 17993736\n\nChange-Id: I5f4b49e88c3b02a79f9bee04f83395146ed7be23\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": "37f05ef45e0393de812d51261dc293240c17294d",
      "tree": "7c7793862efa52e1deb42babbdcb652c245ab941",
      "parents": [
        "e25826e28ea65d9c1aa23f84788a091c677b20c7"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Wed Jul 16 18:38:08 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Mon Aug 25 11:16:53 2014 -0700"
      },
      "message": "Reduced memory usage of primitive fields smaller than 4-bytes\n\nReduced memory used by byte and boolean fields from 4 bytes down to a\nsingle byte and shorts and chars down to two bytes. Fields are now\narranged as Reference followed by decreasing component sizes, with\nfields shuffled forward as needed.\n\nBug: 8135266\nChange-Id: I65eaf31ed27e5bd5ba0c7d4606454b720b074752\n"
    },
    {
      "commit": "6e498695b60f1532d2264ec6badb1cd6e10ecaa9",
      "tree": "a85710488365ccd7374fdcea60ebb61a8ee6cbb9",
      "parents": [
        "e30100f164f8ac46f0428c28be87ad289adf4ac2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 18 16:43:12 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 19 13:23:47 2014 -0700"
      },
      "message": "ART: Fix ARM invoke stub, run Generic JNI in jni_compiler_test\n\nOn devices which support it, run all jni compiler tests also with\nthe Generic JNI infrastructure.\n\nFix art_quick_invoke_stub for ARM32 to enforce 16B stack alignment.\nAs the native convention does not require as much, the previous\ncode would keep it unaligned.\n\nBug: 17107929\nChange-Id: Ibce423949846e447d2b0246d07973b6b717691ac\n"
    },
    {
      "commit": "29b3841ad8c1c18ee7ddd2d8cab85806b3d62eaa",
      "tree": "c0d981a1c1d045d0e7c147c26daebfcaa32c1dc4",
      "parents": [
        "7df1754ae17acd891995159fc50f3bb176b770dd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 13 00:15:43 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 19 12:27:00 2014 -0700"
      },
      "message": "ART: Set default visibility to protected\n\nSet default visibility of symbols to protected. This allows the\nlinker to optimize internal calls and helps avoid plt calls.\n\nMake almost all assembly stubs hidden, as -fvisibility does not\nseem to apply to them. Change the assembly tests accordingly. Also\nallows to clean up previous hacks to avoid plt calls.\n\nBug: 16974467\n\n(cherry picked from commit 235e77bd9f19e4faefda109be40f8744f3a66f40)\n\nChange-Id: I9030dcf6116251f434f94a2b08e56e12085af652\n"
    },
    {
      "commit": "3842ad76aaeb80e0bb6b02c5f7dc4674533ef872",
      "tree": "e1ae14a0dcbc45d8afa239c309d9b87235d90034",
      "parents": [
        "7469b6c96a7f67c9a230faede204ef6bf62b1596",
        "54accbca0b549b1b1ad3ef09655dad438bc1e104"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 14 16:31:49 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 12 11:30:17 2014 +0000"
      },
      "message": "Merge \"Fix bugs in the x86 and arm versions of generic JNI.\""
    },
    {
      "commit": "54accbca0b549b1b1ad3ef09655dad438bc1e104",
      "tree": "6354bddae9e09476380b9351b6c1a84636ac8154",
      "parents": [
        "e39a5e1ced3d2b87974c646678dd719c02a9a010"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 13 03:40:45 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Aug 14 17:18:53 2014 +0100"
      },
      "message": "Fix bugs in the x86 and arm versions of generic JNI.\n\nAlso fix the run script of 116-nodex2oat to use the non-prebuild\nscript for target.\n\nBug: 17000769\n\nChange-Id: I439fcd710fb8bb408f3288ff8fb34fef23890adb\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": "58bea4a6114b9ea4b00e36186357e5b431430123",
      "tree": "5bc52ebd36c9e47b76b1a118790bf6eb1e894b28",
      "parents": [
        "5607c8e770b07e1a332a53b2f0c07f2caa4f9177"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sat Aug 09 18:08:07 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Sat Aug 09 18:10:41 2014 -0700"
      },
      "message": "Proper fix after -Bsymbolic change.\n\nMarking the offending symbols as hidden allows the linker to resolve\nthem at build time.\n\nBug: 16853291\nChange-Id: I1480c1520c23f81e42831a66737bba7bdf3433c2\n"
    },
    {
      "commit": "d842648ee0ae8df1a899c53e96a98ccc6cca9d4c",
      "tree": "258d282c55922950f1af4b53d6960cfd83ce0572",
      "parents": [
        "1514bcd5f6e4e8efdff0ddd00c4505d596924289"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 07 17:40:03 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 07 17:40:21 2014 -0700"
      },
      "message": "Revert \"Fix build without -Bsymbolic.\"\n\nThis reverts commit bae21bb7f6ca917e0954c970f0bfd2bfa3dcc0a9.\n"
    },
    {
      "commit": "bae21bb7f6ca917e0954c970f0bfd2bfa3dcc0a9",
      "tree": "9b52a08a0ec49d15b5839386804bf75cbfec360f",
      "parents": [
        "8b62dc0f993d0445401655fc274e5225498fa81c"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Aug 06 21:36:46 2014 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Aug 07 09:59:56 2014 -0700"
      },
      "message": "Fix build without -Bsymbolic.\n\nFor ARM: Gold is unable to create PLT based relocations for conditional\nbranches.\nFor x86: Some uses of SYMBOL() should have been PLT_SYMBOL().\n\nBug: 16853291\nChange-Id: Id70488b077256a70137c4417f21be2c2d1d4341c\n"
    },
    {
      "commit": "467f816c3c4483fb7766db3fc50e2fff10a92554",
      "tree": "d754c7d6eee858bb3f713bacccd1a2b894a66a36",
      "parents": [
        "0a1143de1414abc73634f2ff8941cdd6acd5e9a8"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Aug 05 18:59:16 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 06 09:00:27 2014 -0700"
      },
      "message": "When performing a long jump, update SP last.\n\nBug: 16571371\n\n(cherry picked from commit 76a0723959c2185ace249e705774af9a679a0e0d)\n\nChange-Id: Ib3a7bcda8aecdf7e92ea40a76de32aed83a42ee0\n"
    },
    {
      "commit": "c200a4abeca91e19969f5b35543f17f812ba32b9",
      "tree": "5912a08310e7ddb4b3907c0dc687006669c0cedd",
      "parents": [
        "73904fed884bf216b51acdc64402c427cc34725b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 16 18:39:09 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 01 11:06:24 2014 -0700"
      },
      "message": "ART: Rework Generic JNI, add ARM version\n\nRefactors and optimizes Generic JNI. This version uses TwoWordReturn\nto avoid writing to / loading from the bottom of the alloca.\n\nChange-Id: I3287007c976f79c9fd32d3b3a43f2d1371bf4cd3\n"
    },
    {
      "commit": "04f4d8abe45d6e79eca983e057de76aea24b7df9",
      "tree": "ea037b8bffd0568edbb835fd1ed06740734375f8",
      "parents": [
        "86e48ce0e82c13d8af470e7c2abe1bfb3c1e0136"
      ],
      "author": {
        "name": "Wei Jin",
        "email": "wejin@google.com",
        "time": "Thu May 29 18:04:29 2014 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Jun 05 15:04:51 2014 -0700"
      },
      "message": "Add an optimization for removing redundant suspend tests in ART\n\nThis CL:\n(1) eliminates redundant suspend checks (dominated by another check),\n\n(2) removes the special treatment of the R4 register, which got\nreset on every native call, possibly yielding long execution\nsequences without any suspend checks, and\n\n(3) fixes the absence of suspend checks in leaf methods.\n\n(2) and (3) increase the frequency of suspend checks, which improves\nthe performance of GC and the accuracy of profile data.  To\ncompensate for the increased number of checks, we implemented an\noptimization that leverages dominance information to remove\nredundant suspend checks on back edges.  Based on the results of\nrunning the Caffeine benchmark on Nexus 7, the patch performs\nroughly 30% more useful suspend checks, spreading them much more\nevenly along the execution trace, while incurring less than 1%\noverhead.  For flexibility consideration, this CL defines two flags\nto control the enabling of optimizations.  The original\nimplementation is the default.\n\nChange-Id: I31e81a5b3c53030444dbe0434157274c9ab8640f\nSigned-off-by: Wei Jin \u003cwejin@google.com\u003e\n"
    },
    {
      "commit": "675967d981a3d17aaedf4ca6e07cc3a76e066921",
      "tree": "b9df06287aa4e68581d726fc51e7d6af76a510df",
      "parents": [
        "d0916f36d27b643bca970f3645c38f44270c74ef"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 14 16:28:34 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 14 16:28:34 2014 -0700"
      },
      "message": "ART: Fix comments for dmb\n\nUpdate the comments to mention correct barrier type.\n\nBug: 14680557\nChange-Id: I26df43078c189cf16cc65e99b851981cbd063017\n"
    },
    {
      "commit": "4fc046e78efbc98541388cdda986b5d8a2b951ad",
      "tree": "6fe6baa4a969cbd60454e8ee92859c2e0d276523",
      "parents": [
        "048b5d0fb1643316da5b666dea9e98c954626200"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue May 06 16:56:39 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 12 18:21:41 2014 -0700"
      },
      "message": "ART: Add lock and unlock stubs for ARM64, fix for X86-64\n\nBasic translation of ARM stubs using dmb memory barrier.\n\nFix placement of dmb in unlock_object of ARM and ARM64.\n\nUpdate lock and unlock tests in stub_test to force fat locks.\n\nFix X86-64 unlock stub.\n\nChange-Id: Ie2e4328d9631e06843115888644e75fde8b319ee\n"
    },
    {
      "commit": "5cd33753b96d92c03e3cb10cb802e68fb6ef2f21",
      "tree": "b2217cb48e1f1db1aae7a92f8d5dbac5f2d95603",
      "parents": [
        "8ea5baa10b04e9dbd0f0cf14b0358fe8b956bb2e"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Tue Apr 15 15:57:58 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Mon May 05 12:44:15 2014 -0700"
      },
      "message": "Handle implicit stack overflow without affecting stack walks\n\nThis changes the way in which implicit stack overflows are handled\nto satisfy concerns about changes to the stack walk code.\n\nInstead of creating a gap in the stack and checking for it in\nthe stack walker, use the ManagedStack infrastructure to concoct\nan invisible gap that will never be seen by a stack walk.\n\nAlso, this uses madvise to tell the kernel that the main stack\u0027s\nprotected region will probably never be accessed, and instead\nof using memset to map the pages in, use memcpy to read from\nthem.  This will save 32K on the main stack.\n\nAlso adds a \u0027signals\u0027 verbosity level as per a review request.\n\nBug: 14066862\nChange-Id: I5257305feeaea241d11e6aa6f021d2a81da20b81\n"
    },
    {
      "commit": "5c1e4352614d61fed6868567e58b96682828cb4d",
      "tree": "c723c7883f80083b885c590a7fc514684667c1a3",
      "parents": [
        "7f40b111755e300ddddd6839425337fe3af8d4e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 21 19:28:24 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 25 16:13:27 2014 -0700"
      },
      "message": "Add \"arch_test\" gtest for assembly stub constants, add some ARM64 assembly code\n\nAdd a test that (1) checks all callee-save method frame sizes for\nall architectures, (2) checks thread offsets for the runtime\narchitecture and (3) checks callee-save method offsets for the\nruntime architecture.\n\nThe \"asm_support_XXX.h\" files now only contain definitions that are\ncommon between all architectures. Architecture-specific definitions\n(i.e., special registers names) have been pushed into the corresponding\n.S file. This change was required to be able to undefine definitions\nin the test, so that multiple tests can be written in one file.\n\nTest (1) above is in a sense two-stage. The arch_test gtest compares\nconstants (if it finds them) against the frame size as reported by\nthe ArtMethods created by the Runtime. This works for all architectures\nas we can provide the instruction-set to CreateCalleeSaveMethod. The\nsecond stage of the \"test\" are preprocessor tests with \"#error\" in the\ncase that the constants are not the expected value.\n\nOptimally I\u0027d like to change that to an actual runtime test exercising\nthe assembly code, which would also allow to check whether the right\nregisters are stored.\n\nAlso added missing assembly code for ARM64 for the callee-save macros.\n\nAlso fix X86_64 compilation for Clang 3.5.\n\nChange-Id: I018e6433dffd3d31ba3bfcd75661653f4c7b6552\n"
    },
    {
      "commit": "525cde2dd7cc7ad4212765ad3975cf260a934d3e",
      "tree": "bd2b4c1d34414708be60e560666d24f56311df05",
      "parents": [
        "1b4e3d5bc1e2d604adeda4ebbd137f20ee041138"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 22 15:44:50 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 25 07:38:19 2014 -0700"
      },
      "message": "Add a GTest for Assembly Stubs, Add some ARM64 and X86-64 Stubs\n\nThis GTest adds some runtime testing for the stubs that does not\nrely on the compiler. This should allow to add or update the stubs\nand do testing, especially on architectures without working compiler.\n\nThis test is a bit dangerous: if it doesn\u0027t know how to handle an\narchitecture, it will only log a warning. This is so that testing\ndoes not break at the moment. The warning is forced to stdout, too,\nso that it is always visible.\n\nAdd art_quick_check_cast to ARM64 and X86-64. Add art_quick_memcpy\nto X86-64. The latter should be removed in a good compiler, as it is\npractically only overhead. Add minor CFI information in ARM.\n\nChange-Id: Ia9c6d0f4035eb1527c12b5f6067dece59e25528d\n"
    },
    {
      "commit": "8325296769a77ecf3ab647b5ab516f439f5b3206",
      "tree": "8879dd1da4c2169f53f705fbfe66bd733e070a98",
      "parents": [
        "03bafa4b80e130664295a8eada93d20bc6f6cdeb"
      ],
      "author": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Apr 03 16:33:48 2014 -0700"
      },
      "committer": {
        "name": "Dave Allison",
        "email": "dallison@google.com",
        "time": "Thu Apr 03 16:33:48 2014 -0700"
      },
      "message": "Disable use of R4 as a promotable register\n\nWhen we are using implicit suspend checks we can potentially\nuse r4 as a register into which variables can be promoted.  However\nthe runtime doesn\u0027t save this and thus will corrupt it.  Not good.\n\nThis disables the promotion of r4 until we can figure out how\nto make the runtime save it properly.\n\nChange-Id: Ib95ce93579e1c364de5ecc8e728f2cb7990da77a\n"
    },
    {
      "commit": "2da882315a61072664f7ce3c212307342e907207",
      "tree": "67d777be044f5b60e2f13ab7968b63c581904ea9",
      "parents": [
        "762d4e5b9e777ae64c4ba581af9c84b78a5e96a6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 27 12:26:20 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 03 23:27:12 2014 +0000"
      },
      "message": "Initial changes towards Generic JNI option\n\nSome initial changes that lead to an UNIMPLEMENTED. Works\nby not compiling for JNI right now and tracking native methods\nwhich have neither quick nor portable code. Uses new trampoline.\n\nChange-Id: I5448654044eb2717752fd7359f4ef8bd5c17be6e\n"
    },
    {
      "commit": "5d885c82522f9f3f0775a6255b64bcd08c2a4c9e",
      "tree": "a011ed6a6854f4ea5e834c0dc808911d070db628",
      "parents": [
        "19c0b23fca2bf30172b3437af84d0426376358f1"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 21 20:06:23 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Feb 21 20:06:23 2014 -0800"
      },
      "message": "Make ARM assembly labels local.\n\nAvoids the symbols being part of the symbol file and confusing tools like gdb.\n\nChange-Id: I90f9ce4a058cd4b69757e32df58fc88ab8d81b68\n"
    },
    {
      "commit": "0177e53ea521ad58b70c305700dab32f1ac773b7",
      "tree": "db15627a19a04634cf84cecd15b813319d80d225",
      "parents": [
        "abaf927f29f6feceb3df3e6ced7d01970ba0dbe9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 11 16:30:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Feb 11 17:02:21 2014 -0800"
      },
      "message": "Work in the direction of hard float quick ABIs.\n\nPass a shorty to ArtMethod::Invoke so that register setup can use it.\nDocument x86-64 ABI.\nAdd extra debug output for one JNI native method registration fails, namely a\ndump of the Class and its dex file\u0027s location.\nAdd hack to get testing of OatMethod\u0027s without GC maps working in 64bit.\n\nChange-Id: Ic06b68e18eac33637df2caf5e7e775ff95ae70f3\n"
    },
    {
      "commit": "ef7d42fca18c16fbaf103822ad16f23246e2905d",
      "tree": "c67eea52a349c2ea7f2c3bdda8e73933c05531a8",
      "parents": [
        "822115a225185d2896607eb08d70ce5c7099adef"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jan 06 12:55:46 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Feb 06 23:20:27 2014 -0800"
      },
      "message": "Object model changes to support 64bit.\n\nModify mirror objects so that references between them use an ObjectReference\nvalue type rather than an Object* so that functionality to compress larger\nreferences can be captured in the ObjectRefererence implementation.\nObjectReferences are 32bit and all other aspects of object layout remain as\nthey are currently.\n\nExpand fields in objects holding pointers so they can hold 64bit pointers. Its\nexpected the size of these will come down by improving where we hold compiler\nmeta-data.\nStub out x86_64 architecture specific runtime implementation.\nModify OutputStream so that reads and writes are of unsigned quantities.\nMake the use of portable or quick code more explicit.\nTemplatize AtomicInteger to support more than just int32_t as a type.\nAdd missing, and fix issues relating to, missing annotalysis information on the\nmutator lock.\nRefactor and share implementations for array copy between System and uses\nelsewhere in the runtime.\nFix numerous 64bit build issues.\n\nChange-Id: I1a5694c251a42c9eff71084dfdd4b51fff716822\n"
    }
  ],
  "next": "b122a4bbed34ab22b4c1541ee25e5cf22f12a926"
}
