118 // generated via this macro.
119
120 #ifdef COMPILER1
121 // client macro to operate on c1 stubs
122 //
123 // do_blob(name)
124 #define C1_STUBS_DO(do_blob) \
125 do_blob(dtrace_object_alloc) \
126 do_blob(unwind_exception) \
127 do_blob(forward_exception) \
128 do_blob(throw_range_check_failed) /* throws ArrayIndexOutOfBoundsException */ \
129 do_blob(throw_index_exception) /* throws IndexOutOfBoundsException */ \
130 do_blob(throw_div0_exception) \
131 do_blob(throw_null_pointer_exception) \
132 do_blob(register_finalizer) \
133 do_blob(new_instance) \
134 do_blob(fast_new_instance) \
135 do_blob(fast_new_instance_init_check) \
136 do_blob(new_type_array) \
137 do_blob(new_object_array) \
138 do_blob(new_multi_array) \
139 do_blob(handle_exception_nofpu) /* optimized version that does not preserve fpu registers */ \
140 do_blob(handle_exception) \
141 do_blob(handle_exception_from_callee) \
142 do_blob(throw_array_store_exception) \
143 do_blob(throw_class_cast_exception) \
144 do_blob(throw_incompatible_class_change_error) \
145 do_blob(slow_subtype_check) \
146 do_blob(is_instance_of) \
147 do_blob(monitorenter) \
148 do_blob(monitorenter_nofpu) /* optimized version that does not preserve fpu registers */ \
149 do_blob(monitorexit) \
150 do_blob(monitorexit_nofpu) /* optimized version that does not preserve fpu registers */ \
151 do_blob(deoptimize) \
152 do_blob(access_field_patching) \
153 do_blob(load_klass_patching) \
154 do_blob(load_mirror_patching) \
155 do_blob(load_appendix_patching) \
156 do_blob(fpu2long_stub) \
157 do_blob(counter_overflow) \
158 do_blob(predicate_failed_trap) \
159
160 #else
161 #define C1_STUBS_DO(do_blob)
162 #endif
163
164 // C2 stub declarations
213 // provide access to TLS and the return pc.
214 //
215
216 #define C2_STUBS_DO(do_blob, do_stub) \
217 do_blob(uncommon_trap, UncommonTrapBlob) \
218 do_blob(exception, ExceptionBlob) \
219 do_stub(new_instance, 0, true, false) \
220 do_stub(new_array, 0, true, false) \
221 do_stub(new_array_nozero, 0, true, false) \
222 do_stub(multianewarray2, 0, true, false) \
223 do_stub(multianewarray3, 0, true, false) \
224 do_stub(multianewarray4, 0, true, false) \
225 do_stub(multianewarray5, 0, true, false) \
226 do_stub(multianewarrayN, 0, true, false) \
227 do_stub(complete_monitor_locking, 0, false, false) \
228 do_stub(monitor_notify, 0, false, false) \
229 do_stub(monitor_notifyAll, 0, false, false) \
230 do_stub(rethrow, 2, true, true) \
231 do_stub(slow_arraycopy, 0, false, false) \
232 do_stub(register_finalizer, 0, false, false) \
233 do_stub(vthread_end_first_transition, 0, false, false) \
234 do_stub(vthread_start_final_transition, 0, false, false) \
235 do_stub(vthread_start_transition, 0, false, false) \
236 do_stub(vthread_end_transition, 0, false, false) \
237
238 #else
239 #define C2_STUBS_DO(do_blob, do_stub)
240 #endif
241
242 // Stubgen stub declarations
243 //
244 // Stub Generator Blobs, Stubs and Entries Overview
245 //
246 // StubGenerator stubs do not require their own individual blob. They
247 // are generated in batches into one of five distinct BufferBlobs:
248 //
249 // 1) PreUniverse stubs
250 // 2) Initial stubs
251 // 3) Continuation stubs
252 // 4) Compiler stubs
|
118 // generated via this macro.
119
120 #ifdef COMPILER1
121 // client macro to operate on c1 stubs
122 //
123 // do_blob(name)
124 #define C1_STUBS_DO(do_blob) \
125 do_blob(dtrace_object_alloc) \
126 do_blob(unwind_exception) \
127 do_blob(forward_exception) \
128 do_blob(throw_range_check_failed) /* throws ArrayIndexOutOfBoundsException */ \
129 do_blob(throw_index_exception) /* throws IndexOutOfBoundsException */ \
130 do_blob(throw_div0_exception) \
131 do_blob(throw_null_pointer_exception) \
132 do_blob(register_finalizer) \
133 do_blob(new_instance) \
134 do_blob(fast_new_instance) \
135 do_blob(fast_new_instance_init_check) \
136 do_blob(new_type_array) \
137 do_blob(new_object_array) \
138 do_blob(new_null_free_array) \
139 do_blob(new_multi_array) \
140 do_blob(load_flat_array) \
141 do_blob(store_flat_array) \
142 do_blob(substitutability_check) \
143 do_blob(buffer_inline_args) \
144 do_blob(buffer_inline_args_no_receiver) \
145 do_blob(handle_exception_nofpu) /* optimized version that does not preserve fpu registers */ \
146 do_blob(handle_exception) \
147 do_blob(handle_exception_from_callee) \
148 do_blob(throw_array_store_exception) \
149 do_blob(throw_class_cast_exception) \
150 do_blob(throw_incompatible_class_change_error) \
151 do_blob(throw_illegal_monitor_state_exception) \
152 do_blob(throw_identity_exception) \
153 do_blob(slow_subtype_check) \
154 do_blob(is_instance_of) \
155 do_blob(monitorenter) \
156 do_blob(monitorenter_nofpu) /* optimized version that does not preserve fpu registers */ \
157 do_blob(monitorexit) \
158 do_blob(monitorexit_nofpu) /* optimized version that does not preserve fpu registers */ \
159 do_blob(deoptimize) \
160 do_blob(access_field_patching) \
161 do_blob(load_klass_patching) \
162 do_blob(load_mirror_patching) \
163 do_blob(load_appendix_patching) \
164 do_blob(fpu2long_stub) \
165 do_blob(counter_overflow) \
166 do_blob(predicate_failed_trap) \
167
168 #else
169 #define C1_STUBS_DO(do_blob)
170 #endif
171
172 // C2 stub declarations
221 // provide access to TLS and the return pc.
222 //
223
224 #define C2_STUBS_DO(do_blob, do_stub) \
225 do_blob(uncommon_trap, UncommonTrapBlob) \
226 do_blob(exception, ExceptionBlob) \
227 do_stub(new_instance, 0, true, false) \
228 do_stub(new_array, 0, true, false) \
229 do_stub(new_array_nozero, 0, true, false) \
230 do_stub(multianewarray2, 0, true, false) \
231 do_stub(multianewarray3, 0, true, false) \
232 do_stub(multianewarray4, 0, true, false) \
233 do_stub(multianewarray5, 0, true, false) \
234 do_stub(multianewarrayN, 0, true, false) \
235 do_stub(complete_monitor_locking, 0, false, false) \
236 do_stub(monitor_notify, 0, false, false) \
237 do_stub(monitor_notifyAll, 0, false, false) \
238 do_stub(rethrow, 2, true, true) \
239 do_stub(slow_arraycopy, 0, false, false) \
240 do_stub(register_finalizer, 0, false, false) \
241 do_stub(load_unknown_inline, 0, true, false) \
242 do_stub(store_unknown_inline, 0, true, false) \
243 do_stub(vthread_end_first_transition, 0, false, false) \
244 do_stub(vthread_start_final_transition, 0, false, false) \
245 do_stub(vthread_start_transition, 0, false, false) \
246 do_stub(vthread_end_transition, 0, false, false) \
247
248 #else
249 #define C2_STUBS_DO(do_blob, do_stub)
250 #endif
251
252 // Stubgen stub declarations
253 //
254 // Stub Generator Blobs, Stubs and Entries Overview
255 //
256 // StubGenerator stubs do not require their own individual blob. They
257 // are generated in batches into one of five distinct BufferBlobs:
258 //
259 // 1) PreUniverse stubs
260 // 2) Initial stubs
261 // 3) Continuation stubs
262 // 4) Compiler stubs
|