548 } 549 if (newline) { 550 tty->cr(); 551 } 552 JRT_END 553 554 #if INCLUDE_G1GC 555 556 JRT_LEAF(void, JVMCIRuntime::write_barrier_pre(JavaThread* thread, oopDesc* obj)) 557 G1ThreadLocalData::satb_mark_queue(thread).enqueue(obj); 558 JRT_END 559 560 JRT_LEAF(void, JVMCIRuntime::write_barrier_post(JavaThread* thread, void* card_addr)) 561 G1ThreadLocalData::dirty_card_queue(thread).enqueue(card_addr); 562 JRT_END 563 564 #endif // INCLUDE_G1GC 565 566 JRT_LEAF(jboolean, JVMCIRuntime::validate_object(JavaThread* thread, oopDesc* parent, oopDesc* child)) 567 bool ret = true; 568 if(!Universe::heap()->is_in_closed_subset(parent)) { 569 tty->print_cr("Parent Object " INTPTR_FORMAT " not in heap", p2i(parent)); 570 parent->print(); 571 ret=false; 572 } 573 if(!Universe::heap()->is_in_closed_subset(child)) { 574 tty->print_cr("Child Object " INTPTR_FORMAT " not in heap", p2i(child)); 575 child->print(); 576 ret=false; 577 } 578 return (jint)ret; 579 JRT_END 580 581 JRT_ENTRY(void, JVMCIRuntime::vm_error(JavaThread* thread, jlong where, jlong format, jlong value)) 582 ResourceMark rm; 583 const char *error_msg = where == 0L ? "<internal JVMCI error>" : (char*) (address) where; 584 char *detail_msg = NULL; 585 if (format != 0L) { 586 const char* buf = (char*) (address) format; 587 size_t detail_msg_length = strlen(buf) * 2; 588 detail_msg = (char *) NEW_RESOURCE_ARRAY(u_char, detail_msg_length); 589 jio_snprintf(detail_msg, detail_msg_length, buf, value); 590 report_vm_error(__FILE__, __LINE__, error_msg, "%s", detail_msg); 591 } else { 592 report_vm_error(__FILE__, __LINE__, error_msg); 593 } | 548 } 549 if (newline) { 550 tty->cr(); 551 } 552 JRT_END 553 554 #if INCLUDE_G1GC 555 556 JRT_LEAF(void, JVMCIRuntime::write_barrier_pre(JavaThread* thread, oopDesc* obj)) 557 G1ThreadLocalData::satb_mark_queue(thread).enqueue(obj); 558 JRT_END 559 560 JRT_LEAF(void, JVMCIRuntime::write_barrier_post(JavaThread* thread, void* card_addr)) 561 G1ThreadLocalData::dirty_card_queue(thread).enqueue(card_addr); 562 JRT_END 563 564 #endif // INCLUDE_G1GC 565 566 JRT_LEAF(jboolean, JVMCIRuntime::validate_object(JavaThread* thread, oopDesc* parent, oopDesc* child)) 567 bool ret = true; 568 if(!Universe::heap()->is_in(parent)) { 569 tty->print_cr("Parent Object " INTPTR_FORMAT " not in heap", p2i(parent)); 570 parent->print(); 571 ret=false; 572 } 573 if(!Universe::heap()->is_in(child)) { 574 tty->print_cr("Child Object " INTPTR_FORMAT " not in heap", p2i(child)); 575 child->print(); 576 ret=false; 577 } 578 return (jint)ret; 579 JRT_END 580 581 JRT_ENTRY(void, JVMCIRuntime::vm_error(JavaThread* thread, jlong where, jlong format, jlong value)) 582 ResourceMark rm; 583 const char *error_msg = where == 0L ? "<internal JVMCI error>" : (char*) (address) where; 584 char *detail_msg = NULL; 585 if (format != 0L) { 586 const char* buf = (char*) (address) format; 587 size_t detail_msg_length = strlen(buf) * 2; 588 detail_msg = (char *) NEW_RESOURCE_ARRAY(u_char, detail_msg_length); 589 jio_snprintf(detail_msg, detail_msg_length, buf, value); 590 report_vm_error(__FILE__, __LINE__, error_msg, "%s", detail_msg); 591 } else { 592 report_vm_error(__FILE__, __LINE__, error_msg); 593 } |