84
85 // Dependencies
86 friend class StubGenerator;
87
88 #include CPU_HEADER(stubRoutines)
89
90 static jint _verify_oop_count;
91 static address _verify_oop_subroutine_entry;
92
93 static address _call_stub_return_address; // the return PC, when returning to a call stub
94 static address _call_stub_entry;
95 static address _forward_exception_entry;
96 static address _catch_exception_entry;
97 static address _throw_AbstractMethodError_entry;
98 static address _throw_IncompatibleClassChangeError_entry;
99 static address _throw_NullPointerException_at_call_entry;
100 static address _throw_StackOverflowError_entry;
101 static address _throw_delayed_StackOverflowError_entry;
102
103 static address _atomic_xchg_entry;
104 static address _atomic_xchg_ptr_entry;
105 static address _atomic_store_entry;
106 static address _atomic_store_ptr_entry;
107 static address _atomic_cmpxchg_entry;
108 static address _atomic_cmpxchg_ptr_entry;
109 static address _atomic_cmpxchg_byte_entry;
110 static address _atomic_cmpxchg_long_entry;
111 static address _atomic_add_entry;
112 static address _atomic_add_ptr_entry;
113 static address _fence_entry;
114 static address _d2i_wrapper;
115 static address _d2l_wrapper;
116
117 static jint _fpu_cntrl_wrd_std;
118 static jint _fpu_cntrl_wrd_24;
119 static jint _fpu_cntrl_wrd_64;
120 static jint _fpu_cntrl_wrd_trunc;
121 static jint _mxcsr_std;
122 static jint _fpu_subnormal_bias1[3];
123 static jint _fpu_subnormal_bias2[3];
124
125 static BufferBlob* _code1; // code buffer for initial routines
126 static BufferBlob* _code2; // code buffer for all other routines
127
128 // Leaf routines which implement arraycopy and their addresses
259 BasicType result_type,
260 Method* method,
261 address entry_point,
262 intptr_t* parameters,
263 int size_of_parameters,
264 TRAPS
265 );
266
267 static CallStub call_stub() { return CAST_TO_FN_PTR(CallStub, _call_stub_entry); }
268
269 // Exceptions
270 static address forward_exception_entry() { return _forward_exception_entry; }
271 // Implicit exceptions
272 static address throw_AbstractMethodError_entry() { return _throw_AbstractMethodError_entry; }
273 static address throw_IncompatibleClassChangeError_entry(){ return _throw_IncompatibleClassChangeError_entry; }
274 static address throw_NullPointerException_at_call_entry(){ return _throw_NullPointerException_at_call_entry; }
275 static address throw_StackOverflowError_entry() { return _throw_StackOverflowError_entry; }
276 static address throw_delayed_StackOverflowError_entry() { return _throw_delayed_StackOverflowError_entry; }
277
278 static address atomic_xchg_entry() { return _atomic_xchg_entry; }
279 static address atomic_xchg_ptr_entry() { return _atomic_xchg_ptr_entry; }
280 static address atomic_store_entry() { return _atomic_store_entry; }
281 static address atomic_store_ptr_entry() { return _atomic_store_ptr_entry; }
282 static address atomic_cmpxchg_entry() { return _atomic_cmpxchg_entry; }
283 static address atomic_cmpxchg_ptr_entry() { return _atomic_cmpxchg_ptr_entry; }
284 static address atomic_cmpxchg_byte_entry() { return _atomic_cmpxchg_byte_entry; }
285 static address atomic_cmpxchg_long_entry() { return _atomic_cmpxchg_long_entry; }
286 static address atomic_add_entry() { return _atomic_add_entry; }
287 static address atomic_add_ptr_entry() { return _atomic_add_ptr_entry; }
288 static address fence_entry() { return _fence_entry; }
289
290 static address d2i_wrapper() { return _d2i_wrapper; }
291 static address d2l_wrapper() { return _d2l_wrapper; }
292 static jint fpu_cntrl_wrd_std() { return _fpu_cntrl_wrd_std; }
293 static address addr_fpu_cntrl_wrd_std() { return (address)&_fpu_cntrl_wrd_std; }
294 static address addr_fpu_cntrl_wrd_24() { return (address)&_fpu_cntrl_wrd_24; }
295 static address addr_fpu_cntrl_wrd_64() { return (address)&_fpu_cntrl_wrd_64; }
296 static address addr_fpu_cntrl_wrd_trunc() { return (address)&_fpu_cntrl_wrd_trunc; }
297 static address addr_mxcsr_std() { return (address)&_mxcsr_std; }
298 static address addr_fpu_subnormal_bias1() { return (address)&_fpu_subnormal_bias1; }
299 static address addr_fpu_subnormal_bias2() { return (address)&_fpu_subnormal_bias2; }
300
301
302 static address select_arraycopy_function(BasicType t, bool aligned, bool disjoint, const char* &name, bool dest_uninitialized);
303
|
84
85 // Dependencies
86 friend class StubGenerator;
87
88 #include CPU_HEADER(stubRoutines)
89
90 static jint _verify_oop_count;
91 static address _verify_oop_subroutine_entry;
92
93 static address _call_stub_return_address; // the return PC, when returning to a call stub
94 static address _call_stub_entry;
95 static address _forward_exception_entry;
96 static address _catch_exception_entry;
97 static address _throw_AbstractMethodError_entry;
98 static address _throw_IncompatibleClassChangeError_entry;
99 static address _throw_NullPointerException_at_call_entry;
100 static address _throw_StackOverflowError_entry;
101 static address _throw_delayed_StackOverflowError_entry;
102
103 static address _atomic_xchg_entry;
104 static address _atomic_xchg_long_entry;
105 static address _atomic_store_entry;
106 static address _atomic_store_ptr_entry;
107 static address _atomic_cmpxchg_entry;
108 static address _atomic_cmpxchg_byte_entry;
109 static address _atomic_cmpxchg_long_entry;
110 static address _atomic_add_entry;
111 static address _atomic_add_ptr_entry;
112 static address _fence_entry;
113 static address _d2i_wrapper;
114 static address _d2l_wrapper;
115
116 static jint _fpu_cntrl_wrd_std;
117 static jint _fpu_cntrl_wrd_24;
118 static jint _fpu_cntrl_wrd_64;
119 static jint _fpu_cntrl_wrd_trunc;
120 static jint _mxcsr_std;
121 static jint _fpu_subnormal_bias1[3];
122 static jint _fpu_subnormal_bias2[3];
123
124 static BufferBlob* _code1; // code buffer for initial routines
125 static BufferBlob* _code2; // code buffer for all other routines
126
127 // Leaf routines which implement arraycopy and their addresses
258 BasicType result_type,
259 Method* method,
260 address entry_point,
261 intptr_t* parameters,
262 int size_of_parameters,
263 TRAPS
264 );
265
266 static CallStub call_stub() { return CAST_TO_FN_PTR(CallStub, _call_stub_entry); }
267
268 // Exceptions
269 static address forward_exception_entry() { return _forward_exception_entry; }
270 // Implicit exceptions
271 static address throw_AbstractMethodError_entry() { return _throw_AbstractMethodError_entry; }
272 static address throw_IncompatibleClassChangeError_entry(){ return _throw_IncompatibleClassChangeError_entry; }
273 static address throw_NullPointerException_at_call_entry(){ return _throw_NullPointerException_at_call_entry; }
274 static address throw_StackOverflowError_entry() { return _throw_StackOverflowError_entry; }
275 static address throw_delayed_StackOverflowError_entry() { return _throw_delayed_StackOverflowError_entry; }
276
277 static address atomic_xchg_entry() { return _atomic_xchg_entry; }
278 static address atomic_xchg_long_entry() { return _atomic_xchg_long_entry; }
279 static address atomic_store_entry() { return _atomic_store_entry; }
280 static address atomic_store_ptr_entry() { return _atomic_store_ptr_entry; }
281 static address atomic_cmpxchg_entry() { return _atomic_cmpxchg_entry; }
282 static address atomic_cmpxchg_byte_entry() { return _atomic_cmpxchg_byte_entry; }
283 static address atomic_cmpxchg_long_entry() { return _atomic_cmpxchg_long_entry; }
284 static address atomic_add_entry() { return _atomic_add_entry; }
285 static address atomic_add_ptr_entry() { return _atomic_add_ptr_entry; }
286 static address fence_entry() { return _fence_entry; }
287
288 static address d2i_wrapper() { return _d2i_wrapper; }
289 static address d2l_wrapper() { return _d2l_wrapper; }
290 static jint fpu_cntrl_wrd_std() { return _fpu_cntrl_wrd_std; }
291 static address addr_fpu_cntrl_wrd_std() { return (address)&_fpu_cntrl_wrd_std; }
292 static address addr_fpu_cntrl_wrd_24() { return (address)&_fpu_cntrl_wrd_24; }
293 static address addr_fpu_cntrl_wrd_64() { return (address)&_fpu_cntrl_wrd_64; }
294 static address addr_fpu_cntrl_wrd_trunc() { return (address)&_fpu_cntrl_wrd_trunc; }
295 static address addr_mxcsr_std() { return (address)&_mxcsr_std; }
296 static address addr_fpu_subnormal_bias1() { return (address)&_fpu_subnormal_bias1; }
297 static address addr_fpu_subnormal_bias2() { return (address)&_fpu_subnormal_bias2; }
298
299
300 static address select_arraycopy_function(BasicType t, bool aligned, bool disjoint, const char* &name, bool dest_uninitialized);
301
|