Merge "MethodHandles: Remove obsolete test workaround."
diff --git a/runtime/interpreter/interpreter_common.cc b/runtime/interpreter/interpreter_common.cc
index 41673f4..179e48b 100644
--- a/runtime/interpreter/interpreter_common.cc
+++ b/runtime/interpreter/interpreter_common.cc
@@ -936,12 +936,12 @@
 
     switch (handle_kind) {
       case kInstanceGet: {
-        ObjPtr<mirror::Object> obj = shadow_frame.GetVRegReference(receiver_vregC);
+        ObjPtr<mirror::Object> obj = shadow_frame.GetVRegReference(first_src_reg);
         DoFieldGetForInvokePolymorphic(self, shadow_frame, obj, field, field_type, result);
         return true;
       }
       case kInstancePut: {
-        ObjPtr<mirror::Object> obj = shadow_frame.GetVRegReference(receiver_vregC);
+        ObjPtr<mirror::Object> obj = shadow_frame.GetVRegReference(first_src_reg);
         return DoFieldPutForInvokePolymorphic(self, shadow_frame, obj, field, field_type, arg[1]);
       }
       case kStaticGet: {
diff --git a/test/957-methodhandle-transforms/src/Main.java b/test/957-methodhandle-transforms/src/Main.java
index aaf6e2f..e9d313b 100644
--- a/test/957-methodhandle-transforms/src/Main.java
+++ b/test/957-methodhandle-transforms/src/Main.java
@@ -99,8 +99,16 @@
     DelegatingTransformer delegate = new DelegatingTransformer(specialFunctionHandle);
 
     // Test an exact invoke.
+    //
+    // Note that the shorter form below doesn't work and must be
+    // investigated on the jack side :  b/32536744
+    //
+    // delegate.invokeExact(false, 'h', (short) 56, 72, Integer.MAX_VALUE + 42l,
+    //    0.56f, 100.0d, "hello", (Object) "goodbye");
+
+    Object obj = "goodbye";
     delegate.invokeExact(false, 'h', (short) 56, 72, Integer.MAX_VALUE + 42l,
-        0.56f, 100.0d, "hello", "goodbye");
+        0.56f, 100.0d, "hello", obj);
 
     // Test a non exact invoke with one int -> long conversion and a float -> double
     // conversion.