)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
