67 // Scheme for adding a new entry point: 68 // 69 // 1. determine if it's a platform-dependent or independent entry point 70 // a) if platform independent: make subsequent changes in the independent files 71 // b) if platform dependent: make subsequent changes in the dependent files 72 // 2. add a private instance variable holding the entry point address 73 // 3. add a public accessor function to the instance variable 74 // 4. implement the corresponding generator function in the platform-dependent 75 // stubGenerator_<arch>.cpp file and call the function in generate_all() of that file 76 77 78 class StubRoutines: AllStatic { 79 80 public: 81 enum platform_independent_constants { 82 max_size_of_parameters = 256 // max. parameter size supported by megamorphic lookups 83 }; 84 85 // Dependencies 86 friend class StubGenerator; 87 #ifdef TARGET_ARCH_MODEL_x86_32 88 # include "stubRoutines_x86_32.hpp" 89 #endif 90 #ifdef TARGET_ARCH_MODEL_x86_64 91 # include "stubRoutines_x86_64.hpp" 92 #endif 93 #ifdef TARGET_ARCH_MODEL_sparc 94 # include "stubRoutines_sparc.hpp" 95 #endif 96 #ifdef TARGET_ARCH_MODEL_zero 97 # include "stubRoutines_zero.hpp" 98 #endif 99 #ifdef TARGET_ARCH_MODEL_arm 100 # include "stubRoutines_arm.hpp" 101 #endif 102 #ifdef TARGET_ARCH_MODEL_ppc_32 103 # include "stubRoutines_ppc_32.hpp" 104 #endif 105 #ifdef TARGET_ARCH_MODEL_ppc_64 106 # include "stubRoutines_ppc_64.hpp" 107 #endif 108 #ifdef TARGET_ARCH_MODEL_aarch64 109 # include "stubRoutines_aarch64.hpp" 110 #endif 111 112 113 static jint _verify_oop_count; 114 static address _verify_oop_subroutine_entry; 115 116 static address _call_stub_return_address; // the return PC, when returning to a call stub 117 static address _call_stub_entry; 118 static address _forward_exception_entry; 119 static address _catch_exception_entry; 120 static address _throw_AbstractMethodError_entry; 121 static address _throw_IncompatibleClassChangeError_entry; 122 static address _throw_NullPointerException_at_call_entry; 123 static address _throw_StackOverflowError_entry; 124 static address _handler_for_unsafe_access_entry; 125 126 static address _atomic_xchg_entry; 127 static address _atomic_xchg_ptr_entry; 128 static address _atomic_store_entry; 129 static address _atomic_store_ptr_entry; 130 static address _atomic_cmpxchg_entry; 131 static address _atomic_cmpxchg_ptr_entry; | 67 // Scheme for adding a new entry point: 68 // 69 // 1. determine if it's a platform-dependent or independent entry point 70 // a) if platform independent: make subsequent changes in the independent files 71 // b) if platform dependent: make subsequent changes in the dependent files 72 // 2. add a private instance variable holding the entry point address 73 // 3. add a public accessor function to the instance variable 74 // 4. implement the corresponding generator function in the platform-dependent 75 // stubGenerator_<arch>.cpp file and call the function in generate_all() of that file 76 77 78 class StubRoutines: AllStatic { 79 80 public: 81 enum platform_independent_constants { 82 max_size_of_parameters = 256 // max. parameter size supported by megamorphic lookups 83 }; 84 85 // Dependencies 86 friend class StubGenerator; 87 #if defined STUBROUTINES_MD_HPP 88 # include STUBROUTINES_MD_HPP 89 #elif defined TARGET_ARCH_MODEL_x86_32 90 # include "stubRoutines_x86_32.hpp" 91 #elif defined TARGET_ARCH_MODEL_x86_64 92 # include "stubRoutines_x86_64.hpp" 93 #elif defined TARGET_ARCH_MODEL_sparc 94 # include "stubRoutines_sparc.hpp" 95 #elif defined TARGET_ARCH_MODEL_zero 96 # include "stubRoutines_zero.hpp" 97 #elif defined TARGET_ARCH_MODEL_ppc_64 98 # include "stubRoutines_ppc_64.hpp" 99 #elif defined TARGET_ARCH_MODEL_aarch64 100 # include "stubRoutines_aarch64.hpp" 101 #endif 102 103 static jint _verify_oop_count; 104 static address _verify_oop_subroutine_entry; 105 106 static address _call_stub_return_address; // the return PC, when returning to a call stub 107 static address _call_stub_entry; 108 static address _forward_exception_entry; 109 static address _catch_exception_entry; 110 static address _throw_AbstractMethodError_entry; 111 static address _throw_IncompatibleClassChangeError_entry; 112 static address _throw_NullPointerException_at_call_entry; 113 static address _throw_StackOverflowError_entry; 114 static address _handler_for_unsafe_access_entry; 115 116 static address _atomic_xchg_entry; 117 static address _atomic_xchg_ptr_entry; 118 static address _atomic_store_entry; 119 static address _atomic_store_ptr_entry; 120 static address _atomic_cmpxchg_entry; 121 static address _atomic_cmpxchg_ptr_entry; |