Mercurial > hg > truffle
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(); |