< prev index next >

src/hotspot/share/runtime/stubDeclarations.hpp

Print this page
*** 165,24 ***
    do_stub(monitor_notify, 0, false, false)                             \
    do_stub(monitor_notifyAll, 0, false, false)                          \
    do_stub(rethrow, 2, true, true)                                      \
    do_stub(slow_arraycopy, 0, false, false)                             \
    do_stub(register_finalizer, 0, false, false)                         \
  
  #else
  #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub)
  #endif
  
  // Stub Generator Blobs and Stubs Overview
  //
  // StubGenerator stubs do not require their own individual blob. They
! // are generated in batches into one of four distinct BufferBlobs:
  //
! // 1) Initial stubs
! // 2) Continuation stubs
! // 3) Compiler stubs
! // 4) Final stubs
  //
  // Creation of each successive BufferBlobs is staged to ensure that
  // specific VM subsystems required by those stubs are suitably
  // initialized before generated code attempt to reference data or
  // addresses exported by those subsystems. The sequencing of
--- 165,26 ---
    do_stub(monitor_notify, 0, false, false)                             \
    do_stub(monitor_notifyAll, 0, false, false)                          \
    do_stub(rethrow, 2, true, true)                                      \
    do_stub(slow_arraycopy, 0, false, false)                             \
    do_stub(register_finalizer, 0, false, false)                         \
+   do_stub(class_init_barrier, 0, false, false)                         \
  
  #else
  #define C2_STUBS_DO(do_blob, do_stub, do_jvmti_stub)
  #endif
  
  // Stub Generator Blobs and Stubs Overview
  //
  // StubGenerator stubs do not require their own individual blob. They
! // are generated in batches into one of five distinct BufferBlobs:
  //
! // 1) PreUniverse stubs
! // 2) Initial stubs
! // 3) Continuation stubs
! // 4) Compiler stubs
+ // 5) Final stubs
  //
  // Creation of each successive BufferBlobs is staged to ensure that
  // specific VM subsystems required by those stubs are suitably
  // initialized before generated code attempt to reference data or
  // addresses exported by those subsystems. The sequencing of

*** 266,10 ***
--- 268,11 ---
  //  _<nnn>_stubs_code_size      = <size>,
  //
  // For example,
  //
  // enum platform_dependent_constants {
+ //   _preuniverse_stubs_code_size  =   500,
  //   _initial_stubs_code_size      = 10000,
  //   _continuation_stubs_code_size =  2000,
  //   . . .
  //
  // Blob fields and associated getters:

*** 499,10 ***
--- 502,14 ---
  // Include arch-specific stub and entry declarations and make sure the
  // relevant template macros have been defined
  
  #include CPU_HEADER(stubDeclarations)
  
+ #ifndef STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO
+ #error "Arch-specific directory failed to declare required initial stubs and entries"
+ #endif
+ 
  #ifndef STUBGEN_INITIAL_BLOBS_ARCH_DO
  #error "Arch-specific directory failed to declare required initial stubs and entries"
  #endif
  
  #ifndef STUBGEN_CONTINUATION_BLOBS_ARCH_DO

*** 531,11 ***
  // lookup and update related elements. If you need to update these
  // submacros to change the list of stubs or entries be sure to locate
  // stubs within the correct blob and locate entry declarations
  // immediately after their associated stub declaration.
  
! #define STUBGEN_INITIAL_BLOBS_DO(do_blob, end_blob,                     \
                                   do_stub,                               \
                                   do_entry, do_entry_init,               \
                                   do_entry_array,                        \
                                   do_arch_blob,                          \
                                   do_arch_entry, do_arch_entry_init)     \
--- 538,36 ---
  // lookup and update related elements. If you need to update these
  // submacros to change the list of stubs or entries be sure to locate
  // stubs within the correct blob and locate entry declarations
  // immediately after their associated stub declaration.
  
