changeset 2254:6029e0ac16fb

Implement MethodHandles::_adapter_opt_swap_1 (maybe)
author Gary Benson <gbenson@redhat.com>
date Tue, 01 Mar 2011 11:53:24 +0000
parents dc88189cc93a
children 0de165da3344
files src/cpu/zero/vm/cppInterpreter_zero.cpp
diffstat 1 files changed, 14 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Mar 01 11:36:56 2011 +0000
+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Mar 01 11:53:24 2011 +0000
@@ -836,6 +836,20 @@
     }
     break;
 
+  case MethodHandles::_adapter_opt_swap_1:
+    {
+      int arg1 = sun_dyn_AdapterMethodHandle::vmargslot(method_handle);
+      int arg2 =
+        (sun_dyn_AdapterMethodHandle::conversion(method_handle) >>
+         sun_dyn_AdapterMethodHandle::CONV_VMINFO_SHIFT) &
+        sun_dyn_AdapterMethodHandle::CONV_VMINFO_MASK;
+
+      intptr_t tmp = *VMSLOTS_SLOT(arg1);
+      SET_VMSLOTS_SLOT(VMSLOTS_SLOT(arg2), arg1);
+      SET_VMSLOTS_SLOT(&tmp, arg2);
+    }
+    break;
+
   case MethodHandles::_adapter_opt_unboxi:
   case MethodHandles::_adapter_opt_unboxl:
     {