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
229 // employs jump 0, and requires no special access
230
231 #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub) \
232 do_blob(uncommon_trap, UncommonTrapBlob) \
233 do_blob(exception, ExceptionBlob) \
234 do_stub(new_instance, 0, true, false) \
235 do_stub(new_array, 0, true, false) \
236 do_stub(new_array_nozero, 0, true, false) \
237 do_stub(multianewarray2, 0, true, false) \
238 do_stub(multianewarray3, 0, true, false) \
239 do_stub(multianewarray4, 0, true, false) \
240 do_stub(multianewarray5, 0, true, false) \
241 do_stub(multianewarrayN, 0, true, false) \
242 C2_JVMTI_STUBS_DO(do_jvmti_stub) \
243 do_stub(complete_monitor_locking, 0, false, false) \
244 do_stub(monitor_notify, 0, false, false) \
245 do_stub(monitor_notifyAll, 0, false, false) \
246 do_stub(rethrow, 2, true, true) \
247 do_stub(slow_arraycopy, 0, false, false) \
248 do_stub(register_finalizer, 0, false, false) \
249
250 #else
251 #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub)
252 #endif
253
254 // Stubgen stub declarations
255 //
256 // Stub Generator Blobs, Stubs and Entries Overview
257 //
258 // StubGenerator stubs do not require their own individual blob. They
259 // are generated in batches into one of five distinct BufferBlobs:
260 //
261 // 1) PreUniverse stubs
262 // 2) Initial stubs
263 // 3) Continuation stubs
264 // 4) Compiler stubs
265 // 5) Final stubs
266 //
267 // Most StubGen stubs have a single entry point. However, in some
268 // cases there are additional entry points.
|
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
237 // employs jump 0, and requires no special access
238
239 #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub) \
240 do_blob(uncommon_trap, UncommonTrapBlob) \
241 do_blob(exception, ExceptionBlob) \
242 do_stub(new_instance, 0, true, false) \
243 do_stub(new_array, 0, true, false) \
244 do_stub(new_array_nozero, 0, true, false) \
245 do_stub(multianewarray2, 0, true, false) \
246 do_stub(multianewarray3, 0, true, false) \
247 do_stub(multianewarray4, 0, true, false) \
248 do_stub(multianewarray5, 0, true, false) \
249 do_stub(multianewarrayN, 0, true, false) \
250 C2_JVMTI_STUBS_DO(do_jvmti_stub) \
251 do_stub(complete_monitor_locking, 0, false, false) \
252 do_stub(monitor_notify, 0, false, false) \
253 do_stub(monitor_notifyAll, 0, false, false) \
254 do_stub(rethrow, 2, true, true) \
255 do_stub(slow_arraycopy, 0, false, false) \
256 do_stub(register_finalizer, 0, false, false) \
257 do_stub(load_unknown_inline, 0, true, false) \
258 do_stub(store_unknown_inline, 0, true, false) \
259
260 #else
261 #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub)
262 #endif
263
264 // Stubgen stub declarations
265 //
266 // Stub Generator Blobs, Stubs and Entries Overview
267 //
268 // StubGenerator stubs do not require their own individual blob. They
269 // are generated in batches into one of five distinct BufferBlobs:
270 //
271 // 1) PreUniverse stubs
272 // 2) Initial stubs
273 // 3) Continuation stubs
274 // 4) Compiler stubs
275 // 5) Final stubs
276 //
277 // Most StubGen stubs have a single entry point. However, in some
278 // cases there are additional entry points.
|