comparison src/share/vm/runtime/sharedRuntime.cpp @ 17812:a7d4d4655766

Merge
author kvn
date Wed, 26 Mar 2014 18:21:05 -0700
parents a9becfeecd1b
children cf9f24de0b93
comparison
equal deleted inserted replaced
17789:6b207d038106 17812:a7d4d4655766
406 return (f <= (double)0.0) ? (double)0.0 - f : f; 406 return (f <= (double)0.0) ? (double)0.0 - f : f;
407 } 407 }
408 408
409 #endif 409 #endif
410 410
411 #if defined(__SOFTFP__) || defined(PPC) 411 #if defined(__SOFTFP__) || defined(PPC32)
412 double SharedRuntime::dsqrt(double f) { 412 double SharedRuntime::dsqrt(double f) {
413 return sqrt(f); 413 return sqrt(f);
414 } 414 }
415 #endif 415 #endif
416 416
2749 assert(TypeArrayKlass::cast(jlsValue->klass())->element_type() == T_CHAR, "compressed string"); 2749 assert(TypeArrayKlass::cast(jlsValue->klass())->element_type() == T_CHAR, "compressed string");
2750 (void) UNICODE::as_utf8(jlsPos, jlsLen, (char *)dst, max_dtrace_string_size); 2750 (void) UNICODE::as_utf8(jlsPos, jlsLen, (char *)dst, max_dtrace_string_size);
2751 } 2751 }
2752 #endif // ndef HAVE_DTRACE_H 2752 #endif // ndef HAVE_DTRACE_H
2753 2753
2754 int SharedRuntime::convert_ints_to_longints_argcnt(int in_args_count, BasicType* in_sig_bt) {
2755 int argcnt = in_args_count;
2756 if (CCallingConventionRequiresIntsAsLongs) {
2757 for (int in = 0; in < in_args_count; in++) {
2758 BasicType bt = in_sig_bt[in];
2759 switch (bt) {
2760 case T_BOOLEAN:
2761 case T_CHAR:
2762 case T_BYTE:
2763 case T_SHORT:
2764 case T_INT:
2765 argcnt++;
2766 break;
2767 default:
2768 break;
2769 }
2770 }
2771 } else {
2772 assert(0, "This should not be needed on this platform");
2773 }
2774
2775 return argcnt;
2776 }
2777
2778 void SharedRuntime::convert_ints_to_longints(int i2l_argcnt, int& in_args_count,
2779 BasicType*& in_sig_bt, VMRegPair*& in_regs) {
2780 if (CCallingConventionRequiresIntsAsLongs) {
2781 VMRegPair *new_in_regs = NEW_RESOURCE_ARRAY(VMRegPair, i2l_argcnt);
2782 BasicType *new_in_sig_bt = NEW_RESOURCE_ARRAY(BasicType, i2l_argcnt);
2783
2784 int argcnt = 0;
2785 for (int in = 0; in < in_args_count; in++, argcnt++) {
2786 BasicType bt = in_sig_bt[in];
2787 VMRegPair reg = in_regs[in];
2788 switch (bt) {
2789 case T_BOOLEAN:
2790 case T_CHAR:
2791 case T_BYTE:
2792 case T_SHORT:
2793 case T_INT:
2794 // Convert (bt) to (T_LONG,bt).
2795 new_in_sig_bt[argcnt ] = T_LONG;
2796 new_in_sig_bt[argcnt+1] = bt;
2797 assert(reg.first()->is_valid() && !reg.second()->is_valid(), "");
2798 new_in_regs[argcnt ].set2(reg.first());
2799 new_in_regs[argcnt+1].set_bad();
2800 argcnt++;
2801 break;
2802 default:
2803 // No conversion needed.
2804 new_in_sig_bt[argcnt] = bt;
2805 new_in_regs[argcnt] = reg;
2806 break;
2807 }
2808 }
2809 assert(argcnt == i2l_argcnt, "must match");
2810
2811 in_regs = new_in_regs;
2812 in_sig_bt = new_in_sig_bt;
2813 in_args_count = i2l_argcnt;
2814 } else {
2815 assert(0, "This should not be needed on this platform");
2816 }
2817 }
2818
2754 // ------------------------------------------------------------------------- 2819 // -------------------------------------------------------------------------
2755 // Java-Java calling convention 2820 // Java-Java calling convention
2756 // (what you use when Java calls Java) 2821 // (what you use when Java calls Java)
2757 2822
2758 //------------------------------name_for_receiver---------------------------------- 2823 //------------------------------name_for_receiver----------------------------------