)]}'
{
  "log": [
    {
      "commit": "520dadff2190a5bcdb48838dbcccddc8fbbf0c97",
      "tree": "6e4eda47f0e258bf807b5ce0a62cb063b9f0407c",
      "parents": [
        "c5b1b067fb91c10c75dd0e6dbfd91bebe74347d5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:33:11 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Jul 19 15:34:09 2017 +0100"
      },
      "message": "Unbreak Odroid measurements.\n\nOdroid run Linux/target, which doesn\u0027t support ashmem.\n\nTest: test.py\nChange-Id: Icd92d2a87ea9987c9580037ef195f6e63641283d\n"
    },
    {
      "commit": "d1dbb74e5946fe6c6098a541012932e1e9dd3115",
      "tree": "7c3ad5ffd888ea97ee24e255bccb7c1a7acf4466",
      "parents": [
        "2f0ac4fb4486e7d9e5c1545d45a2b9b818a80dc3"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Mon Jul 17 11:20:38 2017 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Jul 18 11:38:13 2017 -0700"
      },
      "message": "Separate rw from rx views of jit code cache\n\nCreate two separate mappings of the ashmem region used for the JIT code\ncache.  These two mappings have unrelated addresses.\n\nBug: 62356545\nTest: make -j test-art-target\nChange-Id: If176552e6d72ef71e17c96994901f3f3baac44f6\n"
    },
    {
      "commit": "a5dcdf346158d47bfe80d8adb29b1b020cede286",
      "tree": "50e56b3445dc8e4724d6707ffecd23f9dae96e31",
      "parents": [
        "942c597b004aa328cf291a78392b405ef5d5f040",
        "bbe3a5efcdfb2fb15a4e5f724cc323ae0ada5111"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 15 20:21:23 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Jun 15 20:21:24 2017 +0000"
      },
      "message": "Merge \"Refactor some profiling info functions\""
    },
    {
      "commit": "bbe3a5efcdfb2fb15a4e5f724cc323ae0ada5111",
      "tree": "65fd149e1159674681d866e47e485d85b8464334",
      "parents": [
        "d58932f98a673c9d687863a7efafb2da168063a2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Jun 13 16:36:17 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Jun 15 11:45:06 2017 -0700"
      },
      "message": "Refactor some profiling info functions\n\nDeleted profile_compilation_info-inl.h\n\nAdded a new helper class MethodHotness to reduce the number of\nrequired getters for reading method hotness, startup, and post\nstartup booleans.\n\nTest: test-art-host\nBug: 62040831\n\nChange-Id: I799a38e2bea6177ba5816c54524f4ccacedba772\n"
    },
    {
      "commit": "e4deaf3ccdfaf33f0b4526e9963612bfa2dc79e8",
      "tree": "6af8ed52f680e3f65ffed43d52353c34803b668a",
      "parents": [
        "651ba599961ff0cdc36e83d3d58b1744d37ee9f7"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 09 15:27:15 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 14 14:44:53 2017 -0700"
      },
      "message": "ART: JIT code cache allocation cleanup\n\nRequest the data cache with kProtData instead of kProtAll. It isn\u0027t\nnecessary nor intended to be executable. The tail remap for the code\ncache will make all required parts executable, if possible.\n\nAlso use a unique_ptr to plug a leak on failure.\n\nBug: 36138508\nTest: m\nTest: m test-art-host\nTest: Test SANITIZE_LITE\u003dtrue build with wrap.system_server \u003d asanwrapper\nChange-Id: Id9e2e51bc8d7a29db99c406cd1e9ef6bbb8d444c\n"
    },
    {
      "commit": "d38b67c9892b603f57a6b51a1b9d7f4e610158aa",
      "tree": "4bb95ce9f7733f8b9e54b6e80eaeb3751b4e78a8",
      "parents": [
        "af14a86fb40f83b3d76185dd8bd09c1e7c409d2f",
        "eced692a34d2cf63d584c703704592984cc50394"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed Jun 14 05:50:39 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Jun 14 05:50:42 2017 +0000"
      },
      "message": "Merge \"ART: Add JIT cache race test\""
    },
    {
      "commit": "fbb22de21c30b1233aa32b56b0c92b2bd0ec2b47",
      "tree": "c4dca0c88a5526fceb057e7255f614c1c8a9a2c0",
      "parents": [
        "f052aa7268f656f97099185ac6b51eeacd78a97d",
        "88f50b13aca3b29b4be144b2b8c14bc95506d240"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jun 10 13:24:45 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jun 10 13:24:48 2017 +0000"
      },
      "message": "Merge \"Don\u0027t reset to a level above warmup threshold.\""
    },
    {
      "commit": "b2d18fa4e33ca119654ced872c70fe198b0b2db5",
      "tree": "9f0e3ac72b9b7b08794e1ecf458620ba19437465",
      "parents": [
        "58794c5c23f46a7476a58e5a10dbeebb6321aa90"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jun 06 20:46:10 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 09 11:36:45 2017 -0700"
      },
      "message": "ART: Clean up asm_support.h\n\nThe includes are only ever really needed for tests. Factor out\ngeneration of the test function into asm_support_check.h\n\nFix up missing includes, mainly intern_table.h.\n\nTest: m\nTest: m test-art-host\nChange-Id: I435199e6211e368be0a06c80d8fa95b9593aca31\n"
    },
    {
      "commit": "88f50b13aca3b29b4be144b2b8c14bc95506d240",
      "tree": "19ee500bccff6b2d4e1b5b94a9e7071cec54240e",
      "parents": [
        "fed9cb178be878f4e5ff862ac78ae2cf5ad305d3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 09 16:08:47 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Jun 09 16:10:36 2017 +0100"
      },
      "message": "Don\u0027t reset to a level above warmup threshold.\n\nOtherwise, we could be in a situation where a profiling info\nnever gets allocated.\n\nTest: 655-jit-clinit\nChange-Id: I7eebab66e841784a8ce5cd32765df9fc7376cea8\n"
    },
    {
      "commit": "eced692a34d2cf63d584c703704592984cc50394",
      "tree": "97240d0eae41b0b3596d92c17419f2dc3ae7b674",
      "parents": [
        "cff1b21b3e19c5d3a2d726fdb60dacd7de2a6f0d"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 01 10:54:28 2017 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Jun 08 13:08:34 2017 +0100"
      },
      "message": "ART: Add JIT cache race test\n\nAdds a test for the JIT code cache that attempts to trap races between\nthreads generating code and executing it.\n\nBug: 38417984\nTest: run-test --jit 707\nChange-Id: I408b2680b1d266ebe624d6e39113f0261d538e8a\n"
    },
    {
      "commit": "5d08fcc21a14190c4dba3028a3e35d281afdd016",
      "tree": "c42de65ced190778342d9b022e400f4a7f9d346b",
      "parents": [
        "57cf00bde719ddc84a6015b107b90a20169e3099"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 17:56:46 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Jun 05 20:28:16 2017 -0700"
      },
      "message": "ART: More header cleanups\n\nPull out more dependencies through forward declarations.\n\nTest: m test-art-host\nChange-Id: I7d86726928937f788b956ec9eac91532d66d57ae\n"
    },
    {
      "commit": "513061a792b22c417c938d31c19581390709561c",
      "tree": "80b4fdce03711170626aa5640d07b07de4a326a1",
      "parents": [
        "38c4ae5f4c5a033b7a7441032f39ea58f5772d4c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 09:17:34 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 01 12:59:13 2017 -0700"
      },
      "message": "ART: Clean up thread.h and thread_list.h\n\nRemove dependency on stack.h and gc_root.h. Remove unused object\ncallbacks include. Factor out ManagedStack into its own set of files.\nFix up users of transitive includes.\n\nTest: m test-art-host\nChange-Id: I01286c43d8c7710948c161b1348faabb05922e59\n"
    },
    {
      "commit": "f044c229e12f1d49b7024ab5d7353b2d83335501",
      "tree": "010bc946819a5190b19fbf55f50bef75ef789991",
      "parents": [
        "854461a4cd5e4a38debe3616e12b52fe7f160782"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 31 15:27:54 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 31 20:46:50 2017 -0700"
      },
      "message": "Add access flag for previously warm methods\n\nWe want to know if the method was warm instead of just having a non\nzero counter. This is required if we want to not compile all of the\nstartup methods, but still compile warm methods.\n\nTest: test-art-host ART_TEST_JIT\u003dtrue\n\nBug: 62200509\n\nChange-Id: I6e04866f39f970b04b47342b7af5ed474e1f4172\n"
    },
    {
      "commit": "00286db781e56d676d6bfb1ab22dc22fbaa96a41",
      "tree": "61f4cf0bb8c90f9e8551119ebb1a672db2040566",
      "parents": [
        "413d0bec8015525ec15b57ced821b4aa049cf067"
      ],
      "author": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 30 16:53:07 2017 -0700"
      },
      "committer": {
        "name": "Jeff Hao",
        "email": "jeffhao@google.com",
        "time": "Tue May 30 16:53:07 2017 -0700"
      },
      "message": "Reset JIT method counters to 0 instead of 1 when clearing.\n\nWhen the counters need to be cleared, the count should reset to 1\ninstead of 0. The counters may be reset during startup, and startup\nmethods can be lost by resetting the counters to 0.\n\nBug: 62200509\nTest: mm test-art-host\nChange-Id: I8936631d3bab369c6a14acf76b20e7245de14789\n"
    },
    {
      "commit": "2d7ed749be6772130cc9fa5658732951701fc450",
      "tree": "b66f6931c569e59f7a41535ed99a5aa37b378174",
      "parents": [
        "1f51ec0e1a80c4146793d2f853c2c7408073fe7c",
        "352b17af5263b27cad7a1dbf2351f9cb71d6af58"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri May 26 10:41:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri May 26 10:41:44 2017 +0000"
      },
      "message": "Merge \"Flush data cache after updating the JIT table.\""
    },
    {
      "commit": "dbddc22f5dc2d1ff4d4783fbd66c27812f4980d1",
      "tree": "2a0a8efa1c2630e57ab48ab2de171f2847ff282f",
      "parents": [
        "a559fa1b0d6c276dde2cdc707de1acd4950f7190"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Wed May 24 12:04:13 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu May 25 16:59:44 2017 -0700"
      },
      "message": "Refactor profiles to use TypeReference instead of ClassReference\n\nRefactor type reference into runtime and use it for profiles.\nClassReference was just duplicated code since it wasn\u0027t even using\nthe class def indexes.\n\nTest: test-art-host\n\nBug: 62040831\nChange-Id: Ia92f21c0e85c00321f52c97bb7a90158d882849b\n"
    },
    {
      "commit": "352b17af5263b27cad7a1dbf2351f9cb71d6af58",
      "tree": "2c3cd2c36727cd4ba994457a29028f9ee9086272",
      "parents": [
        "ec89dfa25ae9e718730d775022aef505f7363d3a"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 25 12:54:31 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 25 13:00:45 2017 +0100"
      },
      "message": "Flush data cache after updating the JIT table.\n\nOtherwise, other cores could see an incomplete table when executing\nthe new code.\n\nbug: 37949368\nTest: test.py --jit\nChange-Id: I29fb62f4a13c6db509a1f5719b05ee9297a403ba\n"
    },
    {
      "commit": "a39fd980000d10ee0b3a49555cc8bcbbfacde943",
      "tree": "cad6936a2b618ec31fc7d5b724ff8f433b373e23",
      "parents": [
        "0b183409d8dd2ed5a720eb28ad77c46bccd09247"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu May 18 10:15:52 2017 -0700"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue May 23 13:29:45 2017 -0700"
      },
      "message": "Record inline caches only for the strictly hot methods\n\nWarm methods might have incomplete inline caches which could cause\nunnecessary deoptimizations.\n\nTest: m test-art-host\nBug: 38426301\nBug: 38412648\n\nChange-Id: I3023a2d462cb1bd291f7ea63bcf363a75d8f20a9\n"
    },
    {
      "commit": "5504aef8c13ad1cc8825c108836a32ba8e54ce6c",
      "tree": "0b11e66eb1ed9597b77908fb02673adec877e2ed",
      "parents": [
        "4632f5be49f4a4a9be981284fdbbc8a181a8d627",
        "5629d2deda9bbdf53a229922dac23b88e286d6bd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Wed May 17 16:20:05 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 17 16:20:07 2017 +0000"
      },
      "message": "Merge changes Ic48ccda9,Ibc0a29c9\n\n* changes:\n  ART: Move JIT code cache sentinel to sentinel fault page\n  ART: Reserve sentinel fault page\n"
    },
    {
      "commit": "39e673811d73ac09a822d9ee0082bba5d8e8cbad",
      "tree": "2c298cbabbd476b103da0269e5cbb68de18faf61",
      "parents": [
        "ed00ddb614d68559931d831cb74d3ba8f01599c9"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 19:26:38 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 19:26:38 2017 -0700"
      },
      "message": "ART: Fix iterator invalidation\n\nErasing an item of a map invalidates the iterator.\n\nBug: 38324641\nTest: m test-art-host\nChange-Id: I9f7499eb4a4b49e4fcd6c99d170d9b681adfd9b0\n"
    },
    {
      "commit": "5629d2deda9bbdf53a229922dac23b88e286d6bd",
      "tree": "6edd6558115881b1df763faf90165f1535e293d7",
      "parents": [
        "2ac67d526eb348019433138b04eb1473d45cb0f4"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 16:28:13 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon May 15 18:21:49 2017 -0700"
      },
      "message": "ART: Move JIT code cache sentinel to sentinel fault page\n\nUse an address in the fault page to get more expressive fault\naddress.\n\nTest: m test-art-host\nChange-Id: Ic48ccda976eeb965774c9356242a0151ccbc2a10\n"
    },
    {
      "commit": "6ca115b5fa185a2cc162a453f425efd87d8f38bd",
      "tree": "6c6ccb5ec5094a54a8c558707f4b2a305c90b87c",
      "parents": [
        "ddc38fe3e5618e3922ecc445193dacb2f39ef736"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 10 15:09:35 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu May 11 15:46:10 2017 +0100"
      },
      "message": "Use a sentinel when clearing JIT table entries.\n\nThis can help diagnosing crashes we see.\n\nbug: 38128052\nbug: 37949368\nTest: test.py --jit\nChange-Id: I7bf70785e8bd93fb0575ac64b1fb5bcb7d462b10\n"
    },
    {
      "commit": "4e92c3ce7ef354620a785553bbada554fca83a67",
      "tree": "42029deff4d3ba7f89b5fdbf79ff410da575f431",
      "parents": [
        "549844e9ccf432d1396b19af890eedb602b8ba04"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon May 08 09:34:26 2017 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed May 10 09:27:33 2017 +0100"
      },
      "message": "Add runtime reasons for deopt.\n\nCurrently to help investigate. Also:\n1) Log when deoptimization happens (which method and what reason)\n2) Trace when deoptimization happens (to make it visible in systrace)\n\nbug:37655083\nTest: test-art-host test-art-target\nChange-Id: I0c2d87b40db09e8e475cf97a7c784a034c585e97\n"
    },
    {
      "commit": "f6d4668c42933e2f85ddbc94e276c49db4e2b1dd",
      "tree": "3343addb8cde45eb4070d4876f26bef1002248dc",
      "parents": [
        "0bbb750f6ff9a52bc4649995fc78ebea87e31dd1"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 28 17:41:45 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 24 14:02:54 2017 +0000"
      },
      "message": "Improvements in the Inliner.\n\n- Change from a depth limit to a total number of HInstructions\n  inlined limit. Remove the dex2oat depth limit argument.\n- Add more stats to diagnose reasons for not inlining.\n- Clean up logging to easily parse output.\n\nIndividual Ritz benchmarks improve from 3 to 10%.\n\nNo change in other heuristics. There was already an instruction budget.\nNote that the instruction budget is rarely hit in the \"apps\" I\u0027ve tried\nwith.\n\nCompile-times improve from 5 to 15%.\nCode size go from 4% increase (Gms) to 1% decrease (Docs).\n\nbug:35724239\ntest: test-art-host test-art-target\n\nChange-Id: I5a35c4bd826cf21fead77859709553c5b57608d6\n"
    },
    {
      "commit": "cbcedbf9382bc773713cd3552ed96f417bf1daeb",
      "tree": "58eed766a69ddddbc41d21624244e14547fa1dff",
      "parents": [
        "ef62210a1466c133056c4bfdae9f8f5417065eff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sun Mar 12 22:24:50 2017 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Mar 16 10:20:34 2017 -0700"
      },
      "message": "Add method info to oat files\n\nThe method info data is stored separately from the code info to\nreduce oat size by improving deduplication of stack maps.\n\nTo reduce code size, this moves the invoke info and inline info\nmethod indices to this table.\n\nOat size for a large app (arm64): 77746816 -\u003e 74023552 (-4.8%)\nAverage oat size reduction for golem (arm64): 2%\n\nRepurposed unused SrcMapElem deduping to be for MethodInfo.\nTODO: Delete SrcMapElem in a follow up CL.\n\nBug: 36124906\n\nTest: clean-oat-host \u0026\u0026 test-art-host-run-test\n\nChange-Id: I2241362e728389030b959f42161ce817cf6e2009\n"
    },
    {
      "commit": "13439f0c4769a0768cf1bbaa7b3f2f9ee5a317c5",
      "tree": "a5d52373571fad4249544a7b27c8009233d69f9d",
      "parents": [
        "74f94dd8edb4a6070f6f7bfef6d28a8b4a21fc30"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 21 01:17:21 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Mar 09 17:14:02 2017 -0800"
      },
      "message": "Use offline inline caches during AOT compilation\n\nAlso:\n- extend the testing script to understand profile when --profile is\npassed\n- filter inline cache types which are not loaded by the caller class\nloader\n\nTest: m test-art-host-run-test-638-checker-inline-caches\nBug: 32434870\nChange-Id: Ifcc27b3cebc79b84617412aaae64a73324151b55\n"
    },
    {
      "commit": "589e71eb71477603c88b14118b2d3a33508c3c79",
      "tree": "95d88c7c8ba3a9b2009361d61164cef6a6339308",
      "parents": [
        "d9f647ac9a5cb0c6f112332d584756251c2cfb9f"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Mar 03 16:05:05 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 06 12:57:30 2017 -0800"
      },
      "message": "Encode inline caches with missing types in the profile\n\nNot all runtime types can be encoded in the profile. For example if the\nreceiver type is in a dex file which is not tracked for profiling its\ntype cannot be encoded.\n\nPreviously we would just skip over these types but that can lead to\nencode a polymorphic inline cache when in fact it should be megamorphic.\n\nWith this CL, inline caches for which types are missing are marked in\nthe profile with a special bit, kIsMissingTypesEncoding.\n\nAlso, extend profman to understand text lines which specify an inline\ncache with missing types.\n\nTest: test-art-host\n\nBug: 35927981\nBug: 32434870\nChange-Id: I34528a39c227f3133771fd4454701c1ddc234f40\n"
    },
    {
      "commit": "da3355a9af91e9825d9554658bf2020cbbe08e18",
      "tree": "2aa451b4ae91f0d0c792437b187945c4271dd70b",
      "parents": [
        "7ac79b99c09fecb33af43e435008868f48406726",
        "3b1a7f40ad69ab5332d13ed0abf0a3a1fa7f2a9e"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 24 09:02:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Feb 24 09:02:58 2017 +0000"
      },
      "message": "Merge \"Update entrypoint directly when doing JIT code cache GC.\""
    },
    {
      "commit": "3b1a7f40ad69ab5332d13ed0abf0a3a1fa7f2a9e",
      "tree": "48f2ad70be640c4f2088d0548716b5070f493997",
      "parents": [
        "d3cb7fae3acdef02dbb67729353ba4ade8944630"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 22 10:21:00 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 23 12:55:33 2017 +0000"
      },
      "message": "Update entrypoint directly when doing JIT code cache GC.\n\nOtherwise, the Instrumentation::UpdateMethodsCode might access\nthe declaring class while the GC is concurrently processing\nreferences.\n\nbug:35598395\ntest: run-libcore-tests.sh --mode\u003dhost --variant\u003dX64\nChange-Id: I0f059b1823e81672d43cf1f7eed64482f8927232\n"
    },
    {
      "commit": "e21806f053c1a001738b121e7f7807f6cb79b97a",
      "tree": "360e84befa7ac35783a712368d66c33362bba3c8",
      "parents": [
        "0def68d5f201b0a6421cabedcf951c7927f4fd50"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Feb 22 11:49:43 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Wed Feb 22 11:49:43 2017 -0800"
      },
      "message": "Add more comments in GetProfiledMethods\n\nExplain why we are looking in the method dex file for array types.\n\nTest: m test-art-host\nChange-Id: Ib94475f79844968591f72f46a2c714f9971778ba\n"
    },
    {
      "commit": "4ca70a3102c10e2e77e97fc3b9180f00304ed29b",
      "tree": "3caed68e8a27b910779eec62614ff48151d9490f",
      "parents": [
        "2fee212df6f688295475f3b2ddee4f2db8db27a2"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 21 16:22:24 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Feb 21 17:02:19 2017 -0800"
      },
      "message": "Fix handling of array types when extracting the offline inline caches\n\nTest: m test-art-host\n      regression test is being worked out\nBug: 35621933\n\nChange-Id: If762db76cc0493db8c8babab62035e915b660da5\n"
    },
    {
      "commit": "940eb0c00ef531dd9a0a68dbd61e377832e81eb4",
      "tree": "c65e43a702bb781b7a2f4ebedfb6b3d131fd8312",
      "parents": [
        "9fb10fb39bcb3d9a4dc7e16f8c1d38dcc112639c"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Jan 30 19:30:44 2017 -0800"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Thu Feb 16 13:52:56 2017 -0800"
      },
      "message": "Add inline caches to offline profiles\n\nAdd support for inline caches in profiles:\n- extract inline caches from the jit cache when the profile saver\nqueries the hot methods\n- bump profile version to support the new data\n- add new tests\n- inline caches are only supported for same-apk calls (including\nmultidex)\n\nTest: m art-test-host-gtest-profile_compilation_info_test\nBug: 32434870\nChange-Id: I38b4ca0a54568d2224765ff76023baef1b8fd1a2\n"
    },
    {
      "commit": "6def7024f36c39ea79b522c8c68cb253355dda8f",
      "tree": "9cca19acfe065dbc5e0d763d65d0c56a2b0387f4",
      "parents": [
        "aff5505d85612621bd112d9af1ba4cc31a4619d1",
        "eee0bd448ec057d3f224895ddb868786758eeb5b"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Feb 14 19:11:26 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 14 19:11:28 2017 +0000"
      },
      "message": "Merge \"Revert^6 \"Make class redefinition work with native methods on stack.\"\""
    },
    {
      "commit": "eee0bd448ec057d3f224895ddb868786758eeb5b",
      "tree": "32283e1b1ccb97bced2999a364cf21361c8d07ac",
      "parents": [
        "02b2349b1cd2a78e86b1a7542f8330e6c3aaeb35"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 14 15:31:45 2017 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Tue Feb 14 09:28:19 2017 -0800"
      },
      "message": "Revert^6 \"Make class redefinition work with native methods on stack.\"\n\nWe were incorrectly trying to obtain the profiling information of a\nnative method.\n\nThis reverts commit 02b2349b1cd2a78e86b1a7542f8330e6c3aaeb35.\n\nReason for revert: Fixed test failure with jit configurations\n\nTest: ART_TEST_JIT\u003dtrue mma -j40 test-art-host\n\nChange-Id: Ic7112104aec64e597d2df80db5dc2a505d2cc2dd\n"
    },
    {
      "commit": "b93ce1853e1a28bbd6ca992c5b646aa2d2699892",
      "tree": "4d33276a5d969385124d1745f7afbe23d760f29d",
      "parents": [
        "806ac631e53f12061cb0ae7640aa9cd0dd79243d"
      ],
      "author": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Thu Dec 15 14:23:09 2016 +0000"
      },
      "committer": {
        "name": "Kevin Brodsky",
        "email": "kevin.brodsky@linaro.org",
        "time": "Fri Feb 10 15:48:16 2017 +0000"
      },
      "message": "Clarify comment on JIT cache flush issue\n\nThe original fix (#304947) is needed, but the comment was suggesting a\nhardware cause and a link with A53 errata. In all likelihood neither\nof these is true, and the issue is actually caused by a kernel issue\naffecting many Qualcomm devices (like those using the msm tree).\n\nChange-Id: Ie750e6fd9eb7130982d184c22917b5c3ea4beed0\n"
    },
    {
      "commit": "1ebe4fe1a6cb0835197ee3a848d554b79ca9d367",
      "tree": "69e01b73d1b5eccc37cf19a1daea89052de06a94",
      "parents": [
        "44790fe8b33c7a80da2e77787d5f8d4d4549114b"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 30 14:57:11 2017 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Feb 01 15:39:49 2017 -0800"
      },
      "message": "Fix creating self-recursive obsolete methods.\n\nWe were using recursive loading of the current art method which was\nmaking us miss obsolete methods in some cases.\n\nWe could also end up checking the wrong method when walking the stack.\n\nWe also add tests for recursive obsolete methods in general.\n\nBug: 34815470\n\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue mma -j40 test-art-host\nChange-Id: I522fd4cac4e3f9d35d03b128bad6d6971cfe6c4a\n"
    },
    {
      "commit": "433b79a9130df5f2375b9d3d7518c1f3fb84a467",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "81356645157af44152c7b7db383596b5cf3479b5"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 20:54:45 2017 +0000"
      },
      "message": "Revert \"Revert \"Make --debuggable rely on JIT code.\"\"\n\nFixed by https://android-review.googlesource.com/#/c/330165/\n\nThis reverts commit 81356645157af44152c7b7db383596b5cf3479b5.\n\nChange-Id: Ifb74e1cc90ab6dea621f7f54a00b540d6ccd0cf6\n"
    },
    {
      "commit": "81356645157af44152c7b7db383596b5cf3479b5",
      "tree": "59aca3792abfa47c7424e4dac13248651e4662b2",
      "parents": [
        "a0619e25aacf8b8074132f4951f75fdbcfd42925"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:18:02 2017 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jan 30 20:19:28 2017 +0000"
      },
      "message": "Revert \"Make --debuggable rely on JIT code.\"\n\nBreaks 137-cfi with ART_TEST_RUN_TEST_DEBUGGABLE\u003dtrue\n\nThis reverts commit a0619e25aacf8b8074132f4951f75fdbcfd42925.\n\nbug: 28769520\nChange-Id: Ifd7b8fc7c9b72c0a523fd57c4b1b80edd3547caa\n"
    },
    {
      "commit": "a0619e25aacf8b8074132f4951f75fdbcfd42925",
      "tree": "dddc053886464b99be29b9ca69039d74d49605ca",
      "parents": [
        "ca21dc47adeed92a15a9d3fd090bdd0e6654679c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Dec 20 13:57:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Jan 30 12:41:52 2017 +0000"
      },
      "message": "Make --debuggable rely on JIT code.\n\nRemoves -Xfully-deoptable in the process, which was added as a\ntemporary workaround until this CL.\nPartial revert of https://android-review.googlesource.com/#/c/302232/\n\nMakes things consistent with existing infrastructure:\n\n- Parse the --debuggable from the compiler options, just like\n  --compiler-filter.\n\n- Add DEBUG_JAVA_DEBUGGABLE, passed by the zygote, for debuggable apps.\n\n- Java debuggable now solely relies on JIT for simplicity.\n\n- Debugging under userdebug for non-java-debuggable apps is still\n  best effort.\n\nTest: test-art-host, jdwp\n\nbug: 28769520\nChange-Id: Id0593aacd85b9780da97f20914a50943957c858f\n"
    },
    {
      "commit": "dba61481035b7944173181ec9ee02aea41dd0e29",
      "tree": "8629775e657cc8968e2f8fa2af6256c7a58c7dd4",
      "parents": [
        "cb2ce333ee2d1053919fe0acc390369bea3ad77e"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 08:20:29 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 21 11:43:14 2016 -0800"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\"\n\nA GetDeclaringClass()-\u003eGetDexCache() got inserted during the\nmerge/review process meaning that we would try to access incorrect\ndex-cache in obsolete methods in some situations.\n\nAlso when using tracing we would loop forever (or at least until an\nOOM error) in test 916 due to tracing forcing InterpretOnly mode\nmeaning methods would never be jitted.\n\nBug: 32369913\nBug: 33630159\n\nTest: ART_TEST_TRACE\u003dtrue \\\n      ART_TEST_JIT\u003dtrue   \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\n\nThis reverts commit f6abcda293b115a9d7d8a26376ea2dcf2d1dc510.\n\nChange-Id: I0773bfcba52e3cd51a83be815c6a50c189558f48\n"
    },
    {
      "commit": "f6abcda293b115a9d7d8a26376ea2dcf2d1dc510",
      "tree": "a30ce596848d14c95a73449dbf2bfccf26a510b9",
      "parents": [
        "ce77fc0e7f60a15354bb20c356537cbf8b53b722"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Dec 21 09:26:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Basic obsolete methods support\"\"\"\n\nFails in tracing mode\n\nBug: 32369913\nBug: 33630159\n\nThis reverts commit ce77fc0e7f60a15354bb20c356537cbf8b53b722.\n\nChange-Id: I1bdcf6ad467f2e31f9c5d0c3c987b90a4f5efc69\n"
    },
    {
      "commit": "ce77fc0e7f60a15354bb20c356537cbf8b53b722",
      "tree": "b4301967c423ab190a4274409d99a3d6e23f0e8a",
      "parents": [
        "d54f43ca39dfa92f08c2d760123f185f0f65fb86"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 01:05:52 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Dec 19 14:26:18 2016 -0800"
      },
      "message": "Revert \"Revert \"Basic obsolete methods support\"\"\n\nThis reverts commit b81a9840b44480bfeacd74b8d9f51e06f295411d.\n\nThere were 2 issues with the original CL\u0027s test 916-obsolete-jit that\ncaused it to sporadically fail.\n\nFirst, when checking if we had jitted the function under test in\n916-obsolete-jit we failed to check to see if the function \u0027doCall\u0027,\nwhich is used to work-around bugs in our deoptimization \u0026 compilation\nsystems, had also been jitted.\n\nIn the case where the \u0027sayHi\u0027 function had been jitted but the\n\u0027doCall\u0027 function had not we would (correctly) fail to redefine the\n\u0027Transform\u0027 class since we would not be able to deoptimize the \u0027sayHi\u0027\nfunction since it is under a quick_to_interpreter_bridge (runtime)\nframe.\n\nSecondly, the function Main.isInterpretedFunction was incorrect and\nwould always return false, regardless of the actual state of the\nfunction. This would cause the test to fail as the\nquick_to_interpreter_bridge frame prevented deoptimization of the\nobsoleted function. Usually the warm-up period was enough to make sure\nthe methods were jitted anyway but this was not guaranteed.\n\nBoth of these problems become more likely to occur on systems with\nmore cpu contention such as the buildbots.\n\nTest: stress --cpu 60 \u0026; while ./test/run-test --host --jit 916; do ; done\n\nReason for revert: Fixed bug in test that was causing failures.\n\nOriginal Tests:\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: If1a92e47b90965a7dc21c5826185debe62bd1554\n"
    },
    {
      "commit": "ed015acdd0fbb1b837b3f74e8c5f624956189691",
      "tree": "b8ec86c504bf665cd59074fae49136dfe7c6c9f5",
      "parents": [
        "9538f9e2a5d03f1b1bc07ebfbd93b61dcf8ad604"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 17:58:48 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Dec 15 18:01:52 2016 +0000"
      },
      "message": "Flush JIT data cache when committing code.\n\nOtherwise, executing compiled code may see old data from\nthe data cache.\n\nTest: ART_TEST_JIT\u003dtrue test-art-target on arm/arm64\nTest: run-libcore-tests.sh (especially jsr166) on arm/arm64\nChange-Id: Id037c68897aa0e9ccacd4c5121f3743fb722c6f3\n"
    },
    {
      "commit": "b7cc593a34896e230aab6d9718239b4f85c2dc63",
      "tree": "fdad7132bcdf125e8c2a499bf794bc6bcbba76d3",
      "parents": [
        "bdca0a27eb034152afba52f1d499d773b81908df",
        "b81a9840b44480bfeacd74b8d9f51e06f295411d"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 01:04:03 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Dec 15 01:04:03 2016 +0000"
      },
      "message": "Merge \"Revert \"Basic obsolete methods support\"\""
    },
    {
      "commit": "b81a9840b44480bfeacd74b8d9f51e06f295411d",
      "tree": "d79a3567b272b6eb4fb94d66a537cf92bef455db",
      "parents": [
        "d8936da27b792d1ca02e59c92456a1a53c7b9905"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Thu Dec 15 00:59:05 2016 +0000"
      },
      "message": "Revert \"Basic obsolete methods support\"\n\nThis reverts commit d8936da27b792d1ca02e59c92456a1a53c7b9905.\n\nReason for revert: Some sort of race in JIT\n\nChange-Id: Ibb4e520bb0721d6d7aa2c841a52eb5baff07740e\n"
    },
    {
      "commit": "6d736d8edb0692ac70044c18045e2fcb3d14c1e5",
      "tree": "7b7c9973a04d9231af44fc967ebe49f1c835a861",
      "parents": [
        "7a8e16c827efc866d01b5cbca835b18fe29a83ab",
        "d8936da27b792d1ca02e59c92456a1a53c7b9905"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 14 22:21:27 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Dec 14 22:21:28 2016 +0000"
      },
      "message": "Merge \"Basic obsolete methods support\""
    },
    {
      "commit": "d8936da27b792d1ca02e59c92456a1a53c7b9905",
      "tree": "6a593dd426e7f4a15c651dd3b872f22fb64f09ce",
      "parents": [
        "7c73bf3518eea7544406eadfed6946411c54a267"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Nov 28 16:24:32 2016 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Wed Dec 14 13:01:27 2016 -0800"
      },
      "message": "Basic obsolete methods support\n\nAdd support for executing obsolete methods following redefinitions.\nThis support includes methods that have been jitted. This does not add\nany additional validity checks to our redefinition functions.\n\nNote using work-arounds to ensure 916 works pending some fixes to the\ncompiler, deoptimizer, or both.\n\nTest: ./test/run-test --host 914\nTest: ./test/run-test --host 915\nTest: ./test/run-test --host 916\nTest: mma -j40 test-art-host\nTest: ART_TEST_JIT\u003dtrue \\\n      ART_TEST_INTERPRETER\u003dtrue mma -j40 test-art-host\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64\nTest: ./art/tools/run-jdwp-tests.sh --mode\u003dhost --variant\u003dX64 --no-jit\n\nBug: 32369913\nBug: 33630159\n\nChange-Id: I78ef95f484146f1fb93c37fc50f56575bdab2432\n"
    },
    {
      "commit": "22384aeab988df7fa5ccdc48a668589c5f602c39",
      "tree": "daca06adfc92c93017618c3729af54ed40214ba4",
      "parents": [
        "0ee6447c63e354131dec78743ccabcbc964129e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 22:33:36 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 23:06:38 2016 +0000"
      },
      "message": "Revert \"Revert \"Add kJitTableAddress for HLoadClass.\"\"\n\nThis reverts commit d2d5262c8370309e1f2a009f00aafc24f1cf00a0.\n\nChange-Id: I6149d5c7d5df0b0fc5cb646a802a2eea8d01ac08\n"
    },
    {
      "commit": "d2d5262c8370309e1f2a009f00aafc24f1cf00a0",
      "tree": "15b542ac079f30043cd3654cf5d3c40ae3ea34d0",
      "parents": [
        "5b12f7973636bfea29da3956a9baa7a6bbe2b666"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 16:28:54 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 16:28:54 2016 +0000"
      },
      "message": "Revert \"Add kJitTableAddress for HLoadClass.\"\n\nOne test failure after merge.\n\nThis reverts commit 5b12f7973636bfea29da3956a9baa7a6bbe2b666.\n\nChange-Id: I120c49e53274471fc1c82a10d52e99c83f5f85cc\n"
    },
    {
      "commit": "5b12f7973636bfea29da3956a9baa7a6bbe2b666",
      "tree": "a2cd41c1d3c09abc594a76af11b7bebc302a2870",
      "parents": [
        "0dd27eb2b51d030866c25dbf8e7bb737eb35a888"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Dec 09 11:26:35 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 12 11:50:24 2016 +0000"
      },
      "message": "Add kJitTableAddress for HLoadClass.\n\nThis new kind loads classes from the root table associated with\nJIT compiled code.\n\nAlso remove kDexCacheAddress, which is replaced by kJitTableAddress.\n\ntest: ART_TEST_JIT\u003dtrue test-art-host-jit test-art-target-jit\nChange-Id: Ia23029688d1a60c178bf2ffa7463927c5d5de4d0\n"
    },
    {
      "commit": "f4b94427072a42ee6814aa6e1abc04ced5235355",
      "tree": "c50d0748fdcc78d53c7cab5bdd9555a922c6cc73",
      "parents": [
        "3bdc662e713289655c744c7ba3d3e5316b276c45"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 05 00:10:09 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Dec 05 00:10:09 2016 +0000"
      },
      "message": "Set the root table size when allocating.\n\nIn order to deallocate it at any point.\n\ntest: ART_TEST_JIT\u003dtrue m test-art-host-run-test-jit\nChange-Id: I36574fd1a34c9d67800a164fa801db7a17c827bf\n"
    },
    {
      "commit": "063fc772b5b8aed7d769cd7cccb6ddc7619326ee",
      "tree": "bc165781989087a998721991504e589a7d5b0926",
      "parents": [
        "48d08a4233ee4450b0d5073d41445f9dd1f17191"
      ],
      "author": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Tue Aug 02 11:02:54 2016 -0700"
      },
      "committer": {
        "name": "Mingyao Yang",
        "email": "mingyao@google.com",
        "time": "Thu Dec 01 11:15:47 2016 -0800"
      },
      "message": "Class Hierarchy Analysis (CHA)\n\nThe class linker now tracks whether a method has a single implementation\nand if so, the JIT compiler will try to devirtualize a virtual call for\nthe method into a direct call. If the single-implementation assumption\nis violated due to additional class linking, compiled code that makes the\nassumption is invalidated. Deoptimization is triggered for compiled code\nlive on stack. Instead of patching return pc\u0027s on stack, a CHA guard is\nadded which checks a hidden should_deoptimize flag for deoptimization.\nThis approach limits the number of deoptimization points.\n\nThis CL does not devirtualize abstract/interface method invocation.\n\nSlides on CHA:\nhttps://docs.google.com/a/google.com/presentation/d/1Ax6cabP1vM44aLOaJU3B26n5fTE9w5YU-1CRevIDsBc/edit?usp\u003dsharing\n\nChange-Id: I18bf716a601b6413b46312e925a6ad9e4008efa4\nTest: ART_TEST_JIT\u003dtrue m test-art-host/target-run-test test-art-host-gtest\n"
    },
    {
      "commit": "b84defb1b09803d5a47035e8010ac43984da1d4c",
      "tree": "081b63ee8a4ce0f06a208e269a4076331d0d6fce",
      "parents": [
        "07e6a7947f3279f66f14f7af045065b5297294c2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 16:02:16 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 16:02:16 2016 +0000"
      },
      "message": "Do not call IsMarked on null.\n\nThe concurrent collector checks it.\n\nTest: ART_TEST_JIT\u003dtrue test-art-host-run-test-jit\nChange-Id: I02c2462ce1d8f3092f0b2f52f8b6dede8ff4a339\n"
    },
    {
      "commit": "c9e2fc27c57d4c007d26081a8e60b244ecba8665",
      "tree": "cd59bdb099bf2342f4400c37cfbf6ea827a56632",
      "parents": [
        "9ebca690fdfb36fe1a689fd32c3d05d999497768",
        "e51ca8bfa8a193b64901ad214842f213adca92eb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 30 13:57:30 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Nov 30 13:57:30 2016 +0000"
      },
      "message": "Merge \"Move inline caches GC handling in JitCodeCache.\""
    },
    {
      "commit": "e51ca8bfa8a193b64901ad214842f213adca92eb",
      "tree": "b07b2534edc592d68b5461a3bdb8a31241892d54",
      "parents": [
        "eb9c58e88f8e0f4a0a413efce04b49b183ad23e3"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 14:49:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 29 21:05:51 2016 +0000"
      },
      "message": "Move inline caches GC handling in JitCodeCache.\n\nMake the classes they hold weak references and visit\nthem during SweepJitRoots.\n\nThis fixes the newly introduced deadlock:\n\nThread1:\n1) Lock JitCodeCache lock to create Profiling info for\n  ArtMethod m.\n2) m is a copied method, we need to track the actual holder,\n   needing to decode a weak reference.\n3) Weak references are not accessible due to GC.\n\nGC Thread:\n- Disallow weak reference access.\n- Wait for checkpoint.\n\nThread2:\n- Try to lock JitCodeCache lock\n- Deadlock, as Thread1 owns the JitCodeCache lock.\n\nTest: test-art-host\nbug: 31289185\nbug: 33198826\n\nChange-Id: I7ee17631015450ace8d2a0264415a81c5a902bb8\n"
    },
    {
      "commit": "b18a669259aa6ba08d9ca01b5b32c1aa0417138b",
      "tree": "c8f5260d9b68614f85b2947d81122ffcaf99fdec",
      "parents": [
        "35b6546b0a4fe423ed6f27d8c5b709d5191e99ef"
      ],
      "author": {
        "name": "Artem Udovichenko",
        "email": "artem.u@samsung.com",
        "time": "Thu Nov 17 10:51:58 2016 +0300"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 28 11:38:03 2016 +0000"
      },
      "message": "Cache flush/invalidate needs RWX permission\n\nWhen generating JIT code, perform cache maintenance operations before\nremoving page write permissions. Errata on some cores require data\nflush operations to be followed by data invalidate operations\nrequiring write permission.\n\nTest: ART_TEST_JIT\u003dtrue test-art-target on an arm64 device.\nbug: 27265969\n\nChange-Id: I70cbb0dc2ea37e42f2011d23333e386ae3f639c7\n"
    },
    {
      "commit": "7a704bea1b1ff1e7deb903513997e0f35040287b",
      "tree": "e94262da7f17cc3ffd4e7a8df337cbd96f62da0b",
      "parents": [
        "c394d0558de9afff6ab8b87ae9706497e01f37ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 22 13:24:40 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Nov 22 13:30:47 2016 -0800"
      },
      "message": "Always fill in root table length\n\nOtherwise, there may be DCHECK failure in JitCodeCache::ClearData.\nFixes gcstress JIT tests.\n\nTest: test/run-test --host --relocate --prebuild  --64 --jit --gcstress --dev 021-string2\n\nChange-Id: I757ccd1e5a015c5e686254417a2a3f68b650da1c\n"
    },
    {
      "commit": "f46501c6ad11025843682267c10f221323a206b1",
      "tree": "a5b77de81f5ab31e66082b02b225e7fe56877f98",
      "parents": [
        "71d15102b52af67e8fe1193192aa2b4cd1956ae0"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 13:45:36 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 22 14:21:31 2016 +0000"
      },
      "message": "Clear the right data pointer.\n\nInternally, stack_map_data is an offset of the roots_data allocation.\nPass both to the ClearData method, which will use the right pointer\nto deallocate.\n\nTest: test-art-host in debug mode\nChange-Id: Ibfe38e7f1853870076048427f2efe7121c11c136\n"
    },
    {
      "commit": "132d8363bf8cb043d910836672192ec8c36649b6",
      "tree": "42ee8b08f0323e9762675333b50a4c218ecdefc7",
      "parents": [
        "e89667815b9d0a1eacb91678fed2a7518bb07cc2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 16 09:19:42 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 18 14:31:30 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"Revert \"JIT root tables.\"\"\"\"\n\nTest: 626-set-resolved-string, test-art-host, test-art-target\nTest: run-libcore-tests.sh\nTest: phone boots and runs\n\nThis reverts commit 3395fbc20bcd20948bec8958db91b304c17cacd8.\n\nChange-Id: I104b73d093e3eb6a271d564cfdb9ab09c1c8cf24\n"
    },
    {
      "commit": "3395fbc20bcd20948bec8958db91b304c17cacd8",
      "tree": "e0d00b412961e2aaa0dff91317a9f4168189e5fb",
      "parents": [
        "75afcdd3503a8a8518e5b23d21b6e73306ce39ce"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 12:40:52 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Nov 14 12:40:52 2016 +0000"
      },
      "message": "Revert \"Revert \"Revert \"JIT root tables.\"\"\"\n\nlibcore failures:\ndalvikvm32 F 11-14 03:04:06 14870 14870 jit_code_cache.cc:310] Check failed: new_string !\u003d nullptr\n\nThis reverts commit 75afcdd3503a8a8518e5b23d21b6e73306ce39ce.\n\nChange-Id: I5a6b6b48aa79a763d1ff1ba4d85d63811254787d\n"
    },
    {
      "commit": "75afcdd3503a8a8518e5b23d21b6e73306ce39ce",
      "tree": "b49afc4772fa72319475f96ed66d744bb03e803c",
      "parents": [
        "ee48b0f11df812d98de5c989e1f6d95a21515564"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 10 10:38:11 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Nov 11 13:18:24 2016 +0000"
      },
      "message": "Revert \"Revert \"JIT root tables.\"\"\n\nAlso  contains Revert \"Support kJitTableAddress in x86/arm/arm64.\"\n\nThis reverts commit 4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035.\nThis reverts commit 997d1217830c0a18b70faeabd53c04700a87d7d9.\n\nTest: ART_USE_READ_BARRIER\u003dtrue/false test-art-host test-art-target\n\nChange-Id: I77cb1e9bf8f1b4c58b72d3cf5ca31ced2aaa1ea3\n"
    },
    {
      "commit": "4acd03638fcdb4e5d1666f8eec7eb3bf6d6be035",
      "tree": "1220262d0ed22d91777c68a8a568348cddf820cb",
      "parents": [
        "ac3ebc3150760425ed00abd56da48f9a6e0666bc"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:31 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Nov 09 17:30:31 2016 +0000"
      },
      "message": "Revert \"JIT root tables.\"\n\nMay be the offender for jit-gcstress failure of 902.\n\nThis reverts commit ac3ebc3150760425ed00abd56da48f9a6e0666bc.\n\nChange-Id: I9ea6c9236fd1729fed7d1868dd8a111172932308\n"
    },
    {
      "commit": "ac3ebc3150760425ed00abd56da48f9a6e0666bc",
      "tree": "3c5c923bb00a898e035c0e7c4b8a6a684a578419",
      "parents": [
        "76ad2405b40547e0ab4fc401fb8303189ff783eb"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 05 13:13:50 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 08 17:21:30 2016 +0000"
      },
      "message": "JIT root tables.\n\nImplement root tables for the JIT. Each JIT compiled method\ngets a table allocated before the stack maps.\n\nThe table gets visited through Runtime::SweepSystemWeaks.\n\nImplement String roots for x86_64 as an example.\n\nTest: test-art-host test-art-target\n\nChange-Id: Id3d5bc67479e08b52dd4b253e970201203a0f0d2\n"
    },
    {
      "commit": "709b070044354d9f47641f273edacaeeb0240ab7",
      "tree": "3a8ac051d7c35076303984d0d892cdd396b60427",
      "parents": [
        "1a4de6a2453a3ad0310aca1a44e7e2d3b6f53bc1"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Oct 13 09:12:37 2016 -0700"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Tue Oct 18 14:10:04 2016 -0700"
      },
      "message": "Remove mirror:: and ArtMethod deps in utils.{h,cc}\n\nThe latest chapter in the ongoing saga of attempting to dump a DEX\nfile without having to start a whole runtime instance.  This episode\nfinds us removing references to ArtMethod/ArtField/mirror.\n\nOne aspect of this change that I would like to call out specfically\nis that the utils versions of the \"Pretty*\" functions all were written\nto accept nullptr as an argument.  I have split these functions up as\nfollows:\n1) an instance method, such as PrettyClass that obviously requires\nthis !\u003d nullptr.\n2) a static method, that behaves the same way as the util method, but\ncalls the instance method if p !\u003d nullptr.\nThis requires using a full class qualifier for the static methods,\nwhich isn\u0027t exactly beautiful.  I have tried to remove as many cases\nas possible where it was clear p !\u003d nullptr.\n\nBug: 22322814\nTest: test-art-host\nChange-Id: I21adee3614aa697aa580cd1b86b72d9206e1cb24\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "bdf7f1c3ab65ccb70f62db5ab31dba060632d458",
      "tree": "25cc77adfeb05232d0ab00aa561a693f1d71745c",
      "parents": [
        "d7eabc2cc1a88c1f7f927da61246ae65aab0626c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 16:38:47 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Aug 30 17:02:53 2016 -0700"
      },
      "message": "ART: SHARED_REQUIRES to REQUIRES_SHARED\n\nThis coincides with the actual attribute name and upstream usage.\nPreparation for deferring to libbase.\n\nTest: m\nTest: m test-art-host\nChange-Id: Ia8986b5dfd926ba772bf00b0a35eaf83596d8518\n"
    },
    {
      "commit": "ba65cc4a71273904294245cb37ce70e5bce797e3",
      "tree": "d53a7a816ec4c8e5bdbf80729ac945787b27bf2c",
      "parents": [
        "1a827a05afbffd5bee241f245f9aa3c40b4dbae4",
        "542451cc546779f5c67840e105c51205a1b0a8fd"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Aug 02 03:47:35 2016 +0000"
      },
      "message": "Merge \"ART: Convert pointer size to enum\""
    },
    {
      "commit": "542451cc546779f5c67840e105c51205a1b0a8fd",
      "tree": "11e09bb5abaee12dddffefbe7e425291076dfa7a",
      "parents": [
        "85c4a4b8c9eabfe16e4e49f9b4aa78c1bf4be023"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 26 09:02:02 2016 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Mon Aug 01 18:54:48 2016 -0700"
      },
      "message": "ART: Convert pointer size to enum\n\nMove away from size_t to dedicated enum (class).\n\nBug: 30373134\nBug: 30419309\nTest: m test-art-host\nChange-Id: Id453c330f1065012e7d4f9fc24ac477cc9bb9269\n"
    },
    {
      "commit": "cf48fa030780c3185f225d558b704c396f7713cc",
      "tree": "5905f8636ede57661450c057d56bb912bb1a532c",
      "parents": [
        "3d733104c99ce02f5fd042d69c1cecf295208872"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jul 30 22:49:11 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Sat Jul 30 22:49:11 2016 +0100"
      },
      "message": "Put the deletion of profiling info under a GC critical section.\n\nOtherwise the GC could see dangling pointers.\n\nbug:30033802\nChange-Id: I839c4f6e537aba98769e99e4d75ff869c9ff13eb\n"
    },
    {
      "commit": "9962962eb26f906e8f92cde1d6854dadbbc5e8ad",
      "tree": "1cf89988fdb5b572b798310ea00b137bc7e6fb1e",
      "parents": [
        "6543933527f4d2b3f6bb65532c8af166547f9bac"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Apr 19 16:33:46 2016 +0100"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Fri Apr 22 16:16:19 2016 +0100"
      },
      "message": "ProfileSaver: query profiling_infos instead of the code_map\n\nThis is the first step in being able to record profiles without jit\nbeing active.\n\nBug: 27916886\n\n(cherry picked from commit e2d066d0337b7c81d47e4806e6025b70d83fcd56)\n\nChange-Id: Ie36c4b4a11d3b6e5de959121a1acea22a9e25121\n"
    },
    {
      "commit": "480d5108fa62f28cbc2e7072610f974953ff73a8",
      "tree": "412e63bec412512b28cfb9bebcba7d9e8591fbe8",
      "parents": [
        "f59149a151ee694484e21da7b3b207920dead5a6"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 18 12:09:30 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Apr 18 12:32:44 2016 +0100"
      },
      "message": "Fix interaction between instrumentation and jit lock.\n\nThe jit lock needs to have higher priority than the\ndeoptimized methods lock.\n\nbug:28236735\n\nChange-Id: I82862b8bfc82a5641156290926c04c80b1371534\n"
    },
    {
      "commit": "71cd50fb67fa48667b0ab59aa436a582c04ba43d",
      "tree": "9f99f187060b0ef3a118120db367555d8f757f0c",
      "parents": [
        "9b863613454ee139370d24e65adb41fabe75d482"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Apr 14 15:00:33 2016 +0100"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Apr 15 15:42:31 2016 +0100"
      },
      "message": "Add weight to compiled/interpreter transitions.\n\nAlso:\n- Cleanup logging.\n- Check ArtMethod status before adding compilation requests.\n- Don\u0027t request osr compilation if we know AddSamples does not come\n  from a back edge.\n\nBug: 27865109\n\nChange-Id: I84512f7d957b61ce2458360ed430adb151830278\n"
    },
    {
      "commit": "454b3b6774fe07765273b917ccc97da2eba776ac",
      "tree": "3fbfefeb7901e22181011ba311de1b9cec1e367d",
      "parents": [
        "2c6760a0eb1e05d3a89a6cca9d2746da3d547e9e"
      ],
      "author": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Thu Apr 07 14:42:47 2016 -0700"
      },
      "committer": {
        "name": "buzbee",
        "email": "buzbee@google.com",
        "time": "Fri Apr 08 09:09:07 2016 -0700"
      },
      "message": "ART: Fix race in on-stack replacement\n\nThe expected sequence of events for on-stack replacement is:\n\n   1. Method goes warm, triggering enhanced profiling\n   2. Method goes hot, triggering method compilation\n   3. Method goes really hot, triggering an osr method compilation.\n   4. Interpreter polls for the existence of an osr entry point,\n      and transitons to compiled code if found.\n\nWe have a race problem if #2 and #3 happen closely together, and\nthe osr method compilation begins before the regular method\ncompilation.  In that case, the jit sees that the method is\nalready being compiled (the osr method - but it does not\ndistinguish the two), and discards the normal compilation request.\nSo, the osr version is compiled and the normal version is discarded.\nIn #4, the MaybeDoOnStackReplacement() check assumes that a normal\nversion of the compiled method must exist before doing an on-stack\nreplacement, so it keeps returning false.\n\nThis is why we were seeing sporadic timeout failures of\n570-checker-osr when the mterp fast branch profiling was\nintroduced.  The branch profiling performance enhancements\ngreatly reduced the time between #2 and #3, increasing the liklihood\nof losing the race.  Further, the new code clamped hotness to avoid\nwrap-around.  The race existed (and likely occurred) in the previous\nversion, but because hotness counters were allowed to overflow and\nwrap around you\u0027d eventually hit the threshold a second time and\ntry again - masking the problem.\n\nTip \u0027o the hat to Serguei Katkov for identifying the problem.\n\nA possible solution (taken in this CL) is to differentiate osr\ncompilations from normal method compilations.\n\nBug: 27939339\nChange-Id: I71044516b35dc69de9fc2d2a445e33809ac650ed\n"
    },
    {
      "commit": "9d07e3d128ccfa0ef7670feadd424a825e447d1d",
      "tree": "dfb677fd75f0f297fef9bc49311cf1d22c770f56",
      "parents": [
        "eb98c0ded592cfca8187c744393c82efd1020b2a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 31 12:02:28 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Apr 04 17:50:20 2016 +0100"
      },
      "message": "Clean up OatQuickMethodHeader after Quick removal.\n\nThis reduces the size of the pre-header by 8 bytes, reducing\noat file size and mmapped .text section size. The memory\nneeded to store a CompiledMethod by dex2oat is also reduced,\nfor 32-bit dex2oat by 8B and for 64-bit dex2oat by 16B. The\naosp_flounder-userdebug 32-bit and 64-bit boot.oat are each\nabout 1.1MiB smaller.\n\nDisable the broken StubTest.IMT, b/27991555 .\n\nChange-Id: I05fe45c28c8ffb7a0fa8b1117b969786748b1039\n"
    },
    {
      "commit": "b9a639df2f21dd67b9f4379f31b7ccc5dd48ebd6",
      "tree": "24a069d64f03333035da93382701b0ba0ebb1ef8",
      "parents": [
        "a373a33d33b8a5b4fd0d4c35645e2e4353ebde9b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 22 11:25:20 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 22 11:25:20 2016 +0000"
      },
      "message": "Fix braino in JitCodeCache.\n\nA OatQuickMethodHeader can never have its entry point be the\ninterpreter entrypoint.\n\nClear hotness counter of methods in more relevant places.\n\nChange-Id: I0563a57eace2e0e4fe2abc76f5e293ddf47b25e3\n"
    },
    {
      "commit": "6300fd77033817664aee3056c4ff5fab85698d2b",
      "tree": "55e14dca88cad3d5a733a9a7a50534556cb838b5",
      "parents": [
        "db1f7dac02f6dcecac3e032f10abbcdbf3cf4331"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 18 09:40:17 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 21 14:42:47 2016 +0000"
      },
      "message": "Code cleanup between debugger and jit.\n\nThis is to allow secondary dex files to be fully compiled.\n\n- No need to do full deopt anymore for breakpoints: code in boot.oat\n  is deoptimized as soon as the debugger attaches (and we decided that\n  existing frames could not be debugged), and application being\n  debugged is compiled debuggable.\n\n- jit should only call UpdateMethodsCode if exit stubs are not\n  installed due to lock violation otherwise (the lock level of the\n  jit code cache is lower than the deoptimization lock).\n  This part needs an overall cleanup beyond the scope of this change.\n\nChange-Id: I38d85dcb270db746c1d6b0ceb7893a1aad8c9655\n"
    },
    {
      "commit": "933330a192d43d7c7304120999907857a89c2f96",
      "tree": "a413b4df2a4b9fdb804983204168ee23cd9c9eb7",
      "parents": [
        "f808e8a0cc218c2b98023ef0e91f3c5b74ad2962"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 14:20:06 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 16 14:20:26 2016 +0000"
      },
      "message": "Add more statistics for memory use of the JIT.\n\nCollect data for stack maps, profiling info, and compiled code.\n\nbug:27520994\n\nChange-Id: Ic87361230c96ce0090027a37d750e948d806c597\n"
    },
    {
      "commit": "07e3ca9a46801990d662c48d0fddedc63c4c053c",
      "tree": "94fedc96b28c6a46d2b83c80b2cfefd4c2898f4a",
      "parents": [
        "b7f257f353b1eb2db2732939a0404c118316891d"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 09:57:57 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 11 09:57:57 2016 +0000"
      },
      "message": "Fix thread race when fetching the ProfilingInfo object.\n\nProblem is:\n1) Compiler fetches the ProfilingInfo of A, it\u0027s null.\n2) Mutator creates the ProfilingInfo.\n3) Compiler notifies it\u0027s not using A anymore, calls\n   ProfilingInfo::DecrementInlineUse -\u003e Crash as we expected\n   ProfilingInfo::IncrementUse to be called before.\n\nAlso update some namings to better reflect what is going on.\n\nChange-Id: I55ea4c5d81988131467095e18a0d13a8be9d0ef7\n"
    },
    {
      "commit": "e87fe952e94ae97ebdf84e342d91eeb8b9aef06b",
      "tree": "69e14ce007f842ca72fe7e07164ca2374ec5cf6a",
      "parents": [
        "93e46b2a14050d8f65088ccb44d6fab6c1c46b2c",
        "b6e20ae17d0881a66c22532e4152ce6779454a92"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 10 10:47:57 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 10 10:47:57 2016 +0000"
      },
      "message": "Merge \"Clear inline caches at each full GC.\""
    },
    {
      "commit": "b6e20ae17d0881a66c22532e4152ce6779454a92",
      "tree": "35d7fbfb812aef11ea51010794dce26eb91c1ae4",
      "parents": [
        "8a8c84114b16b8971bc2d3c5c7e0e31470d1a68b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Mar 07 14:29:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 09 17:25:19 2016 +0000"
      },
      "message": "Clear inline caches at each full GC.\n\nThis fixes occasional failures of 141-class-unload.\n\nAlso fix a bug where clearing inline caches also cleared the dex\npc associated with it.\n\nbug:26846185\nbug:23128949\nChange-Id: I77bf1dee229d7764c3cc21440829c7fba7b37001\n"
    },
    {
      "commit": "33fbf37feb959293b10d0b6e26d5e8ee7dff786c",
      "tree": "b3abd06a7d8e8b79c547971f4dc9a2904baac006",
      "parents": [
        "83537c6e2fe6518e0581a8466ef41e90ea7b5516"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 07 13:48:08 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Mar 07 14:44:20 2016 -0800"
      },
      "message": "Add systrace logging to ScopedCodeCacheWrite\n\nShows if we are taking a long time to mprotect.\n\nBug: 27502458\n\n(cherry picked from commit 462cd2cfa8c5fbb6548419eb8f27b448a12aca11)\n\nChange-Id: Ic0f24641f5856b13f3b949dcd53dc01ec952d171\n"
    },
    {
      "commit": "32ce2adefb8a3d0eda59a29f5e87c1eb43eef796",
      "tree": "50aaa40b31ede355359765259edc7989485cc7d5",
      "parents": [
        "c71dc3852edfa8e0cd2083d12845ff8607e189ff"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 14:58:03 2016 -0800"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Mar 04 18:37:19 2016 -0800"
      },
      "message": "Add more systracing everywhere\n\nAdded to:\nJIT\nDexFile functions\nOat file manager\n\nAdded helper ScopedTrace to prevent errors and reduce excess code.\n\nBug: 27502458\n\n(cherry picked from commit dabdc0fe183d4684f3cf4d70cb09d318cff81b42)\n\nChange-Id: Ifaeff8913d79eefc797380987d13cc00456266f8\n"
    },
    {
      "commit": "9abb2978f09643227664ab70c0677744b8f6e946",
      "tree": "69b4bb602fa5c58d6d0eabdf5f79aee2f6a60c52",
      "parents": [
        "a3ed89f687dbaa9b5321b2d38d41b487a4208b80"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 04 14:32:59 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Mar 04 15:15:28 2016 +0000"
      },
      "message": "Fix very rare bug around JIT code cache collection.\n\nThe bug is the following:\n1) JIT thread: We start a code cache collection.\n2) JIT thread: We mark all code that is in the call stack of all\n   threads.\n3) Mutator thread: after marking its stack, resumes and does call\n   that pushes JIT compiled code to the call stack.\n4) Mutator thread: deoptimizes compiled code of ArtMethod Foo,\n   and therefore updates the entry point of Foo through\n   JitCodeCache::InvalidateCompiledCodeFor.\n   (Note that updating the entrypoint could also be done through\n   instrumentation).\n5) JIT thread: Call JitCodeCache::RemoveUnusedAndUnmarkedCode.\n   The method used to remove entries that were not entrypoints.\n   It sees the compiled code for Foo but that is not an entrypoint\n   anymore, so deletes it.\n6) Mutator thread problem: it now has compiled code in its call\n   stack that is deleted.\n\nIf it\u0027s only one mutator thread, we only hit a DCHECK when walking\nthe stack, as we are now seeing an invalid pc. The deoptimization\nwill longjmp to the caller of that invalid entry anyway.\n\nHowever, if multiple mutator threads are involved, one thread\nmight invalidate the compiled code while the other is still\nrunning it. And we end up deleting code that is in the call\nstack of a thread, and we will crash.\n\nThe fix is to mark entrypoints before marking call stacks,\nso that anything a thread might jump to is marked and kept.\n\nbug:27424509\nbug:23128949\nbug:26846185\n\nChange-Id: I07cd08cedd96b9900629f7535e95404f622104ea\n"
    },
    {
      "commit": "bcd94c8ea9bde4e075c25fbdfb3a2ef6858eed7b",
      "tree": "2719f29261e1fced1c94ef309e12230ef103a79e",
      "parents": [
        "e283588e56df7eebabd795b98264003105b20ece"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 03 13:23:33 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 03 14:02:16 2016 +0000"
      },
      "message": "Refine statistics around the JIT.\n\n- Better namings.\n- Now also time the code cache collection time.\n- Random cleanups.\n\nbug:23128949\nbug:27445008\nbug:27442890\n\nChange-Id: I1dd52544bea678af868e7c47907f7a0fc9a146c3\n"
    },
    {
      "commit": "e283588e56df7eebabd795b98264003105b20ece",
      "tree": "56572fedc4552ec3ddbca891c2e3923f3a5befc6",
      "parents": [
        "e4cec517faf1c74d6895e0e5b512a6e2f83a0e06",
        "1e7da9bd04bdd2664a4196f1d7e285c010f8881f"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Mar 03 09:26:46 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Mar 03 09:26:46 2016 +0000"
      },
      "message": "Merge \"Do a TryLock when allocating a ProfilingInfo from the interpreter.\""
    },
    {
      "commit": "511e41b4ec2d378a5c434598ebd0b3d6136fff9d",
      "tree": "e1b9d4e67ae2226d6f6abfb452daf837b619d151",
      "parents": [
        "785eeae66ebeb68d05878add2777df855846a1e2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 17:09:35 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 17:45:47 2016 +0000"
      },
      "message": "Clear inline caches if a ProfilingInfo gets revived.\n\nThis avoids stalled class references.\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\nChange-Id: I9539215241708e26fef887e02201ce1feabc2d1a\n"
    },
    {
      "commit": "35122443e5f8606cc5a660ac32745a06aefb341b",
      "tree": "be44db33797ae729342c671fb95b7746e363e799",
      "parents": [
        "f9f3c5b0ebacbfed59af9c5c81fe9752e6b1258c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 12:05:30 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Mar 02 16:35:18 2016 +0000"
      },
      "message": "Revert \"Revert \"Use the interpreter as a heartbeat for the JIT.\"\"\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit a96917a6983a5abbe973255a3846fda549fb1657.\n\nChange-Id: I5c4f0d87d3293a6a7ab56a33396670704b66a347\n"
    },
    {
      "commit": "a96917a6983a5abbe973255a3846fda549fb1657",
      "tree": "aa03a2a6d0f70faa20f3579458abde24f71abb04",
      "parents": [
        "7273a5d045d3ceb3ff011ad65765356b69b155e8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 22:18:02 2016 +0000"
      },
      "message": "Revert \"Use the interpreter as a heartbeat for the JIT.\"\n\nHits a DCHECK testing libcore.\n    art F 11973 12675 art/runtime/jit/jit_code_cache.cc:644] Check failed: it.second-\u003eGetProfilingInfo(sizeof(void*)) !\u003d nullptr \n\n\nBug: 27398183\nBug: 23128949\nBug: 26846185\n\nThis reverts commit 7273a5d045d3ceb3ff011ad65765356b69b155e8.\n\nChange-Id: I6614a82e775ea71aa16f041313f67546db41eac8\n"
    },
    {
      "commit": "1e7da9bd04bdd2664a4196f1d7e285c010f8881f",
      "tree": "4d028a231ecbc684eebe1b4a5a3022ff46801769",
      "parents": [
        "09294dc760d77d64ea4168c1fd6d96fbfbe38018"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:11:40 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:13:17 2016 +0000"
      },
      "message": "Do a TryLock when allocating a ProfilingInfo from the interpreter.\n\nThis removes some thread contentions just for allocating ProfilingInfo.\n\nbug:23128949\n\nChange-Id: I9ff7d44c4b0ee272425cf4c6248d3065f67958f3\n"
    },
    {
      "commit": "7273a5d045d3ceb3ff011ad65765356b69b155e8",
      "tree": "addf5dcdc82e54605cfb9a622d284bf06b849327",
      "parents": [
        "c3bcf40e905c53ec857ec40a9ae45f4c86738929"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 29 15:35:39 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Mar 01 14:03:32 2016 +0000"
      },
      "message": "Use the interpreter as a heartbeat for the JIT.\n\nWhen doing a partial code cache collection, update all entrypoints to\ninterpreter, so that the next full collection will remove code\nthat wasn\u0027t executed during that window.\n\nbug:27398183\nbug:23128949\nbug:26846185\n\nChange-Id: I4423f5c4810dac183dc8973078bf218818745e80\n"
    },
    {
      "commit": "fcdd72941810f03460a8efca0c6255439be80c35",
      "tree": "ce279d446fd5fa4e9dd1e42b53444e991b90ae2f",
      "parents": [
        "1470073c3a9ce17a0f7d3167345746d0b8d2202b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 25 13:27:47 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 25 13:27:47 2016 +0000"
      },
      "message": "Dump the number of OSR compiled code.\n\nChange-Id: I20efc80e8556da8220dab92c3a7947f883d48cf8\n"
    },
    {
      "commit": "b0d220835f2ddc03510f17fcc4fb4c64b426a0f5",
      "tree": "ab5041089c04767d7957cd99fc7af43f5f47dc48",
      "parents": [
        "a6be605d83473c8c97245f823f3da2596cb63817"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 24 17:18:25 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 24 17:18:25 2016 +0000"
      },
      "message": "Forgot to initialize JIT memory use fields.\n\nChange-Id: I82ae97adffd8e633de048f044cdbdb953b2f9763\n"
    },
    {
      "commit": "8d37250f7b9a7839b11488f45a1842b025026f94",
      "tree": "d0394ebde45888dabd811852468afcf4b71c7bf1",
      "parents": [
        "a016ba5614054e27eada7f4815df7d4bac7ba8d8"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 13:56:43 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 14:33:16 2016 +0000"
      },
      "message": "Introduce partial code cache collection.\n\nIt will collect code that is known unused (because it deoptimized),\nand osr code.\n\nbug:26846185\n\nChange-Id: Ic27dfeb944efb2ca464039007ba365c1e0d4a040\n"
    },
    {
      "commit": "08e992e41e5e234ecc6b38a4ab53d4876fd077b6",
      "tree": "beb81c51031934f8b228f934de23d7666e56d11f",
      "parents": [
        "4764d4e253aaea1595bbe1f5aaa8677ea9319b79",
        "65b83d875e4f9c021bc8380024455c9f1e658b14"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Feb 23 10:52:11 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 23 10:52:11 2016 +0000"
      },
      "message": "Merge \"Add a new kReservedCapacity to decide when to start GC code.\""
    },
    {
      "commit": "65b83d875e4f9c021bc8380024455c9f1e658b14",
      "tree": "28b8665ca9d0a2fcb3d6210412e58f5cb42af0b4",
      "parents": [
        "d9c05309e8fab26a6087abd5773859f112cdefe9"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 13:14:04 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Mon Feb 22 13:14:04 2016 +0000"
      },
      "message": "Add a new kReservedCapacity to decide when to start GC code.\n\nChange-Id: Ib9d0ad9bc86c66ac29975f7f907f79f842342500\n"
    },
    {
      "commit": "38ea9bd50debc63ceb77ec1e65036d8e2070ec7d",
      "tree": "5c4755e1d3bffbd1cb6ebf514710dc52c7363c0a",
      "parents": [
        "05d77c2673082b371129f8d854439688533cfff2"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 19 16:25:57 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Fri Feb 19 16:25:57 2016 +0000"
      },
      "message": "Track memory usage of code cache.\n\nNeeded once we start having a strategy based on how full the code\ncache is.\n\nChange-Id: I181ad05e1c216afabf106f91ac54bbf144d7406a\n"
    },
    {
      "commit": "39e4fab868a6052e0fab75e2668600b0e26daa42",
      "tree": "55aed4a74028cd734a46a2cb6be58f73293ccb0a",
      "parents": [
        "442643920a6c539e98aad76594e99b932b5631ba",
        "b88d59ef4fe611fe47e50a6a19785e03bbd5f93b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 12:09:53 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 17 12:09:53 2016 +0000"
      },
      "message": "Merge \"Be a bit smarter with JIT code triggering deoptimization.\""
    },
    {
      "commit": "b88d59ef4fe611fe47e50a6a19785e03bbd5f93b",
      "tree": "7db030759bf4eb20df3bfef823e75b5a39a313a7",
      "parents": [
        "b93c21e83c8fbf0191093c01a8951adb5be9010b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 11:31:49 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 11:32:49 2016 +0000"
      },
      "message": "Be a bit smarter with JIT code triggering deoptimization.\n\nDo not re-use an OSR method that triggered deoptimization.\nAlso add a stack overflow check before doing OSR.\n\nbug:27094810\nChange-Id: I6ff6a7fb9b3df9b7c0ff37e3610595efa70ad067\n"
    },
    {
      "commit": "a9b91313cee629d81d4784798d03419fc7fa9e11",
      "tree": "0ee693fc2bfd64d72ab0e510de1167cdd879495f",
      "parents": [
        "7eca244e79480f2ecea341598524a53273959c2b"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 09:49:19 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Feb 17 09:51:16 2016 +0000"
      },
      "message": "We also need to delete osr entries when deleting ArtMethod.\n\nIn the unfortunate event an ArtMethod gets allocated at the\nsame location as an old (deleted) ArtMethod, the osr_code_map_\nlookup will succeed and return garbage. So we need to delete\nentries in the osr_code_map_ when an ArtMethod gets deleted.\n\nThis should finally fix:\ndalvik.system.DexClassLoaderTest#test_twoJar_diff_getResourceAsStream\n\nChange-Id: I7c8b775c3376a6cfcb907f09b783e393967ad82d\n"
    },
    {
      "commit": "d9994f069dfeaa32ba929ca78816b5b83e2a4134",
      "tree": "a826990f89d8f546921902933a4cc05b57196971",
      "parents": [
        "be89a6f1d9e41b154be3fe1da97cedb6964fbd35"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 11 17:35:55 2016 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Feb 11 21:47:46 2016 +0000"
      },
      "message": "Re-enable OSR.\n\nFixes two bugs:\n- Dealing with proxy methods, which the compiler and code cache\n  does not handle.\n- Dealing with phi types, that may have been speculatively optimized\n  but do not hold once jumping to the compiled code.\n\nChange-Id: I7dcd9976ef7b12128fff95d2b7ed3e69cc42e90a\n"
    }
  ],
  "next": "b331febbab8e916680faba722cc84b66b84218a3"
}
