)]}'
{
  "log": [
    {
      "commit": "5aead700219d9c9fc05524d5d72dc32cb1807c61",
      "tree": "84dac95f7627fefc8fd8d3dfbd5d6baf5d1e1a01",
      "parents": [
        "4f1e3288a845b91a5ce369865ec7e249f4f94622"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Mar 27 11:00:36 2019 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Thu Mar 28 09:22:07 2019 +0000"
      },
      "message": "ObjPtr\u003c\u003e-ify method/var handles, fix stale refs in tests.\n\nTest: m test-art-host-gtest\nTest: testrunner.py --host --interpreter\nBug: 31113334\nChange-Id: I89ea84f7970899643e437161b598d3232a182e98\n"
    },
    {
      "commit": "6ec2a1bf1cbecf17546df780dd0ad769042e1874",
      "tree": "09f7430f020e04dc892ff2c2152bb773cd45c0dd",
      "parents": [
        "2d3065e6ca0bd707bc998b7d260bb8e8ec07cf87"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue May 22 15:33:48 2018 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed May 23 13:48:31 2018 +0100"
      },
      "message": "ObjPtr\u003c\u003e-ify UnstartedRuntime, fix 2 stale reference uses.\n\nTest: Rely on TreeHugger.\nBug: 31113334\nChange-Id: I35f76c3e3b94dfca18dbe67aba065a1270f4e5ee\n"
    },
    {
      "commit": "c5b7564fdc187853d1f8266a54316ef402f83e02",
      "tree": "b0aeab247ceeef6ffa262c70251559643b4c2f0d",
      "parents": [
        "a7d37cf735f05cfc3a3585a5c44eb65d8a279874"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 16 15:12:11 2018 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed May 16 15:14:22 2018 -0700"
      },
      "message": "ART: Fix jvalue includes\n\nJValue::SetL is defined in the -inl header. Fix up some clients.\n\nTest: mmma art\nChange-Id: I903532c767873847f7746680cf35083cb3408ecf\n"
    },
    {
      "commit": "b8b9387c0d7420b463a9ca11bf18ae86f3ed0a65",
      "tree": "d7fba6a12a1d074d8d0c1a80d1eae0fd9a41b5ed",
      "parents": [
        "ae3c5cc582442e3493aa23155f2ee2f6b4613923"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Jan 30 07:51:10 2018 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Feb 22 12:45:02 2018 +0000"
      },
      "message": "ART: Support for VarHandle invokers\n\nEnables VarHandles to invoked by a MethodHandle.\n\nBug: b/65872996\nTest: art/test/run-test --host 713\n\nChange-Id: I4672dd50654396c2b45bd212a523698cf22879eb\n"
    },
    {
      "commit": "9e734c7ab4599d7747a05db0dc73c7b668cb6683",
      "tree": "dce1d1993734a947fb2e6f626eb1b425cb72143b",
      "parents": [
        "b496af808eaf3af5ebac50aef4fbec33323b5016"
      ],
      "author": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Thu Jan 04 17:56:19 2018 -0800"
      },
      "committer": {
        "name": "David Sehr",
        "email": "sehr@google.com",
        "time": "Fri Jan 05 11:07:19 2018 -0800"
      },
      "message": "Create dex subdirectory\n\nMove all the DexFile related source to a common subdirectory dex/ of\nruntime.\n\nBug: 71361973\nTest: make -j 50 test-art-host\nChange-Id: I59e984ed660b93e0776556308be3d653722f5223\n"
    },
    {
      "commit": "811bd5ff0189122d34e8a1b8ccda889bbba4c0d1",
      "tree": "278b128c15dc32657e06fd38b7111407edef552f",
      "parents": [
        "b51edffe1c0b331a4d4d5298938c7c1b31ebaf6a"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Dec 07 11:35:37 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Jan 06 08:49:07 2017 +0000"
      },
      "message": "ART: Make method handle runtime code callable from compiler.\n\nMost of this change is moving the existing method handles code, but it\nalso introduces a new header file, common_dex_operations.h, that has\nsome operations taken from interpreter_common.{h,cc} that are also used\nby method handles (perform call, set field, get field).\n\nBug: 30550796\nTest: m test-art-host\nChange-Id: I2235e13770a5562950f2767f65a25ca273479150\n"
    },
    {
      "commit": "ba28f9f62f9908e04be3097f900db4701dd3d392",
      "tree": "86e4807d97e144812495706f7f9d0d2cfab96540",
      "parents": [
        "689a331aded82340d2ab144d0adb9bbbbd4b53ff"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Oct 26 10:56:25 2016 +0100"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Nov 08 06:20:28 2016 +0000"
      },
      "message": "Argument conversions for setter/getter MethodHandles.\n\nTest: m test-art-host-run-test-959-invoke-polymorphic-accessors\nBug: 30550796\n\nChange-Id: I9898605fc9f9f8a80f47f9559f3ccb99b02b07c8\n"
    },
    {
      "commit": "2cb856c47b884a08485e2f08e6a3ef6a5bbf773a",
      "tree": "13ba1e1bcab2057670626243c79daef54a20249c",
      "parents": [
        "bcc17bd8bb1e6375e5f39c9ec3df84c7e6b9600e"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 02 12:01:26 2016 +0000"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Nov 02 17:08:33 2016 +0000"
      },
      "message": "Address review comments from change 000e1885701c8f.\n\nStyle fixes, and better OOM handling.\n\nbug: 30550796\nTest: make test-art-host\nChange-Id: I2ab58e25bd08daace6609ba45d860994a354280f\n"
    },
    {
      "commit": "000e1885701c8fdad07a784e3771881fa9be1d8a",
      "tree": "77d11180fb1d93903fa6c6cd58383d91a82affc5",
      "parents": [
        "b5cc1d1321e36d38cd48ae079438a8758b82edc1"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 24 17:14:25 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Oct 28 14:11:45 2016 +0100"
      },
      "message": "method_handles: Complete support for emulated stack frames.\n\nMost of this change is a refactor that templatizes the code\nthat performs argument conversions. This allows us to copy arguments\nbetween two shadow frames, or an emulated stack frame and a shadow\nframe.\n\nTest: make test-art-host\nBug: 30550796\n\nChange-Id: I23e65735a2dbd28f3c7b7d1ccf9762e77e0cf1f1\n"
    },
    {
      "commit": "c3b7f1a34667386a2e55f59db795082a9e2408fd",
      "tree": "6a454999907c9813d1d3c8e1ae4d3d50545fd4d2",
      "parents": [
        "75dccb7238714358fca9e5e993e4daabe24af085"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Oct 19 11:05:04 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Oct 26 09:53:40 2016 +0100"
      },
      "message": "Interpreter: Add support for method handle transforms [Part 1].\n\nMethod handle transformations are implemented in Java by\nsubclasses of java.lang.invoke.Transformers.Transformer. Transformer\nextends MethodHandle and provides a transformer method defined like so:\n\npublic static class TransformerImpl extends Transformer {\n    @Override\n    public void transform(EmulatedStackFrame emulatedStackFrame) throws Throwable {\n    }\n}\n\nAn EmulatedStackFrame is synthesized by the runtime based on the\ncaller stack frame and arguments specified by the instruction. It will\ncontain all input arguments to the method their associated types. It\nwill also exactly match the method type specified by the target handle\n(i.e, argument coversions are performed by the runtime).\n\nThe transformer method operates on supplied EmulatedStackFrame\nand other instance state to synthesize the transformation. In some\ncases, these transformations will end up calling other signature\npolymorphic methods. In those cases, the transformer can construct\nan EmulatedStackFrame and issue the invoke passing that through as\nthe single input argument. For e.g,\n\n  EmulatedStackFrame sf \u003d EmulatedStackFrame.newInstance();\n  sf.pushArgument(\"foo\", String.class);\n  sf.pushIntArgument(42);\n\n  // The callsite type for this polymorphic invoke is\n  // (Ldalvik/system/EmulatedStackFrame)V;\n  delegate.invoke(sf);\n\nThe runtime will treat such polymorphic invokes specially and unmarshal\nthis EmulatedStackFrame on to the callee stack frame based on the type\nand number of arguments contained in the EmulatedStackFrame and the\ndeclared type of the target method handle.\n\nIn this change :\n\nAdds the basic plumbing for transformer invokes. In particular, the code\nfor marshaling and unmarshaling emulated stack frames isn\u0027t implemented\nand will be added in a follow up method. This plumbing is sufficient to\nimplement a test case of a method handle transform that doesn\u0027t need any\ninput arguments, so is trivially implementable without proper\nEmulatedStackFrame support.\n\nbug: 30550796\nTest: make test-art-host\nChange-Id: Iafa29accaef26d0a33f8b83713bed5d929df547e\n"
    },
    {
      "commit": "da24650d142883ea9962eaedd479547bfe44bbf4",
      "tree": "74e7c0396a10bc8cdefab158414c56d407cf1ea6",
      "parents": [
        "dfe3ce6edaf65a11f35a0ba043fbc17fab7e0bad"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Thu Oct 20 18:39:22 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon Oct 24 11:19:41 2016 +0100"
      },
      "message": "method_handles: Minor refactor of PerformArgumentConversions.\n\nSeparate out a method that can perform a single argument conversion.\nUseful for Field setters and also for future use in transforming handles\nwhere the input source will not be a stack frame.\n\nAlso remove unnecessary JValue* argument.\n\nbug: 30550796\nTest: make test-art-host\nChange-Id: I75a63800839dbf1016a2c362169e138c83f34e4c\n"
    },
    {
      "commit": "208f857edf8361ddc4e85d82699935998e7179ac",
      "tree": "5a4390b34132b6b77fac45a81f31a8191235fdfe",
      "parents": [
        "ac4804fb365fc05552419162cbd8a6b8c77fec4f"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed Aug 03 12:46:58 2016 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Fri Oct 14 09:39:33 2016 +0100"
      },
      "message": "interpreter: support for non-exact invokes.\n\nPerforms primitive argument conversions as well as boxing and unboxing\noperations. Support for return value conversions will be added in a\nfollow up change.\n\nTest: make test-art-host\n\nChange-Id: I2e3348ff64a5826e477f87c12a7d5c390eb3a653\n"
    }
  ]
}
