815 // MIPS doesn't support AES intrinsics |
815 // MIPS doesn't support AES intrinsics |
816 const bool Matcher::pass_original_key_for_aes() { |
816 const bool Matcher::pass_original_key_for_aes() { |
817 return false; |
817 return false; |
818 } |
818 } |
819 |
819 |
820 int CallLeafNoFPDirectNode::compute_padding(int current_offset) const { |
820 int CallStaticJavaDirectNode::compute_padding(int current_offset) const { |
821 //lui |
|
822 //ori |
|
823 //dsll |
|
824 //ori |
|
825 |
|
826 //jalr |
|
827 //nop |
|
828 |
|
829 return round_to(current_offset, alignment_required()) - current_offset; |
821 return round_to(current_offset, alignment_required()) - current_offset; |
830 } |
822 } |
831 |
823 |
832 int CallLeafDirectNode::compute_padding(int current_offset) const { |
824 int CallDynamicJavaDirectNode::compute_padding(int current_offset) const { |
833 //lui |
|
834 //ori |
|
835 //dsll |
|
836 //ori |
|
837 |
|
838 //jalr |
|
839 //nop |
|
840 |
|
841 return round_to(current_offset, alignment_required()) - current_offset; |
825 return round_to(current_offset, alignment_required()) - current_offset; |
842 } |
826 } |
843 |
827 |
|
828 int CallLeafNoFPDirectNode::compute_padding(int current_offset) const { |
|
829 return round_to(current_offset, alignment_required()) - current_offset; |
|
830 } |
|
831 |
|
832 int CallLeafDirectNode::compute_padding(int current_offset) const { |
|
833 return round_to(current_offset, alignment_required()) - current_offset; |
|
834 } |
|
835 |
844 int CallRuntimeDirectNode::compute_padding(int current_offset) const { |
836 int CallRuntimeDirectNode::compute_padding(int current_offset) const { |
845 //lui |
|
846 //ori |
|
847 //dsll |
|
848 //ori |
|
849 |
|
850 //jalr |
|
851 //nop |
|
852 |
|
853 return round_to(current_offset, alignment_required()) - current_offset; |
837 return round_to(current_offset, alignment_required()) - current_offset; |
854 } |
838 } |
855 |
839 |
856 // If CPU can load and store mis-aligned doubles directly then no fixup is |
840 // If CPU can load and store mis-aligned doubles directly then no fixup is |
857 // needed. Else we split the double into 2 integer pieces and move it |
841 // needed. Else we split the double into 2 integer pieces and move it |
13380 ins_cost(300); |
13364 ins_cost(300); |
13381 format %{ "CALL,static #@CallStaticJavaDirect " %} |
13365 format %{ "CALL,static #@CallStaticJavaDirect " %} |
13382 ins_encode( Java_Static_Call( meth ) ); |
13366 ins_encode( Java_Static_Call( meth ) ); |
13383 ins_pipe( pipe_slow ); |
13367 ins_pipe( pipe_slow ); |
13384 ins_pc_relative(1); |
13368 ins_pc_relative(1); |
|
13369 ins_alignment(16); |
13385 %} |
13370 %} |
13386 |
13371 |
13387 // Call Java Dynamic Instruction |
13372 // Call Java Dynamic Instruction |
13388 // Note: If this code changes, the corresponding ret_addr_offset() and |
13373 // Note: If this code changes, the corresponding ret_addr_offset() and |
13389 // compute_padding() functions will have to be adjusted. |
13374 // compute_padding() functions will have to be adjusted. |
13395 format %{"MOV IC_Klass, #Universe::non_oop_word()\n\t" |
13380 format %{"MOV IC_Klass, #Universe::non_oop_word()\n\t" |
13396 "CallDynamic @ CallDynamicJavaDirect" %} |
13381 "CallDynamic @ CallDynamicJavaDirect" %} |
13397 ins_encode( Java_Dynamic_Call( meth ) ); |
13382 ins_encode( Java_Dynamic_Call( meth ) ); |
13398 ins_pipe( pipe_slow ); |
13383 ins_pipe( pipe_slow ); |
13399 ins_pc_relative(1); |
13384 ins_pc_relative(1); |
|
13385 ins_alignment(16); |
13400 %} |
13386 %} |
13401 |
13387 |
13402 instruct CallLeafNoFPDirect(method meth) %{ |
13388 instruct CallLeafNoFPDirect(method meth) %{ |
13403 match(CallLeafNoFP); |
13389 match(CallLeafNoFP); |
13404 effect(USE meth); |
13390 effect(USE meth); |