)]}'
{
  "log": [
    {
      "commit": "9e57abacecc683f50dd6c9870a32ee075eaf86a8",
      "tree": "27ef93c87f3ce9f09414620f77b35f6d0949fb22",
      "parents": [
        "26ec3cad4968ae32ce9d04c3046f766df46d9bd7"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 16 10:45:40 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 16 10:55:24 2017 +0000"
      },
      "message": "Fix String::DoReplace() using obsolete `this`.\n\nChange it to a static function taking a Handle\u003c\u003e.\n\nTest: testrunner.py --host --interp-ac --gcstress -t 021-string2\nBug: 36335996\nChange-Id: I5ab3e7adc59d6a9095290e57d5ce5d46b79f089b\n"
    },
    {
      "commit": "ece2f7c2644062cb39ad9a62cc19278398deec6b",
      "tree": "47f8e0796f171b4add33f9fca687ef00210ab6e3",
      "parents": [
        "7b6bd79319f239d20f0dadab3e6bb676e906cb5b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 08 16:11:23 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 08 17:20:22 2017 +0000"
      },
      "message": "Update UnstartedRuntime for System.identityHashCode.\n\nThe method is not native anymore.\n\nTest: unstarted_runtime_test\nChange-Id: Ib5cc378f05e9b6ee50168129e855803773a9c5e6\n"
    },
    {
      "commit": "92907f3f7af106a9eeb341caba17f3770203f7fb",
      "tree": "c44f6b487c9ad078c044f19a4a6d72eaf4979d11",
      "parents": [
        "1b7ba9e15d9525eec7ea68e9ecf95e5777a46069"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 20 14:08:30 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 21 12:31:52 2017 +0000"
      },
      "message": "Remove String.setCharAt().\n\nThe internal API String.setCharAt() breaks the assumption\nthat strings are really immutable. That in turn breaks\nstring compression invariants - compressible strings must\nbe compressed. This CL removes the String.setCharAt() API.\n\nThe method was used only in String.replace(char, char)\nwhen we found a match, copying the string on first match.\nInstead, introduce a new native method that does the whole\nreplacement with a single call when we find the first match.\n\nStringReplaceBenchmark results on Nexus 6P, lower is better:\n  timeReplaceCharNonExistent/EMPTY   41.93 -\u003e   38.25 (-9%)\n  timeReplaceCharNonExistent/L_16   114.90 -\u003e   95.09 (-17%)\n  timeReplaceCharNonExistent/L_64   419.97 -\u003e  320.65 (-24%)\n  timeReplaceCharNonExistent/L_256 1667.01 -\u003e 1091.25 (-35%)\n  timeReplaceCharNonExistent/L_512 3253.50 -\u003e 2075.62 (-36%)\n  timeReplaceCharRepeated/EMPTY      41.93 -\u003e   39.58 (-6%)\n  timeReplaceCharRepeated/L_16      114.87 -\u003e   95.40 (-17%)\n  timeReplaceCharRepeated/L_64     1267.29 -\u003e  704.32 (-44%)\n  timeReplaceCharRepeated/L_256    5139.14 -\u003e 1361.80 (-74%)\n  timeReplaceCharRepeated/L_512   10787.81 -\u003e 2338.41 (-78%)\n  timeReplaceSingleChar/EMPTY        41.78 -\u003e   37.16 (-11%)\n  timeReplaceSingleChar/L_16        449.54 -\u003e  497.51 (+11%)\n  timeReplaceSingleChar/L_64        942.08 -\u003e  891.35 (-5%)\n  timeReplaceSingleChar/L_256      2756.18 -\u003e 2174.64 (-21%)\n  timeReplaceSingleChar/L_512      5489.91 -\u003e 3983.32 (-27%)\n\nTest: testrunner.py --host\nTest: run-libcore-tests.sh --mode\u003dhost\nTest: testrunner.py --host with string compression enabled.\nTest: run-libcore-tests.sh --mode\u003dhost with string compression enabled.\nBug: 31040547\nChange-Id: I9cf0d5457182f0a33ca8251c29931d3eb624ae07\n"
    },
    {
      "commit": "85bef7ea31ac8ad90f97b20c3c391da99c4fb8a0",
      "tree": "43959d2d748077f60cfac143e4a94707284b910d",
      "parents": [
        "6a669aac63ffc17b5e903aa4a1f285fe338eadcf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 16 18:13:26 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 17 10:44:37 2017 -0800"
      },
      "message": "ART: Add constructor support to unstarted runtime\n\nAdd support for Constructor.newInstance0.\n\nBug: 34956610\nTest: m\nTest: m test-art-host-gtest-unstarted_runtime_test\nTest: Device boots\nChange-Id: Ifcea33359c30b70262cd2f4f56f59515b06532ce\n"
    },
    {
      "commit": "9486a16180466e32aa8a98927030aff9fbdce189",
      "tree": "a0ed8e41136c8d1e39671906b49341d0f4659ae4",
      "parents": [
        "08d567b67fb7c98f48983c4adcde2465e5f14628"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 16 15:17:47 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 16 15:40:44 2017 -0800"
      },
      "message": "ART: Add GetSignatureAnnotation to unstarted runtime\n\nAdd support for Class.getSignatureAnnotation to the unstarted\nruntime. Refactor dex file annotation code to support transactions.\n\nBug: 34956610\nTest: m\nTest: m test-art-host-gtest-unstarted_runtime_test\nTest: Device boots\nChange-Id: I9f4a93e05ad6999c46c3bb1dbabe48a1ad6225b2\n"
    },
    {
      "commit": "47de0fad87b5e9a02b1fdde124ff32247f0b477e",
      "tree": "87fda7f87a8d10cd67177298b68fd7e46e0ac098",
      "parents": [
        "2bece1f9df4a060db2fc5b65cd3f3785e4e6e877"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 15 19:29:36 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 16 11:07:41 2017 -0800"
      },
      "message": "ART: Fix Unstarted Runtime Class.forName\n\nWe really only support the boot classloader, and only in the null\ndenotation. Otherwise the class-linker would want to install a\nclass table into the fake BootClassLoader.\n\nAdd tests.\n\nBug: 34956610\nTest: m test-art-host-gtest-unstarted_runtime_test\nChange-Id: I47e284fbd17eb8d33665d2788afcbcc3d09d3d2e\n"
    },
    {
      "commit": "70dc86b03a65b6407f609c401ec78a3e68570bc1",
      "tree": "abdec940c033b5726d166ac200d2dfbc494f1536",
      "parents": [
        "45d942662883a0c5106b85b54e87be0f0610b394"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 15 14:40:55 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 15 14:40:55 2017 -0800"
      },
      "message": "ART: Remove unintended debug logging\n\nTest: m\nChange-Id: Id6085215d8a9e2d22454894adc3c1e9923e54611\n"
    },
    {
      "commit": "45d942662883a0c5106b85b54e87be0f0610b394",
      "tree": "c5fc69b1d327ac7479eb2b6f90f9d45c4246689d",
      "parents": [
        "3fb852a88d2a8ffaa87089752f4b1d5f9d6ce3c1",
        "bad529da18122c7044fbfd7d56153535d34367b1"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Feb 15 21:02:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 15 21:02:27 2017 +0000"
      },
      "message": "Merge \"ART: Add currentThread cutout to Unstarted Runtime\""
    },
    {
      "commit": "bad529da18122c7044fbfd7d56153535d34367b1",
      "tree": "44982bc9ec345be1e96ba6c66e22e5c08fcaed56",
      "parents": [
        "1fb51268b78f55b345ea951a73eae5194ec71b91"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 13 18:52:10 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 17:43:52 2017 -0800"
      },
      "message": "ART: Add currentThread cutout to Unstarted Runtime\n\nAdd currentThread() and getThreadState() cutouts to the unstarted\nruntime to allow further compile-time initialization. The cutouts\nare protected by call-stack checks.\n\nAdd tests.\n\nBug: 34956610\nTest: m test-art-host-gtest-unstarted_runtime_test\nChange-Id: I6335bccda8bedae90376fc7c47b303576f1ac78b\n"
    },
    {
      "commit": "fa4333dcb481e564f54726b4e6f8153612df835e",
      "tree": "ae597c7587dc214434a180962c4373d3748f51ab",
      "parents": [
        "2d98ba68f13dc219c088a12f369c5778bf398f14"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:10:34 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Feb 14 11:44:48 2017 -0800"
      },
      "message": "ART: Add operator \u003d\u003d and !\u003d with nullptr to Handle\n\nGet it in line with ObjPtr and prettify our code.\n\nTest: m\nChange-Id: I1322e2a9bc7a85d7f2441034a19bf4d807b81a0e\n"
    },
    {
      "commit": "3d2fcaae4145a50e4d7460d8ce3caf97eb825a08",
      "tree": "583773207bd59fb7a88fbd1994383987d9f0f663",
      "parents": [
        "8d4b1189639f0d8982bde681ccbdd7c03fe6ddbf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 09 12:50:52 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 09 13:55:42 2017 -0800"
      },
      "message": "ART: Update unstarted runtime for changed libcore\n\nUpdate float conversion to current libcore implementation. Add\ntests.\n\nBug: 34956610\nTest: m test-art-host-gtest-unstarted_runtime_test\nChange-Id: Ib62c64011e2d5b980fb8fab81f6c343065ce946c\n"
    },
    {
      "commit": "ae78c2643375c7536affcec318a60d13d430f181",
      "tree": "d7299730b4e84107d544f66b6a046af75f367669",
      "parents": [
        "a85111c5f25310e3d0eac68a6f0d8cd7c6612dfe"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Feb 01 20:40:44 2017 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Feb 02 10:53:14 2017 -0800"
      },
      "message": "ART: Add UnstartedRuntime support for Class.getSimpleName\n\nThis requires two native methods, isAnonymousClass and\ngetDeclaringClass.\n\nAdd tests.\n\nBug: 34890992\nTest: m\nTest: m test-art-host\nTest: Device boots\nChange-Id: Ib3fca2a6bb6e367ef202ff864719cab979d6c793\n"
    },
    {
      "commit": "5e8d5f01b0fe87a6c649bd3a9f1534228b93423d",
      "tree": "a1441acc0021d170f412542ae2a1ae62794e7846",
      "parents": [
        "b0dde4397fa5b0756312b46bd18477a2c1f6a7da"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Oct 18 18:03:43 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Jan 23 15:50:01 2017 +0000"
      },
      "message": "Fix some typos in ART.\n\nTest: m build-art-host\nTest: m cpplint-art\nChange-Id: Ifc6ce3d0d645c4a8dca72dd483fc03fc05077130\n"
    },
    {
      "commit": "46ee31b67d7ee1bd085fbc240502053caa3cf8fa",
      "tree": "83e870f293cd60d533207e389d7b094acd87b31f",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 14 10:11:49 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Dec 15 09:50:39 2016 -0800"
      },
      "message": "ART: Move to libbase StringPrintf\n\nRemove ART\u0027s StringPrintf implementation. Fix up clients. Add\nmissing includes where necessary.\n\nTest: m test-art-host\nChange-Id: I564038d5868595ac3bb88d641af1000cea940e5a\n"
    },
    {
      "commit": "6beced4c017826f7c449f12fac7fa42403657f2b",
      "tree": "f53614eeeaa92be9a7398e262d9440f59e3384a5",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 15 15:51:31 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Nov 16 10:41:40 2016 -0800"
      },
      "message": "Change iftable to never be null\n\nSimplifies code generation by removing a null check. The null case\nis rare.\n\nRitzperf code size: 13107624 -\u003e 13095336\n\nAlso addressed comments from previous CL.\n\nBug: 32577579\n\nTest: test-art-host, run ritzperf both with CC\n\nChange-Id: I2b31e800867112869d7f0643e16c08826296979e\n"
    },
    {
      "commit": "fdaf0f45510374d3a122fdc85d68793e2431175e",
      "tree": "3315c82410fd42612bb501bed150df454dde0dde",
      "parents": [
        "b02b8d7df48ea3314cfcb3c08d84ac9556363833"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Oct 13 19:29:53 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Nov 09 11:08:31 2016 +0000"
      },
      "message": "Change string compression encoding.\n\nEncode the string compression flag as the least significant\nbit of the \"count\" field, with 0 meaning compressed and 1\nmeaning uncompressed.\n\nThe main vdex file is a tiny bit larger (+28B for prebuilt\nboot images, +32 for on-device built images) and the oat\nfile sizes change. Measured on Nexus 9, AOSP ToT, these\nchanges are insignificant when string compression is\ndisabled (-200B for the 32-bit boot*.oat for prebuilt boot\nimage, -4KiB when built on the device attributable to\nrounding, -16B for 64-bit boot*.oat for prebuilt boot image,\nno change when built on device) but with string compression\nenabled we get significant differences:\n  prebuilt multi-part boot image:\n    - 32-bit boot*.oat: -28KiB\n    - 64-bit boot*.oat: -24KiB\n  on-device built single boot image:\n    - 32-bit boot.oat: -32KiB\n    - 64-bit boot.oat: -28KiB\nThe boot image oat file overhead for string compression:\n  prebuilt multi-part boot image:\n    - 32-bit boot*.oat: before: ~80KiB after: ~52KiB\n    - 64-bit boot*.oat: before: ~116KiB after: ~92KiB\n  on-device built single boot image:\n    - 32-bit boot.oat: before: 92KiB after: 60KiB\n    - 64-bit boot.oat: before: 116KiB after: 92KiB\n\nThe differences in the SplitStringBenchmark seem to be lost\nin the noise.\n\nTest: Run ART test suite on host and Nexus 9 with Optimizing.\nTest: Run ART test suite on host and Nexus 9 with interpreter.\nTest: All of the above with string compression enabled.\nBug: 31040547\n\nChange-Id: I7570c2b700f1a31004a2d3c18b1cc30046d35a74\n"
    },
    {
      "commit": "c369f6b0cd132ab5bba3f127b162f128dd7d2599",
      "tree": "691b4ae4ca4da162d403d047095a82c18b5607bd",
      "parents": [
        "d6435da102851e155acd12adc420e7df3db47903",
        "a1aa3b1f40e496d6f8b3b305a4f956ddf2e425fc"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 28 10:09:33 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Oct 28 10:09:34 2016 +0000"
      },
      "message": "Merge \"Add support for Baker read barriers in UnsafeCASObject intrinsics.\""
    },
    {
      "commit": "ef41db7a3f322a1feb305fdb457410c4cea94d00",
      "tree": "c03152c091ef62ab70f5be0a2fe3a965b189132c",
      "parents": [
        "1458e0c09fe0a3b9fa5fd7beb9b6077d1fc46b1d"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 25 15:08:01 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 26 15:25:40 2016 -0700"
      },
      "message": "Move interpreter to ObjPtr\n\nMoved most of interpreter, interpreter_common,\ninterpreter_switch_impl, and some of mterp to ObjPtr.\n\nBug: 31113334\n\nTest: test-art-host ART_TEST_INTERPRETER\u003dtrue\nTest: art/tools/run-libcore-tests.sh \u0027--mode\u003dhost\u0027 \u0027--variant\u003dX32\u0027 --debug\n\nChange-Id: I0935d18287e1332205c17c5a018aa167788ab897\n"
    },
    {
      "commit": "a1aa3b1f40e496d6f8b3b305a4f956ddf2e425fc",
      "tree": "efe3dd581dbe9fb33e615d1608f0571ec3984208",
      "parents": [
        "188edb3a3ec36ad5fc42373b1e1bed3a85b4f112"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 26 13:03:38 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 26 13:03:38 2016 +0100"
      },
      "message": "Add support for Baker read barriers in UnsafeCASObject intrinsics.\n\nPrior to doing the compare-and-swap operation, ensure the\nexpected reference stored in the holding object\u0027s field is\nin the to-space by loading it, emitting a read barrier and\nupdating that field with a strong compare-and-set operation\nwith relaxed memory synchronization ordering (if needed).\n\nTest: ART host and target tests and Nexus 5X boot test with Baker read barriers.\nBug: 29516905\nBug: 12687968\nChange-Id: I480f6a9b59547f11d0a04777406b9bfeb905bfd2\n"
    },
    {
      "commit": "ec32b91cfa1061b2608838d41e6d7d70fdf681dc",
      "tree": "31d69c22423faf20aa72915f5c26fa7dc3213242",
      "parents": [
        "6c42676b466c4f08cfa6ca43da65bc74f48dc063"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 21 14:47:26 2016 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Oct 21 15:09:06 2016 +0100"
      },
      "message": "Remove read barrier in UnstartedUnsafeCompareAndSwapLong.\n\nart::interpreter::UnstartedRuntime::UnstartedUnsafeCompareAndSwapLong\nmanipulates a long field and does not need a read barrier\n(read barriers are only required when loading an object\nreference from the heap).\n\nTest: ART_USE_READ_BARRIER\u003dtrue make test-art-host\nBug: 12687968\nChange-Id: Ia46590e649a7bb46ca4b3c90bab03fb3a836563d\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "bc5a795c0d486c84913d987cad5846ded840cea6",
      "tree": "90db29a97a21fa15f4cbc5ffbc1f6dd191add49c",
      "parents": [
        "38a4223fcc0493553d9ad324a1dc145869eb663a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 15:46:31 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 17 16:16:50 2016 -0700"
      },
      "message": "Move art/native to ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I67eb89cf042c762c6dcd5eb8b008b9a28e9b3319\n"
    },
    {
      "commit": "5d3f73aef1b778d81ba101ece41935adee259cf2",
      "tree": "fec0c2fdbb88df0a366e29b6470d1274aa6e2ec1",
      "parents": [
        "cfdff144f154df876987fefb340058a975c43381"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 14:28:47 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Oct 14 14:38:43 2016 -0700"
      },
      "message": "Move reference processor and mirror::Reference to ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I2c7c3dfd88ebf12a0de271436f8a7781f997e061\n"
    },
    {
      "commit": "1a5337fff2cc6cb9d563c8b32aca75f485d23373",
      "tree": "03616e90a91c5c4c1bd7ff03c3d193c3b24bf0db",
      "parents": [
        "c8b722b3cebff245d614e95d1849de45ef7bdf06"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 13:48:23 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 17:37:56 2016 -0700"
      },
      "message": "Move mirror::ObjectArray to ObjPtr\n\nAlso reduce calls to ObjPtr::Ptr.\n\nBug: 31113334\n\nTest: test-art-host -j32\n\nChange-Id: I73e1b356972bb079b66332f00f7f07451601044e\n"
    },
    {
      "commit": "28bd2e4f151267b34b8e1eb19c489d8d547bbf5c",
      "tree": "d99ae3fe74ea63b83091898d830d3efe68cd479d",
      "parents": [
        "6e5fa09510c7280168e040382d27dd8b55760d9a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 13:54:57 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 13 10:59:28 2016 -0700"
      },
      "message": "Move mirror::Class to use ObjPtr\n\nLeave the return types as non ObjPtr for now. Fixed moving GC bugs\nin tests.\n\nTest: test-art-host\n\nBug: 31113334\n\nChange-Id: I5da1b5ac55dfbc5cc97a64be2c870ba9f512d9b0\n"
    },
    {
      "commit": "c4f3925490a73da8dc74884a1deb965d4ecaf14e",
      "tree": "7fe566827f8ab903af1acb5697c86a6efe3187b3",
      "parents": [
        "18f7de841fee3ca6f0c04e7caa57c3ce76b36231"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 18:32:08 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Oct 06 13:55:58 2016 -0700"
      },
      "message": "Move remaining jobject related functions to use ObjPtr\n\nAlso added ObjPtr::DownCast.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I59c253211dc435579ffdfd49f856861ab13d262c\n"
    },
    {
      "commit": "8778c521de4f686118549ef7b20ae497e53b9e93",
      "tree": "18e82a5860cf7c7d388f314615ba66e9a3ac4521",
      "parents": [
        "2f61867045ffbd0c38a4ecec5f59632004f7efff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 19:06:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Oct 05 13:02:53 2016 -0700"
      },
      "message": "Change indirect reference table to use ObjPtr\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I340fdf430897ebd790ea4e35f94bcee776e98445\n"
    },
    {
      "commit": "1cc62e4ea24828fdb3f3da0b8603f0b107d09a04",
      "tree": "718e322f3d05ac095770d4dc2a68b824bf3974a7",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 18:01:28 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Oct 04 10:46:16 2016 -0700"
      },
      "message": "Rename ObjPtr::Decode to ObjPtr::Ptr\n\nDone to prevent ambiguity with ScopedObjectAccess::Decode.\n\nBug: 31113334\n\nTest: test-art-host\nChange-Id: I07a2497cc9cf66386311798933547471987fc316\n"
    },
    {
      "commit": "3398c7874e002beaa6c2b2fadf183e7d1ddad23a",
      "tree": "7db754b5b0c3a6c68bc1f91d7cb2477f534d2ad3",
      "parents": [
        "462e21cc8d28a4d48342cf0f634bd1ecc63647d7"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 30 10:27:43 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Oct 03 14:06:27 2016 -0700"
      },
      "message": "Move ArtField to ObjPtr\n\nAdded EXPECT_OBJ_PTR_EQ and variants to gtests.\n\nFixed moving GC bugs in:\nClassLinker::CreatePathClassLoader\nClassLinkerTest: StaticFields\n\nObjPtr Decode call sites: 186 -\u003e 181.\n\nSome tests fail due to ResolvedFieldAccessTest, will fix in follow\nup CL.\n\nBug: 31113334\n\nTest: test-art-host CC baker\n\nChange-Id: I8b266ad00f3c20c8cbe7cfdf280d175083df0b88\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "3fec9ac0d5af1358d216eb2fdc2000ec0205f3f0",
      "tree": "f38d8d8aae51f53e7ee6b474f47597b784fc2316",
      "parents": [
        "0cfe19af3b7395658210ea6044a65c9811962a7a"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 13 10:47:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 26 10:59:22 2016 -0700"
      },
      "message": "ART: Use libbase logging\n\nMove most of our logging infrastructure over to system/core/base.\nRetain VLOG.\n\nUsing unified Android infrastructure has two main advantages. First,\nit reduces the complexity/maintenance burden in ART. Second, it\nallows to detach logging for the cases where we do not want or need\na runtime, e.g., dexdump, the disassembler, etc. As a part of the\nlatter, libbase is also supported for all hosts (including Windows).\n\nFrom a developer viewpoint, there are minor behavior changes for the\nLOG statements (see above), but otherwise usage is the same. Explicit\nseverity enum items are in the android::base namespace now.\n\nBug: 31338270\nTest: m test-art-host\nChange-Id: I5abcb2f45f5b03d49951874c48544f72a283a91b\n"
    },
    {
      "commit": "9323e6e44060545d6c4f925139572868f65b7fe3",
      "tree": "65f3f380605d75f34d49aec49fca494bec26ef5b",
      "parents": [
        "58735fbfbb2da0c0a19b3239da07c2353c40767d"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Sep 13 08:58:35 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Wed Sep 14 08:01:39 2016 -0700"
      },
      "message": "Separate annotations from dexfile reading.\n\nBug: 22322814\nChange-Id: I867d66da407dd80394a10d19903ebbc1ec3986ff\nTest: test-art\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "14832efeb92334c562ebedef34e920d30e3cee69",
      "tree": "57d10c24966a46ae1c01861ee579ac6000326c45",
      "parents": [
        "c984725d0035e1925371757c38fed339b409e525"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Aug 05 11:44:32 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Tue Aug 09 13:47:49 2016 +0100"
      },
      "message": "Revert experimental lambda feature.\n\nThis is a revert of the following changes :\n\n30c475a2046951a81769c2db0b2dad66cd71e189.\nlambda: Minor capture-variable/liberate-variable clean-up after post-merge reviews.\n\n6918bf13eb855b3aa8ccdddda2d27ae8c60cec56.\nlambda: Experimental support for capture-variable and liberate-variable\n\nfc1ccd740b7c8e96dfac675cfc580122cd1b40a6.\nlambda: Infrastructure to support capture/liberate-variable dex opcodes\n\ne2facc5b18cd756a8b5500fb3d90da69c9ee0fb7.\nruntime: Add lambda box/unbox object equality\n\n2ee54e249ad21c74f29a161e248bebe7d22fddf1.\nruntime: Partially implement box-lambda and unbox-lambda experimental opcodes\n\n158f35c98e2ec0d40d2c032b8cdce5fb60944a7f.\ninterpreter: Add experimental lambda opcodes for invoke/create-lambda\n\na3bb72036f5454e410467f7151dc89f725ae1151.\nAdded format 25x to dexdump(2).\n\nPlus surrounding cleanups.\n\nTest: make test-art\nChange-Id: Ic6f999ad17385ef933f763641049cf721510b202\n"
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "e01e3644205c3644546889237c20185391a0092e",
      "tree": "413fcf279b415a305605a601297e3856f13a2948",
      "parents": [
        "de4cf16f467b531373560ca6eb785f0f36606aae"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 25 13:06:04 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jul 25 13:09:41 2016 -0700"
      },
      "message": "ART: Add pointer-size template to some reflection functions\n\nThe unstarted runtime may run code for a different pointer size,\neven when no transaction is active (e.g., during startup). To\nretain performance when the runtime is up and executing under\nnormal conditions, add a template parameter and use sizeof(void*)\nin places where it is adequate.\n\nFor maintainability, it is necessary to drop the default for\nthe transaction template parameter. Implicit conversions from\nbool to size_t may lead to incorrect code and hard to diagnose\nproblems. So instead ensure that all callers must give all\ntemplate parameter values.\n\nTest: m test-art-host\nChange-Id: I3076883422c8553ede4de5642409c5684a5a9aa8\n"
    },
    {
      "commit": "b8a00f95e93eb0225e86dad582387f1cc69e7df6",
      "tree": "f01b6ca61a0f833b8275f480b06ba00bbb920756",
      "parents": [
        "715fdc2c99f688f97c684978632f311a284ba43c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 18 20:51:13 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 20 10:21:11 2016 -0700"
      },
      "message": "ART: Add Math cutouts\n\nAdd sin, cos and pow to unstarted runtime. Add tests for some\nvery specific values that are seen.\n\nAllows to compile-time initialize:\n* android.graphics.drawable.RippleForeground\n* android.widget.EdgeEffect\n\nBug: 27265238\n\n(cherry picked from commit 8c5889a3bdefd7dc84494ec824d495913f2362a9)\n\nChange-Id: I0360a078e7dc9d2a176ec1cf2d8dbb242da1c83e\n"
    },
    {
      "commit": "715fdc2c99f688f97c684978632f311a284ba43c",
      "tree": "a45838f4788a04ec18332bf386e8eaf2daa07632",
      "parents": [
        "a584db5460a31198bf621cdacf5bc304a984efa4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 18 17:07:30 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 20 10:20:45 2016 -0700"
      },
      "message": "ART: Add some reflection cutouts\n\nAdd Class.getInnerClassFlags and Method.invoke to unstarted runtime.\n\nAllows to compile-time initialize:\n* android.net.NetworkInfo\n* android.net.wifi.WifiInfo\n\nBug: 27265238\n\n(cherry picked from commit b3ffbe32b78c18739736fc998d65430b46c510e5)\n\nChange-Id: I3e267519acf14b08c687f1e831e2027d37158767\n"
    },
    {
      "commit": "3ed30c32e3422496d173aac5576600dc373bbe94",
      "tree": "b8d9006ffbd49dc94adc630ecc87c160c3fa3916",
      "parents": [
        "35a38d1e250fc3237c79fafa96ec69d6f07c1f3d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 15 21:21:38 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 19 17:41:37 2016 -0700"
      },
      "message": "ART: Remove Security initialization cutout\n\nChange c94eeebc7cf3e577eed3ea380401007aea642bf3 introduced general\nsupport for getResourceAsStream. Remove the specialized cutout.\n\nBug: 27265238\n\n(cherry picked from commit 0f9b07f9781a064cbd59afbce3a03e8ae07a3117)\n\nChange-Id: I3aad0053199809e11de4eed8ee6aac53346d3d22\n"
    },
    {
      "commit": "8ce9c30f5d7328579619eb7e26c5f041837984af",
      "tree": "3b2237a353513e3b23679a32bb60eded2b0a9a23",
      "parents": [
        "eb8b0ae50e8ec2e61e8f4d870c7532cbebb88a21"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 15 21:24:28 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 18 17:19:58 2016 -0700"
      },
      "message": "ART: Add cutout for Character.toLower/UpperCase\n\nAdd support for ASCII codepoint toLowerCase/toUpperCase. Those\ninputs are easy, and generally sufficient.\n\nAllows to compile-time initialize:\n* android.text.Html$HtmlParser\n* java.util.UUID$Holder\n* sun.security.ec.ECKeyFactory\n\nBug: 27265238\n\n(cherry picked from commit 0bdce99fcecdadcbafc8e7a9bb92f491a4f37b2a)\n\nChange-Id: I0f164a7df4f26c0b266cef230e36f6ca3af20bde\n"
    },
    {
      "commit": "eb8b0ae50e8ec2e61e8f4d870c7532cbebb88a21",
      "tree": "969157ab5bf82b145769f69b4c8ccf7a7b473d81",
      "parents": [
        "c4d445a40bf00ab497b5e4d43a6b43eaafb5fa50"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 13 17:58:05 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 18 17:19:41 2016 -0700"
      },
      "message": "ART: Add ClassLoader.getResourceAsStream cutout\n\nAdd support for getResourceAsStream to unstarted runtime.\n\nAllows to compile-time initialize:\n* android.icu.impl.ICUConfig\n\nAllows to revert other resource loading hacks.\n\nDo not intercept Class.getResourceAsStream directly. There is\nname-mangling involved, leave that on the Java side.\n\nBug: 27265238\n\n(cherry picked from commit c94eeebc7cf3e577eed3ea380401007aea642bf3)\n\nChange-Id: I8c408aa633086f4a1aa14bb1b404607b2498fe97\n"
    },
    {
      "commit": "d4fa9f4ddc1c1f193b623c8da80384b4c510a1b4",
      "tree": "fe71b6246b5564737a7f5ed0503706a4e8777b6c",
      "parents": [
        "8446707fb8a2279455228d4b68d530f29679e1fb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 13 14:53:23 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 15 19:40:05 2016 -0700"
      },
      "message": "ART: Add a System.getProperty cutout\n\nAdd support for certain keys of System.getProperty, derived\nfrom AndroidHardcodedSystemProperties.\n\nAllows to compile-time initialize:\n* android.icu.impl.Utility\n* java.net.URLDecoder\n* java.net.URLEncoder\n* java.util.regex.PatternSyntaxException\n\nBug: 27265238\nBug: 28174137\n\n(cherry picked from commit 7107be612db6b15921b602ac9a3f24e9c2e7d414)\n\nChange-Id: Ib919fb05f0459be19331ac356af34a968bf685cd\n"
    },
    {
      "commit": "89e3b486167c58a3268cf963c56183cd7f478b3c",
      "tree": "14c0bd2f7e346209b22c9512a21e7bd52dda9b21",
      "parents": [
        "e3ccf744a6f7e4946d1d813d45d5dab20f0759d3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 12 18:07:36 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 12 21:20:33 2016 -0700"
      },
      "message": "ART: Simplify unstarted-runtime ceil and floor\n\nJust use the C functions like libcore does. Add tests.\n\nBug: 28132336\nChange-Id: Ic5f469e8504c9f2b7756280558fd1610ed8015ba\n"
    },
    {
      "commit": "b2880a9c743e433ddaede6bb54911a4b6483ee0a",
      "tree": "35176339736b1d0493955402320241f7f01672bc",
      "parents": [
        "04c2b2de69460d41e0c39c1f7d9fb77376c3aa8b",
        "8326120c1a4c0d52ee4ef0fabe09cb28e0c48470"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Apr 12 13:39:24 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 12 13:39:24 2016 +0000"
      },
      "message": "Merge \"unstarted_runtime: add cutout for Math.floor\""
    },
    {
      "commit": "8326120c1a4c0d52ee4ef0fabe09cb28e0c48470",
      "tree": "8d1b856270270745ce5513a8dbc2dcf7c03805ad",
      "parents": [
        "274704fd37ff65c65f229638d359186e33f4912b"
      ],
      "author": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Mon Apr 11 20:49:20 2016 +0100"
      },
      "committer": {
        "name": "Sergio Giro",
        "email": "sgiro@google.com",
        "time": "Tue Apr 12 14:38:33 2016 +0100"
      },
      "message": "unstarted_runtime: add cutout for Math.floor\n\nNeeded in order to make BouncyCastleProvider initializable in\ncompile time\n\n(cherry picked from commit a8908ef14cf2d2e0d05e41e319da5d6909325ae2)\nBug: 28108158\n\nChange-Id: Id6b4e3d4dde45354562603f41134d8d21da2b423\n"
    },
    {
      "commit": "8a18fde9fb883f45a74259ea756029519562cc5f",
      "tree": "63ad9922df9694247bc8fb2a8ddfe7d5e500ae0f",
      "parents": [
        "13fc1be0b92b48ebc8fa79e4aac66f01a59181d8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 05 21:12:51 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 06 13:44:48 2016 -0700"
      },
      "message": "ART: Add cutout for Unsafe.putObjectVolatile\n\nAdd an unstarted-runtime cutout for putObjectVolatile.\n\nAllows to compile-time initialize:\n* android.content.res.Configuration\n* android.icu.text.PluralRules$SimpleTokenizer\n* android.icu.text.UnicodeSet\n* android.icu.util.VersionInfo\n* android.util.LocaleList\n\nMay allow follow-up changes to compile-time initialize\nmore ICU classes.\n\nBug: 27265238\n\n(cherry picked from commit 1813d116cb1367f0ae449221c7ff6c6b421d269f)\n\nChange-Id: I775a57c9f15aa8f42a4dffbd1dd40c641c30f645\n"
    },
    {
      "commit": "13fc1be0b92b48ebc8fa79e4aac66f01a59181d8",
      "tree": "733c6dc1c789b1aeb452941e2c4a159c218cdada",
      "parents": [
        "6039e5662507e42896084e561fa546b432698ee6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 05 20:14:30 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 06 13:44:11 2016 -0700"
      },
      "message": "ART: Add integer \u0026 long parsing cutout to unstarted runtime\n\nAdd a cutout for Integer.parseInt and Long.parseLong. Only handle\n(some) successful cases, and abort the transaction in the rest.\nAdd tests.\n\nAllows to compile-time initialize:\n* com.android.org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers\n* com.android.org.bouncycastle.asn1.x509.X509ObjectIdentifiers\n* sun.security.x509.InhibitAnyPolicyExtension\n\nBug: 27265238\n\n(cherry picked from commit 9c62dab16e4be0c19a2e6c6c0cc2b24c2814c6f2)\n\nChange-Id: I14c0836fd9ec7c9bf49d8186ff14a3c6830ff711\n"
    },
    {
      "commit": "6039e5662507e42896084e561fa546b432698ee6",
      "tree": "d8a4b6260cc134fcdf7f4a24d89d062dae7f7a61",
      "parents": [
        "dc148d24cc11845036063a2876c9bfef03d00ce5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 05 18:18:43 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 06 13:43:54 2016 -0700"
      },
      "message": "ART: Add getDeclaredConstructor cutout for unstarted runtime\n\nIn the vein of getDeclaredMethod and getDeclaredField. Refactor\ncode from java_lang_Class to share code.\n\nAllows to compile-time initialize:\n* sun.security.x509.AVAKeyword\n* sun.security.x509.X500Name\n\nBug: 27265238\n\n(cherry picked from commit f72f19fac0016499d33fd75b0463d0128a58a9f4)\n\nChange-Id: I075c1b11f3408f5b31e4f84140a24fd8d3eaa17e\n"
    },
    {
      "commit": "5c9af61179b70dcb2bffc1300fff2f227d433e9e",
      "tree": "a1d79367f25318e5e9249e6c8456616ca6d6d369",
      "parents": [
        "224b7f346d8e13ef7b19d72671d687cad34f63eb"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 05 14:16:10 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 05 18:17:39 2016 -0700"
      },
      "message": "ART: Add arraycopy(byte) to unstarted runtime\n\nThe byte-array version is now in use in libcore.\n\nAllows to compile-time initialize:\n* java.security.cert.X509CertSelector\n* sun.security.pkcs.PKCS9Attribute\n* sun.security.provider.certpath.AdaptableX509CertSelector\n* sun.security.x509.AccessDescription\n* sun.security.x509.AlgorithmId\n* sun.security.x509.ExtendedKeyUsageExtension\n* sun.security.x509.NetscapeCertTypeExtension\n* sun.security.x509.OIDMap\n* sun.security.x509.PKIXExtensions\n\nBug: 27265238\n\n(cherry picked from commit cc44581beacd61a633b02a1223d1bf6fea278f94)\n\nChange-Id: If6b680a455809152c9bd7a679a8ab430936c46a1\n"
    },
    {
      "commit": "01afcbba19e40db984d41974086d63bbdd9cb955",
      "tree": "9051e8774fb0ec30e230ee8d7c77bc37bd91405c",
      "parents": [
        "85f5de08d02515b36e381834967d5d047d5bbcc4",
        "85a098af5fc8d2dd0e39d61c9f93fc6257d631c5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 01 16:51:47 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Apr 01 16:51:47 2016 +0000"
      },
      "message": "Merge \"ART: Better support for arraycopy in unstarted runtime\""
    },
    {
      "commit": "85a098af5fc8d2dd0e39d61c9f93fc6257d631c5",
      "tree": "20e81103cbc6043aa99b876fc358b7bab95ce4dc",
      "parents": [
        "19a4784ce1b9c6a0b3d3cdb91a182baa7adbb946"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 31 13:30:53 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 01 09:37:05 2016 -0700"
      },
      "message": "ART: Better support for arraycopy in unstarted runtime\n\nExtend the System.arraycopy() cutout in the unstarted runtime\nto support arrays with differing component types.\n\nAdd tests.\n\nBug: 27805718\nChange-Id: Iaacd95a372e9bfa26e9055a06b0d8f0335b8d6d1\n"
    },
    {
      "commit": "a1e93127fa078e589d186ffb132d2ef71c9ab5d3",
      "tree": "dc2d61bb218d0ca6e129cd37b093d22be65a3141",
      "parents": [
        "739253e0546b90a54d704324ce971b82cff84adc"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Mar 30 15:41:54 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 01 11:26:33 2016 +0000"
      },
      "message": "unstarted_runtime: Update references to decimal format classes.\n\nWe had a few special cases for thread local buffers and instances\ncreated by our formatters / parsers. Update them to point to the\nOpenJdk equivalents of the same classes.\n\nbug: 27265238\nChange-Id: Ida36a89bf414aeabea64b25004e193c770f906c2\n"
    },
    {
      "commit": "34a316fa8b08d7b818c73ba8fd606a92b1e632ad",
      "tree": "d29b84e3ec39cf10c1056721e1556c80d3ef5869",
      "parents": [
        "afc4829d593c173e8e9bdca90257a4cc8a104537"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Mar 30 13:11:18 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Apr 01 11:25:47 2016 +0000"
      },
      "message": "unstarted_runtime: Add additional cutouts\n\nThese allow us to initialize a further 90 classes. getIntVolatile\nwas used by the static initializer for ThreadLocal, which is used\nquite frequently. This class was compile time initializable for M.\n\njava.lang.System.getSecurityManager : 5 classes\nsun.misc.Unsafe.getIntVolatile : 85 classes\n\nbug: 27265238\nChange-Id: I7e9820112bc87aec47c9b1b40ec6ba4f56172916\n"
    },
    {
      "commit": "e0f633e9618cc4b47bf1961b630f2a2b67fec41a",
      "tree": "3b8226f462b78483cc51f52a6883da7d63fae4c7",
      "parents": [
        "8a31b7d44a13b1d7e71852dc3c992598698d351d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 29 19:33:56 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 29 19:33:56 2016 -0700"
      },
      "message": "ART: Fix unstarted runtime for Security\n\nDerive the path for the libcore jar from the boot classpath string\ninstead of from the dex file location.\n\nBug: 27899446\nChange-Id: I22a9be76303edb2ec72f4cf2e7a4b3bfed37d9c7\n"
    },
    {
      "commit": "bc4d218ce2ceef0c4f308d4ff42f7ec1ec43c40e",
      "tree": "a583db9be377183508653607a724dcb8742f4ca2",
      "parents": [
        "01c30e8dbc45bdc5d922cef6e5a404be7bed0e8c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 22 10:03:12 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 26 15:43:14 2016 -0800"
      },
      "message": "ART: Add unstarted-runtime functions\n\nAdd more functions to allow compile-time initialization of\ncode.\n\nBug: 27248115\n\n(cherry picked from commit 0866f4ed6338faa4a193b7e819fc7cd72bd7b0ae)\n\nChange-Id: Iaf8d92deb73547ccd31c0d6dde68da3bc14c3985\n"
    },
    {
      "commit": "633750ca4b841631ecc6c310dcdaacc375dc86bf",
      "tree": "847326fe9cb559a66695a5712a84c956a300bde5",
      "parents": [
        "827e2128fa65e1256abe40c0841fc1d1494583e7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 19 10:49:50 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 22 11:32:39 2016 -0800"
      },
      "message": "ART: Add Class.getEnclosingClass() to UnstartedRuntime\n\nRequired to initialize classes calling getSimpleName().\n\nBug: 27265238\n\n(cherry picked from commit fb5c22e28030cc9ba8424b7f6f70677ec3ba3afc)\n\nChange-Id: Id63dac5b75b3bbcdfe80f73f2d9d76dea3996823\n"
    },
    {
      "commit": "9865bde5d822f56c4732214c2005dfcaa41f94cf",
      "tree": "cd2eae058f4f4f13b5a82ff557b7eaaf13a1ecfb",
      "parents": [
        "115a02b737dd5f4d485b2f6c359e02988df66b83"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 09:58:16 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Dec 21 09:58:16 2015 -0800"
      },
      "message": "Rename NullHandle to ScopedNullHandle\n\nThis makes it clearer that is invalid to do things like:\nHandle\u003cT\u003e h \u003d ScopedNullHandle\u003cT\u003e();\n\nBug: 26233305\nChange-Id: I6d8f54eae01ec2e901cb7043afa853ea77db79fe\n"
    },
    {
      "commit": "3cfa4d05afa76e19ca99ec964b535a15c73683f0",
      "tree": "28c4950dff3700f69e3d32fc496890a722cfc379",
      "parents": [
        "f4156986d1ba5b6dd7dfe89754c8562557cd1bc5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Oct 06 17:04:01 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Oct 07 09:50:25 2015 -0700"
      },
      "message": "ART: Remove interpreter entrypoints\n\nThese are no longer used as entrypoints. Make them proper runtime\nfunctions local to the interpreter.\n\nBump oat version.\n\nChange-Id: Icdd92e20eafc5668b68eeebf55cf624560f462b3\n"
    },
    {
      "commit": "54d220eb9cc51215d75b9e0fe921b94bebbb3fd6",
      "tree": "fe08749dea3ca6cad97bce48416beb37203efdf5",
      "parents": [
        "275bc5e5f318ba6ea1bad6c89c2924d1248b7523"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 30 16:20:06 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Aug 05 18:15:22 2015 -0700"
      },
      "message": "Move ArtFields and ArtMethods to be a length prefixed array\n\nFixes race conditions between changing method and fields arrays\nbeing seen in the wrong order by the GC.\n\nBug: 22832610\nChange-Id: Ia21d6698f73ba207a6392c3d6b9be2658933073f\n"
    },
    {
      "commit": "90443477f9a0061581c420775ce3b7eeae7468bc",
      "tree": "8c74b81dfae162e0fd0ccf8d5ac50827ba815174",
      "parents": [
        "6078aec213dfaf111c29969706e8e5967cfc9bea"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jul 16 20:32:27 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Jul 22 15:13:56 2015 -0700"
      },
      "message": "Move to newer clang annotations\n\nAlso enable -Wthread-safety-negative.\n\nChanges:\nSwitch to capabilities and negative capabilities.\n\nFuture work:\nUse capabilities to implement uninterruptible annotations to work\nwith AssertNoThreadSuspension.\n\nBug: 20072211\n\nChange-Id: I42fcbe0300d98a831c89d1eff3ecd5a7e99ebf33\n"
    },
    {
      "commit": "e401d146407d61eeb99f8d6176b2ac13c4df1e33",
      "tree": "17927f9bfe7d2041b5942c89832d55f9dedb24c5",
      "parents": [
        "2006b7b9b8e32722bd0d640c62549d8a0ac624b6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 13:56:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri May 29 18:45:49 2015 -0700"
      },
      "message": "Move mirror::ArtMethod to native\n\nOptimizing + quick tests are passing, devices boot.\n\nTODO: Test and fix bugs in mips64.\n\nSaves 16 bytes per most ArtMethod, 7.5MB reduction in system PSS.\nSome of the savings are from removal of virtual methods and direct\nmethods object arrays.\n\nBug: 19264997\nChange-Id: I622469a0cfa0e7082a2119f3d6a9491eb61e3f3d\n"
    },
    {
      "commit": "799681b176ad25437ce2849639f54f610dcbf684",
      "tree": "4bbb5ea4c6a2dd7e1c20a23f3adbb81a3b86fe0d",
      "parents": [
        "9ba4e65148feec589fece0c991695ba1049785bf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri May 15 19:24:12 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 20 19:41:36 2015 +0000"
      },
      "message": "ART: Refactor UnstartedRuntime for testing\n\nExpose the UnstartedRuntime implementation functions as private static\nmethods of a class. Add a gtest that can invoke these functions. Add\nsample tests for String and Memory.\n\nBug: 21173514\nChange-Id: Ib5bde6347fafaf7607c642542ea7d5938ff4b1df\n"
    },
    {
      "commit": "57f91e8956f4496391bff028a1b990540cc91c22",
      "tree": "f70807b981ed43c696013b09e1741c706ca7916a",
      "parents": [
        "ef4366a159ecdd357c98e577583bbe224d065128"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 14 15:58:17 2015 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Fri May 15 15:07:23 2015 -0700"
      },
      "message": "Add new style String operations during compilation init, part 2\n\nThis allows some class initializers that deal with Strings to run during\ncompilation. However, java.lang.Character.toUpperCase() is blocking\ninitialization for some parts.\n\nBug: 21036900\nChange-Id: Ia969c6a643f510bc798f94fb10bca1a68fe2ae67\n"
    },
    {
      "commit": "1c9e61c8ce6ca7978b9e7b4ed2348af37e238f3c",
      "tree": "982b03d8d262fe2f393eac56d8a67dae354fe1c5",
      "parents": [
        "8c638bc1f6c186ff3a5706031cb4cf41493c1e7a"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 14 15:58:17 2015 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 14 17:38:30 2015 -0700"
      },
      "message": "Add new style String operations during compilation init\n\nThis allows some class initializers that deal with Strings to run during\ncompilation. This includes the current implementation of\njava.security.Security because it reads the \"java.security\" resource.\n\n(cherry picked from commit a298e6daf8a11a780f061f2177ac3e75b8dd5e55)\n\nBug: 21036900\nChange-Id: I2ea008b774d4ed359e155318e0d06c1566186c34\n"
    },
    {
      "commit": "2cebb24bfc3247d3e9be138a3350106737455918",
      "tree": "d04d27d21b3c7733d784e303f01f873bb99e7770",
      "parents": [
        "1f02f1a7b3073b8fef07770a67fbf94afad317f0"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 21 16:50:40 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Apr 22 12:44:27 2015 -0700"
      },
      "message": "Replace NULL with nullptr\n\nAlso fixed some lines that were too long, and a few other minor\ndetails.\n\nChange-Id: I6efba5fb6e03eb5d0a300fddb2a75bf8e2f175cb\n"
    },
    {
      "commit": "5d4bb1d14475dec53347e9e8ad2b8a4f2dd76bf3",
      "tree": "07bf4abee493119b15cd295ad5d866024df9eac7",
      "parents": [
        "74bf58167e22a781adffe798803105f6541d25a0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 14 22:16:14 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 14 22:16:14 2015 -0700"
      },
      "message": "ART: More nullptr checks in unstarted runtime\n\nMore checks necessary for the compiler-driver test.\n\nChange-Id: I29bc20d1f571df5407f9b5fca212e3e79ef9cdc7\n"
    },
    {
      "commit": "503559045a794c2b376fc0ef74d9e7afb0acca64",
      "tree": "440b8cdbbba982351987b1cbc417a56f28933db1",
      "parents": [
        "0cbb4a8cab4c7824ab702404b832ee1ea5950aad",
        "f778eb275986811a3e1aba82d364b7e6a94678f3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 14 21:07:05 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 14 21:07:05 2015 +0000"
      },
      "message": "Merge \"ART: Add Security cutout to unstarted runtime\""
    },
    {
      "commit": "bf4d3afaf5b408eae7bbd693054447e9b2487505",
      "tree": "376293a3ead59084af08a5ae2a8c7e76df12cc9d",
      "parents": [
        "e015a31e509c3f4de8a90b57b77329ba6609ce2f"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 14 10:10:33 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 14 10:11:06 2015 -0700"
      },
      "message": "ART: Add a null-check to unstarted-runtime\n\nCheck the string parameter to Class.forName before using it.\n\nBug: 19542228\nChange-Id: I0d5c44122055c46e251451b1c0f687bbaf64d13e\n"
    },
    {
      "commit": "f778eb275986811a3e1aba82d364b7e6a94678f3",
      "tree": "d549ae0860c264f61ffb4250ef6aff3d15756237",
      "parents": [
        "6c7bd25b2b2a07740bcd838c2f4024e67be83fd1"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Apr 13 14:17:09 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Apr 14 10:06:33 2015 -0700"
      },
      "message": "ART: Add Security cutout to unstarted runtime\n\nThis allows limited I/O in the compiler to read security.properties,\nwhich in turn allows to compile-time initialize Security, and thus\nServices and most of the providers.\n\nBug: 19498458\nBug: 19542228\nChange-Id: I853952b83ca99006907c070734f767259c975517\n"
    },
    {
      "commit": "e598e0439ab825ea1a42fe8002b54241c6163ce6",
      "tree": "307be41594ff3c804d5dcda890ac055a6a4f7674",
      "parents": [
        "1b743777e6b6cec3387b0ee347b6a8a03779c345"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 14:57:10 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 10 15:34:32 2015 -0700"
      },
      "message": "ART: Add Array.createObjectArray to unstarted runtime\n\nNecessary for compile-time initialization of android.text.Layout.\n\nBug: 19542228\nChange-Id: I4220c65fcc3a8aaa2765b6f07f1f81c330484244\n"
    },
    {
      "commit": "c785344b87221f5e4e6473e5b762e4e61fe65dcf",
      "tree": "cd32ad2c2604596a18926f04d4c313dab255ecfd",
      "parents": [
        "a29d93b380c9aeb8270e281aefbdd0c77a430d43"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 27 14:35:38 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 10 12:57:27 2015 -0700"
      },
      "message": "Move ArtField to native\n\nAdd linear alloc. Moved ArtField to be native object. Changed image\nwriter to put ArtFields after the mirror section.\n\nSavings:\n2MB on low ram devices\n4MB on normal devices\n\nTotal PSS measurements before (normal N5, 95s after shell start):\nImage size: 7729152 bytes\n23112 kB: .NonMoving\n23212 kB: .NonMoving\n22868 kB: .NonMoving\n23072 kB: .NonMoving\n22836 kB: .NonMoving\n19618 kB: .Zygote\n19850 kB: .Zygote\n19623 kB: .Zygote\n19924 kB: .Zygote\n19612 kB: .Zygote\nAvg: 42745.4 kB\n\nAfter:\nImage size: 7462912 bytes\n17440 kB: .NonMoving\n16776 kB: .NonMoving\n16804 kB: .NonMoving\n17812 kB: .NonMoving\n16820 kB: .NonMoving\n18788 kB: .Zygote\n18856 kB: .Zygote\n19064 kB: .Zygote\n18841 kB: .Zygote\n18629 kB: .Zygote\n3499 kB: .LinearAlloc\n3408 kB: .LinearAlloc\n3424 kB: .LinearAlloc\n3600 kB: .LinearAlloc\n3436 kB: .LinearAlloc\nAvg: 39439.4 kB\n\nNo reflection performance changes.\n\nBug: 19264997\nBug: 17643507\n\nChange-Id: I10c73a37913332080aeb978c7c94713bdfe4fe1c\n"
    },
    {
      "commit": "ca71458862be8505330b7fd5649a062f31d143dc",
      "tree": "7bc749056ab65906a147cc8e1d92e8be3ffea2cc",
      "parents": [
        "9d231cc422b7b32d00bd43ca6993b2dd7e9989ea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 03 19:41:34 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Apr 03 20:14:40 2015 -0700"
      },
      "message": "ART: Add Clang\u0027s -Wused-but-marked-unused\n\nAdd detection of wrong unused annotations. Fix our codebase.\n\nChange-Id: I85cc20f2eac71c1ec6c5c7cd6efb08454a629634\n"
    },
    {
      "commit": "45b1597c152af90f6d5792d02b64fd4e7c81ac9d",
      "tree": "3cbb498c91067657169e4ee2aaba9cbf286e3788",
      "parents": [
        "d43f160dc294655885a2c273307d34585c4ce97b"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 03 16:07:05 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 03 16:27:19 2015 +0200"
      },
      "message": "Use va_list argument to abort transaction\n\nCreates AbortTransactionV taking a va_list argument and renames\nAbortTransaction to AbortTransactionF which calls AbortTransactionV.\n\nThis fixes the compiler_driver_test under valgrind.\n\nChange-Id: Ia1c57330091c055ae9e46585a944ce0b78864920\n"
    },
    {
      "commit": "2fd7e69505195cda4caaa3161aaf37315552a698",
      "tree": "2bd681443ad36a8616f237a12e56ecbdb7054f8e",
      "parents": [
        "c6e949a6d93fae2351fc59ed825657adee8185dc"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Apr 02 11:11:19 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 03 09:31:59 2015 +0200"
      },
      "message": "Use specific exception class to abort transaction\n\nWe used to throw a java.lang.InternalError when aborting a\ntransaction (when preinitializing image classes at compilation time).\n\nWe now use dedicated class dalvik.system.TransactionAbortError that\nis only thrown by the compiler to abort a transaction. This class has\nconstructors taking a java.lang.Throwable \"cause\" so we can wrap\nexceptions causing the transaction to abort (for instance class\njava.lang.ClassNotFoundException) and give more information about the\ncause of the transaction abort.\n\nBug: 20019689\nChange-Id: I019a72a1c754d8bba6a7ad6bb0f02e4fd6668622\n"
    },
    {
      "commit": "aacc25d54c3224cd9e26fdabe6c8444f5443b350",
      "tree": "2d989997b59c6650d2e85876f3e2d0ce1d1a4275",
      "parents": [
        "a703a7280a5081dd4e6f7e0d3860748f8a29965e"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 01 14:49:06 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Apr 01 14:49:06 2015 -0700"
      },
      "message": "ART: Fix unstarted runtime\n\nCorrectly delete local refs for dex/direct-byte-buffer.\n\nChange-Id: Ia74dfafb959d69aa281af7316f393997e053a3b3\n"
    },
    {
      "commit": "daaf3265806eb2eadb2e03302bd68022fab5ca28",
      "tree": "aff5d6d53d6d2b65995aa204839f88ee66400989",
      "parents": [
        "68e22f3b982ff9ccbdfb3b65b7cfc16fcae907ba"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Mar 24 13:30:28 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 29 14:13:08 2015 -0700"
      },
      "message": "Add AccessibleObject and Field to mirror\n\nMain motivation is to remove all the functionality / field access on\njava side to ArtField. Also comes with some reflection speedups /\nslowdowns.\n\nSummary results:\ngetDeclaredField/getField are slower mostly due to JNI overhead.\nHowever, there is a large speedup in getInt, setInt,\nGetInstanceField, and GetStaticField.\n\nBefore timings (N5 --compiler-filter\u003deverything):\n\n                       benchmark      ns linear runtime\n          Class_getDeclaredField  782.86 \u003d\u003d\u003d\n                  Class_getField  832.77 \u003d\u003d\u003d\n                    Field_getInt  160.17 \u003d\n                    Field_setInt  195.88 \u003d\n                GetInstanceField 3214.38 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  GetStaticField 6809.49 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAfter:\n          Class_getDeclaredField 1068.15 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  Class_getField 1180.00 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                    Field_getInt  121.85 \u003d\n                    Field_setInt  139.98 \u003d\n                GetInstanceField 1986.15 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n                  GetStaticField 2523.63 \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nBug: 19264997\n\nChange-Id: Ic0d0fc1b56b95cd6d60f8e76f19caeaa23045c77\n"
    },
    {
      "commit": "da4d79bc9a4aeb9da7c6259ce4c9c1c3bf545eb8",
      "tree": "151dd61c4b6a8fd512ea4c2c862af28b02f4ed9c",
      "parents": [
        "af87659f462ac650009fce295097cae3dabce171"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 24 14:36:11 2015 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Mar 24 16:02:21 2015 +0000"
      },
      "message": "Unify ART\u0027s various implementations of bit_cast.\n\nART had several implementations of art::bit_cast:\n\n1. one in runtime/base/casts.h, declared as:\n\n   template \u003cclass Dest, class Source\u003e\n   inline Dest bit_cast(const Source\u0026 source);\n\n2. another one in runtime/utils.h, declared as:\n\n   template\u003ctypename U, typename V\u003e\n   static inline V bit_cast(U in);\n\n3. and a third local version, in runtime/memory_region.h,\n   similar to the previous one:\n\n   template\u003ctypename Source, typename Destination\u003e\n   static Destination MemoryRegion::local_bit_cast(Source in);\n\nThis CL removes versions 2. and 3. and changes their callers\nto use 1. instead.  That version was chosen over the others\nas:\n- it was the oldest one in the code base; and\n- its syntax was closer to the standard C++ cast operators,\n  as it supports the following use:\n\n    bit_cast\u003cDestination\u003e(source)\n\n  since `Source\u0027 can be deduced from `source\u0027.\n\nChange-Id: I7334fd5d55bf0b8a0c52cb33cfbae6894ff83633\n"
    },
    {
      "commit": "8e6c3fd1cd445b0a248cf1396c16fb1616bc73df",
      "tree": "404740a8173caaa3ca2eda4d2f9257c22cd9bf68",
      "parents": [
        "90a6adc0f6e55ec02f9443c12e93fea85c1a9393"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 11 18:34:44 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 13 09:16:05 2015 -0700"
      },
      "message": "ART: Fix arraycopy in Unstarted Runtime\n\nAdd null and bounds checks. Add type checks. Implement correct\ncopy in case of overlap.\n\nThe emulation is not complete. Object arrays with different types\nare not supported to simplify the implementation.\n\nChange-Id: I107bed1ce884ca632de3fa648fa7a1c5f592e2a4\n"
    },
    {
      "commit": "dd9d055ddfe4bd66fcf58fde4e8066670acce011",
      "tree": "a88253b45ce6c9292ab6dfab16452fa7c1b4c8fb",
      "parents": [
        "510abc71bd8a5ba42079a851783aba31036c54ea"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 09 12:57:41 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Mar 12 16:09:38 2015 -0700"
      },
      "message": "ART: More cutouts for unstarted runtime\n\nDex objects keep byte buffers to mapped dex files. For annotation\naccess we create them when compiling, but they must be cleared before\nwriting an image.\n\nAdd some Memory functions.\n\nBug: 19542228\nChange-Id: I995791b43f2b09192d88645821d9e55b45f1b606\n"
    },
    {
      "commit": "0f7e3d6a39a1ffb78a69ff5abaca24e32422a82c",
      "tree": "e6c96380fbdfeb8089f0257ad3923622a5657d4b",
      "parents": [
        "58e278861e2dd77f32a23e75c72028e3657c7066"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 11 13:24:35 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 11 13:24:35 2015 -0700"
      },
      "message": "ART: Fix finalizable class in Unstarted Runtime\n\nAdd a finalizable check for emulation of Class.newInstance, as this\nis not allowed in transactional mode.\n\nChange-Id: I9633929bf484ac8807b97209ab4b422c320b04da\n"
    },
    {
      "commit": "068b0c0fea0a5a6860a3b62853a9fd6b805e3671",
      "tree": "e16d61a376fa5bb38fa9d38e1d59fb6c5d437d88",
      "parents": [
        "637455782147a41fbde2e284c49ca5e02d3444c2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 11 12:44:47 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 11 12:59:10 2015 -0700"
      },
      "message": "ART: Fix AbortTransaction in Unstarted Runtime\n\nCan only call AbortTransaction if in a transaction. Should log\nsomething else otherwise and fail.\n\nChange-Id: I31ea3558c38fb6284ee6cacd1eafe01910e0965e\n"
    },
    {
      "commit": "2969bcdcd80624e4a4fef696b54c2c76b44b6853",
      "tree": "a097d139d5525ec2af6682f3e37bda94dead8cc9",
      "parents": [
        "f719fdd20e6282f3579cb99529bb65e852612647"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 09 12:57:41 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 11 09:27:03 2015 -0700"
      },
      "message": "ART: Refactor unstarted runtime\n\nRefactor and clean up unstarted runtime.\n\nBug: 19542228\nChange-Id: Ib3e4b3517e06e8242d4fed32ca59419fef553a47\n"
    }
  ]
}
