)]}'
{
  "log": [
    {
      "commit": "baede348efa86600e64fb9db43cec1eef07c86d9",
      "tree": "7ab2c2a69c72b7cd2ce1b7bf1ed9d26b07e4fd7e",
      "parents": [
        "989210eb453898bd94bf3527f18f6146b07aa4bb",
        "6963e44331258b131bcc0599b868ba15902d6d22"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Dec 04 10:21:02 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 04 10:21:02 2014 +0000"
      },
      "message": "Merge \"JDWP: fix breakpoint for method in the image\""
    },
    {
      "commit": "6963e44331258b131bcc0599b868ba15902d6d22",
      "tree": "24ef16e739e99d3e9d980f2acde8dd301c236c37",
      "parents": [
        "220526b05d4365a1820a694c98527eda2d3dc980"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Nov 26 22:11:27 2014 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Dec 04 10:20:24 2014 +0100"
      },
      "message": "JDWP: fix breakpoint for method in the image\n\nWhen we set a breakpoint in a compiled method, we deoptimize it by\nchanging its entrypoint so it is executed with the interpreter.\nHowever, methods in the image can be called with their direct code\npointer, ignoring the updated entrypoint. In that case, the method\nis not executed with the interpreter and we miss the breakpoint.\n\nThis CL avoids that situation by forcing a full deoptimization so\neverything runs with the interpreter. However, if the image has been\ncompiled in PIC mode, we keep using selective deoptimization because\ndirect code pointer is not used in this mode.\n\nBug: 17965285\nChange-Id: Icaf8cbb7fe9ad01d36f7378c59d50d9ce42ae57f\n"
    },
    {
      "commit": "b5fb207ed5e3570ec14e18811b3fa066168fe493",
      "tree": "a964e9039b303cae03654085146d34b279427fae",
      "parents": [
        "b5af2641acf9d2e247baaa2ac7674f91b801878d"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 17:22:02 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 17:31:32 2014 -0800"
      },
      "message": "Remove MethodHelper::HasSameSignatureWithDifferentClassLoaders.\n\nMove sole use to a static function within class_linker.cc.\nRemove unused MutableMethodHelper and empty method_helper.cc.\n\nChange-Id: Ia26bc76674ed2ee7c9c546de820cc181005fed77\n"
    },
    {
      "commit": "f2247513a54300cfa6a2f23fdbbafead115c99b2",
      "tree": "16d40b270b8a248ae9464d9aca9cd432c284b135",
      "parents": [
        "384f729a465d0ab3a76faa7ec8fa05ced82b4a85"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 16:17:08 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 16:27:15 2014 -0800"
      },
      "message": "Remove MethodHelper::HasSameNameAndSignature.\n\nMove sole use to a static method with art_method.cc.\n\nChange-Id: I2e7994cc1c31b5ca74df5d7be5538003d4ed0150\n"
    },
    {
      "commit": "e0a02dabedd7db2c511a513fb48d7e39ed3dd9c0",
      "tree": "70ee0e4caa2cc26c661b6cb0231b8423506e50fa",
      "parents": [
        "e94652f1e321b2c8b71acbe5b07d2ebf69fbdb99"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 14:10:53 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 14:21:56 2014 -0800"
      },
      "message": "Move FindDexMethodIndexInOtherDexFile into ArtMethod.\n\nMove FindDexMethodIndexInOtherDexFile out of MethodHelper into ArtMethod in\npreparation for the removal of MethodHelper.\nTidy ClassLinker::ResolveMethod so that all exception paths flow through the\nexception pending assertion.\nTidy artQuickResolutionTrampoline to be more explicit about variable names and\nonly update the dex cache if necessary.\n\nChange-Id: I3e48eb4f6c1291533067c1b53efe90c53bfcaea8\n"
    },
    {
      "commit": "91a6dc41003cdd22073e72fd5425df8e95b1c172",
      "tree": "fb0dcbccd5365f7e9d8ddb461dca72dd20310fc4",
      "parents": [
        "dde815ab8e1a1997ad01cb7f63dd10ef26597f46"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 01 10:31:15 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 01 11:25:40 2014 -0800"
      },
      "message": "Set dex_cache_strings_ when we call Class::SetDexCache\n\nEnsures that these two variables never get out of sync. The error\nwas presumably related to not doing this for proxy classes. This\ncaused java code which was looking at the dex_cache_strings_ field\nto incorrectly access a null array.\n\nBug: 18548887\n\n(cherry picked from commit ea1c3d77b92b30ec527f2ca5bfe316a882b698e0)\n\nChange-Id: I022d9311b38b61e160ed70e3c5d9639797adb29c\n"
    },
    {
      "commit": "eace45873190a27302b3644c32ec82854b59d299",
      "tree": "73fbf327839263b6847bdc4359ac1dbea2b897e3",
      "parents": [
        "8ac8d5556fae9c728bcebcc9036a1bbf40087c76"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 24 18:29:54 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 25 16:02:04 2014 -0800"
      },
      "message": "Move dexCacheStrings from ArtMethod to Class\n\nAdds one load for const strings which are not direct.\n\nSaves \u003e\u003d 60KB of memory avg per app.\nImage size: -350KB.\n\nBug: 17643507\nChange-Id: I2d1a3253d9de09682be9bc6b420a29513d592cc8\n\n(cherry picked from commit f521f423b66e952f746885dd9f6cf8ef2788955d)\n"
    },
    {
      "commit": "957ca1cd025104fccb0b08928f955f9bdb4ab91c",
      "tree": "913ceffe992bb25898ac79977b47dc2af8b3354b",
      "parents": [
        "4d3ed1a6f34bd31ed30faaca0433cf2a4b19bb7b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 21 16:51:29 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 24 10:44:33 2014 -0800"
      },
      "message": "Delete ArtMethod gc_map_ field\n\nMoved the gc_map field from OatMethod to OatQuickMethodHeader.\nDeleted the ArtMethod gc_map_ field.\n\nBug: 17643507\n\nChange-Id: Ifa0470c3e4c2f8a319744464d94c6838b76b3d48\n\n(cherry picked from commit 807140048f82a2b87ee5bcf337f23b6a3d1d5269)\n"
    },
    {
      "commit": "3242729362b74d22f11d8bc7b4800ba0a8695df6",
      "tree": "e3ac6dbb1d4f1f6295ed4a856473c6f92c88be22",
      "parents": [
        "834896de1c955c04d781d2bf8c53573f94ce8c3e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 19 14:05:21 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Nov 19 14:05:21 2014 -0800"
      },
      "message": "Avoid JNI call with pending OOME.\n\nIf EnsureResolved fails with an exception then FindClassInPathClassLoader may\nfall-through to a call to NewStringUTF with a pending exception.\nBug: 15446488\n\nChange-Id: I007f7bee7c50aa588d0b1c776da67a38314dc897\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": "7a7c1db21782fb922d3ffc5c576117812624ea58",
      "tree": "87cd009dff8386d4fd699bf2eb435bd1b38e86b5",
      "parents": [
        "1c18d5d0141ffa76b0838fb99615186dcbefc50e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 17 15:13:34 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 17 18:05:59 2014 +0000"
      },
      "message": "Fix ordering of fields with the same name.\n\nWhile the Java language doesn\u0027t allow multiple fields with\nthe same name in a single class (excluding fields from super\nclasses), the bytecode specification permits it and tools\nsuch as proguard actually generate them. Define the order of\nthese fields by their dex file index and relax the check of\nfield ordering to permit identical names.\n\nBug: 18211592\nChange-Id: I1dee9b2b669a6ea180a2d3a41030efb2aed53950\n"
    },
    {
      "commit": "81852bf5a1d4640b7b22b8a0404ce8401a7219c6",
      "tree": "04c532caa84ce82031cce307a5d448830b733624",
      "parents": [
        "ff5298ff1640b730ee62c90ca78fc96b7ee82ec4",
        "d577748c041aa6df599218f3cb31697ecf032730"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 14 19:02:32 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Nov 14 19:02:33 2014 +0000"
      },
      "message": "Merge \"Fix LinkFieldsComparator.\""
    },
    {
      "commit": "d577748c041aa6df599218f3cb31697ecf032730",
      "tree": "ffa397300b8ee367cd7153a4482df26db64639e6",
      "parents": [
        "59321e0e10ea09694efecf6154704e2743b9bffd"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 12 17:02:02 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 14 18:09:56 2014 +0000"
      },
      "message": "Fix LinkFieldsComparator.\n\nDefine order for primitive types with the same sizes.\nPreviously, the comparator would consider the fields equal\nso the order would depend on std::sort() implementation.\nChanging the STL implementation could silently change the\nfield offsets. (And, unlike std::stable_sort(), the\nstd::sort() doesn\u0027t even need to be deterministic.)\n\nChange-Id: I91fa562f82447606aced64643bea8c70784766b5\n"
    },
    {
      "commit": "76649e8d775519fe19f2b14d18ac488c13296054",
      "tree": "a899ec37ce51672c9e14d2954b2a7af7397e63da",
      "parents": [
        "d94a0a1d2868baaab49f4d2835bca086d98cf763"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Nov 10 18:32:59 2014 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Nov 14 11:33:53 2014 +0000"
      },
      "message": "Keep original order of fields in Class.\n\nThe fields of a class are ordered alphabetically in the dex\nfile. Keep the same order in the field arrays so that we can\ndo binary search lookups by name. Those lookups will be\nimplemented in a subsequent change in libcore/.\n\nBug: 18211592\n\n(cherry picked from commit bfa3ed0ad988e1da13626ddbaf6dcae0c58ea79e)\n\nChange-Id: I8f979de62ffe37d1c7d5c721717d2f3501e7c9e6\n"
    },
    {
      "commit": "e7c9a8c2b8481aafbc6af4ce6229bd361ba24742",
      "tree": "f6d8fe8fd7aeae117a6547dc4f012cd4085cb4e8",
      "parents": [
        "00b2da5c02339c36ffa4006f731f55203b09265d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 06 16:35:45 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Nov 07 11:45:06 2014 -0800"
      },
      "message": "Add hash map, reduce excessive hashing\n\nChanged the class def index to use a HashMap instead of unordered_map\nso that we can use FindWithHash to reduce how often we need to compute\nhashes.\n\nFixed a bug in ClassLinker::UpdateClass where we didn\u0027t properly\nhandle classes with the same descriptor but different class loaders.\nIntroduced by previous CL.\n\nBefore (fb launch):\n1.74% art::ComputeModifiedUtf8Hash(char const*)\n\nAfter:\n0.95% art::ComputeModifiedUtf8Hash(char const*)\n\nBug: 18054905\nBug: 16828525\n\nChange-Id: Iba2ee37c9837289e0ea187800ba4af322225a994\n\n(cherry picked from commit 564ff985184737977aa26c485d0c1a413e530705)\n"
    },
    {
      "commit": "c2e20629c7dfdb0f679fa30c14b41fe68588697f",
      "tree": "ee428a17f93922e6f78e3482c348e6e7b81a8e4f",
      "parents": [
        "f55996d6b4a672e09fbe3a3563646a7682719b4a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 03 11:41:47 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Nov 06 16:27:00 2014 -0800"
      },
      "message": "Add hash set\n\nMore memory efficient than libcxx since we do not box the values.\n\nChange intern table to use new hash set. Clean up intern table by\nremoving const casts and deleting unnecessary code.\n\nChanged the class linker to use a hash set, also added a pre-zygote\nclass table.\n\n5 samples of:\nadb shell stop \u0026\u0026 adb shell start \u0026\u0026 sleep 60 \u0026\u0026 adb shell dumpsys meminfo\nBefore:\n165929 kB: Native\n175859 kB: Native\n168434 kB: Native\n166559 kB: Native\n169958 kB: Native\n\nAfter:\n160972 kB: Native\n159439 kB: Native\n157204 kB: Native\n165093 kB: Native\n163039 kB: Native\n\nTODO: Add HashTable which is implemented by using a HashSet.\nTODO: Use for DexFile::find_class_def_misses_.\nTODO: Investigate using mem maps instead of native heap.\n\nBug: 17808975\n\nChange-Id: I93e376cf6eb9628cf52f4aefdadb6157acfb799a\n\n(cherry picked from commit e05d1d5fd86867afc7513b1c546375dba11eee50)\n"
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    },
    {
      "commit": "575e78c41ece0dec969d31f46be563d4eb7ae43b",
      "tree": "16906df0ba0912a6cb01b3139ba7c60d5f9d09b7",
      "parents": [
        "2998e9cdc9f19c30c4944a4726ed9f147de79ebd"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 23:41:03 2014 -0800"
      },
      "message": "ART: Replace COMPILE_ASSERT with static_assert (runtime)\n\nReplace all occurrences of COMPILE_ASSERT in the runtime tree.\n\nChange-Id: I01e420899c760094fb342cc6cb9e692dd670a0b2\n"
    },
    {
      "commit": "6a3c1fcb4ba42ad4d5d142c17a3712a6ddd3866f",
      "tree": "9df58b57af13240a93a6da4eefcf03f70cce9ad9",
      "parents": [
        "c6e0955737e15f7c0c3575d4e13789b3411f4993"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 31 00:33:20 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Nov 03 20:01:04 2014 -0800"
      },
      "message": "Remove -Wno-unused-parameter and -Wno-sign-promo from base cflags.\n\nFix associated errors about unused paramenters and implict sign conversions.\nFor sign conversion this was largely in the area of enums, so add ostream\noperators for the effected enums and fix tools/generate-operator-out.py.\nTidy arena allocation code and arena allocated data types, rather than fixing\nnew and delete operators.\nRemove dead code.\n\nChange-Id: I5b433e722d2f75baacfacae4d32aef4a828bfe1b\n"
    },
    {
      "commit": "6163fd4004d357744ed5e1b681f74adb406c23fd",
      "tree": "7d4229989754e7f8193c978d3ba25eb1e8b6e35f",
      "parents": [
        "c74c218da71957250b4bda45fd1ac5ed8acd0131",
        "9f3629df89b7f2b4f7a599bdc5f7eeb748330582"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 30 22:24:49 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Oct 30 22:24:50 2014 +0000"
      },
      "message": "Merge \"Add hash table to link virtual methods\""
    },
    {
      "commit": "9f3629df89b7f2b4f7a599bdc5f7eeb748330582",
      "tree": "3ed0e8d389c027331e3bb27035e93429b305318f",
      "parents": [
        "d99865e11d9fb88567da3e68163d275982fd6cba"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 28 18:23:02 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 30 15:19:25 2014 -0700"
      },
      "message": "Add hash table to link virtual methods\n\nAdded a hash table for turning the O(m*n) lookup average case to\nO(m+n) average case. There is probably still some room for improvement.\n\nBefore:\nWaitTime: 2121\nWaitTime: 2051\nWaitTime: 2134\nWaitTime: 2104\nWaitTime: 2237\nWaitTime: 2391\n4.99% art::MethodNameAndSignatureComparator::HasSameNameAndSignature(art::mirror::ArtMethod)\n1.65% art::ClassLinker::LinkVirtualMethods(art::Thread*, art::Handle\u003cart::mirror::Class\u003e)\n\nAfter:\nWaitTime: 2038\nWaitTime: 1965\nWaitTime: 1979\nWaitTime: 1976\nWaitTime: 1957\nWaitTime: 2004\n0.46% art::MethodNameAndSignatureComparator::HasSameNameAndSignature(art::mirror::ArtMethod*)\n1.39% art::ClassLinker::LinkVirtualMethods(art::Thread*, art::Handle\u003cart::mirror::Class\u003e)\n\nBug: 18054905\nBug: 16828525\n\n(cherry picked from commit a9ca9ac444ceb2cf5e8bd5c98c1ed47f2a9a94dd)\n\nChange-Id: If847afb7194daa05ace38d15862e4b871dfffae1\n"
    },
    {
      "commit": "96e83930f35544872228be209d3704f60c2c485c",
      "tree": "046d24ed5c43fdbdb4293f1ca23105a5cc71039b",
      "parents": [
        "0ea536897c078761e0309437a3d25fbbf53c94a3"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 29 19:45:42 2014 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Oct 30 13:29:31 2014 -0700"
      },
      "message": "art: Fix classlinker and nopatchoat test for PIC case\n\nClassLinker should not be checking oat data begin and the patch delta\nas part of the checksum verification (when PIC is enabled).\n\nAlso update nopatchoat test since it needs to be parametric on whether\nPIC is used.\n\nBug: 18035729\nChange-Id: I4eb184d22616230a7b8f0dd514d3416d0976b07e\n"
    },
    {
      "commit": "f13dd50788a9f82326085cd9b597cc644325702e",
      "tree": "3ba307a0324c3437a22af15e625509ae1ac75618",
      "parents": [
        "2d3a69e6a0326e1d349c44e42dad0b5a83c406b2",
        "ded66a01f81812e0129d17c3d08d5eda18433062"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 29 01:39:02 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Oct 29 01:39:02 2014 +0000"
      },
      "message": "Merge \"Move MethodHelper::GetReturnType to mirror::ArtMethod.\""
    },
    {
      "commit": "ded66a01f81812e0129d17c3d08d5eda18433062",
      "tree": "74a3f7bad1c020b0136d6c173633a361a479f5cb",
      "parents": [
        "e0205d519dd417f749243b42b8711dfa313e5390"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 18:12:55 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 18:36:32 2014 -0700"
      },
      "message": "Move MethodHelper::GetReturnType to mirror::ArtMethod.\n\nAlso, fix missing handle in HasSameSignatureWithDifferentClassLoaders.\n\nChange-Id: I9e1ffd09be950ecc8346fc3c485760d82d9ecab3\n"
    },
    {
      "commit": "05d89ee90413c51573c8e708a193f4ff87d67d0a",
      "tree": "c3ace311823a639c3434194016184483a73bd278",
      "parents": [
        "e0205d519dd417f749243b42b8711dfa313e5390"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 28 13:57:04 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 28 16:38:08 2014 -0700"
      },
      "message": "Fill resolved static fields during class initialization\n\nPreviously everytime we resolved static fields we linear searched\nthe class to find the field with the specified field id. Now we\neagerly set these fields in the dex cache when we initialize classes.\n\nFB launch timings before:\nWaitTime: 2903\nWaitTime: 2953\nWaitTime: 2918\nWaitTime: 2940\nWaitTime: 2879\nWaitTime: 2792\n\nTimings after:\nWaitTime: 2699\nWaitTime: 2791\nWaitTime: 2653\nWaitTime: 2929\nWaitTime: 2651\nWaitTime: 2971\n\nPerf before:\n2.94% art::mirror::Class::FindDeclaredStaticField(art::mirror::DexCache const*, unsigned int)\nAfter:\n0.00% art::mirror::Class::FindDeclaredStaticField(art::mirror::DexCache const*, unsigned int)\n\nBug: 18054905\nBug: 16828525\n\n(cherry picked from commit bfb21589a6490769690b44aaf8e6a0021a1261b7)\n\nChange-Id: I33255f85d10c29cae085584880196c45ac0ea230\n"
    },
    {
      "commit": "03b6eafba8ace9a9c4d5ee9c47723d1910ccd7a8",
      "tree": "3451b85f23b14cd78ab6bd1257528ba2eb6769e5",
      "parents": [
        "4816ecfc1b2d544685ec5edcdeaad6870f6bfd7e"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 09:34:57 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Oct 28 11:04:43 2014 -0700"
      },
      "message": "Tidy MethodProtoHelper.\n\nMove to place of only use, class_linker.cc. Be lazy in computing the name.\n\nChange-Id: I1438efbda58369ddd0ac36eda8a5a0a6c6fdff77\n"
    },
    {
      "commit": "46774767fcf7780d1455e755729198648d08742e",
      "tree": "09a5d87ff0acbc7eb1fa94ec901ba10009178f03",
      "parents": [
        "11bd683f6dbebe2f3d02fa383fc9dbc69a83ace8"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Oct 22 11:37:02 2014 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Oct 27 20:19:37 2014 -0700"
      },
      "message": "ART: Add support for patching and loading OAT files compiled with PIC\n\n* Images (.art) compiled with pic now have a new field added.\n* isDexOptNeeded will now skip patch-ing for apps compiled PIC\n* First-boot patching now only copies boot.art, boot.oat is linked\n\nAs a result, all system preopted dex files (with --compile-pic) no\nlonger take up any space in /data/dalvik-cache/\u003cisa\u003e.\n\nBug: 18035729\nChange-Id: Ie1acad81a0fd8b2f24e1f3f07a06e6fdb548be62\n"
    },
    {
      "commit": "11bd683f6dbebe2f3d02fa383fc9dbc69a83ace8",
      "tree": "3b3df2099dc063f48676c92b94dc4532cfb7a9e6",
      "parents": [
        "79027f6204f77db4ba3bd3ceab1f07240fbbfdb3",
        "7ba649636c4475c3992fa15a57acd2546d69ff38"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 28 02:08:03 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Oct 28 02:08:03 2014 +0000"
      },
      "message": "Merge \"ART: Add pic flag to oat header store\""
    },
    {
      "commit": "7ba649636c4475c3992fa15a57acd2546d69ff38",
      "tree": "63b3e30483d2a838bcaa3337535d4828f3c1ea33",
      "parents": [
        "e74b720d752469d3883f3589de863e8fc82c6338"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Oct 23 11:37:40 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Oct 27 18:52:28 2014 -0700"
      },
      "message": "ART: Add pic flag to oat header store\n\nAdd the compile-time PIC flag to the oat-header key-value store.\nIgnore image offset and patch delta when loading PIC oat files.\n\nChange-Id: Ie1f1ef37125386a968228033d1e2bec565315510\n"
    },
    {
      "commit": "d035c2d0523f29cb3c4fcc14a80d2a8ceadec3ba",
      "tree": "114f11c3c89d915bfd7b7d1cede4704cfacff6d1",
      "parents": [
        "2d2621a1463d2f3f03fa73503fa42e43657cdcfc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 27 17:30:20 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 27 17:50:08 2014 -0700"
      },
      "message": "Fix 64 bit build\n\nBuggy compiler.\n\n(cherry picked from commit 7989d22642415e1e4d608e210284834951bd0a39)\n\nChange-Id: Id16c83fc7963ca89fd7fae32dd15ae342cc7f064\n"
    },
    {
      "commit": "2d2621a1463d2f3f03fa73503fa42e43657cdcfc",
      "tree": "1f7cf393693d72db5c186f99b04ac511958c6418",
      "parents": [
        "ac293277b69882105810fabd6c53f55de58823fe"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 23 16:48:06 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 27 16:49:43 2014 -0700"
      },
      "message": "Optimize method linking\n\nAdded more inlining, removed imt array allocation and replaced it\nwith a handle scope. Removed some un-necessary handle scopes.\n\nAdded logic to base interface method tables from the superclass so\nthat we dont need to reconstruct for every interface (large win).\n\nFacebook launch Dalvik KK MR2:\nTotalTime: 3165\nTotalTime: 3652\nTotalTime: 3143\nTotalTime: 3298\nTotalTime: 3212\nTotalTime: 3211\n\nFacebook launch TOT before:\nWaitTime: 3702\nWaitTime: 3616\nWaitTime: 3616\nWaitTime: 3687\nWaitTime: 3742\nWaitTime: 3767\n\nAfter optimizations:\nWaitTime: 2903\nWaitTime: 2953\nWaitTime: 2918\nWaitTime: 2940\nWaitTime: 2879\nWaitTime: 2792\n\nLinkInterfaceMethods no longer one of the hottest methods, new list:\n4.73% art::ClassLinker::LinkVirtualMethods(art::Thread*, art::Handle\u003cart::mirror::Class\u003e)\n3.07% art::DexFile::FindClassDef(char const*) const\n2.94% art::mirror::Class::FindDeclaredStaticField(art::mirror::DexCache const*, unsigned int)\n2.90% art::DexFile::FindStringId(char const*) const\n\nBug: 18054905\nBug: 16828525\n\n(cherry picked from commit 1fb463e42cf1d67595cff66d19c0f99e3046f4c4)\n\nChange-Id: I27cc70178fd3655fbe5a3178887fcba189d21321\n"
    },
    {
      "commit": "2c4257be8191c5eefde744e8965fcefc80a0a97d",
      "tree": "9db3e1f1c60f2df29638ba3ce9d5d5bb8b26ca2c",
      "parents": [
        "98c271d517bc4d25fc6879b4b8e35ea93885d9e2"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:20:06 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Oct 24 14:23:42 2014 -0700"
      },
      "message": "Tidy logging code not using UNIMPLEMENTED.\n\nChange-Id: I7a79c1671a6ff8b2040887133b3e0925ef9a3cfe\n"
    },
    {
      "commit": "cf7f19135f0e273f7b0136315633c2abfc715343",
      "tree": "ffa4d9efd9c45f4b6789acc1f534bb9327052b7e",
      "parents": [
        "aea6888b056be21adf762e066c7f33b8939b8a06"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 22:06:39 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 22 22:21:57 2014 -0700"
      },
      "message": "C++11 related clean-up of DISALLOW_..\n\nMove DISALLOW_COPY_AND_ASSIGN to delete functions. By no having declarations\nwith no definitions this prompts better warning messages so deal with these\nby correcting the code.\nAdd a DISALLOW_ALLOCATION and use for ValueObject and mirror::Object.\nMake X86 assembly operand types ValueObjects to fix compilation errors.\nTidy the use of iostream and ostream.\nAvoid making cutils a dependency via mutex-inl.h for tests that link against\nlibart. Push tracing dependencies into appropriate files and mutex.cc.\nx86 32-bit host symbols size is increased for libarttest, avoid copying this\nin run-test 115 by using symlinks and remove this test\u0027s higher than normal\nulimit.\nFix the RunningOnValgrind test in RosAllocSpace to not use GetHeap as it\nreturns NULL when the heap is under construction by Runtime.\n\nChange-Id: Ia246f7ac0c11f73072b30d70566a196e9b78472b\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": "b23eab1c507f5d133a2dbcdd00c45aa86d156eef",
      "tree": "32cfae838b263e4d97444270c94940d2d576d084",
      "parents": [
        "eff81605b674f75ff541f84ef63523fdc9939a9a"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Oct 08 17:55:21 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Oct 14 16:49:57 2014 -0700"
      },
      "message": "Add VLOG(class_linker) for clinit errors\n\nBug: 17915141\nChange-Id: I3002cf4348ec3fa241f63ff1515f813f6051c267\n"
    },
    {
      "commit": "13735955f39b3b304c37d2b2840663c131262c18",
      "tree": "0a731ac42b8230f9929172fa3e3d8051874e2b18",
      "parents": [
        "25b18bbdaa36ff936eb44f228f0518d4223e9d52"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Oct 08 12:43:28 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 16:05:58 2014 -0700"
      },
      "message": "stdint types all the way!\n\nChange-Id: I4e4ef3a2002fc59ebd9097087f150eaf3f2a7e08\n"
    },
    {
      "commit": "cdc1aaffabbdf417d29b203b2cd2763ed2d623f8",
      "tree": "ff56b9bbaa3ce0305c0ef71c055d3664dddfe93a",
      "parents": [
        "bbb1fc6e95f46470979936450b0d3f1e020c5904"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 13:21:38 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Oct 09 14:31:29 2014 -0700"
      },
      "message": "Simplify instance reference offsets.\n\nDon\u0027t encode Object\u0027s class. Use trailing rather than leading zeroes to give\noffset position.\n\nChange-Id: I1ae74e7a01f63696429644adf81cdf6ee58832fe\n"
    },
    {
      "commit": "31d8f5295c24730a57cb36cbc41197f0b7e8397c",
      "tree": "e37953f590f924e06b9905f922407559a3661cb6",
      "parents": [
        "8283e079a209e81caafd123a12a525922368fd34"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Sep 29 11:22:54 2014 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Tue Sep 30 21:49:43 2014 -0700"
      },
      "message": "Add VMRuntime.isBootClassPathOnDisk\n\nBug: 17679443\n\n(cherry picked from commit 95a935415d44903b28326424beb4db5c013ef089)\n\nChange-Id: Iba40291dead3f0b6715903c986370fd0cf1e41e1\n"
    },
    {
      "commit": "07140838a3ee44a6056cacdc78f2930e019107da",
      "tree": "4f344df6ec2612d8ddbf0a00e2b49a39a7501249",
      "parents": [
        "f9098ea6d7326b4d8de2860d18adf74046b80855"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 30 15:43:59 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 30 15:43:59 2014 -0700"
      },
      "message": "Enable -Wunreachable-code\n\nCaught bugs in DeoptimizeStackVisitor and assemble_x86 SIB encoding.\nAdd UNREACHABLE macro to document code expected to be unreachable.\nBug: 17731047\n\nChange-Id: I2e363fe5b38a1246354d98be18c902a6031c0b9e\n"
    },
    {
      "commit": "c8ccf68b805c92674545f63e0341ba47e8d9701c",
      "tree": "fb360323538cb242ebf7c5c0aca27d3a0bce0abb",
      "parents": [
        "fcabfbe577c0fd40910b565beb681bd4b66f6c5d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:07:43 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 29 20:13:48 2014 -0700"
      },
      "message": "ART: Fix some -Wpedantic errors\n\nRemove extra semicolons.\n\nDollar signs in C++ identifiers are an extension.\n\nNamed variadic macros are an extension.\n\nBinary literals are a C++14 feature.\n\nEnum re-declarations are not allowed.\n\nOverflow.\n\nChange-Id: I7d16b2217b2ef2959ca69de84eaecc754517714a\n"
    },
    {
      "commit": "f0edfc355893d53d1104b05501c99ad5ccf305c4",
      "tree": "7e1fa49875759512f5d02b1c45435d3e3366b920",
      "parents": [
        "1ed5b27ee329208fd8ae22b8a9a61d708e2c1ffb"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 11:46:46 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Sep 25 15:53:54 2014 -0700"
      },
      "message": "Some optimizations for the array alloc path.\n\n- Force Array::Alloc() to be inlined.\n- Simplify the array size overflow check.\n- Turn fill_usable into a template parameter.\n- Remove a branch in Array::DataOffset() and avoid\n  Primitive::ComponentSize(), which has a switch, in the array alloc\n  path.\n- Strength reductions in the array size computation by using component\n  size shifts instead of component sizes. Store component size shift\n  in the upper 16 bits of primitive_type field.\n- Speedup: ~4% (3435-\u003e3284) in MemAllocTest on N4.\n\nBug: 9986565\n\nChange-Id: I4b142ffac4ab8b5b915836f1660a949d6442344c\n"
    },
    {
      "commit": "2d5f39ed5aeaeb7ca22b07b4c6e8c56348ef8893",
      "tree": "b0b9a8d4c386555f009b825bd5fbd8ab31909c3b",
      "parents": [
        "24f4b816dd50793e8456dc60fe1b50856004d708"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 19 17:52:37 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 19 18:57:47 2014 -0700"
      },
      "message": "Add ScopedAssertNoThreadSuspension\n\nAdded a new class, ScopedAssertNoThreadSuspension.\nDeleted some unnecessary ScopedAssertNoThreadSuspension since\nVisitObjects already has a ScopedAssertNoThreadSuspension.\n\nChange-Id: I29ec0006120c39a27184d30e2d1d0c179e203776\n"
    },
    {
      "commit": "3c13a794845e0cf7887e33b2ec20de7e6ba85f8f",
      "tree": "ab9a9a426a371de0c32e48a85fdda44a321a06a0",
      "parents": [
        "5cdd0734d2f79eedc530f5f1e876cd2110e29c86"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 20:56:04 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 18 23:43:07 2014 -0700"
      },
      "message": "ART: Only allow the zygote to create the global boot image\n\nDo not allow arbitrary processes, even when root, to write the\nboot image in /data/dalvik-cache.\n\nBug: 17478752, 17510489, 17439961\nChange-Id: Iba2b74be6d0752f4221f4ff5ee295b45a34cb2e1\n(cherry picked from commit 33c36d4f22ab6a5e61eb47b654deaf647c34e49c)\n"
    },
    {
      "commit": "5a4b8a236030460651a3136397d23ca6744e7eb7",
      "tree": "0e43891398e416d3fa77c7de391bf4db4408e8ee",
      "parents": [
        "19f7c95491a053b818f914137fa73df0517b8792"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 08:30:08 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 19:50:12 2014 -0700"
      },
      "message": "ART: Rename Handle hierarchy\n\nBring the names in line with normal OO principles: ConstHandle\nbecomes Handle, and Handle becomes MutableHandle.\n\nChange-Id: I0f018eb7ba28bc422e3a23dd73a6cbe6fc2d2044\n"
    },
    {
      "commit": "2ed8deff799448e094fa7a7cb9cf3b718820f4c6",
      "tree": "b33fa371673d2019b6a8bdb2c928237cd7b3a9d3",
      "parents": [
        "41bc89598bbfe1037740a6a2e12ce0936dd9ba19"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 28 14:41:02 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 09:42:50 2014 -0700"
      },
      "message": "ART: Allow quickening in the boot image\n\nUpdate the class linker to accept class status from the boot image\nin compiler mode. Update compiler driver to allow quickening for\nboot image classes. Update method verifier to accept quickened\ninstructions in compiler mode when we just want to dump. Update\noatdump to the new verifier API.\n\nBug: 17316928\n\n(cherry picked from commit 35439baf287b291b67ee406308e17fc6194facbf)\n\nChange-Id: I9ef1bfd78b0d93625b89b3d662131d7d6e5f2903\n"
    },
    {
      "commit": "5182932cf6704b53e957f7b4be021fe505a55e22",
      "tree": "99ee2bfb5a6f4d27735aeed26a0533c759db733c",
      "parents": [
        "56369897d662ea63ea5ed57ae36af0ae0fa1452d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 25 15:05:04 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 15 09:37:25 2014 -0700"
      },
      "message": "ART: Change access flag behavior in verifier\n\nNote: this moves the miranda modifier to the upper 16 bit.\n\nBug: 16161620\n\n(cherry picked from commit 7fc8f90b7160e879143be5cfd6ea3df866398884)\n\nChange-Id: I2f591d53b7d1559171e70aaaf22225d94b4882f5\n"
    },
    {
      "commit": "7b078e8c04f3e1451dbdd18543c8b9692b5b067e",
      "tree": "414229c6b87eb20ea24c40780752da5a3999a49a",
      "parents": [
        "f79ba17defbd9342e44ab9f3de0807054673d3c9"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 10 14:44:24 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Sep 12 14:57:53 2014 -0700"
      },
      "message": "Compile time performance improvements focusing on interpret-only.\n\nReduce virtual method dispatch in the method verifier and make more code\ninline-able.\nAdd a StringPiece with const char* equality operator to avoid redundant\nStringPieces and strlens.\nRemove back link from register line to verifier and pass as argument to reduce\nsize of RegisterLine.\nRemove instruction length from instruction flags and compute from the\ninstruction, again to reduce size.\nAdd suspend checks to resolve and verify to allow for more easy monitor\ninflation and reduce contention on Locks::thread_list_suspend_thread_lock_.\nChange ThrowEarlierClassFailure to throw pre-allocated exception.\nAvoid calls to Thread::Current() by passing self.\nTemplate specialize IsValidClassName.\nMake ANR reporting with SIGQUIT run using checkpoints rather than suspending\nall threads. This makes the stack/lock analysis less lock error prone.\nExtra Barrier assertions and condition variable time out is now returned as a\nboolean both from Barrier and ConditionVariable::Wait.\n\n2 threaded host x86-64 interpret-only numbers from 341 samples:\nBefore change: Avg 176.137ms 99% CI 3.468ms to 1060.770ms\nAfter change: Avg 139.163% 99% CI 3.027ms to 838.257ms\nReduction in average compile time after change is 20.9%.\nSlow-down without change is 26.5%.\n\nBug: 17471626 - Fix bug where RegTypeCache::JavaLangObject/String/Class/Throwable\ncould return unresolved type when class loading is disabled.\nBug: 17398101\n\nChange-Id: Id59ce3cc520701c6ecf612f7152498107bc40684\n"
    },
    {
      "commit": "ab0ed82ff64ba5a751dcc0a38d0e0c41c53dc923",
      "tree": "c67cceb67994868c42cc16ab8416fa93b56ce682",
      "parents": [
        "3fec7718041302f769995eedda9beef362131842"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 14:21:41 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 11 18:04:33 2014 -0700"
      },
      "message": "Add fast path to VMClassLoader.findLoadedClass\n\nVMClassLoader.findLoadedClass now calls FindClassInPathClassLoader\nas a fast path. Exclusive time results (trace view maps launch):\n\nBefore:\nnativeFillInStackTrace 1.4%\ndefineClassNative 1.2%\nfindLoadedClass 0.2%\n\nAfter:\nnativeFillInStackTrace 0.5%\ndefineClassNative 0.0%\nfindLoadedClass 0.9%\n\n(cherry picked from commit 194116c836080de14245a3a7c4617d07b8abf8cf)\n\nChange-Id: I63fd7b4bccb71789e92bd39d1d3f9d0de22535de\n"
    },
    {
      "commit": "bb0c7f6a247521bc3e85f08f93603122bccb1a72",
      "tree": "40e13d2b70928d2d885fdf2f9d501c2d067bf3c9",
      "parents": [
        "59dae45a3d1ef83771fb78421fcf8fda838b4d16"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 10:59:33 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 17:33:54 2014 -0700"
      },
      "message": "ART: Fix preverified setting in VerifyClass\n\nMake sure soft-failed classes cannot set methods to pre-verified.\n\nBug: 16828525, 17465185\n\n(cherry picked from commit 3892cf8da7d5e76c0dee585fc8f69df773680525)\n\nChange-Id: I09c0a68ca722978459741311148eae7614f9ca49\n"
    },
    {
      "commit": "48498591b90a8ff7b24b1ce05c220e3bc42013df",
      "tree": "39ca61335fafc57cbcf91c5087335f367ccbedc4",
      "parents": [
        "b9620f305c79914f5159cf9279a7ccd173af1186"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Sep 10 19:48:05 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 11 08:04:35 2014 -0700"
      },
      "message": "ART: Correctly make methods preverified\n\nBug: 16828525\n\n(cherry picked from commit df1532b9ba0cda2d00b78fbdef461f8a6cf8a737)\n\nChange-Id: I66756348b2aa50e41dacca59769b6810a91c73b0\n"
    },
    {
      "commit": "958d78e51725730ccc38c33ff9424887adc7343b",
      "tree": "b5e67909fc0cab3e6a7d4860d85e8f1649961021",
      "parents": [
        "73f7d79c1755f85b2be590aa9d9b18e054f76a1a",
        "faff0f05fef90577c9744505555675185832aacd"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Sep 10 22:22:13 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Sep 10 22:22:14 2014 +0000"
      },
      "message": "Merge \"Remove reference_static_offsets used for iterating through class static fields.\""
    },
    {
      "commit": "faff0f05fef90577c9744505555675185832aacd",
      "tree": "40b5130526b80fe0a59f815f19dc2b87b0a9f879",
      "parents": [
        "05382d22a2ebbc95142ec2fc46e2d56b23e699ee"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Sep 10 12:03:22 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Sep 10 14:40:37 2014 -0700"
      },
      "message": "Remove reference_static_offsets used for iterating through class static fields.\n\nSince static fields are contiguous in class object and there is no need to\ntraverse super classes, it\u0027s not meaningful to use reference_static_offsets.\nAlso especially with embedded vtable/imt, static field offset can\u0027t be encoded\nwith an unsigned integer anyway.\n\nA corresponding change is made to Class.java to remove the member field.\n\nBug: 16236588\nChange-Id: I1fde3cd9efce884945876f0658c63d992164fd94\n"
    },
    {
      "commit": "1a465ca32178292888d3dc34b1cd784432a35848",
      "tree": "c7588d59075c51969fb2a46edb09a1fefeb9a848",
      "parents": [
        "833ec8ff84a25078f5755489d7a36db3015c069a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Sep 10 19:44:39 2014 +0200"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Sep 10 11:10:56 2014 -0700"
      },
      "message": "Ensure class is linked before resolution\n\nAdds a missing call to ClassLinker::EnsureResolved to ensure we did link the\nclass and retired the temp class (placeholder) before doing the resolution.\n\nBug: 17435441\n\n(cherry picked from commit 72da76359aa5599f78ddca79b294e9bf30e004ed)\n\nChange-Id: I3b368567c7b24ec2ff7ee1dec7bcd3501a6061f8\n"
    },
    {
      "commit": "aa4497db59f1eeec954f2ba5da6d458fcdf9b3a4",
      "tree": "1efe5c6c5fe93ae73b6ad02db1a4ac368c71c00e",
      "parents": [
        "6724a9531c92368491dd17937d0087f73a7c0642"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Fri Sep 05 14:01:17 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Sep 10 16:02:14 2014 +0100"
      },
      "message": "Improve dex location canonicalization-related performance.\n\nEagerly add canonical dex file locations to the OatFile\u0027s\nprimary lookup map in Setup(). This moves the boot.oat work\nfrom every app startup to the zygote initialization. Since\nwe always ended up initializing the canonical location map\nanyway due to the way that we\u0027re loading dex files, the lazy\ninitialization didn\u0027t save anything.\n\nClean up dex file name canonicalization to make sure we\nfree() the memory returned by realpath() rather than using\nstd::unique_ptr\u003c\u003e with the default deleter.\n\nAvoid some unnecessary duplicate OatDexFile lookups.\n\nBug: 16828525\nBug: 17346103\nChange-Id: Id8fbc8992f62996138eb2006a0046c6529747c09\n"
    },
    {
      "commit": "6be5a284194f34b5316982c6afa0d3a15bcbcfef",
      "tree": "ea185692ff8cd6d8e11158bf3ee05a21365e6f44",
      "parents": [
        "42bc2f1fac342a01d38bc452da1e70f8099f7c2f",
        "30c2e1b3970c8a720eac38dbaca1d849c619114e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Sep 09 09:08:41 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Sep 09 09:08:42 2014 +0000"
      },
      "message": "Merge \"Small error reporting fix in class linker.\""
    },
    {
      "commit": "6bcae8fa93684af581d16400f360541d39e5b5e6",
      "tree": "88f99458a0141805acee3f730a0709542283698e",
      "parents": [
        "30cbbee37d9fcca1a39b3681434180102ee5251a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 04 18:33:17 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Sep 08 18:14:42 2014 -0700"
      },
      "message": "Add fast path for FindClass using the type dex file.\n\nIf we are using the PathClassLoader with a BootClassLoader\nparent, we can handle the common case in the FindClass function\nwithout needing to go back to java code.\n\nAround 10% speedup measured of maps launch, could be noise due to\nlarge variation of app launch times. Eliminates defineClassNative\nfrom being anywhere near the top of sampling profiles.\n\nBug: 17397179\nBug: 16828525\n\n(cherry picked from commit 8a39e7fe02e9a81853dc7a75cb50d9ece07a9b37)\n\nChange-Id: I1f31de76c1b1a53e32173b1e61a59b0e2f267c98\n"
    },
    {
      "commit": "30c2e1b3970c8a720eac38dbaca1d849c619114e",
      "tree": "35b252fe4012c6b7aa9ad94b29c350bf542722a9",
      "parents": [
        "e2c23739c6395a83b30ece38f8a2e9e1bf7cf3ce"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 08 09:55:29 2014 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 08 18:17:07 2014 +0100"
      },
      "message": "Small error reporting fix in class linker.\n\nChange-Id: Ia9e94df48e9984c25ad8ab5c6ca41f9153984915\n"
    },
    {
      "commit": "621962a0872bf328dba7eda44061f0f505014cef",
      "tree": "5212d8448e57e959dc6bac16ca9be4dffc522f1a",
      "parents": [
        "a8c55ae449ad423087f232b2fec1064062755970"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Sep 02 15:53:55 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 05 16:33:50 2014 +0100"
      },
      "message": "Avoid recomputing the dex checksum during class loading\n\nThread the already computed checksum to VerifyOatAndDexFileChecksums and\nLoadMultiDexFilesFromOatFile to avoid recomputing it.\n\nBug:17346103\n\n(cherry picked from commit ca3459398018360d9968a52eebf727df085caf83)\n\nChange-Id: Ie244efaca55b9e7c814b35feec7fce11fab3856d\n"
    },
    {
      "commit": "a8c55ae449ad423087f232b2fec1064062755970",
      "tree": "17ca4770b299f41045e1e820840eafd255d4b12b",
      "parents": [
        "194b032b6d43299e117292494064d54ecf4ddbd8"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 05 16:14:19 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Sep 05 16:14:19 2014 +0100"
      },
      "message": "Remove unreachable code from class_linker.cc\n\nIf the checksum doesn\u0027t match the oat_dex_file will be NULL, a case\nwhich is handled in the first if.\n\nBug: 17402267\n\nChange-Id: If8547ddc8fd7eff59a3b7dd36c07ac4ceb351361\n"
    },
    {
      "commit": "217dc450cf0fef8539beaded77c704cfcb6669e9",
      "tree": "73ebab28a586f091dd3ac369b6165acb3410ad53",
      "parents": [
        "7b04ae299eb77786768ae05ba2498eb4eba6ddf6",
        "dbf3be0f133c0bdf454f637fee2452dbb5f7c027"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 04 17:23:53 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Sep 04 17:23:53 2014 +0000"
      },
      "message": "Merge \"VisitClassesWithoutClassesLock isn\u0027t safe if classes move.\""
    },
    {
      "commit": "68caf9e7232109c698e7f91f64b348cf37b432dd",
      "tree": "2a7a5390eb54ceb846f0cee1afd956076216695e",
      "parents": [
        "5355835411cafcc2772e061cb7aef3b8ca1e6ea1"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Sep 03 13:48:16 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Sep 04 09:57:38 2014 -0700"
      },
      "message": "Fix stack overflow and duplicate methods while tracing.\n\nBug: 16386215\nChange-Id: I0d0ae0113a3a00013ce84a1f5a110e2c52f19b86\n(cherry picked from commit 6b28a456b075fe53dfb7e924a44dbf35d0d41eb3)\n"
    },
    {
      "commit": "dbf3be0f133c0bdf454f637fee2452dbb5f7c027",
      "tree": "cd57469dbefeb18ebbc0d8d2be3da236bb3218c5",
      "parents": [
        "a07557ccece64fa7084bb01b9d26957bd0977c10"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 29 15:40:08 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Sep 03 17:39:44 2014 -0700"
      },
      "message": "VisitClassesWithoutClassesLock isn\u0027t safe if classes move.\n\nWhich they do, so avoid by doing an array allocation.\nAlso, tidy member variables to the end of ClassLinker.\nRemove unnecessary mutable. Tidy and fix a locks required/excluded.\n\nChange-Id: I2404a9e7a1ea997d68ab1206f97d2a20dffbda06\n"
    },
    {
      "commit": "63557459a4098294a9ff44d035241de2966047c0",
      "tree": "0c0b200ee1da9d269e77c2c6d2cacc7efa43f6e2",
      "parents": [
        "9a4f02722051955e536d6aacb776d637a6713545"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Jun 04 16:57:15 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 02 15:41:21 2014 -0700"
      },
      "message": "Pre-allocate the NoClassDefFoundError to be thrown for boot classes.\n\nBring over a Dalvik \"optimization\".\nBug: 12804658\nBug: 16853450\nChange-Id: I6419de7bd2ba18d91479cb52489104954f5c4524\n"
    },
    {
      "commit": "68b56858367e29461ae290fd797443a1ef6d8005",
      "tree": "c086a68bcbbb50d7c3b829bcc7d4231ff815db4a",
      "parents": [
        "7c7686e62d262f1823876cebb3700e20f967dd56"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 29 20:19:11 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Sep 02 08:01:04 2014 -0700"
      },
      "message": "Reduce and speed-up class def searches.\n\nUse the class linker for descriptor lookups from the compile driver so that\ndex caches are populated.\nReduce the scope of functions for scanning class paths to just the class\nlinker where they are performed.\nIf we see more than a threshold number of find class def misses on a dex file\nlazily compute an index, so that future lookups are constant time (part of the\ncollection code is taken from\nhttps://android-review.googlesource.com/#/c/103865/3). Note that we take a lazy\napproach so that we don\u0027t serialize on loading dex files, this avoids the\nreason the index was removed in 8b2c0b9abc3f520495f4387ea040132ba85cae69.\nRemove an implicit and unnecessary std::string creation for PrintableString.\n\nSingle threaded interpret-only dex2oat performance is improved by roughly 10%.\n\nBug: 16853450\n\nChange-Id: Icf72df76b0a4328f2a24075e81f4ff267b9401f4\n"
    },
    {
      "commit": "7adb7ac3913364de8cc57b8934024dd12e1d3bea",
      "tree": "929dd2e25f87dd8c5bfc4865834f18b8b776a344",
      "parents": [
        "c84b7c54c2251344018a4b4e78b122caf7c03b64"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 29 10:28:25 2014 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 29 10:38:13 2014 -0700"
      },
      "message": "Fix segfault if running without image.\n\nBug: 17325091\nChange-Id: I343099543ce0abf02219da84d61d9ce2dfc47980\n"
    },
    {
      "commit": "6950ae42dc0f64c825bf61cb13c0bfb254ad97bd",
      "tree": "bd1c39429488b5c23259df407c5aa4e89360dc2f",
      "parents": [
        "063f73c2678f91ec0292b31b2dba0021cb911f3e",
        "381e4ca3cc9fc6405ff20e1de873a56d78d51923"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 28 19:15:12 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Aug 28 19:15:12 2014 +0000"
      },
      "message": "Merge \"Filling hole between subclass and superclass.\""
    },
    {
      "commit": "381e4ca3cc9fc6405ff20e1de873a56d78d51923",
      "tree": "d526a0a141f6141c941cc6862be30f64eaa4735c",
      "parents": [
        "a0a0da29e7d4d5c1bd471c49f1a4b6ec98fb767a"
      ],
      "author": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Mon Aug 25 17:24:27 2014 -0700"
      },
      "committer": {
        "name": "Fred Shih",
        "email": "ffred@google.com",
        "time": "Thu Aug 28 12:00:07 2014 -0700"
      },
      "message": "Filling hole between subclass and superclass.\n\nSubclasses no longer need to be 4-byte aligned at the end. Any gaps\nbetween a superclass and its subclasses will be filled in by halfword\nor byte fields if possible.\n\nRefactored the alignment and shuffling methods to use a priority queue\nin order to reduce the amount of logic when laying out objects.\n\nChange-Id: Ifed71af534e0c5e77bb14555c44b973fe66df6da\n"
    },
    {
      "commit": "524507a9265e8e5e2b040c113d903c815748245a",
      "tree": "7f11e3d63925531efaf1a2a042cf03b3c444973a",
      "parents": [
        "83c115930b403db2b6b38d9dcb4828e31feb792f"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 27 15:28:28 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 28 11:38:41 2014 -0700"
      },
      "message": "Prevent exception bugs in class linker\n\nThere were some places that could throw exceptions but still succeed.\nThis caused the allocation entrypoints to occasionally allocate a\nheap object with a pending exception.\nAlso added some additional AssertNoExceptionPending.\n\nBug: 17164348\n\n(cherry picked from commit 58c016c3f85d6d5496cea25325778de3a8d9a3ac)\n\nChange-Id: Id9918fa8f1a5d713b847cb95cdade925ff80a826\n"
    },
    {
      "commit": "ae94e350f100207359b8345d8d21e78e7cfb44c4",
      "tree": "31d11bd22ca174488ae0946d2e84a2a3b3a2483e",
      "parents": [
        "9c18858899738f79e75b5a31a96b91c8bfa8bdd7"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Aug 27 15:32:56 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Aug 28 10:53:15 2014 +0200"
      },
      "message": "Ensure proxy constructor is in dex cache\n\nBug: 17262039\n\nChange-Id: I879341fa9c66f18ec64d6d4bf6a222a452c27739\n"
    },
    {
      "commit": "84d7605f93f1e6e86a16e02017e305c90e93117a",
      "tree": "4602fe9beb2c0e59ff89a828473c1c2acf07930b",
      "parents": [
        "a9ffc181c61f5634753bf1039ed50bf22c800fde"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Aug 22 17:49:35 2014 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 26 16:39:14 2014 -0700"
      },
      "message": "Support booting without functioning boot.oat/art patchoat.\n\nBug: 17000769\n\nChange-Id: I89c26a905af12ea288742368c2c038afd57a879a\n"
    },
    {
      "commit": "b7fbafdac8cf0ff8f860e6e85646d6c88d3914ed",
      "tree": "7e2b298f7563d4c964772b40a2a580b7a7c1d0a5",
      "parents": [
        "654881ffd780066fe1160320059ae629416b4652",
        "df7337508381dce5e653b2e7a2ee4ca93103d67c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 26 17:11:38 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 26 17:11:38 2014 +0000"
      },
      "message": "Merge \"ART: kSuper also has IncompatibleClassChangeError\""
    },
    {
      "commit": "df7337508381dce5e653b2e7a2ee4ca93103d67c",
      "tree": "18596f2a30c076fb41a0ee70baf34e18c7e681ab",
      "parents": [
        "e18aa4316eb9a15cd6b1051f27a1ce49967c170e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 25 20:55:01 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 26 10:10:52 2014 -0700"
      },
      "message": "ART: kSuper also has IncompatibleClassChangeError\n\nWhen resolving methods, kSuper can also have\nIncompatibleClassChangeError.\n\nBug: 17266767\n\n(cherry picked from commit 9cb8d7a9a5013dd1e6734d9643573a4750d869e2)\n\nChange-Id: I5fafe03ad578f605825a3d0c89f1254a4a385b76\n"
    },
    {
      "commit": "8850011ceffce5de38262169de74e4a41ced50eb",
      "tree": "ff0b6f9a54cf3eadaecbd7452eb335fbce9dd5a9",
      "parents": [
        "7713d104f34606161fbf36497be2e2aa76d87ca9"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 22 12:12:56 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Aug 25 16:18:55 2014 -0700"
      },
      "message": "Remove an intermediate field array in ClassLinker::InitializeClass.\n\nThis improves on CL 105090 by removing the need for the intermediate\nfield array by iterating two iterators in parallel.\n\nBug: 12687968\nChange-Id: I32d4570948a9d39ccb1c20a02e18b48f15ed0738\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": "e25826e28ea65d9c1aa23f84788a091c677b20c7",
      "tree": "0d89c7f23c5095907756a53ef8ebdaf92db0a48d",
      "parents": [
        "21259fedf4fd0f786c71f69493ebfbb9affe3a8d",
        "64ad14dbe2225441fb7734bf6d89358d96692eea"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 25 17:51:38 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Aug 25 17:51:38 2014 +0000"
      },
      "message": "Merge \"Support running without a boot image.\""
    },
    {
      "commit": "64ad14dbe2225441fb7734bf6d89358d96692eea",
      "tree": "8992ebe906a4a0040502132aa9c77628a0a5ced6",
      "parents": [
        "688d4a42ff5ab3bcb28d516afcb80b79c392e8e4"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 19 14:23:13 2014 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Aug 25 10:36:26 2014 -0700"
      },
      "message": "Support running without a boot image.\n\nBug: 17000769\n\nChange-Id: I6404d5050c8a2f4ee6e70d58532eb25ee9de248e\n"
    },
    {
      "commit": "bf99f77dda749e2b653e8c45259b1fb56e7bb012",
      "tree": "98addbb3533c745781bc26e4a55cbbdd6d6e97e7",
      "parents": [
        "762f0a5bdd238458bbb463a9565388f2047a98d4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 23 16:37:27 2014 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Aug 23 16:54:24 2014 -0700"
      },
      "message": "Clean up Handle usage.\n\nPrefer using ConstHandle instead of Handle as function arguments\nsince you can\u0027t assign new references to ConstHandle which helps\nprevent bugs.\n\nChanged NullHandle to be a ConstHandle so that you can never modify\nit to be a non null reference.\n\nChange-Id: I81cb979f6f8d5b49e5614966a2caf28c3701dd4f\n"
    },
    {
      "commit": "67ef46adfb2c4990832e23aebeb9c0582d8519c4",
      "tree": "07f95a8a9c022c547842d43fedd155cbaff4df33",
      "parents": [
        "ed9fe4ffd9516cfb01b53a3a2c81d3e223ee352c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Aug 21 15:59:43 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Thu Aug 21 16:00:27 2014 -0700"
      },
      "message": "Avoid handle-less fields in ClassLinker::InitializeClass()\n\nThere were some handle-less fields in a SafeMap across GC points.\n\nBug: 12687968\nChange-Id: Ib8c6527d4e23031f1d0074fa11d8f85499b68340\n"
    },
    {
      "commit": "ed9fe4ffd9516cfb01b53a3a2c81d3e223ee352c",
      "tree": "54b9d158f83a74dc605311f597353bc8e024836f",
      "parents": [
        "40be3b816c860a42e2761e1a614762ea24d12a32",
        "41369d2f7042b728a78d5f1e8c49925463e50294"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Aug 19 21:58:24 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Aug 16 04:03:35 2014 +0000"
      },
      "message": "Merge \"Avoid handle-less methods in ClassLinker::LinkInterfaceMethods().\""
    },
    {
      "commit": "41369d2f7042b728a78d5f1e8c49925463e50294",
      "tree": "266b5ca79dd207f8f93d6ad3e7512b8c59bd9b7a",
      "parents": [
        "92fd388b9bb433a54e9e7a4e6ab9415f59d8956c"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Aug 19 13:10:36 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Aug 19 13:16:42 2014 -0700"
      },
      "message": "Avoid handle-less methods in ClassLinker::LinkInterfaceMethods().\n\nThere were some handle-less methods in local variables across\npotential GC points.\n\nBug: 12687968\n\nChange-Id: I786fbaadf7a52e98194080c67c90fc1c35060d59\n"
    },
    {
      "commit": "9dcc4572949f6a8231a1b4ed859676ba6f411726",
      "tree": "127ad110c7bd5fa865de2dd64e8658e73d95ddc0",
      "parents": [
        "57101be6db093d9d27776f77eb8880ae5bae9913"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Aug 14 14:16:26 2014 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 19 14:07:49 2014 -0700"
      },
      "message": "Make apps able to run with a failing patchoat\n\nBug: 17000769\n\nChange-Id: I0a1a4dc7f5d4bb268530840302ecfb1555231e05\n"
    },
    {
      "commit": "9bdec8839c1a34d09ec3e8916a4bd3a022ac45b6",
      "tree": "bd757f04809fdbfebd501594731e3eac9e5fd487",
      "parents": [
        "ee736b29675455ab0be615581145aa239ce7a6b3"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Fri Aug 15 17:11:12 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Mon Aug 18 11:25:13 2014 -0700"
      },
      "message": "Check that we don\u0027t accidentally invoke compiled code when -Xint.\n\nThe heap poisoning breakge (b/17018234) would have been detected with\nthis check.\n\nBug: 17018234\nChange-Id: If4827ea1b02396d41012f0955e55c887387a0565\n"
    },
    {
      "commit": "db8a664e0b68c7c4d36270cd21dce8de1912d7f9",
      "tree": "3f7fcf610d2de28159cf77ab8e190e18a072e979",
      "parents": [
        "37f048b19da5ac245a6b2a8473b326d2167cc692"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Aug 14 17:18:52 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Aug 15 09:38:52 2014 -0700"
      },
      "message": "Prevent stubs from being installed in java.lang.reflect.Proxy.\u003cinit\u003e.\n\nThis CL is a better fix for proxy tracing and undoes the changes in\nhttps://android-review.googlesource.com/#/c/103025/\n\nChange-Id: Ie82bb49f07774bd08a6720ddbe5b1f8ee9363acf\n"
    },
    {
      "commit": "97b52f89e5e0b52a08d4b9a3953d0973a3cf5636",
      "tree": "31cd309bfbb4e566fcecb1d951e5a5504a891a20",
      "parents": [
        "3842ad76aaeb80e0bb6b02c5f7dc4674533ef872"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 14 11:34:07 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Aug 14 11:47:39 2014 -0700"
      },
      "message": "Make OatClass and OatMethod immutable once more.\n\nOatClass and OatMethod are representation of disk data and we don\u0027t want the\nruntime to mutate this.\n\nChange-Id: Id5b8658fd544f5d6e1b9120af134d3644ff1a52c\n"
    },
    {
      "commit": "eff0f5d9d52805abf825601960cc0c42dc8d7b5a",
      "tree": "eba6218e9026352b5e50b0bed1337d3b5aa48763",
      "parents": [
        "e8bf3df2bcc61c12a7e66b4995a083f9ed3939e0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 13 21:49:37 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 14 08:41:02 2014 -0700"
      },
      "message": "ART: Fix class-linker handling\n\nResolveMethod did not account correctly for the mutual exclusivity\nof direct and static methods. In such a case we threw a NoSuchMethodError,\nwhile the correct behavior is to throw an IncompatibleClassChangeError.\n\nBug: 16956477\n\n(cherry picked from commit b5d1efa0012d31f7c52c0a2e2b70c77c8708c885)\n\nChange-Id: Id014affe0b8a43dbd75570b123b921d5853ab135\n"
    },
    {
      "commit": "38eecb0f4288a374c9b0b4b4df8793eb5fc6697c",
      "tree": "5e3ddfcba0736d47806a35c12ca30853fb4ead67",
      "parents": [
        "e39a5e1ced3d2b87974c646678dd719c02a9a010"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Aug 13 14:51:03 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Aug 13 14:51:03 2014 -0700"
      },
      "message": "Use handle in one case that spans a gc-point.\n\nBug: 16689428\nChange-Id: Ib209d2ca1e7024bffb2bc17c5b5899e231c0e2ca\n"
    },
    {
      "commit": "4fcdc94d22a4608e355aa8df36240181149d10e8",
      "tree": "cb600df7e9b585720c03a08b10509151aa96d5dd",
      "parents": [
        "b66252112d45fd24eab85122fa8902afd1324542"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 22 10:48:00 2014 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Aug 13 18:01:51 2014 +0100"
      },
      "message": "Execute an application even when dex2oat crashes.\n\nBug: 17000769\n\nChange-Id: Iffeb582862a5e794b6c7364c7ec2368cfd0f2214\n"
    },
    {
      "commit": "1ff3c98775a4577cf053dba9a0c2d5c21c07b298",
      "tree": "2d09c27c69678b53b4c9dc486024f3547efd4bca",
      "parents": [
        "99c251bbd225dd97d0deece29559a430b12a0b66"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 02:30:58 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 12 16:08:05 2014 -0700"
      },
      "message": "Avoid use of std::string where we have const char*.\n\nRemoving the ClassHelper caused std::string creation for all calls to\nClass::GetDescriptor and a significant performance regression. Make the\nstd::string an out argument so the caller can maintain it and its life time\nwhile allowing GetDescriptor to return the common const char* case.\n\nDon\u0027t generate GC maps when compilation is disabled.\n\nRemove other uses of std::string that are occuring on critical paths.\nUse the cheaper SkipClass in CompileMethod in CompilerDriver.\nSpecialize the utf8 as utf16 comparison code for the common shorter byte\nencoding.\nForce a bit of inlining, remove some UNLIKELYs (they are prone to pessimizing\ncode), add some LIKELYs.\n\nx86-64 host 1-thread interpret-only of 57 apks:\nBefore: 29.539s\nAfter: 23.467s\n\nRegular compile:\nBefore: 1m35.347s\nAfter: 1m20.056s\n\nBug: 16853450\nChange-Id: Ic705ea24784bee24ab80084d06174cbf87d557ad\n"
    },
    {
      "commit": "68d8b42ddec39ec0174162d90d4abaa004d1983e",
      "tree": "0bb6ccf3b996bb8363c10d07aa39cde221980602",
      "parents": [
        "9c522c2cbbf50dc687728747b37ad59985750b65"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Thu Jul 17 11:09:10 2014 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 08 08:29:53 2014 -0700"
      },
      "message": "Wire up check JNI force copy mode.\n\nIncrease check JNI checks.\nBreak apart jni_internal.h in to jni_env_ext.h and java_vm_ext.h.\nFix the abuse of ScopedObjectAccess/annotalysis by ScopedCheck in the case\nof VM routines.\nMake class loader override and shared library class loader JNI global\nreferences rather than mirror pointers.\nClean-ups to native bridge.\n\nChange-Id: If7c6110b5aade7a402bfb67534af86a7b2cdeb55\n"
    },
    {
      "commit": "58a5af8568d224ca7eccf2483396ff9862f8d1ee",
      "tree": "4dfac17316970040e079244523b9b1e2ea163f05",
      "parents": [
        "1b192268f167f603fc372f02f9067f3ce5d82daf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jul 31 16:23:49 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Aug 06 15:57:05 2014 -0700"
      },
      "message": "ART: Add guards to the dex cache and its shortcuts\n\nDo not return fields, methods or classes if the (declaring) class is\nerroneous.\n\nBug: 16692788\nChange-Id: If43c2414ad0eb22db5eba7cf66396c7f16c26597\n"
    },
    {
      "commit": "f0a3f09c3d54646166a55c05a6b39c7dd504129c",
      "tree": "35a76479f1b774ae100727547a48da5bc0878e66",
      "parents": [
        "484e2c2d3531e5bb36f0e1e12f26c708939c6579"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Jul 24 16:26:09 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Aug 06 12:49:57 2014 -0700"
      },
      "message": "Fix proxy tracing and enable tests that now work with tracing.\n\nAlso updates proxy_test to generate an image for GetQuickOatCodeFor.\n\nBug: 16386215\nChange-Id: Ie7daad3d73ea7b60187bc1e7037ade0df8277107\n"
    },
    {
      "commit": "6e183f2e973a20f2eaca135c240908e1bf98c5d0",
      "tree": "8a989eb8dbaca6a2c505569784740f9581fe7e98",
      "parents": [
        "eb76e11d836ea953b4e40a28e3e69d3b0f4c86fa"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Fri Jul 18 14:57:04 2014 -0700"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Aug 05 10:22:08 2014 -0700"
      },
      "message": "Make system use patchoat to relocate during runtime.\n\nChange dalvik_system_DexFile.cc so that isDexOptNeededInternal will be\nable to indicate that a patchoat is required. Change default of relocate\noption to be on.\n\nBug: 15358152\n\nChange-Id: Ibe92d8b55a24bbf718b0416a21b76e5df7a2de26\n"
    },
    {
      "commit": "4e1d579d6401fef2dd57b16f8d406e33221a69d9",
      "tree": "2abc27cbd45cc8a4775df928280c63c1606cff75",
      "parents": [
        "89c210bf418a152ccabfbbf853ddcce33aea450d"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Jul 15 23:56:47 2014 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Aug 04 17:52:05 2014 +0100"
      },
      "message": "Use canonical paths when searching for dex files\n\nApps which use the DexPathClassLoader directly may\npass symlinks when trying to load dex files. This\nwill not work as we use string comparision to find\nthe dex in an oat file. The CL fixes this issue by\nusing using dex conical paths for comparisons.\n\nBug: 15313272\n\nChange-Id: Ic314374b17612c3afbcadec93a88b2515a0aca5e\n"
    },
    {
      "commit": "94f7b49578b6aaa80de8ffed230648d601393905",
      "tree": "cfc69e453faefee38178ceb85378e1f0f1e17812",
      "parents": [
        "8df73882c60451e7f789bf9b1f3db2d7dc228640"
      ],
      "author": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 22 18:08:23 2014 -0700"
      },
      "committer": {
        "name": "Hiroshi Yamauchi",
        "email": "yamauchi@google.com",
        "time": "Tue Jul 29 13:30:46 2014 -0700"
      },
      "message": "Add GcRoot to clean up and enforce read barriers.\n\nIntroduce a value-type wrapper around Object* for GC roots so that 1)\nwe won\u0027t have to directly add the read barrier code in many places and\n2) we can avoid accidentally bypassing/missing read barriers on GC\nroots (the GcRoot interface ensures that the read barrier is executed\non a read).\n\nThe jdwp test passed.\n\nBug: 12687968\nChange-Id: Ib167c7c325b3c7e3900133578815f04d219972a1\n"
    },
    {
      "commit": "167cc7c33f7100e3f7acc1594c066daa0122e27a",
      "tree": "d265344c32c5bf37d356fcb4871f57a1250d16b6",
      "parents": [
        "0398e171f206cd3b140a358ac31b0a3760380df1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 29 08:33:44 2014 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jul 29 08:33:44 2014 +0000"
      },
      "message": "Revert \"Fix proxy tracing and enable tests that now work with tracing.\"\n\nThis reverts commit 0398e171f206cd3b140a358ac31b0a3760380df1.\n\nChange-Id: I1346ab01485cc7207be0ecb4d8788c500c0df903\n"
    },
    {
      "commit": "0398e171f206cd3b140a358ac31b0a3760380df1",
      "tree": "db5b34142d812f95581a864b681940efc94c6945",
      "parents": [
        "e5647289ccc7dafd8b91771a7bd1cd19416aed66"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Jul 24 16:26:09 2014 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Jul 28 18:33:04 2014 -0700"
      },
      "message": "Fix proxy tracing and enable tests that now work with tracing.\n\nBug: 16386215\nChange-Id: Iec2a372c921caceb050c6baf72d48b3d822899a4\n"
    },
    {
      "commit": "dc13d7df5da49e93963035633a82699c68fa0971",
      "tree": "9e5b943745155b1bc72fc9b0d6856a85322e5c04",
      "parents": [
        "80b3f96ec1e408f34b8e7b76b14774794fa1abd8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 23 20:18:36 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jul 25 18:26:01 2014 -0700"
      },
      "message": "ART: Allow arrays with erroneous component type\n\nArray classes must tolerate having component type classes that are\nerroneous. Change CreateArrayClass to use LookupClass when FindClass\nfailed.\n\nBug: 16019155\nChange-Id: Id4868c5498431c85c199aa3cbecd23566dce3601\n"
    },
    {
      "commit": "1a12858eb15a14788478c4aca82c052bc84fcafa",
      "tree": "e92621389f007ef74cd42ea91e920cfb98d2a980",
      "parents": [
        "ddc211980aa2f6149905d8d26f67201ac8e400b3"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 17:33:25 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 17:33:25 2014 -0700"
      },
      "message": "Fix build, missing spaces around \u003d/\u003c.\n\nChange-Id: I2e7824075626a07eccb0a5eb77ef157214fe70fb\n"
    },
    {
      "commit": "c389c97ca93b73b3cb380cedfe438d153b524225",
      "tree": "efb5f88c9fcb2ab87df05766fb14b3ae135d0f88",
      "parents": [
        "c836fcbb52d99efdd9ed4f5c104aebd0c37cb121",
        "2cdbad7c62f126581ec5177104de961c4d71adaa"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 22:05:50 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jul 22 16:18:32 2014 +0000"
      },
      "message": "Merge \"Set vtable in class object to null after linking.\""
    },
    {
      "commit": "2cdbad7c62f126581ec5177104de961c4d71adaa",
      "tree": "6283b87bc9b65249decac9b0e38fe396782b8d7e",
      "parents": [
        "c62944adcd427dca55489d234428da47c43a0aab"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Jul 16 10:44:41 2014 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Jul 22 15:03:50 2014 -0700"
      },
      "message": "Set vtable in class object to null after linking.\n\nThis is follow-up work of embedding imt and vtable for\nfaster interface/virtual call dispatching.\nOnce vtable becomes embedded, the original vtable is nulled.\n\nChange-Id: I307696657d1e283654169dbecb8f7815c42bbabc\n"
    }
  ],
  "next": "c114b5fbc91e6d19ef430d9bc3468386ca61b324"
}
