comparison src/cpu/x86/vm/c1_LIRAssembler_x86.cpp @ 1564:61b2245abf36

6930772: JSR 292 needs to support SPARC C1 Summary: C1 for SPARC needs to support JSR 292. Reviewed-by: never, jrose
author twisti
date Fri, 21 May 2010 02:59:24 -0700
parents befdf73d6b82
children 87fc6aca31ab
comparison
equal deleted inserted replaced
1563:1a5913bf5e19 1564:61b2245abf36
2782 2782
2783 void LIR_Assembler::call(LIR_OpJavaCall* op, relocInfo::relocType rtype) { 2783 void LIR_Assembler::call(LIR_OpJavaCall* op, relocInfo::relocType rtype) {
2784 assert(!os::is_MP() || (__ offset() + NativeCall::displacement_offset) % BytesPerWord == 0, 2784 assert(!os::is_MP() || (__ offset() + NativeCall::displacement_offset) % BytesPerWord == 0,
2785 "must be aligned"); 2785 "must be aligned");
2786 __ call(AddressLiteral(op->addr(), rtype)); 2786 __ call(AddressLiteral(op->addr(), rtype));
2787 add_call_info(code_offset(), op->info(), op->is_method_handle_invoke()); 2787 add_call_info(code_offset(), op->info());
2788 } 2788 }
2789 2789
2790 2790
2791 void LIR_Assembler::ic_call(LIR_OpJavaCall* op) { 2791 void LIR_Assembler::ic_call(LIR_OpJavaCall* op) {
2792 RelocationHolder rh = virtual_call_Relocation::spec(pc()); 2792 RelocationHolder rh = virtual_call_Relocation::spec(pc());
2793 __ movoop(IC_Klass, (jobject)Universe::non_oop_word()); 2793 __ movoop(IC_Klass, (jobject)Universe::non_oop_word());
2794 assert(!os::is_MP() || 2794 assert(!os::is_MP() ||
2795 (__ offset() + NativeCall::displacement_offset) % BytesPerWord == 0, 2795 (__ offset() + NativeCall::displacement_offset) % BytesPerWord == 0,
2796 "must be aligned"); 2796 "must be aligned");
2797 __ call(AddressLiteral(op->addr(), rh)); 2797 __ call(AddressLiteral(op->addr(), rh));
2798 add_call_info(code_offset(), op->info(), op->is_method_handle_invoke()); 2798 add_call_info(code_offset(), op->info());
2799 } 2799 }
2800 2800
2801 2801
2802 /* Currently, vtable-dispatch is only enabled for sparc platforms */ 2802 /* Currently, vtable-dispatch is only enabled for sparc platforms */
2803 void LIR_Assembler::vtable_call(LIR_OpJavaCall* op) { 2803 void LIR_Assembler::vtable_call(LIR_OpJavaCall* op) {
2804 ShouldNotReachHere(); 2804 ShouldNotReachHere();
2805 }
2806
2807
2808 void LIR_Assembler::preserve_SP(LIR_OpJavaCall* op) {
2809 __ movptr(FrameMap::method_handle_invoke_SP_save_opr()->as_register(), rsp);
2810 }
2811
2812
2813 void LIR_Assembler::restore_SP(LIR_OpJavaCall* op) {
2814 __ movptr(rsp, FrameMap::method_handle_invoke_SP_save_opr()->as_register());
2815 } 2805 }
2816 2806
2817 2807
2818 void LIR_Assembler::emit_static_call_stub() { 2808 void LIR_Assembler::emit_static_call_stub() {
2819 address call_pc = __ pc(); 2809 address call_pc = __ pc();