changeset 2514:35989c0cf707

Implement adapter_opt_rot_1_down
author Gary Benson <gbenson@redhat.com>
date Fri, 01 Apr 2011 12:52:34 +0100
parents 4596e22b6f4f
children 1b3950b886f6
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 12:18:02 2011 +0100
+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Fri Apr 01 12:52:34 2011 +0100
@@ -977,6 +977,22 @@
     }
     break;
 
+  case MethodHandles::_adapter_opt_rot_1_down:
+    {
+      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(arg2 - 1 > arg1, "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 =