133 static address generate_stub(ciEnv* ci_env, TypeFunc_generator gen, address C_function, const char *name, int is_fancy_jump, bool pass_tls, bool save_arguments, bool return_pc);
134
135 // References to generated stubs
136 static address _new_instance_Java;
137 static address _new_array_Java;
138 static address _new_array_nozero_Java;
139 static address _multianewarray2_Java;
140 static address _multianewarray3_Java;
141 static address _multianewarray4_Java;
142 static address _multianewarray5_Java;
143 static address _multianewarrayN_Java;
144 static address _g1_wb_pre_Java;
145 static address _g1_wb_post_Java;
146 static address _vtable_must_compile_Java;
147 static address _complete_monitor_locking_Java;
148 static address _rethrow_Java;
149
150 static address _slow_arraycopy_Java;
151 static address _register_finalizer_Java;
152
153 # ifdef ENABLE_ZAP_DEAD_LOCALS
154 static address _zap_dead_Java_locals_Java;
155 static address _zap_dead_native_locals_Java;
156 # endif
157
158
159 //
160 // Implementation of runtime methods
161 // =================================
162
163 // Allocate storage for a Java instance.
164 static void new_instance_C(Klass* instance_klass, JavaThread *thread);
165
166 // Allocate storage for a objArray or typeArray
167 static void new_array_C(Klass* array_klass, int len, JavaThread *thread);
168 static void new_array_nozero_C(Klass* array_klass, int len, JavaThread *thread);
169
170 // Post-slow-path-allocation, pre-initializing-stores step for
171 // implementing ReduceInitialCardMarks
172 static void new_store_pre_barrier(JavaThread* thread);
231
232 // Returns the name of a stub
233 static const char* stub_name(address entry);
234
235 // access to runtime stubs entry points for java code
236 static address new_instance_Java() { return _new_instance_Java; }
237 static address new_array_Java() { return _new_array_Java; }
238 static address new_array_nozero_Java() { return _new_array_nozero_Java; }
239 static address multianewarray2_Java() { return _multianewarray2_Java; }
240 static address multianewarray3_Java() { return _multianewarray3_Java; }
241 static address multianewarray4_Java() { return _multianewarray4_Java; }
242 static address multianewarray5_Java() { return _multianewarray5_Java; }
243 static address multianewarrayN_Java() { return _multianewarrayN_Java; }
244 static address g1_wb_pre_Java() { return _g1_wb_pre_Java; }
245 static address g1_wb_post_Java() { return _g1_wb_post_Java; }
246 static address vtable_must_compile_stub() { return _vtable_must_compile_Java; }
247 static address complete_monitor_locking_Java() { return _complete_monitor_locking_Java; }
248
249 static address slow_arraycopy_Java() { return _slow_arraycopy_Java; }
250 static address register_finalizer_Java() { return _register_finalizer_Java; }
251
252
253 # ifdef ENABLE_ZAP_DEAD_LOCALS
254 static address zap_dead_locals_stub(bool is_native) { return is_native
255 ? _zap_dead_native_locals_Java
256 : _zap_dead_Java_locals_Java; }
257 static MachNode* node_to_call_zap_dead_locals(Node* n, int block_num, bool is_native);
258 # endif
259
260 static ExceptionBlob* exception_blob() { return _exception_blob; }
261
262 // Leaf routines helping with method data update
263 static void profile_receiver_type_C(DataLayout* data, oopDesc* receiver);
264
265 // Implicit exception support
266 static void throw_div0_exception_C (JavaThread* thread);
267 static void throw_stack_overflow_error_C(JavaThread* thread);
268
269 // Exception handling
270 static address rethrow_stub() { return _rethrow_Java; }
294 static const TypeFunc* l2f_Type();
295 static const TypeFunc* void_long_Type();
296
297 static const TypeFunc* flush_windows_Type();
298
299 // arraycopy routine types
300 static const TypeFunc* fast_arraycopy_Type(); // bit-blasters
301 static const TypeFunc* checkcast_arraycopy_Type();
302 static const TypeFunc* generic_arraycopy_Type();
303 static const TypeFunc* slow_arraycopy_Type(); // the full routine
304
305 static const TypeFunc* array_fill_Type();
306
307 static const TypeFunc* aescrypt_block_Type();
308 static const TypeFunc* cipherBlockChaining_aescrypt_Type();
309
310 static const TypeFunc* sha_implCompress_Type();
311 static const TypeFunc* digestBase_implCompressMB_Type();
312
313 static const TypeFunc* multiplyToLen_Type();
314
315 static const TypeFunc* squareToLen_Type();
316
317 static const TypeFunc* mulAdd_Type();
318
319 static const TypeFunc* updateBytesCRC32_Type();
320
321 // leaf on stack replacement interpreter accessor types
322 static const TypeFunc* osr_end_Type();
323
324 // leaf methodData routine types
325 static const TypeFunc* profile_receiver_type_Type();
326
327 // leaf on stack replacement interpreter accessor types
328 static const TypeFunc* fetch_int_Type();
329 static const TypeFunc* fetch_long_Type();
330 static const TypeFunc* fetch_float_Type();
331 static const TypeFunc* fetch_double_Type();
332 static const TypeFunc* fetch_oop_Type();
333 static const TypeFunc* fetch_monitor_Type();
|
133 static address generate_stub(ciEnv* ci_env, TypeFunc_generator gen, address C_function, const char *name, int is_fancy_jump, bool pass_tls, bool save_arguments, bool return_pc);
134
135 // References to generated stubs
136 static address _new_instance_Java;
137 static address _new_array_Java;
138 static address _new_array_nozero_Java;
139 static address _multianewarray2_Java;
140 static address _multianewarray3_Java;
141 static address _multianewarray4_Java;
142 static address _multianewarray5_Java;
143 static address _multianewarrayN_Java;
144 static address _g1_wb_pre_Java;
145 static address _g1_wb_post_Java;
146 static address _vtable_must_compile_Java;
147 static address _complete_monitor_locking_Java;
148 static address _rethrow_Java;
149
150 static address _slow_arraycopy_Java;
151 static address _register_finalizer_Java;
152
153 static address _montgomeryMultiply_Java;
154
155 # ifdef ENABLE_ZAP_DEAD_LOCALS
156 static address _zap_dead_Java_locals_Java;
157 static address _zap_dead_native_locals_Java;
158 # endif
159
160
161 //
162 // Implementation of runtime methods
163 // =================================
164
165 // Allocate storage for a Java instance.
166 static void new_instance_C(Klass* instance_klass, JavaThread *thread);
167
168 // Allocate storage for a objArray or typeArray
169 static void new_array_C(Klass* array_klass, int len, JavaThread *thread);
170 static void new_array_nozero_C(Klass* array_klass, int len, JavaThread *thread);
171
172 // Post-slow-path-allocation, pre-initializing-stores step for
173 // implementing ReduceInitialCardMarks
174 static void new_store_pre_barrier(JavaThread* thread);
233
234 // Returns the name of a stub
235 static const char* stub_name(address entry);
236
237 // access to runtime stubs entry points for java code
238 static address new_instance_Java() { return _new_instance_Java; }
239 static address new_array_Java() { return _new_array_Java; }
240 static address new_array_nozero_Java() { return _new_array_nozero_Java; }
241 static address multianewarray2_Java() { return _multianewarray2_Java; }
242 static address multianewarray3_Java() { return _multianewarray3_Java; }
243 static address multianewarray4_Java() { return _multianewarray4_Java; }
244 static address multianewarray5_Java() { return _multianewarray5_Java; }
245 static address multianewarrayN_Java() { return _multianewarrayN_Java; }
246 static address g1_wb_pre_Java() { return _g1_wb_pre_Java; }
247 static address g1_wb_post_Java() { return _g1_wb_post_Java; }
248 static address vtable_must_compile_stub() { return _vtable_must_compile_Java; }
249 static address complete_monitor_locking_Java() { return _complete_monitor_locking_Java; }
250
251 static address slow_arraycopy_Java() { return _slow_arraycopy_Java; }
252 static address register_finalizer_Java() { return _register_finalizer_Java; }
253 static address montgomeryMultiply_Java() { return _montgomeryMultiply_Java; }
254
255
256 # ifdef ENABLE_ZAP_DEAD_LOCALS
257 static address zap_dead_locals_stub(bool is_native) { return is_native
258 ? _zap_dead_native_locals_Java
259 : _zap_dead_Java_locals_Java; }
260 static MachNode* node_to_call_zap_dead_locals(Node* n, int block_num, bool is_native);
261 # endif
262
263 static ExceptionBlob* exception_blob() { return _exception_blob; }
264
265 // Leaf routines helping with method data update
266 static void profile_receiver_type_C(DataLayout* data, oopDesc* receiver);
267
268 // Implicit exception support
269 static void throw_div0_exception_C (JavaThread* thread);
270 static void throw_stack_overflow_error_C(JavaThread* thread);
271
272 // Exception handling
273 static address rethrow_stub() { return _rethrow_Java; }
297 static const TypeFunc* l2f_Type();
298 static const TypeFunc* void_long_Type();
299
300 static const TypeFunc* flush_windows_Type();
301
302 // arraycopy routine types
303 static const TypeFunc* fast_arraycopy_Type(); // bit-blasters
304 static const TypeFunc* checkcast_arraycopy_Type();
305 static const TypeFunc* generic_arraycopy_Type();
306 static const TypeFunc* slow_arraycopy_Type(); // the full routine
307
308 static const TypeFunc* array_fill_Type();
309
310 static const TypeFunc* aescrypt_block_Type();
311 static const TypeFunc* cipherBlockChaining_aescrypt_Type();
312
313 static const TypeFunc* sha_implCompress_Type();
314 static const TypeFunc* digestBase_implCompressMB_Type();
315
316 static const TypeFunc* multiplyToLen_Type();
317 static const TypeFunc* montgomeryMultiply_Type();
318
319 static const TypeFunc* squareToLen_Type();
320
321 static const TypeFunc* mulAdd_Type();
322
323 static const TypeFunc* updateBytesCRC32_Type();
324
325 // leaf on stack replacement interpreter accessor types
326 static const TypeFunc* osr_end_Type();
327
328 // leaf methodData routine types
329 static const TypeFunc* profile_receiver_type_Type();
330
331 // leaf on stack replacement interpreter accessor types
332 static const TypeFunc* fetch_int_Type();
333 static const TypeFunc* fetch_long_Type();
334 static const TypeFunc* fetch_float_Type();
335 static const TypeFunc* fetch_double_Type();
336 static const TypeFunc* fetch_oop_Type();
337 static const TypeFunc* fetch_monitor_Type();
|