comparison src/cpu/x86/vm/assembler_x86.cpp @ 3755:5cf771a79037

7047697: MethodHandle.invokeExact call for wrong method causes VM failure if run with -Xcomp Reviewed-by: never, twisti
author jrose
date Wed, 08 Jun 2011 17:04:06 -0700
parents cba7b5c2d53f
children a3081a3a2b54
comparison
equal deleted inserted replaced
3754:642c68c75db9 3755:5cf771a79037
5889 pass_arg2(this, arg_2); 5889 pass_arg2(this, arg_2);
5890 pass_arg1(this, arg_1); 5890 pass_arg1(this, arg_1);
5891 call_VM(oop_result, last_java_sp, entry_point, 3, check_exceptions); 5891 call_VM(oop_result, last_java_sp, entry_point, 3, check_exceptions);
5892 } 5892 }
5893 5893
5894 void MacroAssembler::super_call_VM(Register oop_result,
5895 Register last_java_sp,
5896 address entry_point,
5897 int number_of_arguments,
5898 bool check_exceptions) {
5899 Register thread = LP64_ONLY(r15_thread) NOT_LP64(noreg);
5900 MacroAssembler::call_VM_base(oop_result, thread, last_java_sp, entry_point, number_of_arguments, check_exceptions);
5901 }
5902
5903 void MacroAssembler::super_call_VM(Register oop_result,
5904 Register last_java_sp,
5905 address entry_point,
5906 Register arg_1,
5907 bool check_exceptions) {
5908 pass_arg1(this, arg_1);
5909 super_call_VM(oop_result, last_java_sp, entry_point, 1, check_exceptions);
5910 }
5911
5912 void MacroAssembler::super_call_VM(Register oop_result,
5913 Register last_java_sp,
5914 address entry_point,
5915 Register arg_1,
5916 Register arg_2,
5917 bool check_exceptions) {
5918
5919 LP64_ONLY(assert(arg_1 != c_rarg2, "smashed arg"));
5920 pass_arg2(this, arg_2);
5921 pass_arg1(this, arg_1);
5922 super_call_VM(oop_result, last_java_sp, entry_point, 2, check_exceptions);
5923 }
5924
5925 void MacroAssembler::super_call_VM(Register oop_result,
5926 Register last_java_sp,
5927 address entry_point,
5928 Register arg_1,
5929 Register arg_2,
5930 Register arg_3,
5931 bool check_exceptions) {
5932 LP64_ONLY(assert(arg_1 != c_rarg3, "smashed arg"));
5933 LP64_ONLY(assert(arg_2 != c_rarg3, "smashed arg"));
5934 pass_arg3(this, arg_3);
5935 LP64_ONLY(assert(arg_1 != c_rarg2, "smashed arg"));
5936 pass_arg2(this, arg_2);
5937 pass_arg1(this, arg_1);
5938 super_call_VM(oop_result, last_java_sp, entry_point, 3, check_exceptions);
5939 }
5940
5894 void MacroAssembler::call_VM_base(Register oop_result, 5941 void MacroAssembler::call_VM_base(Register oop_result,
5895 Register java_thread, 5942 Register java_thread,
5896 Register last_java_sp, 5943 Register last_java_sp,
5897 address entry_point, 5944 address entry_point,
5898 int number_of_arguments, 5945 int number_of_arguments,