comparison src/share/vm/runtime/sharedRuntime.hpp @ 1681:126ea7725993

6953477: Increase portability and flexibility of building Hotspot Summary: A collection of portability improvements including shared code support for PPC, ARM platforms, software floating point, cross compilation support and improvements in error crash detail. Reviewed-by: phh, never, coleenp, dholmes
author bobv
date Tue, 03 Aug 2010 08:13:38 -0400
parents c18cbe5936b8
children 3e8fbc61cee8
comparison
equal deleted inserted replaced
1680:a64438a2b7e8 1681:126ea7725993
76 76
77 // float and double remainder 77 // float and double remainder
78 static jfloat frem(jfloat x, jfloat y); 78 static jfloat frem(jfloat x, jfloat y);
79 static jdouble drem(jdouble x, jdouble y); 79 static jdouble drem(jdouble x, jdouble y);
80 80
81 #ifdef __SOFTFP__
82 static jfloat fadd(jfloat x, jfloat y);
83 static jfloat fsub(jfloat x, jfloat y);
84 static jfloat fmul(jfloat x, jfloat y);
85 static jfloat fdiv(jfloat x, jfloat y);
86
87 static jdouble dadd(jdouble x, jdouble y);
88 static jdouble dsub(jdouble x, jdouble y);
89 static jdouble dmul(jdouble x, jdouble y);
90 static jdouble ddiv(jdouble x, jdouble y);
91 #endif // __SOFTFP__
92
81 // float conversion (needs to set appropriate rounding mode) 93 // float conversion (needs to set appropriate rounding mode)
82 static jint f2i (jfloat x); 94 static jint f2i (jfloat x);
83 static jlong f2l (jfloat x); 95 static jlong f2l (jfloat x);
84 static jint d2i (jdouble x); 96 static jint d2i (jdouble x);
85 static jlong d2l (jdouble x); 97 static jlong d2l (jdouble x);
86 static jfloat d2f (jdouble x); 98 static jfloat d2f (jdouble x);
87 static jfloat l2f (jlong x); 99 static jfloat l2f (jlong x);
88 static jdouble l2d (jlong x); 100 static jdouble l2d (jlong x);
89 101
102 #ifdef __SOFTFP__
103 static jfloat i2f (jint x);
104 static jdouble i2d (jint x);
105 static jdouble f2d (jfloat x);
106 #endif // __SOFTFP__
107
90 // double trigonometrics and transcendentals 108 // double trigonometrics and transcendentals
91 static jdouble dsin(jdouble x); 109 static jdouble dsin(jdouble x);
92 static jdouble dcos(jdouble x); 110 static jdouble dcos(jdouble x);
93 static jdouble dtan(jdouble x); 111 static jdouble dtan(jdouble x);
94 static jdouble dlog(jdouble x); 112 static jdouble dlog(jdouble x);
95 static jdouble dlog10(jdouble x); 113 static jdouble dlog10(jdouble x);
96 static jdouble dexp(jdouble x); 114 static jdouble dexp(jdouble x);
97 static jdouble dpow(jdouble x, jdouble y); 115 static jdouble dpow(jdouble x, jdouble y);
116
117 #if defined(__SOFTFP__) || defined(E500V2)
118 static double dabs(double f);
119 static double dsqrt(double f);
120 #endif
121
122 #ifdef __SOFTFP__
123 // C++ compiler generates soft float instructions as well as passing
124 // float and double in registers.
125 static int fcmpl(float x, float y);
126 static int fcmpg(float x, float y);
127 static int dcmpl(double x, double y);
128 static int dcmpg(double x, double y);
129
130 static int unordered_fcmplt(float x, float y);
131 static int unordered_dcmplt(double x, double y);
132 static int unordered_fcmple(float x, float y);
133 static int unordered_dcmple(double x, double y);
134 static int unordered_fcmpge(float x, float y);
135 static int unordered_dcmpge(double x, double y);
136 static int unordered_fcmpgt(float x, float y);
137 static int unordered_dcmpgt(double x, double y);
138
139 static float fneg(float f);
140 static double dneg(double f);
141 #endif
98 142
99 // exception handling across interpreter/compiler boundaries 143 // exception handling across interpreter/compiler boundaries
100 static address raw_exception_handler_for_return_address(JavaThread* thread, address return_address); 144 static address raw_exception_handler_for_return_address(JavaThread* thread, address return_address);
101 static address exception_handler_for_return_address(JavaThread* thread, address return_address); 145 static address exception_handler_for_return_address(JavaThread* thread, address return_address);
102 146
583 // Used to verify that code generated for shared adapters is equivalent 627 // Used to verify that code generated for shared adapters is equivalent
584 void save_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt); 628 void save_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt);
585 bool compare_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt); 629 bool compare_code(unsigned char* code, int length, int total_args_passed, BasicType* sig_bt);
586 #endif 630 #endif
587 631
588 #ifndef PRODUCT
589 void print(); 632 void print();
590 #endif /* PRODUCT */
591 }; 633 };
592 634
593 class AdapterHandlerLibrary: public AllStatic { 635 class AdapterHandlerLibrary: public AllStatic {
594 private: 636 private:
595 static BufferBlob* _buffer; // the temporary code buffer in CodeCache 637 static BufferBlob* _buffer; // the temporary code buffer in CodeCache
607 649
608 #ifdef HAVE_DTRACE_H 650 #ifdef HAVE_DTRACE_H
609 static nmethod* create_dtrace_nmethod (methodHandle method); 651 static nmethod* create_dtrace_nmethod (methodHandle method);
610 #endif // HAVE_DTRACE_H 652 #endif // HAVE_DTRACE_H
611 653
654 static void print_handler(CodeBlob* b) { print_handler_on(tty, b); }
655 static void print_handler_on(outputStream* st, CodeBlob* b);
656 static bool contains(CodeBlob* b);
612 #ifndef PRODUCT 657 #ifndef PRODUCT
613 static void print_handler(CodeBlob* b);
614 static bool contains(CodeBlob* b);
615 static void print_statistics(); 658 static void print_statistics();
616 #endif /* PRODUCT */ 659 #endif /* PRODUCT */
617 660
618 }; 661 };