hotspot/src/cpu/zero/vm/cppInterpreter_zero.cpp
changeset 12726 0a3b759f8109
parent 10004 190e88f7edd1
child 13391 30245956af37
equal deleted inserted replaced
12156:fb31de03f649 12726:0a3b759f8109
  1024     {
  1024     {
  1025       int arg_slot =
  1025       int arg_slot =
  1026         java_lang_invoke_AdapterMethodHandle::vmargslot(method_handle);
  1026         java_lang_invoke_AdapterMethodHandle::vmargslot(method_handle);
  1027       oop arg = VMSLOTS_OBJECT(arg_slot);
  1027       oop arg = VMSLOTS_OBJECT(arg_slot);
  1028       jvalue arg_value;
  1028       jvalue arg_value;
       
  1029       if (arg == NULL) {
       
  1030         // queue a nullpointer exception for the caller
       
  1031         stack->set_sp(calculate_unwind_sp(stack, method_handle));
       
  1032         CALL_VM_NOCHECK_NOFIX(
       
  1033           throw_exception(
       
  1034             thread, vmSymbols::java_lang_NullPointerException()));
       
  1035         // NB all oops trashed!
       
  1036         assert(HAS_PENDING_EXCEPTION, "should do");
       
  1037         return;
       
  1038       }
  1029       BasicType arg_type = java_lang_boxing_object::get_value(arg, &arg_value);
  1039       BasicType arg_type = java_lang_boxing_object::get_value(arg, &arg_value);
  1030       if (arg_type == T_LONG || arg_type == T_DOUBLE) {
  1040       if (arg_type == T_LONG || arg_type == T_DOUBLE) {
  1031         intptr_t *unwind_sp = calculate_unwind_sp(stack, method_handle);
  1041         intptr_t *unwind_sp = calculate_unwind_sp(stack, method_handle);
  1032         insert_vmslots(arg_slot, 1, THREAD);
  1042         insert_vmslots(arg_slot, 1, THREAD);
  1033         if (HAS_PENDING_EXCEPTION) {
  1043         if (HAS_PENDING_EXCEPTION) {
  1110       case T_CHAR:
  1120       case T_CHAR:
  1111       case T_BYTE:
  1121       case T_BYTE:
  1112       case T_SHORT:
  1122       case T_SHORT:
  1113         return;
  1123         return;
  1114       }
  1124       }
       
  1125       // INT results sometimes need narrowing
       
  1126     case T_BOOLEAN:
       
  1127     case T_CHAR:
       
  1128     case T_BYTE:
       
  1129     case T_SHORT:
       
  1130       switch (src_rtype) {
       
  1131       case T_INT:
       
  1132         return;
       
  1133       }
  1115     }
  1134     }
  1116 
  1135 
  1117     tty->print_cr("unhandled conversion:");
  1136     tty->print_cr("unhandled conversion:");
  1118     tty->print_cr("src_rtype = %s", type2name(src_rtype));
  1137     tty->print_cr("src_rtype = %s", type2name(src_rtype));
  1119     tty->print_cr("dst_rtype = %s", type2name(dst_rtype));
  1138     tty->print_cr("dst_rtype = %s", type2name(dst_rtype));