changeset 2274:40186460e5b8

Don't hardwire this
author Gary Benson <gbenson@redhat.com>
date Tue, 15 Mar 2011 14:19:05 +0000
parents 887b37920ad5
children c196e44f0df3
files src/cpu/zero/vm/cppInterpreter_zero.cpp
diffstat 1 files changed, 8 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp	Mon Mar 14 10:37:07 2011 +0000
+++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp	Tue Mar 15 14:19:05 2011 +0000
@@ -846,10 +846,9 @@
   case MethodHandles::_adapter_dup_args:
     {
       int arg_slot = sun_dyn_AdapterMethodHandle::vmargslot(method_handle);
-      int num_slots =
-        sun_dyn_AdapterMethodHandle::conversion(method_handle) >>
-        sun_dyn_AdapterMethodHandle::CONV_STACK_MOVE_SHIFT;
-      num_slots = -num_slots;
+      int conv = sun_dyn_AdapterMethodHandle::conversion(method_handle);
+      int num_slots = -MethodHandles::adapter_conversion_stack_move(conv);
+      assert(num_slots > 0, "should be");
 
       // Create the new slot(s)
       insert_vmslots(arg_slot, num_slots, CHECK); // XXX unwind!
@@ -864,9 +863,9 @@
   case MethodHandles::_adapter_drop_args:
     {
       int arg_slot = sun_dyn_AdapterMethodHandle::vmargslot(method_handle);
-      int num_slots =
-        sun_dyn_AdapterMethodHandle::conversion(method_handle) >>
-        sun_dyn_AdapterMethodHandle::CONV_STACK_MOVE_SHIFT;
+      int conv = sun_dyn_AdapterMethodHandle::conversion(method_handle);
+      int num_slots = MethodHandles::adapter_conversion_stack_move(conv);
+      assert(num_slots > 0, "should be");
 
       remove_vmslots(arg_slot, num_slots, THREAD); // doesn't trap
       vmslots = stack->sp(); // unused, but let the compiler figure that out
@@ -876,10 +875,8 @@
   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;
+      int conv = sun_dyn_AdapterMethodHandle::conversion(method_handle);
+      int arg2 = MethodHandles::adapter_conversion_vminfo(conv);
 
       intptr_t tmp = *VMSLOTS_SLOT(arg1);
       SET_VMSLOTS_SLOT(VMSLOTS_SLOT(arg2), arg1);