147 148 static void throw_range_check_exception(JavaThread* thread, int index); 149 static void throw_index_exception(JavaThread* thread, int index); 150 static void throw_div0_exception(JavaThread* thread); 151 static void throw_null_pointer_exception(JavaThread* thread); 152 static void throw_class_cast_exception(JavaThread* thread, oopDesc* object); 153 static void throw_incompatible_class_change_error(JavaThread* thread); 154 static void throw_array_store_exception(JavaThread* thread, oopDesc* object); 155 156 static void monitorenter(JavaThread* thread, oopDesc* obj, BasicObjectLock* lock); 157 static void monitorexit (JavaThread* thread, BasicObjectLock* lock); 158 159 static void deoptimize(JavaThread* thread); 160 161 static int access_field_patching(JavaThread* thread); 162 static int move_klass_patching(JavaThread* thread); 163 static int move_mirror_patching(JavaThread* thread); 164 static int move_appendix_patching(JavaThread* thread); 165 166 static void patch_code(JavaThread* thread, StubID stub_id); 167 168 public: 169 // initialization 170 static void initialize(BufferBlob* blob); 171 static void initialize_pd(); 172 173 // stubs 174 static CodeBlob* blob_for (StubID id); 175 static address entry_for(StubID id) { return blob_for(id)->code_begin(); } 176 static const char* name_for (StubID id); 177 static const char* name_for_address(address entry); 178 179 // platform might add runtime names. 180 static const char* pd_name_for_address(address entry); 181 182 // method tracing 183 static void trace_block_entry(jint block_id); 184 185 #ifndef PRODUCT 186 static address throw_count_address() { return (address)&_throw_count; } | 147 148 static void throw_range_check_exception(JavaThread* thread, int index); 149 static void throw_index_exception(JavaThread* thread, int index); 150 static void throw_div0_exception(JavaThread* thread); 151 static void throw_null_pointer_exception(JavaThread* thread); 152 static void throw_class_cast_exception(JavaThread* thread, oopDesc* object); 153 static void throw_incompatible_class_change_error(JavaThread* thread); 154 static void throw_array_store_exception(JavaThread* thread, oopDesc* object); 155 156 static void monitorenter(JavaThread* thread, oopDesc* obj, BasicObjectLock* lock); 157 static void monitorexit (JavaThread* thread, BasicObjectLock* lock); 158 159 static void deoptimize(JavaThread* thread); 160 161 static int access_field_patching(JavaThread* thread); 162 static int move_klass_patching(JavaThread* thread); 163 static int move_mirror_patching(JavaThread* thread); 164 static int move_appendix_patching(JavaThread* thread); 165 166 static void patch_code(JavaThread* thread, StubID stub_id); 167 #ifdef TARGET_ARCH_aarch64 168 static void patch_code_aarch64(JavaThread* thread, StubID stub_id); 169 #endif 170 171 public: 172 // initialization 173 static void initialize(BufferBlob* blob); 174 static void initialize_pd(); 175 176 // stubs 177 static CodeBlob* blob_for (StubID id); 178 static address entry_for(StubID id) { return blob_for(id)->code_begin(); } 179 static const char* name_for (StubID id); 180 static const char* name_for_address(address entry); 181 182 // platform might add runtime names. 183 static const char* pd_name_for_address(address entry); 184 185 // method tracing 186 static void trace_block_entry(jint block_id); 187 188 #ifndef PRODUCT 189 static address throw_count_address() { return (address)&_throw_count; } |