! #define STUBGEN_PREUNIVERSE_BLOBS_DO(do_blob, end_blob,                 \
+                                      do_stub,                           \
+                                      do_entry, do_entry_init,           \
+                                      do_entry_array,                    \
+                                      do_arch_blob,                      \
+                                      do_arch_entry, do_arch_entry_init) \
+   do_blob(preuniverse)                                                  \
+   do_stub(preuniverse, fence)                                           \
+   do_entry(preuniverse, fence, fence_entry, fence_entry)                \
+   do_stub(preuniverse, atomic_add)                                      \
+   do_entry(preuniverse, atomic_add, atomic_add_entry, atomic_add_entry) \
+   do_stub(preuniverse, atomic_xchg)                                     \
+   do_entry(preuniverse, atomic_xchg, atomic_xchg_entry,                 \
+            atomic_xchg_entry)                                           \
+   do_stub(preuniverse, atomic_cmpxchg)                                  \
+   do_entry(preuniverse, atomic_cmpxchg, atomic_cmpxchg_entry,           \
+            atomic_cmpxchg_entry)                                        \
+   do_stub(preuniverse, atomic_cmpxchg_long)                             \
+   do_entry(preuniverse, atomic_cmpxchg_long, atomic_cmpxchg_long_entry, \
+            atomic_cmpxchg_long_entry)                                   \
+   /* merge in stubs and entries declared in arch header */              \
+   STUBGEN_PREUNIVERSE_BLOBS_ARCH_DO(do_stub, do_arch_blob,              \
+                                     do_arch_entry, do_arch_entry_init)  \
+   end_blob(preuniverse)                                                 \
+ 
+ #define STUBGEN_INITIAL_BLOBS_DO(do_blob, end_blob,                      \
                                   do_stub,                               \
                                   do_entry, do_entry_init,               \
                                   do_entry_array,                        \
                                   do_arch_blob,                          \
                                   do_arch_entry, do_arch_entry_init)     \

*** 548,22 ***
    do_entry(initial, forward_exception, forward_exception_entry,         \
             forward_exception_entry)                                     \
    do_stub(initial, catch_exception)                                     \
    do_entry(initial, catch_exception, catch_exception_entry,             \
             catch_exception_entry)                                       \
-   do_stub(initial, fence)                                               \
-   do_entry(initial, fence, fence_entry, fence_entry)                    \
-   do_stub(initial, atomic_add)                                          \
-   do_entry(initial, atomic_add, atomic_add_entry, atomic_add_entry)     \
-   do_stub(initial, atomic_xchg)                                         \
-   do_entry(initial, atomic_xchg, atomic_xchg_entry, atomic_xchg_entry)  \
-   do_stub(initial, atomic_cmpxchg)                                      \
-   do_entry(initial, atomic_cmpxchg, atomic_cmpxchg_entry,               \
-            atomic_cmpxchg_entry)                                        \
-   do_stub(initial, atomic_cmpxchg_long)                                 \
-   do_entry(initial, atomic_cmpxchg_long, atomic_cmpxchg_long_entry,     \
-            atomic_cmpxchg_long_entry)                                   \
    do_stub(initial, updateBytesCRC32)                                    \
    do_entry(initial, updateBytesCRC32, updateBytesCRC32,                 \
             updateBytesCRC32)                                            \
    do_entry(initial, updateBytesCRC32, crc_table_adr, crc_table_addr)    \
    do_stub(initial, updateBytesCRC32C)                                   \
--- 580,10 ---

*** 1010,10 ***
--- 1030,16 ---
                         do_stub,                                         \
                         do_entry, do_entry_init,                         \
                         do_entry_array,                                  \
                         do_arch_blob,                                    \
                         do_arch_entry, do_arch_entry_init)               \
+   STUBGEN_PREUNIVERSE_BLOBS_DO(do_blob, end_blob,                       \
+                                do_stub,                                 \
+                                do_entry, do_entry_init,                 \
+                                do_entry_array,                          \
+                                do_arch_blob,                            \
+                                do_arch_entry, do_arch_entry_init)       \
    STUBGEN_INITIAL_BLOBS_DO(do_blob, end_blob,                           \
                             do_stub,                                     \
                             do_entry, do_entry_init,                     \
                             do_entry_array,                              \
                             do_arch_blob,                                \
< prev index next >