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