< prev index next >

src/hotspot/share/runtime/stubDeclarations.hpp

Print this page

  90 // do_blob(name, type)
  91 #define SHARED_STUBS_DO(do_blob)                                       \
  92   do_blob(deopt, DeoptimizationBlob)                                   \
  93   /* resolve stubs */                                                  \
  94   do_blob(wrong_method, RuntimeStub)                                   \
  95   do_blob(wrong_method_abstract, RuntimeStub)                          \
  96   do_blob(ic_miss, RuntimeStub)                                        \
  97   do_blob(resolve_opt_virtual_call, RuntimeStub)                       \
  98   do_blob(resolve_virtual_call, RuntimeStub)                           \
  99   do_blob(resolve_static_call, RuntimeStub)                            \
 100   /* handler stubs */                                                  \
 101   do_blob(polling_page_vectors_safepoint_handler, SafepointBlob)       \
 102   do_blob(polling_page_safepoint_handler, SafepointBlob)               \
 103   do_blob(polling_page_return_handler, SafepointBlob)                  \
 104   /* throw stubs */                                                    \
 105   do_blob(throw_AbstractMethodError, RuntimeStub)                      \
 106   do_blob(throw_IncompatibleClassChangeError, RuntimeStub)             \
 107   do_blob(throw_NullPointerException_at_call, RuntimeStub)             \
 108   do_blob(throw_StackOverflowError, RuntimeStub)                       \
 109   do_blob(throw_delayed_StackOverflowError, RuntimeStub)               \


 110   /* other stubs */                                                    \
 111   SHARED_JFR_STUBS_DO(do_blob)                                         \
 112 
 113 // C1 stub declarations
 114 //
 115 // C1 stubs are always generated in a unique associated generic
 116 // CodeBlob with a single entry. C1 stubs are stored in an array
 117 // indexed by local enum. So, no other code elements need to be
 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

  90 // do_blob(name, type)
  91 #define SHARED_STUBS_DO(do_blob)                                       \
  92   do_blob(deopt, DeoptimizationBlob)                                   \
  93   /* resolve stubs */                                                  \
  94   do_blob(wrong_method, RuntimeStub)                                   \
  95   do_blob(wrong_method_abstract, RuntimeStub)                          \
  96   do_blob(ic_miss, RuntimeStub)                                        \
  97   do_blob(resolve_opt_virtual_call, RuntimeStub)                       \
  98   do_blob(resolve_virtual_call, RuntimeStub)                           \
  99   do_blob(resolve_static_call, RuntimeStub)                            \
 100   /* handler stubs */                                                  \
 101   do_blob(polling_page_vectors_safepoint_handler, SafepointBlob)       \
 102   do_blob(polling_page_safepoint_handler, SafepointBlob)               \
 103   do_blob(polling_page_return_handler, SafepointBlob)                  \
 104   /* throw stubs */                                                    \
 105   do_blob(throw_AbstractMethodError, RuntimeStub)                      \
 106   do_blob(throw_IncompatibleClassChangeError, RuntimeStub)             \
 107   do_blob(throw_NullPointerException_at_call, RuntimeStub)             \
 108   do_blob(throw_StackOverflowError, RuntimeStub)                       \
 109   do_blob(throw_delayed_StackOverflowError, RuntimeStub)               \
 110   /* value types stub */                                               \
 111   do_blob(store_inline_type_fields_to_buf, RuntimeStub)                \
 112   /* other stubs */                                                    \
 113   SHARED_JFR_STUBS_DO(do_blob)                                         \
 114 
 115 // C1 stub declarations
 116 //
 117 // C1 stubs are always generated in a unique associated generic
 118 // CodeBlob with a single entry. C1 stubs are stored in an array
 119 // indexed by local enum. So, no other code elements need to be
 120 // generated via this macro.
 121 
 122 #ifdef COMPILER1
 123 // client macro to operate on c1 stubs
 124 //
 125 // do_blob(name)
 126 #define C1_STUBS_DO(do_blob)                                           \
 127   do_blob(dtrace_object_alloc)                                         \
 128   do_blob(unwind_exception)                                            \
 129   do_blob(forward_exception)                                           \
 130   do_blob(throw_range_check_failed)       /* throws ArrayIndexOutOfBoundsException */ \
 131   do_blob(throw_index_exception)          /* throws IndexOutOfBoundsException */ \
 132   do_blob(throw_div0_exception)                                        \
 133   do_blob(throw_null_pointer_exception)                                \
 134   do_blob(register_finalizer)                                          \
 135   do_blob(new_instance)                                                \
 136   do_blob(fast_new_instance)                                           \
 137   do_blob(fast_new_instance_init_check)                                \
 138   do_blob(new_type_array)                                              \
 139   do_blob(new_object_array)                                            \
 140   do_blob(new_null_free_array)                                         \
 141   do_blob(new_multi_array)                                             \
 142   do_blob(load_flat_array)                                             \
 143   do_blob(store_flat_array)                                            \
 144   do_blob(substitutability_check)                                      \
 145   do_blob(buffer_inline_args)                                          \
 146   do_blob(buffer_inline_args_no_receiver)                              \
 147   do_blob(handle_exception_nofpu)         /* optimized version that does not preserve fpu registers */ \
 148   do_blob(handle_exception)                                            \
 149   do_blob(handle_exception_from_callee)                                \
 150   do_blob(throw_array_store_exception)                                 \
 151   do_blob(throw_class_cast_exception)                                  \
 152   do_blob(throw_incompatible_class_change_error)                       \
 153   do_blob(throw_illegal_monitor_state_exception)                       \
 154   do_blob(throw_identity_exception)                                    \
 155   do_blob(slow_subtype_check)                                          \
 156   do_blob(is_instance_of)                                              \
 157   do_blob(monitorenter)                                                \
 158   do_blob(monitorenter_nofpu)             /* optimized version that does not preserve fpu registers */ \
 159   do_blob(monitorexit)                                                 \
 160   do_blob(monitorexit_nofpu)              /* optimized version that does not preserve fpu registers */ \
 161   do_blob(deoptimize)                                                  \
 162   do_blob(access_field_patching)                                       \
 163   do_blob(load_klass_patching)                                         \
 164   do_blob(load_mirror_patching)                                        \
 165   do_blob(load_appendix_patching)                                      \
 166   do_blob(fpu2long_stub)                                               \
 167   do_blob(counter_overflow)                                            \
 168   do_blob(predicate_failed_trap)                                       \
 169 
 170 #else
 171 #define C1_STUBS_DO(do_blob)
 172 #endif
 173 
 174 // C2 stub declarations

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