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.