)]}'
{
  "log": [
    {
      "commit": "03ec930faded5bbfa096533ce60b6893847922db",
      "tree": "085ec76235f72647cd2e083801f15d82394e038b",
      "parents": [
        "14412079e6eba4d16f40c0bdc5e94812e1c7f5bc"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Aug 27 17:41:47 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Oct 09 16:32:13 2015 -0700"
      },
      "message": "ART: Lock counting in the interpreter\n\nTo support structured locking when balanced-locking verification\nfailed, count lock and unlock operations in the verifier.\n\nBug: 23502994\nChange-Id: I2bb915da6e3d43c49723a943b42d4d5a7c939aa1\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": "cf3f991b0dbad7edd28958aee199f1d06f648984",
      "tree": "8b0770087a128acdca7adc5b0d3bd1428e6239bc",
      "parents": [
        "722b5a7580e2d1e7a0327f46615d4c24acba9baa",
        "b30259251b22430fad12f1adeab671e4bf8f88f5"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Sep 28 15:13:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Sep 28 15:13:57 2015 +0000"
      },
      "message": "Merge \"ART: Use unique_ptr for alloca-ed ShadowFrames\""
    },
    {
      "commit": "6918bf13eb855b3aa8ccdddda2d27ae8c60cec56",
      "tree": "907f504a4d004ac1e44b73c3984e365e889407e8",
      "parents": [
        "446ca43e8f876dcc1ee90fcf432d6392c44a3f60"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Sun Sep 27 19:19:06 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Sun Sep 27 19:19:23 2015 -0700"
      },
      "message": "Revert \"Revert \"lambda: Experimental support for capture-variable and liberate-variable\"\"\n\nThis reverts commit 7bbb80ab52c203e44d2ded2c947b3b03b4b31ec4.\n\nChange-Id: If806ce5c6c5e96fdb2c3761dee096f74e7e5b001\n"
    },
    {
      "commit": "446ca43e8f876dcc1ee90fcf432d6392c44a3f60",
      "tree": "29e82c4fff7663d1e184ae3059f547fa3b65646b",
      "parents": [
        "b175a45be78152606a1db1eac0b79ef8777644f5",
        "7bbb80ab52c203e44d2ded2c947b3b03b4b31ec4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Sep 27 19:50:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sun Sep 27 19:50:57 2015 +0000"
      },
      "message": "Merge \"Revert \"lambda: Experimental support for capture-variable and liberate-variable\"\""
    },
    {
      "commit": "7bbb80ab52c203e44d2ded2c947b3b03b4b31ec4",
      "tree": "eb54c557467f1401c4bd5729fa2b9e8ae91e8ffd",
      "parents": [
        "b72123440d8541362ebdb131436f9dbdda5fd329"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Sep 27 19:50:40 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sun Sep 27 19:50:40 2015 +0000"
      },
      "message": "Revert \"lambda: Experimental support for capture-variable and liberate-variable\"\n\nTest fails.\n\nThis reverts commit b72123440d8541362ebdb131436f9dbdda5fd329.\n\nChange-Id: Ic9ed92f8c826d8465eb36b746dc44af05caf041c\n"
    },
    {
      "commit": "9c612cacb05c8661719d770dbce8dfdcb9c105cf",
      "tree": "6cd7d8e51ace1f48692d0f48c33e9c6b22cc283a",
      "parents": [
        "c27e706785c975eb91d9716800aae6c48dc47da6",
        "b72123440d8541362ebdb131436f9dbdda5fd329"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 25 23:55:58 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 25 23:55:58 2015 +0000"
      },
      "message": "Merge \"lambda: Experimental support for capture-variable and liberate-variable\""
    },
    {
      "commit": "b72123440d8541362ebdb131436f9dbdda5fd329",
      "tree": "41e3d21496a270edc06879f084a504a39af9469b",
      "parents": [
        "9f3b8d38de615efef6d2536817f19ad2ccaa313a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 25 14:22:08 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Sep 25 15:53:00 2015 -0700"
      },
      "message": "lambda: Experimental support for capture-variable and liberate-variable\n\nSupports capturing/liberating any primitive variables.\nNo support for capturing objects/lambdas yet since they would both\nneed GC changes to track roots through closures.\n\nChange-Id: Ibfb68bfe4c579dbf93823aac4c0e6ac8f6360c5d\n"
    },
    {
      "commit": "b30259251b22430fad12f1adeab671e4bf8f88f5",
      "tree": "80bff979beae84702b739962656a16d245a40ef4",
      "parents": [
        "eae0927cb81437389dc96437e9f04903783282b4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Sep 01 14:45:00 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Sep 24 15:42:14 2015 -0700"
      },
      "message": "ART: Use unique_ptr for alloca-ed ShadowFrames\n\nTo enable automated calls of the destructor (for extensions of\nShadowFrame), return a unique_ptr with a custom deleter. Use a\nmacro so that the alloca happens in the caller.\n\nChange-Id: Id28a6ea131f108e4a94ff1699fc22e7b44aec018\n"
    },
    {
      "commit": "78568351b22554c3a885216cd5be480dab88a951",
      "tree": "0f4a41dfd93535e0f3165ea94b302a5cc36cbfd1",
      "parents": [
        "47d89c7376090a3a4b8eb114e2c861afe27d01d0"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 21 12:00:16 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Sep 21 13:24:18 2015 +0100"
      },
      "message": "Fix locking on string init map (again).\n\nFollow-up to\n    https://android-review.googlesource.com/172036 ,\n    https://android-review.googlesource.com/171621 .\n\nDon\u0027t overwrite existing values, only insert new ones.\n(Also improve performance by using move semantics.)\n\nThis prevents the following race: Thread 1 looks for string\ninit map for a method but doesn\u0027t find it, so it starts to\nconstruct a new map. Thread 2 is doing the same but it\u0027s\nfaster and actually inserts the new map and keeps a pointer\nto it. After Thread 2 releases the lock, Thread 1 acquires\nit and starts to Overwrite() the element that the Thread 2\nis currently using, so Thread 2 ends up looking at a map\nthat\u0027s being actively modified.\n\nChange-Id: I135571af644363ea7bb282969a1bc7287b34f9b2\n"
    },
    {
      "commit": "4686c52394c0221ee3236753ad6be48f18b79365",
      "tree": "e3177c7686cb6203c5f4c91cb9a38b6e80fcbec0",
      "parents": [
        "8e7b964be2fab9b6bbb30cf8897617424d0fe85f"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Sep 18 14:44:32 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Sep 18 15:07:07 2015 -0700"
      },
      "message": "Fix locking on string init map.\n\nRelated to: https://android-review.googlesource.com/#/c/171621\n\nChange-Id: Ib6dcf9914f490f1d744c0abe1f520e5b307c7acd\n"
    },
    {
      "commit": "a2c38644d96cbad4106c0165811d0f670d6cec8f",
      "tree": "4ad15bed693ced09d99bb034175bdfe8cc3bb1c2",
      "parents": [
        "6766eae2d91e894b4ceab9f29cc983900e7bc0c7"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 17 17:29:01 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Thu Sep 17 18:33:16 2015 -0700"
      },
      "message": "Add lock around interpreter string init reg map.\n\nFixes intermittent test failures. Note that locks can\u0027t be held\nwhile the verifier is generating the map.\n\nChange-Id: Ie38d6bf0d9c5e81d66b8c167fde0e75a0565cea5\n"
    },
    {
      "commit": "e2cb7f297dfeb1a6e19c3b8d45b742427054fa56",
      "tree": "b5501cd32e859351b5f058da56e62accb03a3821",
      "parents": [
        "15982a940dd0032e225f8d2829609d7a35a3d842",
        "520633bebd2bf4d70884d30f179dbde9f275aac6"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Sep 11 15:40:48 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Sep 11 15:40:48 2015 +0000"
      },
      "message": "Merge \"Support deoptimization on exception\""
    },
    {
      "commit": "5550ca8bcc742b109d77e62f3a0877c667d894d3",
      "tree": "522c873c59b56fff0244e754dd869f18ccf485f4",
      "parents": [
        "dbd357086fdb7fce619d745fda4efd52377becdd"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Aug 21 18:38:30 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Sep 11 15:08:37 2015 +0100"
      },
      "message": "Record profiling information before Jitting.\n\n- Add a new instrumentation kind to record dynamic invokes.\n- Use the JNI entry point field to store the profiling data.\n- Record seen receivers for every dynamic invoke.\n\nChange-Id: I2c1738ab2a72052d45964d055dc16b44b906e54c\n"
    },
    {
      "commit": "520633bebd2bf4d70884d30f179dbde9f275aac6",
      "tree": "0006fb9db71545d9aaa88df3952a7488b30b2ae6",
      "parents": [
        "e0a49e3a93aa54b9e603d797d9e925a98742753a"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Sep 08 17:03:36 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Sep 10 17:39:56 2015 +0200"
      },
      "message": "Support deoptimization on exception\n\nAllows to deoptimize when an exception is being thrown. We only\ndeoptimize if an executable frame (starting from the catch handler)\nneeds to be executed with the interpreter.\n\nBefore executing deoptimized frames, the exception is restored. The\ninterpreter starts by handling this exception at the point of the\nthrowing instruction.\n\nBug: 23714835\nChange-Id: I0c5f7d4b257644acf12210aae8e5b6bb0f4af1f7\n"
    },
    {
      "commit": "05792b98980741111b4d0a24d68cff2a8e070a3a",
      "tree": "bad79a387bcbdaefc87c07b388099960ca9caff3",
      "parents": [
        "c26b4512a01d46756683a4f5e186a0b7f397f251"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Aug 03 11:56:49 2015 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Sep 03 17:30:57 2015 +0100"
      },
      "message": "ART: Move DexCache arrays to native.\n\nThis CL has a companion CL in libcore/\n    https://android-review.googlesource.com/162985\n\nChange-Id: Icbc9e20ad1b565e603195b12714762bb446515fa\n"
    },
    {
      "commit": "77bccdc5e4f7bb150867c7aecd350efee84367bc",
      "tree": "5023868352747d84d8f32f57cae442cb2610119f",
      "parents": [
        "fc29856047d90d8f446d73b576c0c18de7a1380f",
        "3a35714ebca10c989aa383c0861e2e84fe8dadf8"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Sat Aug 08 00:23:51 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Aug 08 00:23:51 2015 +0000"
      },
      "message": "Merge \"ART: Clean up unnecessary ArtMethod**\""
    },
    {
      "commit": "3a35714ebca10c989aa383c0861e2e84fe8dadf8",
      "tree": "3218ed8f5962af0351e1d285ccaff5207050672d",
      "parents": [
        "275bc5e5f318ba6ea1bad6c89c2924d1248b7523"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 07 17:20:11 2015 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Aug 07 17:22:26 2015 -0700"
      },
      "message": "ART: Clean up unnecessary ArtMethod**\n\nArtMethods are no longer Java objects, so the additional indirection\nis no longer necessary here.\n\nChange-Id: If76756d875b418b3f6e83f51b3225a158e9ce29b\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": "02f0771bba69edd34b0b112902bb9132ed099c75",
      "tree": "669634d6447ee626e306665ebf3881c17be4ffec",
      "parents": [
        "94800f46da0aded5152545322ad842f89e8a21d8",
        "b1d8c314b55bb2df2b2bb72a3daaf5db65b7ebc7"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Aug 05 18:18:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 05 18:18:59 2015 +0000"
      },
      "message": "Merge \"Revert \"cleanup: Replace pointers with out-parameters and fix-up formatting\"\""
    },
    {
      "commit": "90ef3db4bd1d4865f5f9cb95c8e7d9afb46994f9",
      "tree": "3c6f8989e0c6e027382a3c08d221ba97afd72291",
      "parents": [
        "1cf85515600d298a2c9e4de137c0926949205097"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 04 15:19:41 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 04 18:56:54 2015 -0700"
      },
      "message": "Address some comments and clean up\n\nChange-Id: I538cf204f1c89d5fc81f8fc5e5800fcf1cf87359\n"
    },
    {
      "commit": "b1d8c314b55bb2df2b2bb72a3daaf5db65b7ebc7",
      "tree": "87e8252ee6ca23138f867989a098b7c4338c21a5",
      "parents": [
        "1d558db0bcd841140f6fe1c6ba2e9a6de131649d"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 04 11:18:43 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Tue Aug 04 11:19:56 2015 -0700"
      },
      "message": "Revert \"cleanup: Replace pointers with out-parameters and fix-up formatting\"\n\nThis reverts commit a315f5c546b796f55f4872bb6efc15eb858d9639.\n\n--\n\nRevert \"runtime: cleanup class_linker out-parameters and formatting\"\n\nThis reverts commit bc1d78daa463572c5a770cdca858a3b51d8e1b7b.\n\n--\n\nRevert \"base: replace raw pointers for out-parameters with safer out\u003cT\u003e\"\n\nThis reverts commit fb326cffc679cab8eb873b9e44795706f023cb3c.\n"
    },
    {
      "commit": "fb326cffc679cab8eb873b9e44795706f023cb3c",
      "tree": "7ad4b524299195c42d38a5e7ef01b7fdb4c30e86",
      "parents": [
        "8433bb8a3120d064de97a692d98341d9bc29a985"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jul 23 16:53:53 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jul 30 14:36:01 2015 -0700"
      },
      "message": "base: replace raw pointers for out-parameters with safer out\u003cT\u003e\n\nAdd a zero-cost type-safe abstraction for representing \"out\" parameters\n(i.e. when the calling function has to return multiple results out\nby-reference into the argument slots instead of using the return slot).\n\nChange-Id: I33a941e4863b6bed71d2bfa43d7f48e9b111f83f\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": "e2facc5b18cd756a8b5500fb3d90da69c9ee0fb7",
      "tree": "595a3c807e1cbaa4b8c22b93685d70faa4ff0f5a",
      "parents": [
        "e07300b712f44397ecbfed1ef7f880686e46274a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Fri Jul 10 13:49:08 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jul 20 15:11:59 2015 -0700"
      },
      "message": "runtime: Add lambda box/unbox object equality\n\nA lambda that is boxed with box-lambda is now stored as a weak reference\nin a global runtime table (lambda::BoxTable). Repeatedly boxing the same\nlambda closure value will always return the same java.lang.Object back.\n\nSince there is no way to observe the address of an object, a GC can\nhappen and clean up the table of any dead boxed lambdas, which can also\nshrink the table to prevent the memory use from growing too much.\n\n(Note that a lambda closure is immutable, so hashing over it is\nguaranteed safe.)\n\nChange-Id: I786c1323ff14eed937936b303d511875f9642524\n"
    },
    {
      "commit": "14d90579f013b374638b599361970557ed4b3f09",
      "tree": "fe8f9f7b527e73c20078557eefd74615c2cfc7f8",
      "parents": [
        "5c03f3698f5e2e0d762e2e15ec00310b6cdab4fe"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 10:52:26 2015 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jul 16 10:52:26 2015 +0100"
      },
      "message": "Use (D)CHECK_ALIGNED more.\n\nChange-Id: I9d740f6a88d01e028d4ddc3e4e62b0a73ea050af\n"
    },
    {
      "commit": "7bf2b4f1d08050f80782217febac55c8cfc5e4ef",
      "tree": "61b26b116454c5a114ac4b2f55c71153be7a9d43",
      "parents": [
        "569e81e500725f52116b7d0342ec80a6d1e0089b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 10:11:59 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 14:22:19 2015 +0100"
      },
      "message": "Revert \"Revert \"Remove interpreter entrypoint in ArtMethod.\"\"\n\nThe start of the interned strings in the image was not aligned\nproperly, now that ArtMethods just need to be word aligned.\n\nThis reverts commit 7070ccd8b6439477eafeea7ed3736645d78e003f.\n\nbug:22242193\n\nChange-Id: I580c23310c33c239fe0e5d15c72f23a936f58ed1\n"
    },
    {
      "commit": "7070ccd8b6439477eafeea7ed3736645d78e003f",
      "tree": "e32dca6b4342ce7b42952e0d9150a85fba361562",
      "parents": [
        "fa2c054b28d4b540c1b3651401a7a091282a015f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 09:41:54 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 09:41:54 2015 +0000"
      },
      "message": "Revert \"Remove interpreter entrypoint in ArtMethod.\"\n\nBuild failures on bots. Investigating.\n\nThis reverts commit fa2c054b28d4b540c1b3651401a7a091282a015f.\n\nChange-Id: Id65b2009aa66cb291fb8c39758a58e0b0d22616c\n"
    },
    {
      "commit": "fa2c054b28d4b540c1b3651401a7a091282a015f",
      "tree": "d39c2eca12dce2e0366a092b05715b3eab1319b4",
      "parents": [
        "c87c8939ea1bcfbddb954478d527cf1138f4f343"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 01 14:32:54 2015 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 08 09:31:25 2015 +0100"
      },
      "message": "Remove interpreter entrypoint in ArtMethod.\n\nSaves 4/8 bytes for each ArtMethod.\n\nChange-Id: I110ecdddf8516b0759a31fa157609643e6d60b15\n"
    },
    {
      "commit": "a06b49b6eb3980b4f0e6f5b1222ef2aebe5029f0",
      "tree": "f28d120fdca12b9539a7caf3ceb0ec3ee9529eae",
      "parents": [
        "3552d96086c75523a76f399a13dd85d65eaa2d19"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 25 15:18:12 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 25 15:18:12 2015 -0700"
      },
      "message": "interpreter: Fix string init for soft-failed invokes\n\nBug: 22040916\nChange-Id: Id5b6f0f29e763c31bab4d85877cd8aaf02334e48\n"
    },
    {
      "commit": "ec3a4e7cdc4f268b40d923227c125429f4ee4884",
      "tree": "d9bc031c772d062c2168c4fd7e8f5d8c4a64093c",
      "parents": [
        "11dc78c8d36b4a65f4d955bc4303cc8279f1151e",
        "2ee54e249ad21c74f29a161e248bebe7d22fddf1"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jun 22 21:15:01 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Jun 22 21:15:02 2015 +0000"
      },
      "message": "Merge \"runtime: Partially implement box-lambda and unbox-lambda experimental opcodes\""
    },
    {
      "commit": "2ee54e249ad21c74f29a161e248bebe7d22fddf1",
      "tree": "125465dd7a6d23f83ecbf2d3454f21471868422c",
      "parents": [
        "158f35c98e2ec0d40d2c032b8cdce5fb60944a7f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 18 10:05:11 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Mon Jun 22 14:13:30 2015 -0700"
      },
      "message": "runtime: Partially implement box-lambda and unbox-lambda experimental opcodes\n\nThese opcodes are not yet fully specified, and *will* change before they become shippable.\nDo not write production code against experimental opcodes.\n\n--\n\nImplement partial interpreter support for new dex instructions box/unbox-lambda.\n* box-lambda will take a closure and convert it into an Object\n* unbox-lambda will take an Object and convert it to a closure\n\n(Currently does not implement object identity or variable capture).\n\nAll new opcodes are disabled by default, use runtime option -Xexperimental-lambdas to enable them.\n\nChange-Id: I3c15ccf8a26ccecd1d35808a8c1b4149220f6019\n"
    },
    {
      "commit": "f12ffdb549f1947125e3f56694cb479a619f02bf",
      "tree": "f7d34a8fcc4521269490c04a4586213a0e85bd8e",
      "parents": [
        "542ca97d3e4266896407b9abd29b36b1c59d798c",
        "52ea33b10370d60d4ce877aec529626537b7813b"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Jun 19 00:00:07 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jun 19 00:00:07 2015 +0000"
      },
      "message": "Merge \"Fix moving GC bug in DoFilledNewArray\""
    },
    {
      "commit": "52ea33b10370d60d4ce877aec529626537b7813b",
      "tree": "29f82ff0237589ead820356fd01eb43d9473fb4d",
      "parents": [
        "5592c688070fa327f56036c4c67c790289db63d9"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 18 16:48:52 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 18 16:49:05 2015 -0700"
      },
      "message": "Fix moving GC bug in DoFilledNewArray\n\nPreviously we read from componentClass after allocating the array.\n\nBug: 21783443\n\nChange-Id: I5283982edab479434e27416509e1436b4176fe01\n"
    },
    {
      "commit": "247e97746016b49183b52f4c386bedf7cd53e590",
      "tree": "758c0a7c60c2099fb6a8cf2d4ea68ffc8c9459ac",
      "parents": [
        "2b696ab55e817b583d7b3b3ffd39e48c38db6989",
        "158f35c98e2ec0d40d2c032b8cdce5fb60944a7f"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 18 19:56:57 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 18 19:56:58 2015 +0000"
      },
      "message": "Merge \"interpreter: Add experimental lambda opcodes for invoke/create-lambda\""
    },
    {
      "commit": "158f35c98e2ec0d40d2c032b8cdce5fb60944a7f",
      "tree": "63bb3bbed85b0add42c7fdc714cd611424d8af2e",
      "parents": [
        "c449e8b79aaaf156ce055524c41474cc1200ed5a"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Jun 10 15:55:30 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 18 10:22:27 2015 -0700"
      },
      "message": "interpreter: Add experimental lambda opcodes for invoke/create-lambda\n\nThese opcodes are not yet fully specified, and *will* change before they become shippable.\nDo not write production code against experimental opcodes.\n\n--\n\nImplement partial interpreter support for new dex instructions invoke/create-lambda, and a\nnew opcode format 25x.\n\n* Does not verify, in fact verification will soft fail when we see those opcodes.\n* Compilers will punt to interpreter since they don\u0027t support new opcodes.\n* As there is no way to capture/liberate variables yet, the \"closure\" is just\n  an ArtMethod for the time being.\n\nAll new opcodes are disabled by default, use runtime option -Xexperimental-lambdas to enable them.\n\nFor example:\n  dalvikvm ... -Xexperimental-lambdas ...\n  dex2oat --runtime-arg -Xexperimental-lambdas ...\n\nChange-Id: I6c996ca32a9b54ec45ec21d7a959b84dfb8a24eb\n"
    },
    {
      "commit": "2ef645ba50544b879a82ea30e606f18c9af98917",
      "tree": "25d18676c87c9738624793f2983bc0e87faecf6e",
      "parents": [
        "43d154bed3ad0bba766211af1f2637500d30a93f"
      ],
      "author": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jun 17 18:20:52 2015 +0100"
      },
      "committer": {
        "name": "David Brazdil",
        "email": "dbrazdil@google.com",
        "time": "Wed Jun 17 18:25:03 2015 +0100"
      },
      "message": "ART: Allow PackedSwitch instructions with zero targets\n\nOptimizing and the interpreter wrongly assumed that a PackedSwitch\nalways has at least one target. This patch removes the corresponding\nDCHECKs and adds a regression test case.\n\nThis is a resubmission of CL I32b7033ed38de6f1d1a6ee5d5bf12f3a47c9b37e\n\nBug: 21863783\nChange-Id: I04e6e124bdd16591ba27c79490e6ce183c36b691\n"
    },
    {
      "commit": "c449e8b79aaaf156ce055524c41474cc1200ed5a",
      "tree": "8e36a6ce3a1172891760e8dbc12cd73916c7264c",
      "parents": [
        "26b97f87dcd86934f8b75e018c80bb4e8d501b03"
      ],
      "author": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Wed Jun 10 15:56:42 2015 -0700"
      },
      "committer": {
        "name": "Igor Murashkin",
        "email": "iam@google.com",
        "time": "Thu Jun 11 11:13:30 2015 -0700"
      },
      "message": "runtime: Minor cleanup and extra comments around interpreter\n\nChange-Id: I24c0b261de8cf737babd9d01bf679482d48c8bc9\n"
    },
    {
      "commit": "f795869da0a1fa006fdcdacd8afb6149a63fc1a7",
      "tree": "b4cd23012e62b80788870f2c85c30fc6032299fa",
      "parents": [
        "430afefe1cced35cf5eb12ce7a6dcbfc5007c97e"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 09 14:09:14 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Jun 09 17:17:09 2015 +0200"
      },
      "message": "Follow up on CL 151605\n\n- Fixes return type of StackedShadowFrameRecord::GetType\n- Makes StackedShadowFrameType an enum class (scoped enum)\n- Moves DeoptimizationReturnValueRecord and StackedShadowFrameRecord\n  to thread.cc file and use forward declaration in thread.h header\n- Fixes tools/generate-operator-out.py for scoped enum classes.\n\nBug: 20845490\nChange-Id: I6b67e288b1db563699161e58ec2e2330d42dd8f5\n"
    },
    {
      "commit": "1f2d3ba6af52cf6f566deb38b7e07735c9a08fb6",
      "tree": "af6ae612d43c50703292d39a8a0b37dda3f919a6",
      "parents": [
        "ccd6337f31d13706c602f3d9436e9b4025075b63"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon May 18 12:12:50 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Jun 08 00:53:55 2015 -0700"
      },
      "message": "Fix nested deoptimization.\n\nHandle nested deoptimization cases. Create a stacked shadow frame\nrecords to keep track of deoptimization shadow frames. Shadow frames\nunder construction can be tracked in the same stack.\n\nBug: 20845490\nChange-Id: I768285792c29e7c3cfcd21e7a2600802506024d8\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": "400ce0087ed0a41f385b55d555afc4616166965a",
      "tree": "338d673ee59a3c850333465c9ca4c617acc42af4",
      "parents": [
        "0366344363c66138e5cfbac6de12cdbb3ac5c76e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 29 10:53:17 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri May 29 15:37:36 2015 -0700"
      },
      "message": "Add unstarted runtime test for String.\u003cinit\u003e.\n\nBug: 21173514\n\n(cherry picked from commit 73a937740841154eb32a0aa15f938f1c06f26091)\n\nChange-Id: If7bd360c396e2594f34efe3a6237f77c7129112b\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": "8c638bc1f6c186ff3a5706031cb4cf41493c1e7a",
      "tree": "ea1c94f8aebebf7f0f6f3acf824780b439c78af9",
      "parents": [
        "1484dad68c99c782bdbcaf38e4e364a4995d820d"
      ],
      "author": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 14 16:48:22 2015 -0700"
      },
      "committer": {
        "name": "Kenny Root",
        "email": "kroot@google.com",
        "time": "Thu May 14 17:38:07 2015 -0700"
      },
      "message": "Fix non-range String init calls\n\nWhen the String constructor was called via invoke-direct, it is changed\nto the new StringFactory which is static. That means that the args need\nto be shifted by one to deal with the change from non-static to static.\nHowever, the non-range version of the invoke-direct was not shifted\ncorrectly causing unstarted runtime initialization to get the wrong\nfirst_dest_reg argument.\n\n(cherry picked from commit 788a0a157cb138c33882511ff09afacde99443b7)\n\nBug: 21036900\nChange-Id: Ibd7a643d877514ea396d7e4ab0dea327207cb78f\n"
    },
    {
      "commit": "eb7c5b192257c92fc38a163c57e0a8bb771e476e",
      "tree": "d269b7103d02bb07f689a9a0c28bbcf263750362",
      "parents": [
        "f07f71f9af8f56e738ef0451c60734ec6022d08e",
        "9d6bf69ad3012a9d843268fdd5325b6719b6d5f2"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu May 07 14:22:34 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu May 07 14:22:35 2015 +0000"
      },
      "message": "Merge \"JDWP: properly combine location events\""
    },
    {
      "commit": "241a9588c6d7d0fcb4c92da40c7141863930083a",
      "tree": "4a6868893dc742f6322775d198a2305f645f2f3f",
      "parents": [
        "a93b104b47da67eaa50f8a6b7280cc6c438ef37b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 27 15:19:41 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 04 12:10:07 2015 -0700"
      },
      "message": "Fix mismatched new[]/delete.\n\nAnother two cases where a new[] is used but only a delete occurs.\n\nBug: 18202869\nChange-Id: If68264807150f3a9783e44ef8823cc366bff8df2\n"
    },
    {
      "commit": "9651d9b4ce938e49788e83d38d410eccee54ac90",
      "tree": "b1c05e7fa4ce6fb4787824b92da28ba2a3a6fc9d",
      "parents": [
        "8c9c1ae515f32142ab85103c5d45bd7ce4e6eb3c"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 29 15:58:17 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Apr 29 15:58:17 2015 -0700"
      },
      "message": "Restore interpreter check during DoCall removed by string init.\n\nAlso reorder test in verifier to check for string_init first.\n\nChange-Id: I585ef3f5890819a3e233236ea85b51a03918f5dc\n"
    },
    {
      "commit": "9d6bf69ad3012a9d843268fdd5325b6719b6d5f2",
      "tree": "a41fc22d2c89e41c86feb5ef07ebda89b1b83d90",
      "parents": [
        "b6829c2ee05124d64a19c7a52ada4a23f624fb91"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Apr 10 12:12:33 2015 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Wed Apr 29 16:59:58 2015 +0200"
      },
      "message": "JDWP: properly combine location events\n\nThis CL properly groups JDWP events at the same location: Breakpoint,\nSingle-step, Method Entry and Method Exit. This is necessary if the\ndebugger is not the only instrumentation listener. This matches the\nbehavior of Dalvik, especially for methods with a single return\ninstruction.\n\nThe interpreter was tuned so the instrumentation callbacks were\ncalled to satisfy the debugger with the idea the debugger was the\nonly instrumentation listener. This is not true when method tracing\nis enabled at the same time.\nWhen tracing is enabled, there is always a listener for MethodEntry\nand MethodExit events (art::Trace class). However, if the debugger\nis only listening to DexPcMoved event (to manage JDWP Breakpoint\nevent), it will not be notified of this event.\n\nWe now properly call all the instrumentation callbacks in the\ninterpreter and move the logic specific to debugging into the class\nDebugInstrumentationListener. This allows to properly group JDWP\nlocation events together depending on the sequence of instrumentation\ncallbacks.\n\nWe add Thread::tls_32bit_sized_values::debug_method_entry_ flag to\nremember we just entered a method. It replaces the local variable\nnotified_method_entry_event in the interpreter and simplifies the\ncode.\n\nBump oat version to force recompilation because the layout of the\nThread class is modified.\n\nBug: 19829329\nChange-Id: I204af9112e37d2eebc86661fb7c961a41c74e598\n"
    },
    {
      "commit": "848f70a3d73833fc1bf3032a9ff6812e429661d9",
      "tree": "b0349b3a40aab5a915af491b100659a5ca9fbbf6",
      "parents": [
        "d14438f0c5071962be7fab572b54687d32d9d087"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Wed Jan 15 13:49:50 2014 -0800"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Mon Apr 27 18:54:52 2015 -0700"
      },
      "message": "Replace String CharArray with internal uint16_t array.\n\nSummary of high level changes:\n  - Adds compiler inliner support to identify string init methods\n  - Adds compiler support (quick \u0026 optimizing) with new invoke code path\n    that calls method off the thread pointer\n  - Adds thread entrypoints for all string init methods\n  - Adds map to verifier to log when receiver of string init has been\n    copied to other registers. used by compiler and interpreter\n\nChange-Id: I797b992a8feb566f9ad73060011ab6f51eb7ce01\n"
    },
    {
      "commit": "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": "e4285226d1d4d7c4feee16a968540fb2e363339f",
      "tree": "835b91c05b39cdb1053c2cd28e0e23c202dc020b",
      "parents": [
        "79bdb47d8c87ca3ee7da4aa2ca56105728257a32",
        "d43b3ac88cd46b8815890188c9c2b9a3f1564648"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 01 23:15:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Apr 01 23:15:53 2015 +0000"
      },
      "message": "Merge \"Revert \"Revert \"Deoptimization-based bce.\"\"\""
    },
    {
      "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": "d43b3ac88cd46b8815890188c9c2b9a3f1564648",
      "tree": "6c599c3f40d57e92786bd7f41c0541d9eaa2643b",
      "parents": [
        "a109632b240f3c9355ca95500f6f48e4478e3c51"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 01 14:03:04 2015 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Wed Apr 01 14:05:13 2015 -0700"
      },
      "message": "Revert \"Revert \"Deoptimization-based bce.\"\"\n\nThis reverts commit 0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430.\n\nChange-Id: I1ca10d15bbb49897a0cf541ab160431ec180a006\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": "eb07669e9784ccb41d75df180727e57fc4520e28",
      "tree": "bc15da11ee0ce906252a33371f8f59138bc5a38f",
      "parents": [
        "bce0855ca1dbb1fa226c5b6a81760272ce0b64ef"
      ],
      "author": {
        "name": "Daniel Mihalyi",
        "email": "daniel.mihalyi@mattakis.com",
        "time": "Fri Aug 22 17:33:31 2014 +0200"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Mar 24 14:43:57 2015 +0100"
      },
      "message": "JDWP: Optimized single step during debugging\n\nFor single stepping full deoptimization and undeoptimizations were\nperformed with significant overhead, because every code will be\nexecuted in interpreted mode during a single step, even if it is not\nstrictly required.\n\nFor example, if we have a computation heavy method call and we would\nlike to step over it, that method (and all the methods called from it)\nwill run in interpreter mode. This can take so long in some cases\n(e.g. multiple minutes) that it makes debugging process unusable.\n\nThe solution for this limitation is not using full deoptimizations for\nsingle steps and force interpreter only for those methods that we are\nabout to step into, and require stack deoptimization before step outs.\n\nBug: 17750566\nBug: 18094282\nBug: https://code.google.com/p/android/issues/detail?id\u003d77984\n\nChange-Id: I683c52465883146c4c84ec47bf96f8efd920527f\nSigned-off-by: Daniel Mihalyi \u003cdaniel.mihalyi@mattakis.com\u003e\n"
    },
    {
      "commit": "0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430",
      "tree": "0e1d0813c1d8d1c7239a900c1653296975713df0",
      "parents": [
        "e295e6ec5beaea31be5d7d3c996cd8cfa2053129"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 24 02:39:46 2015 +0000"
      },
      "message": "Revert \"Deoptimization-based bce.\"\n\nThis breaks compiling the core image:\n\n Error after BCE: art::SSAChecker: Instruction 219 in block 1 does not dominate use 221 in block 1.\n\nThis reverts commit e295e6ec5beaea31be5d7d3c996cd8cfa2053129.\n\nChange-Id: Ieeb48797d451836ed506ccb940872f1443942e4e\n"
    },
    {
      "commit": "e295e6ec5beaea31be5d7d3c996cd8cfa2053129",
      "tree": "4d8a657d23d511743ce35bee596544d7f652efdb",
      "parents": [
        "d24ba2c44c76a2b2dd13aafe8f7981c15be31a98"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Sat Mar 07 06:37:59 2015 -0800"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Mon Mar 23 16:39:37 2015 -0700"
      },
      "message": "Deoptimization-based bce.\n\nA mechanism is introduced that a runtime method can be called\nfrom code compiled with optimizing compiler to deoptimize into\ninterpreter. This can be used to establish invariants in the managed code\nIf the invariant does not hold at runtime, we will deoptimize and continue\nexecution in the interpreter. This allows to optimize the managed code as\nif the invariant was proven during compile time. However, the exception\nwill be thrown according to the semantics demanded by the spec.\n\nThe invariant and optimization included in this patch are based on the\nlength of an array. Given a set of array accesses with constant indices\n{c1, ..., cn}, we can optimize away all bounds checks iff all 0 \u003c\u003d min(ci) and\nmax(ci) \u003c array-length. The first can be proven statically. The second can be\nestablished with a deoptimization-based invariant. This replaces n bounds\nchecks with one invariant check (plus slow-path code).\n\nChange-Id: I8c6e34b56c85d25b91074832d13dba1db0a81569\n"
    },
    {
      "commit": "935e01a1e4c0f0ac257c5a9b71bda50a9d441fa3",
      "tree": "9b79b902c9ca4443561aba439122fd0be65900a6",
      "parents": [
        "7aa81a451386350dd03c98adfade2ed7b88f611e"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 20 19:44:35 2015 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Fri Mar 20 19:44:35 2015 -0700"
      },
      "message": "Fix interpreter to allow 0 size sparse switches.\n\nBug: 19827056\nChange-Id: I12eaf717f1a4b9bd5e0c8e2a508df9da4e61c4ec\n"
    },
    {
      "commit": "d7cbf8a6629942e7bd315ffae7e1c77b082f3e11",
      "tree": "fc8c3371ed4ddac96bbe90a2f94ef5fb5c5472ee",
      "parents": [
        "f5988cf0c47ff935bb19c89ed0398be5fbe44bb6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 19 12:43:20 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 19 20:00:50 2015 -0700"
      },
      "message": "Change RETURN_VOID_BARRIER to RETURN_VOID_NO_BARRIER\n\nWe want to default to having a barrier for the case where we don\u0027t\ndex to dex.\n\nBug: 19762303\nChange-Id: I60348d89eaf0b9e1e480298afcecbb5f52e8661b\n"
    },
    {
      "commit": "e84e4f77388ec9c1d63fb4b21605eedca2a2e932",
      "tree": "0e6aca3eeeeb60c504ab998bad57a287544ff7df",
      "parents": [
        "94e480778b0946d1ab405ecf901e5d41ed54cc17"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 18 14:01:19 2015 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@google.com",
        "time": "Wed Mar 18 21:05:14 2015 +0000"
      },
      "message": "Remove the Android.mk GCC-only source files hackery\n\nThe complexity in Android.mk to deal with GCC-only source files is\nunnecessary, use #if !defined(__clang__) around the contents of\ninterpreter/interpreter_goto_table_impl.cc, the same way\ninterpreter/interpreter.cc does around references to it.\n\nBug: 17716550\nChange-Id: I775c23b6790d38b0d73a92529c696a31e6a4ae83\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"
    },
    {
      "commit": "0aa50ce2fb75bfc2e815a0c33adf9b049561923b",
      "tree": "9a3f9603ab30d5cbc7fc21aee0ceb48bbb0dd25a",
      "parents": [
        "e8e42f3548fd894f860912bb1b71ce6fa2d7daf3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 11:03:29 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 10 14:51:11 2015 +0000"
      },
      "message": "Remove ThrowLocation.\n\nNote that this is a cleanup change, and has no functionality change.\nThe ThrowLocation had no use anymore.\n\nChange-Id: I3d2126af1dc673cec3a0453ff3d56a172663a5f6\n"
    },
    {
      "commit": "5c9d8f0d2948c2b4fe4258f96e3598ad5b8fa23b",
      "tree": "7510031e119cf981cdb6aafc5e5c2299aa06590d",
      "parents": [
        "3dd536ffd7e8f82e4587964545b272acbd61d68e",
        "14691c5e786e8c2c5734f687e4c96217340771be"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:11:03 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Mar 09 10:11:03 2015 +0000"
      },
      "message": "Merge \"Compute the right catch location for the debugger.\""
    },
    {
      "commit": "14691c5e786e8c2c5734f687e4c96217340771be",
      "tree": "7c2156671b323c70ffdd1d48d5e2f1d1de79c5fc",
      "parents": [
        "3d7d2af4c6502b771b032ee9bf3ab30e78f9c60d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 05 10:40:17 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 09 10:09:33 2015 +0000"
      },
      "message": "Compute the right catch location for the debugger.\n\nAlso remove tls ThrowLocation, it is not needed anymore.\n\nChange-Id: I78fddf09ce968ca475e39c17fa76d699c589c8d9\n"
    },
    {
      "commit": "e2be653f220106961ecb119063ef8b839ad1ad34",
      "tree": "4d5b228b9d39d9bd86f415b3bf825565a6b183d4",
      "parents": [
        "41b15f9f06c7e2e5aac13f709c66412e6c299b67"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 06 17:11:47 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Mar 06 17:11:47 2015 -0800"
      },
      "message": "ART: Allow arraycopy with int[] in unstarted runtime\n\nOverlooked in the condition, the actual code was already there.\n\nBug: 19542228\nChange-Id: I30caf77b345cb9bdb1f54c28bf4d42852c9a3298\n"
    },
    {
      "commit": "029113f1013e2ce9027ea241a68f93072ce1bfe9",
      "tree": "7aabb31a73d4b558d05c1fd460fa4781657398c7",
      "parents": [
        "c4371cd0fe506703b5249cd9d7cad936b9fb4379",
        "729699d4a71c0e2452dc0745600d659d2cc7cb82"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 04 21:05:59 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 04 21:05:59 2015 +0000"
      },
      "message": "Merge \"ART: Fix missing handles\""
    },
    {
      "commit": "729699d4a71c0e2452dc0745600d659d2cc7cb82",
      "tree": "b36d4eaa310a755c03764e1799ad11a2b52cd6fa",
      "parents": [
        "dc47e986941b1a3754447fabea272485f3f0f382"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Mar 03 17:48:39 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Mar 04 12:17:36 2015 -0800"
      },
      "message": "ART: Fix missing handles\n\nFollow-up to https://android-review.googlesource.com/137010.\n\nChange-Id: Ie97bd01f3cd6eeef9ae38fd189b933b905832d52\n"
    },
    {
      "commit": "7642cfc90fc9c3ebfd8e3b5041915705c93b5cf0",
      "tree": "807b3c797483310ac23954c5eddb7441b91749c5",
      "parents": [
        "dc47e986941b1a3754447fabea272485f3f0f382"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 26 10:56:09 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 03 17:50:49 2015 +0000"
      },
      "message": "Change how we report exceptions to the debugger.\n\nThis is only a refactoring/cleanup. Bug fixes with respect\nto catch location, and more cleanups will follow.\n\nChange-Id: I30d3c6260b0c8f8115a811621397225b88f2063a\n"
    },
    {
      "commit": "f0e128a41154642f470eae0c7c57476efb527cd1",
      "tree": "163083fe9eac8e79c94da4d00707aeddc9f66411",
      "parents": [
        "f90316e06e1c7b7b4a4ebea8de0a1b4d72228fd6"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 27 20:08:34 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Mar 02 10:16:43 2015 -0800"
      },
      "message": "ART: Allow more operations in unstarted Runtime\n\nTo compile-time initialize more classes, have more dedicated code\nfor special methods.\n\nBug: 19542228\nBug: 19548084\nChange-Id: Iad37c1c58302b04fa3a5a904a923da388a079cd7\n"
    },
    {
      "commit": "e5f13e57ff8fa36342beb33830b3ec5942a61cca",
      "tree": "02e370ecc4e0d955f28bfc71a41015f94fbb19b7",
      "parents": [
        "354d58ba776866ea7b1c71f0d0848d5aaa013ae3"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 09:37:21 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 24 10:47:02 2015 -0800"
      },
      "message": "Revert \"Revert \"Add JIT\"\"\n\nAdded missing EntryPointToCodePointer.\n\nThis reverts commit a5ca888d715cd0c6c421313211caa1928be3e399.\n\nChange-Id: Ia74df0ef3a7babbdcb0466fd24da28e304e3f5af\n"
    },
    {
      "commit": "a5ca888d715cd0c6c421313211caa1928be3e399",
      "tree": "bdb08a2cbcf277ab7f02626a23b52a3fdf272ffe",
      "parents": [
        "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 24 08:10:57 2015 +0000"
      },
      "message": "Revert \"Add JIT\"\n\nSorry, run-test crashes on target:\n0-05 12:15:51.633 I/DEBUG   (27995): Abort message: \u0027art/runtime/mirror/art_method.cc:349] Check failed: PcIsWithinQuickCode(reinterpret_cast\u003cuintptr_t\u003e(code), pc) java.lang.Throwable java.lang.Throwable.fillInStackTrace() pc\u003d71e3366b code\u003d0x71e3362d size\u003dad000000\u0027\n10-05 12:15:51.633 I/DEBUG   (27995):     r0 00000000  r1 0000542b  r2 00000006  r3 00000000\n10-05 12:15:51.633 I/DEBUG   (27995):     r4 00000006  r5 b6f9addc  r6 00000002  r7 0000010c\n10-05 12:15:51.633 I/DEBUG   (27995):     r8 b63fe1e8  r9 be8e1418  sl b6427400  fp b63fcce0\n10-05 12:15:51.633 I/DEBUG   (27995):     ip 0000542b  sp be8e1358  lr b6e9a27b  pc b6e9c280  cpsr 40070010\n10-05 12:15:51.633 I/DEBUG   (27995): \n\nBug: 17950037\nThis reverts commit 2535abe7d1fcdd0e6aca782b1f1932a703ed50a4.\n\nChange-Id: I6f88849bc6f2befed0c0aaa0b7b2a08c967a83c3\n"
    },
    {
      "commit": "2535abe7d1fcdd0e6aca782b1f1932a703ed50a4",
      "tree": "140026ff9638ff34050680b6c706b82fa1740b56",
      "parents": [
        "38fee8ef4bc0f4dbe2c6d1f5585895f0c4d16984"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Feb 17 10:38:49 2015 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Feb 23 16:45:49 2015 -0800"
      },
      "message": "Add JIT\n\nCurrently disabled by default unless -Xjit is passed in.\n\nThe proposed JIT is a method JIT which works by utilizing interpreter\ninstrumentation to request compilation of hot methods async during\nruntime.\n\nJIT options:\n-Xjit / -Xnojit\n-Xjitcodecachesize:N\n-Xjitthreshold:integervalue\n\nThe JIT has a shared copy of a compiler driver which is accessed\nby worker threads to compile individual methods.\n\nAdded JIT code cache and data cache, currently sized at 2 MB\ncapacity by default. Most apps will only fill a small fraction of\nthis cache however.\n\nAdded support to the compiler for compiling interpreter quickened\nbyte codes.\n\nAdded test target ART_TEST_JIT\u003dTRUE and --jit for run-test.\n\nTODO:\nClean up code cache.\nDelete compiled methods after they are added to code cache.\nAdd more optimizations related to runtime checks e.g. direct pointers\nfor invokes.\nAdd method recompilation.\nMove instrumentation to DexFile to improve performance and reduce\nmemory usage.\n\nBug: 17950037\n\nChange-Id: Ifa5b2684a2d5059ec5a5210733900aafa3c51bca\n"
    },
    {
      "commit": "794ad76e8d5b5b9132819d5b08a0570e27615644",
      "tree": "74b420e4337ecf9e5df689cc376fa965d765a908",
      "parents": [
        "d98ff78976696fdde1e7868d4687719a0439544b"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 23 08:12:24 2015 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Feb 23 10:23:06 2015 -0800"
      },
      "message": "ART: Introduce NO_RETURN, Mark DoLongJump noreturn\n\nAdd NO_RETURN macro that adds C++11 noreturn attribute. Mark\nDoLongJump methods as noreturn.\n\nChange-Id: Ifde4318e370493237050d4c1349285a0382df23f\n"
    },
    {
      "commit": "1c80becf5406cd6d95dc24bf47a0c5a3809ea281",
      "tree": "24853b3512e21b18df7a2401b174df891684334e",
      "parents": [
        "e5deafe9cdd81238c3916b04301ea884c93f46b5"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Tue Feb 03 11:58:06 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Thu Feb 05 09:05:41 2015 +0100"
      },
      "message": "Fix transaction aborting\n\nDuring compilation, a java.lang.InternalError is used to indicate\nthat class initialization failed and the enclosing transaction\nshould be aborted and the changes rolled back. However there is\nnothing preventing the code executed from a class initializer from\ncatching that exception (like catching Throwable and ignore it).\nTherefore we may return from the class initializer with no pending\nexception, even if the transaction was aborted, and not rollback\nthe changes properly.\n\nTo fix this, we now rely on the new Transaction::aborted_ field to\nknow whether a transaction aborted. When returning from the class\ninitializer without pending exception, we now check wether we aborted\nthe enclosing transaction. If that\u0027s the case, we set the status of\nthe class to kStatusError and throw a new java.lang.InternalError\nwith the original abort message.\n\nThis CL also contains some cleanup:\n- Renames Transaction::Abort to Transaction::Rollback which is less\nambiguous and more reflect what is done.\n- Moves the code throwing the java.lang.InternalError exception into\nthe Transaction::ThrowInternalError method so we do not duplicate\ncode. Now we may abort transaction more than once (because we may\nhave caught the java.lang.InternalError then execute code causing\nnew transaction abort), we only keep the first abort message to\nthrow the exception.\n- Updates transaction_test with more cases and more checks.\n- Bumps oat version to force recompilation with this fix.\n\nBug: 19202032\nChange-Id: Iedc6969528a68bbdf3123146e990df4dbc57834b\n"
    },
    {
      "commit": "270a0e16c3b8e5b95cbfdbd8996ac137c7c6322b",
      "tree": "2800649d19ffcdc891118a458f6b0169022d93e0",
      "parents": [
        "951d70b42400453f9d1746d155b8337c07c86acc"
      ],
      "author": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jan 16 19:49:09 2015 +0100"
      },
      "committer": {
        "name": "Sebastien Hertz",
        "email": "shertz@google.com",
        "time": "Fri Jan 23 17:26:45 2015 +0100"
      },
      "message": "Fix exception handling during deoptimization\n\nWhen interpreting a deoptimized shadow frame, we may start with a\npending exception thrown by a previous deoptimized shadow frame (from\na previous invoke). Therefore, we need to handle it before executing\nany instruction, otherwise we execute incorrect code.\n\nBecause we need the DEX pc of the throwing instruction to find a\nmatching catch handler, we initialize deoptimized shadow frames with\nthe current DEX pc at the time the stack is deoptimized.\nWhen we are about to interpret a deoptimized shadow frame, we need to\nupdate the shadow frame with the DEX pc of the next instruction to\ninterpret. There are three cases:\n- if there is no pending exception, this is the instruction following\nthe current one.\n- if there is a pending exception and we found a matching catch\nhandler, this is the first instruction of this handler.\n- if there is a pending exception but there is no matching catch\nhandler, we do not execute the deoptimized shadow frame and continue\nto its caller.\n\nThe verifier now fails when a method starts with a move-exception\ninstruction. Indeed we cannot start executing a method with a pending\nexception.\n\nBug: 19057915\nBug: 19041195\nBug: 18607595\nChange-Id: I355ac81e6ac098edc7e3cc8c13dbfa24a2969ab2\n"
    },
    {
      "commit": "1cc7dbabd03e0a6c09d68161417a21bd6f9df371",
      "tree": "8557bdff971e366909351af95a7c8ead82792986",
      "parents": [
        "5e0a9849d4e353c3726095b65ab07cefce40a636"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Dec 17 18:43:01 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Dec 29 10:52:02 2014 -0800"
      },
      "message": "ART: Reorder entrypoint argument order\n\nShuffle the ArtMethod* referrer backwards for easier removal.\n\nClean up ARM \u0026 MIPS assembly code.\n\nChange some macros to make future changes easier.\n\nChange-Id: Ie2862b68bd6e519438e83eecd9e1611df51d7945\n"
    },
    {
      "commit": "ffc605cd817e79d6c7602a87543bb31f24d3a99f",
      "tree": "84e4e68b11fe2d9c8c2e901b858026c1ebe88973",
      "parents": [
        "b1a38e246cfbfb21100d9c9e57f33970e824f075"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 10 10:35:44 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed Dec 10 11:45:44 2014 -0800"
      },
      "message": "Add missing iget quick for bool, byte, char, short\n\nBug: 17791557\nBug: 17671806\nChange-Id: Ifac4fbfba6c3a3f97131e85914b24756fb7f9722\n"
    },
    {
      "commit": "a0485607a4a4d8c683a9849f6f20902c4e1da7a4",
      "tree": "bbfa8e6182b702f161ea07efd53975fab1b6b736",
      "parents": [
        "08f1f50d6c2e8f247b8f5f19711d75a792851c7a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:48:04 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:57:13 2014 -0800"
      },
      "message": "Move GetClassFromTypeIdx to ArtMethod.\n\nMove GetClassFromTypeIdx out of MethodHelper into ArtMethod in\npreparation for the removal of MethodHelper.\n\nChange-Id: I9c03dd8c821944c606ea08cdf92afc80c4275247\n"
    },
    {
      "commit": "08f1f50d6c2e8f247b8f5f19711d75a792851c7a",
      "tree": "dca490545d56168f7f9ae4a4616199b1b1c8ba0c",
      "parents": [
        "8443637f71a777a13317fe7635028d758a0adf97"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:04:37 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 15:12:27 2014 -0800"
      },
      "message": "Remove FieldHelper.\n\nChange-Id: I2d74e2d5b3c35a691c95339de0db9361847fca11\n"
    },
    {
      "commit": "e94652f1e321b2c8b71acbe5b07d2ebf69fbdb99",
      "tree": "b4c2a4435800222fa740a5ae57fa217b6aed0875",
      "parents": [
        "f25c2ec6b63e116f24f359a10b59c78768fde67a"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:19 2014 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Dec 02 11:13:49 2014 -0800"
      },
      "message": "Remove MethodHelper from the interpreter.\n\nUse ShadowFrame to get the executing method to avoid a handle for the current\nmethod.\nVarious associated bits of header file clean-up and removal of an unnecessary\nuse of MethodHelper in CompilerDriver.\n\nChange-Id: I3b6f4413701e8fc6b0c58b0041a0dd15472bedaa\n"
    },
    {
      "commit": "eace45873190a27302b3644c32ec82854b59d299",
      "tree": "73fbf327839263b6847bdc4359ac1dbea2b897e3",
      "parents": [
        "8ac8d5556fae9c728bcebcc9036a1bbf40087c76"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 24 18:29:54 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 25 16:02:04 2014 -0800"
      },
      "message": "Move dexCacheStrings from ArtMethod to Class\n\nAdds one load for const strings which are not direct.\n\nSaves \u003e\u003d 60KB of memory avg per app.\nImage size: -350KB.\n\nBug: 17643507\nChange-Id: I2d1a3253d9de09682be9bc6b420a29513d592cc8\n\n(cherry picked from commit f521f423b66e952f746885dd9f6cf8ef2788955d)\n"
    },
    {
      "commit": "2d7210188805292e463be4bcf7a133b654d7e0ea",
      "tree": "7705a3bf841ae44b2396728fa22ed0b5dcb44dbf",
      "parents": [
        "e0491682d101c69bf88c3c24a965312129cbfa38"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Nov 10 11:08:06 2014 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 18 12:27:37 2014 -0800"
      },
      "message": "Change 64 bit ArtMethod fields to be pointer sized\n\nChanged the 64 bit entrypoint and gc map fields in ArtMethod to be\npointer sized. This saves a large amount of memory on 32 bit systems.\nReduces ArtMethod size by 16 bytes on 32 bit.\n\nTotal number of ArtMethod on low memory mako: 169957\nImage size: 49203 methods -\u003e 787248 image size reduction.\nZygote space size: 1070 methods -\u003e 17120 size reduction.\nApp methods: ~120k -\u003e 2 MB savings.\n\nSavings per app on low memory mako: 125K+ per app\n(less active apps -\u003e more image methods per app).\n\nSavings depend on how often the shared methods are on dirty pages vs\nshared.\n\nTODO in another CL, delete gc map field from ArtMethod since we\nshould be able to get it from the Oat method header.\n\nBug: 17643507\n\nChange-Id: Ie9508f05907a9f693882d4d32a564460bf273ee8\n\n(cherry picked from commit e832e64a7e82d7f72aedbd7d798fb929d458ee8f)\n"
    },
    {
      "commit": "78a3233313260665fe82ba56257855e043bca3d4",
      "tree": "46622bf088b3f30d2c6d8a5b548519137c88c867",
      "parents": [
        "fe50a0f644bf57a92612d08ad21dc4ea5a2f652a",
        "277ccbd200ea43590dfc06a93ae184a765327ad0"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Nov 05 02:42:56 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 05 02:42:56 2014 +0000"
      },
      "message": "Merge \"ART: More warnings\""
    },
    {
      "commit": "277ccbd200ea43590dfc06a93ae184a765327ad0",
      "tree": "d89712e93da5fb2748989353c9ee071102cf3f33",
      "parents": [
        "ad17d41841ba1fb177fb0bf175ec0e9f5e1412b3"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Nov 03 21:36:10 2014 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Nov 04 18:40:08 2014 -0800"
      },
      "message": "ART: More warnings\n\nEnable -Wno-conversion-null, -Wredundant-decls and -Wshadow in general,\nand -Wunused-but-set-parameter for GCC builds.\n\nChange-Id: I81bbdd762213444673c65d85edae594a523836e5\n"
    }
  ],
  "next": "5ac814a0a789161cd1e797179cfad1ba6401366a"
}
