Mercurial > hg > truffle
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---------------------------------- |