changeset 2513:4596e22b6f4f

Implement adapter_opt_rot_1_up
author Gary Benson <gbenson@redhat.com>
date Fri, 01 Apr 2011 12:18:02 +0100
parents a86f565f1a3a
children 35989c0cf707
files src/cpu/zero/vm/cppInterpreter_zero.cpp
diffstat 1 files changed, 16 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Fri Apr 01 11:46:49 2011 +0100
+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Fri Apr 01 12:18:02 2011 +0100
@@ -961,6 +961,22 @@
     }
     break;
 
+  case MethodHandles::_adapter_opt_rot_1_up:
+    {
+      int arg1 = java_lang_invoke_AdapterMethodHandle::vmargslot(method_handle);
+      int conv =
+        java_lang_invoke_AdapterMethodHandle::conversion(method_handle);
+      int arg2 = MethodHandles::adapter_conversion_vminfo(conv);
+
+      assert(arg1 - 1 > arg2, "should be");
+
+      intptr_t tmp = *VMSLOTS_SLOT(arg1);
+      for (int i = arg1 - 1; i >= arg2; i--)
+        SET_VMSLOTS_SLOT(VMSLOTS_SLOT(i), i + 1);
+      SET_VMSLOTS_SLOT(&tmp, arg2);
+    }
+    break;
+
   case MethodHandles::_adapter_opt_i2l:
     {
       int arg_slot =