)]}'
{
  "log": [
    {
      "commit": "c069a30d42aefd902c20e8bc09dfad1683f07ded",
      "tree": "8bbf72bea7ea5d243b57f8e0ab64b687a9f60e4b",
      "parents": [
        "3f38398380b80d1ded078ebed1211b7e4f51460f"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jan 18 09:23:12 2017 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Tue Feb 14 14:04:33 2017 +0000"
      },
      "message": "ART: invoke-custom support\n\nAdds invoke-custom instruction to the interpreter.\n\nBug: 33191717,30550796\nTest: art/test/run-test --host 952\nChange-Id: I3b754128649a8b3a00ade79ba2518d0e377f3a1e\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": "1c87878ca87b0c5dde08416ef75615632eace7ac",
      "tree": "2e5e16040024115d75baebdbf064987961e36e5f",
      "parents": [
        "5ee771615a7e7752abb8b0d53122ca44137c4286"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 15:46:49 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 17:04:20 2016 +0000"
      },
      "message": "Revert \"Revert \"Method Handles: Add VarargsCollector.\"\"\n\nThis reverts commit 12af7a41c224923fb55699305008214636a1a3da.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\nChange-Id: Ia820093bab919667729daba5b14330de51a63f79\n"
    },
    {
      "commit": "12af7a41c224923fb55699305008214636a1a3da",
      "tree": "a93fcd7a973d0fd2b5dd7619858ca1e84a96408d",
      "parents": [
        "ab52ce1480d9c4701bfe3ff3530596ec0c5760ee"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 14:27:07 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 25 14:27:07 2016 +0000"
      },
      "message": "Revert \"Method Handles: Add VarargsCollector.\"\n\nThis reverts commit ab52ce1480d9c4701bfe3ff3530596ec0c5760ee.\n\nChange-Id: Idc6dd28b58a61cbd2c9ee72e8a0eeb07b2ca0edf\n"
    },
    {
      "commit": "ab52ce1480d9c4701bfe3ff3530596ec0c5760ee",
      "tree": "e1966edd05b7e7ca8e0e90ea2c2b90b3b9d10a32",
      "parents": [
        "bbf33111444f1c7665eb6ad21438f2ca97cd488e"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Fri Nov 11 11:11:31 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 23 16:56:15 2016 +0000"
      },
      "message": "Method Handles: Add VarargsCollector.\n\nEnable support for methods with variable arity arguments.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\n\nChange-Id: I205724ddacc6c9840e18093a3984c1ad6e54394a\n"
    },
    {
      "commit": "1a06f9f67a4e91610d2a050093b36de264904916",
      "tree": "fc1630bba8730f4ad3fdac447d14a3682fe35c03",
      "parents": [
        "b98115251ea963254fb55c0e48581d8b284c29e9"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Nov 09 08:32:42 2016 +0000"
      },
      "committer": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Thu Nov 10 19:53:57 2016 +0000"
      },
      "message": "MethodHandles: Enable return value conversions.\n\nEnables return values conversions and simplify the type conversion\nlogic. Ensures check for WrongMethodTypeExceptions before invoking a\nmethod handle.\n\nTest: m test-art-host-run-test-956-methodhandles\nBug: 30550796\n\nChange-Id: I8add3ad0a19b43010946b4fb9f1c0f0949287860\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"
    },
    {
      "commit": "9823e788ed3368ecf826c44bfa16ccabfcbe32f8",
      "tree": "59dee92dfd7518a98905c8313bdcb0a2ca2946cb",
      "parents": [
        "82d4838d6bb3480cd25327cedc5179fb2d86881c"
      ],
      "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": "Wed Oct 05 10:34:59 2016 +0100"
      },
      "message": "Basic implementation of invoke / invoke-polymorphic.\n\nBasic switch interpreter support for invoke-polymorphic. This change\nallows for virtual/interface and static invokes on method handles.\n\nSupport for direct invokes (including constructors) and field\ngetters and setters will be added in follow up changes.\n\nBug: 30550796\nTest: make test-art-host\n\nChange-Id: Ieb3a991d974060d930d56467908d5c7c11d0e38e\n"
    }
  ]
}
