)]}'
{
  "log": [
    {
      "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"
    },
    {
      "commit": "bb8f0ab736b61db8f543e433859272e83f96ee9b",
      "tree": "7b7bac5c0e7d0ac9aba91a40e0fbf761cfacb412",
      "parents": [
        "6e65720d99bd3387b72d528a46291f1ed8184ede"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jan 27 16:50:29 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Jan 27 16:50:29 2014 -0800"
      },
      "message": "Embed array class pointers at array allocation sites.\n\nFollowing https://android-review.googlesource.com/#/c/79302, embed\narray class pointers at array allocation sites in the compiled code.\n\nChange-Id: I67a1292466dfbb7f48e746e5060e992dd93525c5\n"
    },
    {
      "commit": "be1ca55db3362f5b100c4c65da5342fd299520bb",
      "tree": "b9df6f5562d884698ed15f21764a704bb51e359e",
      "parents": [
        "9d8918fe97c235fdc6eb2c7f2d50a6673ab50329"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Wed Jan 15 11:46:48 2014 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Jan 23 15:29:12 2014 -0800"
      },
      "message": "Use direct class pointers at allocation sites in the compiled code.\n\n- Rather than looking up a class from its type ID (and checking if\n  it\u0027s resolved/initialized, resolving/initializing if not), use\n  direct class pointers, if possible (boot-code-to-boot-class pointers\n  and app-code-to-boot-class pointers.)\n- This results in a 1-2% speedup in Ritz MemAllocTest on Nexus 4.\n- Embedding the object size (along with class pointers) caused a 1-2%\n  slowdown in MemAllocTest and isn\u0027t implemented in this change.\n- TODO: do the same for array allocations.\n- TODO: when/if an application gets its own image, implement\n  app-code-to-app-class pointers.\n- Fix a -XX:gc bug.\n  cf. https://android-review.googlesource.com/79460/\n- Add /tmp/android-data/dalvik-cache to the list of locations to\n  remove oat files in clean-oat-host.\n  cf. https://android-review.googlesource.com/79550\n- Add back a dropped UNLIKELY in FindMethodFromCode().\n  cf. https://android-review.googlesource.com/74205\n\nBug: 9986565\nChange-Id: I590b96bd21f7a7472f88e36752e675547559a5b1\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": "692fafd9778141fa6ef0048c9569abd7ee0253bf",
      "tree": "63ce2c7d4be6af2524a5f442195c8c8b6f5cc955",
      "parents": [
        "07dc96d370c4844c7a279c01cedf24a272b9f4f3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 29 17:24:40 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 16 16:57:37 2013 -0800"
      },
      "message": "Thread local bump pointer allocator.\n\nAdded a thread local allocator to the heap, each thread has three\npointers which specify the thread local buffer: start, cur, and\nend. When the remaining space in the thread local buffer isn\u0027t large\nenough for the allocation, the allocator allocates a new thread\nlocal buffer using the bump pointer allocator.\n\nThe bump pointer space had to be modified to accomodate thread\nlocal buffers. These buffers are called \"blocks\", where a block\nis a buffer which contains a set of adjacent objects. Blocks\naren\u0027t necessarily full and may have wasted memory towards the\nend. Blocks have an 8 byte header which specifies their size and is\nrequired for traversing bump pointer spaces.\n\nMemory usage is in between full bump pointer and ROSAlloc since\nmadvised memory limits wasted ram to an average of 1/2 page per\nblock.\n\nAdded a runtime option -XX:UseTLAB which specifies whether or\nnot to use the thread local allocator. Its a NOP if the garbage\ncollector is not the semispace collector.\n\nTODO: Smarter block accounting to prevent us reading objects until\nwe either hit the end of the block or GetClass() \u003d\u003d null which\nsignifies that the block isn\u0027t 100% full. This would provide a\nslight speedup to BumpPointerSpace::Walk.\n\nTimings: -XX:HeapMinFree\u003d4m -XX:HeapMaxFree\u003d8m -Xmx48m\nritzperf memalloc:\nDalvik -Xgc:concurrent: 11678\nDalvik -Xgc:noconcurrent: 6697\n-Xgc:MS: 5978\n-Xgc:SS: 4271\n-Xgc:CMS: 4150\n-Xgc:SS -XX:UseTLAB: 3255\n\nBug: 9986565\nBug: 12042213\n\nChange-Id: Ib7e1d4b199a8199f3b1de94b0a7b6e1730689cad\n"
    },
    {
      "commit": "460536209b741bc469f1b0857775449abb2102fb",
      "tree": "4bc7f636b86ab2531811827d0fd0c33011a7280e",
      "parents": [
        "19031d51ab9edfc3b1996891d654a6b86ca937c0"
      ],
      "author": {
        "name": "Bernhard Rosenkränzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Thu Dec 12 02:15:52 2013 +0100"
      },
      "committer": {
        "name": "Bernhard Rosenkränzer",
        "email": "Bernhard.Rosenkranzer@linaro.org",
        "time": "Thu Dec 12 13:08:03 2013 +0100"
      },
      "message": "Don\u0027t rely on gcc extensions\n\nMake the code more compatible with different compilers.\nclang doesn\u0027t allow extra static qualifiers on template\nspecializations, const qualifiers on function types,\nor inline attributes on lambda functions, and is more\npicky about casting away constness with reinterpret_cast.\n\nThese modifications are compatible with both gcc and\nclang.\n\nChange-Id: I739b10df2780bec537827a13679fd2bcc2cc7188\nSigned-off-by: Bernhard Rosenkränzer \u003cBernhard.Rosenkranzer@linaro.org\u003e\n"
    },
    {
      "commit": "c528dba35b5faece51ca658fc008b688f8b690ad",
      "tree": "d95c113a639d07f7e3b88e8a6caa9b5f6e044801",
      "parents": [
        "76f552307ee980221626d1dff0ada56c989d24ca"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 26 12:00:11 2013 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Dec 10 16:00:58 2013 -0800"
      },
      "message": "Enable moving classes.\n\nSlight reduction in Zygote size, memory savings are in the noise.\nBefore: Zygote size: 8739224\nAfter: Zygote size: 8733568\n\nFixed a bug where we didn\u0027t set the concurrent start bytes after\nswitching the allocator from bump pointer to ROSAlloc in the\nzygote. This caused excessive memory usage.\n\nAdded the method verifiers as roots to fix an issue caused by\nRegTypes holding a Class*.\n\nAdded logic to clear card table in the SemiSpace collector, this\nreduces DalvikOther from ~2400k -\u003e ~1760k when using the SemiSpace\ncollector.\n\nAdded a missing lock to the timing loggers which caused a rare\none time crash in std::set.\n\nBug: 11771255\nBug: 8499494\nBug: 10802951\n\nChange-Id: I99d2b528cd51c1c5ed7012e3220b3aefded680ae\n"
    },
    {
      "commit": "cbbb080e8b45e46ea43af521ba2a0b3d432702a7",
      "tree": "3743409700a99c7f8d91059a24962e28d04a8be9",
      "parents": [
        "1febddf359ae500ef1bb01ab4883b076fcb56440"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 21 12:42:36 2013 -0800"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Nov 21 12:42:36 2013 -0800"
      },
      "message": "Fix a libartd.so boot crash in Heap::AllocObjectWithAllocator()\n\nBug: 11806947\nChange-Id: I826875f23ee2233d4128e852ff6fe7e26ced378f\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": "88474b416eb257078e590bf9bc7957cee604a186",
      "tree": "7c59aa370bec9b0f2d37cb7a96d3b2effb3d92ce",
      "parents": [
        "9780099e445884d8bc9444c8c1261b02d80a26c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Oct 23 16:24:40 2013 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue Oct 29 12:01:28 2013 -0700"
      },
      "message": "Implement Interface Method Tables (IMT).\n\nChange-Id: Idf7fe85e1293453a8ad862ff2380dcd5db4e3a39\n"
    },
    {
      "commit": "eda6df7374bf61c933d4a36635e2a9a30c9892a0",
      "tree": "72b199f5bc1d1ed67205389f90ce9b420cdd63e9",
      "parents": [
        "652e0ff0ce438385d1268ff0214d0eef6e8623ff",
        "d4beb6bc2b42b176c6d04fdd91d6c758e542c7c2"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Oct 29 08:35:14 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Tue Oct 29 08:35:16 2013 +0000"
      },
      "message": "Merge \"Inline field and method resolution.\" into dalvik-dev"
    },
    {
      "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": "83883d7fddf30fdb8b6903560fa1337ab991e74c",
      "tree": "d08809deef3a4ab19a57dd4e2ed629a79b60ce74",
      "parents": [
        "8584a68279efc0f9a409a3555ae5ebf3ec2cc4ac"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Oct 21 21:07:24 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 25 14:22:26 2013 -0700"
      },
      "message": "Populate dex cache for sharpened calls.\n\nWe ensured the resolved method was in the dex cache, but for a sharpened call\nthis is abstract. Ensure that the concrete method is also resolved.\nLimit the use of direct dex cache based dispatch to cases where we know how to\npatch the dex cache.\n\nBug 11389002\n\nChange-Id: I08252686a53b5948650632837c74bcd5cbf8a862\n"
    },
    {
      "commit": "1eb512d33f94d1dd7ea38263307ba0f7a0dfa653",
      "tree": "b4d4d9b16013ab90fb4b40d23013d7ef44bb5852",
      "parents": [
        "b917ea1a62aa0ab8eca3f689ef64b5be34e11abb"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 18 15:42:20 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Sun Oct 20 14:55:26 2013 -0700"
      },
      "message": "Fast JNI support.\n\nUse a modifier to signal a native method is a fast JNI method. If the\nmodifier is set then don\u0027t perform runnable transitions.\n\nChange-Id: I7835b4d837bfdd1cb8e2d54b919c0d5e6cf90499\n"
    },
    {
      "commit": "a9a8254c920ce8e22210abfc16c9842ce0aea28f",
      "tree": "56614ee997940e8e3b88fef43b890e8a33e78112",
      "parents": [
        "34633b22f74393344987a50b8aaee548a9dadc18"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 04 11:17:26 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 08 15:54:54 2013 -0700"
      },
      "message": "Improve quick codegen for aput-object.\n\n1) don\u0027t type check known null.\n2) if we know types in verify don\u0027t check at runtime.\n3) if we\u0027re runtime checking then move all the code out-of-line.\n\nAlso, don\u0027t set up a callee-save frame for check-cast, do an instance-of test\nthen throw an exception if that fails.\nTidy quick entry point of Ldivmod to Lmod which it is on x86 and mips.\nFix monitor-enter/exit NPE for MIPS.\nFix benign bug in mirror::Class::CannotBeAssignedFromOtherTypes, a byte[]\ncannot be assigned to from other types.\n\nChange-Id: I9cb3859ec70cca71ed79331ec8df5bec969d6745\n"
    },
    {
      "commit": "d9c4fc94fa618617f94e1de9af5f034549100753",
      "tree": "1305efbbc3d4bc306c0947bb6d4b01553667f98e",
      "parents": [
        "7ef126ce0593929bcf8fb73d8b1119ce3b95b3f2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 01 19:45:43 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 02 09:31:55 2013 -0700"
      },
      "message": "Inflate contended lock word by suspending owner.\n\nBug 6961405.\nDon\u0027t inflate monitors for Notify and NotifyAll.\nTidy lock word, handle recursive lock case alongside unlocked case and move\nassembly out of line (except for ARM quick). Also handle null in out-of-line\nassembly as the test is quick and the enter/exit code is already a safepoint.\nTo gain ownership of a monitor on behalf of another thread, monitor contenders\nmust not hold the monitor_lock_, so they wait on a condition variable.\nReduce size of per mutex contention log.\nBe consistent in calling thin lock thread ids just thread ids.\nFix potential thread death races caused by the use of FindThreadByThreadId,\nmake it invariant that returned threads are either self or suspended now.\n\nCode size reduction on ARM boot.oat 0.2%.\nOld nexus 7 speedup 0.25%, new nexus 7 speedup 1.4%, nexus 10 speedup 2.24%,\nnexus 4 speedup 2.09% on DeltaBlue.\n\nChange-Id: Id52558b914f160d9c8578fdd7fc8199a9598576a\n"
    },
    {
      "commit": "58ff84450a28966a4d2b1f1f4cec527a6a586905",
      "tree": "70217a42f68c8d9d870e291c1d17c6e358b76468",
      "parents": [
        "7287601984059902aebde00ea4e077ead42fb149",
        "07d447bebe6cc358e05ef041db84a5095a69e4f1"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 26 22:34:08 2013 +0000"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Sep 26 22:34:08 2013 +0000"
      },
      "message": "Merge \"Make artQuickResolutionTrampoline fix up references after GC points.\" into dalvik-dev"
    },
    {
      "commit": "07d447bebe6cc358e05ef041db84a5095a69e4f1",
      "tree": "0ed9d07628e7fe07b49261c9562200a3fd18d6ba",
      "parents": [
        "f7e090ebcded6d6693894c018d89c4add79253ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 26 11:57:43 2013 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 26 13:20:37 2013 -0700"
      },
      "message": "Make artQuickResolutionTrampoline fix up references after GC points.\n\nRequired for compaction.\n\nBug: 8981901\nChange-Id: I53a5f942af2a4428fe3548ba1856967632c2df9f\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": "8b2c0b9abc3f520495f4387ea040132ba85cae69",
      "tree": "13ea7e5c4e3d1804ec8d420d36f7ea5ab18f6ac0",
      "parents": [
        "5712d5d04640925970db9c98938ffaf806b3962c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 02:56:49 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 19 15:17:12 2013 -0700"
      },
      "message": "Use class def index from java.lang.Class.\n\nBug: 10244719\nDepends on:\nhttps://googleplex-android-review.git.corp.google.com/362363\nThis removes the computation of the dex file index, when necessary this is\ncomputed by searching the dex file. Its only necessary in\ndalvik.system.DexFile.defineClassNative and DexFile::FindInClassPath, the\nlatter not showing up significantly in profiling with this change.\n\nChange-Id: I20c73a3b17d86286428ab0fd21bc13f51f36c85c\n"
    },
    {
      "commit": "2e450bf45e1bacc9c356f6ab239ccfb31bd8d7e4",
      "tree": "d695b5a0aa5049ed3936a65ab69b409e2eceb818",
      "parents": [
        "dd3c27eeb8286ab53d8a2f1aec76a7a919ba353a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 06 15:39:46 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 06 15:43:51 2013 -0700"
      },
      "message": "Revert \"Remove bogus fastpath from String::Equals(const StringPiece\u0026)\"\n\nThis reverts commit 8438ed31e10f3881ed92f03877d5edaca7d5b48c.\n\nBug: 10614658\nChange-Id: I335f10a7140e1644957bc1cee21a9b310a558499\n"
    },
    {
      "commit": "8438ed31e10f3881ed92f03877d5edaca7d5b48c",
      "tree": "a29524e6974a58d593362b49217649dc9a39f496",
      "parents": [
        "51db7beb7faaea43d697321520732d1d71288f50"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Sep 04 17:17:19 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 06 12:38:20 2013 -0700"
      },
      "message": "Remove bogus fastpath from String::Equals(const StringPiece\u0026)\n\nBug: 10614658\nChange-Id: I907ec77a65c1ae29e800356abdf755a457620081\n"
    },
    {
      "commit": "d3633d52e5d21beea73c2e902c043cf96b70df74",
      "tree": "25a2e8033f4b945adf4da3cb6775d0b4b6626215",
      "parents": [
        "be7149fc2e7cc607937209f2819e3c1d672e2668"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 20 21:06:26 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Aug 20 23:48:34 2013 -0700"
      },
      "message": "Add some extra DCHECKS for debugging artQuickProxyInvokeHandler\n\nBug: 10094803\nChange-Id: I8cc08cd54dbe67781a8264cf2ceb5dab24b78799\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": "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": "848871b4d8481229c32e0d048a9856e5a9a17ef9",
      "tree": "4be4602e3becc899f76a29a87618801458fe04b9",
      "parents": [
        "423fb4d70f2ac36bf9f630146b4150771a8e7e76"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 05 10:56:33 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 07 22:17:00 2013 -0700"
      },
      "message": "Entry point clean up.\n\nCreate set of entry points needed for image methods to avoid fix-up at load time:\n - interpreter - bridge to interpreter, bridge to compiled code\n - jni - dlsym lookup\n - quick - resolution and bridge to interpreter\n - portable - resolution and bridge to interpreter\n\nFix JNI work around to use JNI work around argument rewriting code that\u0027d been\naccidentally disabled.\nRemove abstact method error stub, use interpreter bridge instead.\nConsolidate trampoline (previously stub) generation in generic helper.\nSimplify trampolines to jump directly into assembly code, keeps stack crawlable.\nDex: replace use of int with ThreadOffset for values that are thread offsets.\nTidy entry point routines between interpreter, jni, quick and portable.\n\nChange-Id: I52a7c2bbb1b7e0ff8a3c3100b774212309d0828e\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": "166db04e259ca51838c311891598664deeed85ad",
      "tree": "5ffa63c1b3bf58e92be2890c54f0ba6fdec2059e",
      "parents": [
        "d41119e863a9f9c5809b7732d30870ffd237b60c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jul 26 12:05:57 2013 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Jul 29 09:52:11 2013 -0700"
      },
      "message": "Move assembler out of runtime into compiler/utils.\n\nOther directory layout bits of clean up. There is still work to separate quick\nand portable in some files (e.g. argument visitor, proxy..).\n\nChange-Id: If8fecffda8ba5c4c47a035f0c622c538c6b58351\n"
    }
  ]
}
