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