759
760 static void pass_arg1(MacroAssembler* masm, Register arg) {
761 if (c_rarg1 != arg ) {
762 masm->mov(c_rarg1, arg);
763 }
764 }
765
766 static void pass_arg2(MacroAssembler* masm, Register arg) {
767 if (c_rarg2 != arg ) {
768 masm->mov(c_rarg2, arg);
769 }
770 }
771
772 static void pass_arg3(MacroAssembler* masm, Register arg) {
773 if (c_rarg3 != arg ) {
774 masm->mov(c_rarg3, arg);
775 }
776 }
777
778 static bool is_preemptable(address entry_point) {
779 return entry_point == CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorenter);
780 }
781
782 void MacroAssembler::call_VM_base(Register oop_result,
783 Register java_thread,
784 Register last_java_sp,
785 address entry_point,
786 int number_of_arguments,
787 bool check_exceptions) {
788 // determine java_thread register
789 if (!java_thread->is_valid()) {
790 java_thread = rthread;
791 }
792
793 // determine last_java_sp register
794 if (!last_java_sp->is_valid()) {
795 last_java_sp = esp;
796 }
797
798 // debugging support
799 assert(number_of_arguments >= 0 , "cannot have negative number of arguments");
|
759
760 static void pass_arg1(MacroAssembler* masm, Register arg) {
761 if (c_rarg1 != arg ) {
762 masm->mov(c_rarg1, arg);
763 }
764 }
765
766 static void pass_arg2(MacroAssembler* masm, Register arg) {
767 if (c_rarg2 != arg ) {
768 masm->mov(c_rarg2, arg);
769 }
770 }
771
772 static void pass_arg3(MacroAssembler* masm, Register arg) {
773 if (c_rarg3 != arg ) {
774 masm->mov(c_rarg3, arg);
775 }
776 }
777
778 static bool is_preemptable(address entry_point) {
779 return entry_point == CAST_FROM_FN_PTR(address, InterpreterRuntime::monitorenter) ||
780 entry_point == CAST_FROM_FN_PTR(address, InterpreterRuntime::resolve_from_cache) ||
781 entry_point == CAST_FROM_FN_PTR(address, InterpreterRuntime::_new);
782 }
783
784 void MacroAssembler::call_VM_base(Register oop_result,
785 Register java_thread,
786 Register last_java_sp,
787 address entry_point,
788 int number_of_arguments,
789 bool check_exceptions) {
790 // determine java_thread register
791 if (!java_thread->is_valid()) {
792 java_thread = rthread;
793 }
794
795 // determine last_java_sp register
796 if (!last_java_sp->is_valid()) {
797 last_java_sp = esp;
798 }
799
800 // debugging support
801 assert(number_of_arguments >= 0 , "cannot have negative number of arguments");
|