src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp

Print this page




 736         runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dexp);
 737         break;
 738       default:
 739         ShouldNotReachHere();
 740       }
 741 
 742       LIR_Opr result = call_runtime(x->argument_at(0), runtime_entry, x->type(), NULL);
 743       set_result(x, result);
 744       break;
 745     }
 746     case vmIntrinsics::_dpow: {
 747       assert(x->number_of_arguments() == 2, "wrong type");
 748       address runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dpow);
 749       LIR_Opr result = call_runtime(x->argument_at(0), x->argument_at(1), runtime_entry, x->type(), NULL);
 750       set_result(x, result);
 751       break;
 752     }
 753   }
 754 }
 755 



 756 
 757 void LIRGenerator::do_ArrayCopy(Intrinsic* x) {
 758   assert(x->number_of_arguments() == 5, "wrong type");
 759 
 760   // Make all state_for calls early since they can emit code
 761   CodeEmitInfo* info = state_for(x, x->state());
 762 
 763   // Note: spill caller save before setting the item
 764   LIRItem src     (x->argument_at(0), this);
 765   LIRItem src_pos (x->argument_at(1), this);
 766   LIRItem dst     (x->argument_at(2), this);
 767   LIRItem dst_pos (x->argument_at(3), this);
 768   LIRItem length  (x->argument_at(4), this);
 769   // load all values in callee_save_registers, as this makes the
 770   // parameter passing to the fast case simpler
 771   src.load_item_force     (rlock_callee_saved(T_OBJECT));
 772   src_pos.load_item_force (rlock_callee_saved(T_INT));
 773   dst.load_item_force     (rlock_callee_saved(T_OBJECT));
 774   dst_pos.load_item_force (rlock_callee_saved(T_INT));
 775   length.load_item_force  (rlock_callee_saved(T_INT));




 736         runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dexp);
 737         break;
 738       default:
 739         ShouldNotReachHere();
 740       }
 741 
 742       LIR_Opr result = call_runtime(x->argument_at(0), runtime_entry, x->type(), NULL);
 743       set_result(x, result);
 744       break;
 745     }
 746     case vmIntrinsics::_dpow: {
 747       assert(x->number_of_arguments() == 2, "wrong type");
 748       address runtime_entry = CAST_FROM_FN_PTR(address, SharedRuntime::dpow);
 749       LIR_Opr result = call_runtime(x->argument_at(0), x->argument_at(1), runtime_entry, x->type(), NULL);
 750       set_result(x, result);
 751       break;
 752     }
 753   }
 754 }
 755 
 756 void LIRGenerator::do_CryptoIntrinsic(Intrinsic* x) {
 757   ShouldNotReachHere();
 758 }
 759 
 760 void LIRGenerator::do_ArrayCopy(Intrinsic* x) {
 761   assert(x->number_of_arguments() == 5, "wrong type");
 762 
 763   // Make all state_for calls early since they can emit code
 764   CodeEmitInfo* info = state_for(x, x->state());
 765 
 766   // Note: spill caller save before setting the item
 767   LIRItem src     (x->argument_at(0), this);
 768   LIRItem src_pos (x->argument_at(1), this);
 769   LIRItem dst     (x->argument_at(2), this);
 770   LIRItem dst_pos (x->argument_at(3), this);
 771   LIRItem length  (x->argument_at(4), this);
 772   // load all values in callee_save_registers, as this makes the
 773   // parameter passing to the fast case simpler
 774   src.load_item_force     (rlock_callee_saved(T_OBJECT));
 775   src_pos.load_item_force (rlock_callee_saved(T_INT));
 776   dst.load_item_force     (rlock_callee_saved(T_OBJECT));
 777   dst_pos.load_item_force (rlock_callee_saved(T_INT));
 778   length.load_item_force  (rlock_callee_saved(T_INT));