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
212 // provide access to TLS and the return pc.
213 //
214
215 #define C2_STUBS_DO(do_blob, do_stub) \
216 do_blob(uncommon_trap, UncommonTrapBlob) \
217 do_blob(exception, ExceptionBlob) \
218 do_stub(new_instance, 0, true, false) \
219 do_stub(new_array, 0, true, false) \
220 do_stub(new_array_nozero, 0, true, false) \
221 do_stub(multianewarray2, 0, true, false) \
222 do_stub(multianewarray3, 0, true, false) \
223 do_stub(multianewarray4, 0, true, false) \
224 do_stub(multianewarray5, 0, true, false) \
225 do_stub(multianewarrayN, 0, true, false) \
226 do_stub(complete_monitor_locking, 0, false, false) \
227 do_stub(monitor_notify, 0, false, false) \
228 do_stub(monitor_notifyAll, 0, false, false) \
229 do_stub(rethrow, 2, true, true) \
230 do_stub(slow_arraycopy, 0, false, false) \
231 do_stub(register_finalizer, 0, false, false) \
232 do_stub(vthread_end_first_transition, 0, false, false) \
233 do_stub(vthread_start_final_transition, 0, false, false) \
234 do_stub(vthread_start_transition, 0, false, false) \
235 do_stub(vthread_end_transition, 0, false, false) \
236
237 #else
238 #define C2_STUBS_DO(do_blob, do_stub)
239 #endif
240
241 // Stubgen stub declarations
242 //
243 // Stub Generator Blobs, Stubs and Entries Overview
244 //
245 // StubGenerator stubs do not require their own individual blob. They
246 // are generated in batches into one of five distinct BufferBlobs:
247 //
248 // 1) PreUniverse stubs
249 // 2) Initial stubs
250 // 3) Continuation stubs
251 // 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
220 // provide access to TLS and the return pc.
221 //
222
223 #define C2_STUBS_DO(do_blob, do_stub) \
224 do_blob(uncommon_trap, UncommonTrapBlob) \
225 do_blob(exception, ExceptionBlob) \
226 do_stub(new_instance, 0, true, false) \
227 do_stub(new_array, 0, true, false) \
228 do_stub(new_array_nozero, 0, true, false) \
229 do_stub(multianewarray2, 0, true, false) \
230 do_stub(multianewarray3, 0, true, false) \
231 do_stub(multianewarray4, 0, true, false) \
232 do_stub(multianewarray5, 0, true, false) \
233 do_stub(multianewarrayN, 0, true, false) \
234 do_stub(complete_monitor_locking, 0, false, false) \
235 do_stub(monitor_notify, 0, false, false) \
236 do_stub(monitor_notifyAll, 0, false, false) \
237 do_stub(rethrow, 2, true, true) \
238 do_stub(slow_arraycopy, 0, false, false) \
239 do_stub(register_finalizer, 0, false, false) \
240 do_stub(load_unknown_inline, 0, true, false) \
241 do_stub(store_unknown_inline, 0, true, false) \
242 do_stub(vthread_end_first_transition, 0, false, false) \
243 do_stub(vthread_start_final_transition, 0, false, false) \
244 do_stub(vthread_start_transition, 0, false, false) \
245 do_stub(vthread_end_transition, 0, false, false) \
246
247 #else
248 #define C2_STUBS_DO(do_blob, do_stub)
249 #endif
250
251 // Stubgen stub declarations
252 //
253 // Stub Generator Blobs, Stubs and Entries Overview
254 //
255 // StubGenerator stubs do not require their own individual blob. They
256 // are generated in batches into one of five distinct BufferBlobs:
257 //
258 // 1) PreUniverse stubs
259 // 2) Initial stubs
260 // 3) Continuation stubs
261 // 4) Compiler stubs
|