358 359 assert(oop(klass)->is_klass(), "not a class"); 360 assert(rank >= 1, "rank must be nonzero"); 361 oop obj = arrayKlass::cast(klass)->multi_allocate(rank, dims, CHECK); 362 thread->set_vm_result(obj); 363 JRT_END 364 365 366 JRT_ENTRY(void, Runtime1::unimplemented_entry(JavaThread* thread, StubID id)) 367 tty->print_cr("Runtime1::entry_for(%d) returned unimplemented entry point", id); 368 JRT_END 369 370 371 JRT_ENTRY(void, Runtime1::throw_array_store_exception(JavaThread* thread, oopDesc* obj)) 372 ResourceMark rm(thread); 373 const char* klass_name = Klass::cast(obj->klass())->external_name(); 374 SharedRuntime::throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_ArrayStoreException(), klass_name); 375 JRT_END 376 377 378 JRT_ENTRY(void, Runtime1::post_jvmti_exception_throw(JavaThread* thread)) 379 if (JvmtiExport::can_post_on_exceptions()) { 380 vframeStream vfst(thread, true); 381 address bcp = vfst.method()->bcp_from(vfst.bci()); 382 JvmtiExport::post_exception_throw(thread, vfst.method(), bcp, thread->exception_oop()); 383 } 384 JRT_END 385 386 // counter_overflow() is called from within C1-compiled methods. The enclosing method is the method 387 // associated with the top activation record. The inlinee (that is possibly included in the enclosing 388 // method) method oop is passed as an argument. In order to do that it is embedded in the code as 389 // a constant. 390 static nmethod* counter_overflow_helper(JavaThread* THREAD, int branch_bci, methodOopDesc* m) { 391 nmethod* osr_nm = NULL; 392 methodHandle method(THREAD, m); 393 394 RegisterMap map(THREAD, false); 395 frame fr = THREAD->last_frame().sender(&map); 396 nmethod* nm = (nmethod*) fr.cb(); 397 assert(nm!= NULL && nm->is_nmethod(), "Sanity check"); 398 methodHandle enclosing_method(THREAD, nm->method()); 399 400 CompLevel level = (CompLevel)nm->comp_level(); 401 int bci = InvocationEntryBci; 402 if (branch_bci != InvocationEntryBci) { 403 // Compute desination bci 404 address pc = method()->code_base() + branch_bci; 405 Bytecodes::Code branch = Bytecodes::code_at(method(), pc); | 358 359 assert(oop(klass)->is_klass(), "not a class"); 360 assert(rank >= 1, "rank must be nonzero"); 361 oop obj = arrayKlass::cast(klass)->multi_allocate(rank, dims, CHECK); 362 thread->set_vm_result(obj); 363 JRT_END 364 365 366 JRT_ENTRY(void, Runtime1::unimplemented_entry(JavaThread* thread, StubID id)) 367 tty->print_cr("Runtime1::entry_for(%d) returned unimplemented entry point", id); 368 JRT_END 369 370 371 JRT_ENTRY(void, Runtime1::throw_array_store_exception(JavaThread* thread, oopDesc* obj)) 372 ResourceMark rm(thread); 373 const char* klass_name = Klass::cast(obj->klass())->external_name(); 374 SharedRuntime::throw_and_post_jvmti_exception(thread, vmSymbols::java_lang_ArrayStoreException(), klass_name); 375 JRT_END 376 377 378 // counter_overflow() is called from within C1-compiled methods. The enclosing method is the method 379 // associated with the top activation record. The inlinee (that is possibly included in the enclosing 380 // method) method oop is passed as an argument. In order to do that it is embedded in the code as 381 // a constant. 382 static nmethod* counter_overflow_helper(JavaThread* THREAD, int branch_bci, methodOopDesc* m) { 383 nmethod* osr_nm = NULL; 384 methodHandle method(THREAD, m); 385 386 RegisterMap map(THREAD, false); 387 frame fr = THREAD->last_frame().sender(&map); 388 nmethod* nm = (nmethod*) fr.cb(); 389 assert(nm!= NULL && nm->is_nmethod(), "Sanity check"); 390 methodHandle enclosing_method(THREAD, nm->method()); 391 392 CompLevel level = (CompLevel)nm->comp_level(); 393 int bci = InvocationEntryBci; 394 if (branch_bci != InvocationEntryBci) { 395 // Compute desination bci 396 address pc = method()->code_base() + branch_bci; 397 Bytecodes::Code branch = Bytecodes::code_at(method(), pc); |