comparison src/share/vm/graal/graalCodeInstaller.cpp @ 3538:e4616e3d207b

support for new CiRuntimeCalls CreateNullPointerException and CreateOutOfBoundsException
author Lukas Stadler <lukas.stadler@jku.at>
date Wed, 10 Aug 2011 18:19:09 +0200
parents 5aeb62416609
children 25765a764212
comparison
equal deleted inserted replaced
3536:c4f88f4ede54 3538:e4616e3d207b
592 TRACE_graal_3("CiRuntimeCall::UnwindException()"); 592 TRACE_graal_3("CiRuntimeCall::UnwindException()");
593 } else if (runtime_call == CiRuntimeCall::HandleException()) { 593 } else if (runtime_call == CiRuntimeCall::HandleException()) {
594 call->set_destination(Runtime1::entry_for(Runtime1::graal_handle_exception_id)); 594 call->set_destination(Runtime1::entry_for(Runtime1::graal_handle_exception_id));
595 _instructions->relocate(call->instruction_address(), runtime_call_Relocation::spec(), Assembler::call32_operand); 595 _instructions->relocate(call->instruction_address(), runtime_call_Relocation::spec(), Assembler::call32_operand);
596 TRACE_graal_3("CiRuntimeCall::HandleException()"); 596 TRACE_graal_3("CiRuntimeCall::HandleException()");
597 } else if (runtime_call == CiRuntimeCall::CreateNullPointerException()) {
598 call->set_destination(Runtime1::entry_for(Runtime1::graal_create_null_pointer_exception_id));
599 _instructions->relocate(call->instruction_address(), runtime_call_Relocation::spec(), Assembler::call32_operand);
600 TRACE_graal_3("CiRuntimeCall::CreateNullPointerException()");
601 } else if (runtime_call == CiRuntimeCall::CreateOutOfBoundsException()) {
602 call->set_destination(Runtime1::entry_for(Runtime1::graal_create_out_of_bounds_exception_id));
603 _instructions->relocate(call->instruction_address(), runtime_call_Relocation::spec(), Assembler::call32_operand);
604 TRACE_graal_3("CiRuntimeCall::CreateOutOfBoundsException()");
597 } else if (runtime_call == CiRuntimeCall::JavaTimeMillis()) { 605 } else if (runtime_call == CiRuntimeCall::JavaTimeMillis()) {
598 call->set_destination((address)os::javaTimeMillis); 606 call->set_destination((address)os::javaTimeMillis);
599 _instructions->relocate(call->instruction_address(), runtime_call_Relocation::spec(), Assembler::call32_operand); 607 _instructions->relocate(call->instruction_address(), runtime_call_Relocation::spec(), Assembler::call32_operand);
600 TRACE_graal_3("CiRuntimeCall::JavaTimeMillis()"); 608 TRACE_graal_3("CiRuntimeCall::JavaTimeMillis()");
601 } else if (runtime_call == CiRuntimeCall::JavaTimeNanos()) { 609 } else if (runtime_call == CiRuntimeCall::JavaTimeNanos()) {
656 _instructions->relocate(call->instruction_address(), virtual_call_Relocation::spec(_invoke_mark_pc), Assembler::call32_operand); 664 _instructions->relocate(call->instruction_address(), virtual_call_Relocation::spec(_invoke_mark_pc), Assembler::call32_operand);
657 break; 665 break;
658 } 666 }
659 case MARK_INVOKESTATIC: { 667 case MARK_INVOKESTATIC: {
660 assert(method == NULL || method->is_static(), "cannot call non-static method with invokestatic"); 668 assert(method == NULL || method->is_static(), "cannot call non-static method with invokestatic");
669
661 call->set_destination(SharedRuntime::get_resolve_static_call_stub()); 670 call->set_destination(SharedRuntime::get_resolve_static_call_stub());
662 _instructions->relocate(call->instruction_address(), relocInfo::static_call_type, Assembler::call32_operand); 671 _instructions->relocate(call->instruction_address(), relocInfo::static_call_type, Assembler::call32_operand);
663 break; 672 break;
664 } 673 }
665 case MARK_INVOKESPECIAL: { 674 case MARK_INVOKESPECIAL: {