Mercurial > hg > truffle
comparison src/share/vm/runtime/sharedRuntime.cpp @ 14465:28f281e8de1d
Merge
author | kvn |
---|---|
date | Thu, 20 Feb 2014 12:20:56 -0800 |
parents | e6195383bcaf 8a9bb7821e28 |
children | d8041d695d19 |
comparison
equal
deleted
inserted
replaced
14382:805784307dca | 14465:28f281e8de1d |
---|---|
398 return (f <= (double)0.0) ? (double)0.0 - f : f; | 398 return (f <= (double)0.0) ? (double)0.0 - f : f; |
399 } | 399 } |
400 | 400 |
401 #endif | 401 #endif |
402 | 402 |
403 #if defined(__SOFTFP__) || defined(PPC) | 403 #if defined(__SOFTFP__) || defined(PPC32) |
404 double SharedRuntime::dsqrt(double f) { | 404 double SharedRuntime::dsqrt(double f) { |
405 return sqrt(f); | 405 return sqrt(f); |
406 } | 406 } |
407 #endif | 407 #endif |
408 | 408 |
2722 assert(TypeArrayKlass::cast(jlsValue->klass())->element_type() == T_CHAR, "compressed string"); | 2722 assert(TypeArrayKlass::cast(jlsValue->klass())->element_type() == T_CHAR, "compressed string"); |
2723 (void) UNICODE::as_utf8(jlsPos, jlsLen, (char *)dst, max_dtrace_string_size); | 2723 (void) UNICODE::as_utf8(jlsPos, jlsLen, (char *)dst, max_dtrace_string_size); |
2724 } | 2724 } |
2725 #endif // ndef HAVE_DTRACE_H | 2725 #endif // ndef HAVE_DTRACE_H |
2726 | 2726 |
2727 int SharedRuntime::convert_ints_to_longints_argcnt(int in_args_count, BasicType* in_sig_bt) { | |
2728 int argcnt = in_args_count; | |
2729 if (CCallingConventionRequiresIntsAsLongs) { | |
2730 for (int in = 0; in < in_args_count; in++) { | |
2731 BasicType bt = in_sig_bt[in]; | |
2732 switch (bt) { | |
2733 case T_BOOLEAN: | |
2734 case T_CHAR: | |
2735 case T_BYTE: | |
2736 case T_SHORT: | |
2737 case T_INT: | |
2738 argcnt++; | |
2739 break; | |
2740 default: | |
2741 break; | |
2742 } | |
2743 } | |
2744 } else { | |
2745 assert(0, "This should not be needed on this platform"); | |
2746 } | |
2747 | |
2748 return argcnt; | |
2749 } | |
2750 | |
2751 void SharedRuntime::convert_ints_to_longints(int i2l_argcnt, int& in_args_count, | |
2752 BasicType*& in_sig_bt, VMRegPair*& in_regs) { | |
2753 if (CCallingConventionRequiresIntsAsLongs) { | |
2754 VMRegPair *new_in_regs = NEW_RESOURCE_ARRAY(VMRegPair, i2l_argcnt); | |
2755 BasicType *new_in_sig_bt = NEW_RESOURCE_ARRAY(BasicType, i2l_argcnt); | |
2756 | |
2757 int argcnt = 0; | |
2758 for (int in = 0; in < in_args_count; in++, argcnt++) { | |
2759 BasicType bt = in_sig_bt[in]; | |
2760 VMRegPair reg = in_regs[in]; | |
2761 switch (bt) { | |
2762 case T_BOOLEAN: | |
2763 case T_CHAR: | |
2764 case T_BYTE: | |
2765 case T_SHORT: | |
2766 case T_INT: | |
2767 // Convert (bt) to (T_LONG,bt). | |
2768 new_in_sig_bt[argcnt ] = T_LONG; | |
2769 new_in_sig_bt[argcnt+1] = bt; | |
2770 assert(reg.first()->is_valid() && !reg.second()->is_valid(), ""); | |
2771 new_in_regs[argcnt ].set2(reg.first()); | |
2772 new_in_regs[argcnt+1].set_bad(); | |
2773 argcnt++; | |
2774 break; | |
2775 default: | |
2776 // No conversion needed. | |
2777 new_in_sig_bt[argcnt] = bt; | |
2778 new_in_regs[argcnt] = reg; | |
2779 break; | |
2780 } | |
2781 } | |
2782 assert(argcnt == i2l_argcnt, "must match"); | |
2783 | |
2784 in_regs = new_in_regs; | |
2785 in_sig_bt = new_in_sig_bt; | |
2786 in_args_count = i2l_argcnt; | |
2787 } else { | |
2788 assert(0, "This should not be needed on this platform"); | |
2789 } | |
2790 } | |
2791 | |
2727 // ------------------------------------------------------------------------- | 2792 // ------------------------------------------------------------------------- |
2728 // Java-Java calling convention | 2793 // Java-Java calling convention |
2729 // (what you use when Java calls Java) | 2794 // (what you use when Java calls Java) |
2730 | 2795 |
2731 //------------------------------name_for_receiver---------------------------------- | 2796 //------------------------------name_for_receiver---------------------------------- |