6022 } 6023 6024 void MacroAssembler::call_VM_leaf(address entry_point, Register arg_0, Register arg_1) { 6025 6026 LP64_ONLY(assert(arg_0 != c_rarg1, "smashed arg")); 6027 pass_arg1(this, arg_1); 6028 pass_arg0(this, arg_0); 6029 call_VM_leaf(entry_point, 2); 6030 } 6031 6032 void MacroAssembler::call_VM_leaf(address entry_point, Register arg_0, Register arg_1, Register arg_2) { 6033 LP64_ONLY(assert(arg_0 != c_rarg2, "smashed arg")); 6034 LP64_ONLY(assert(arg_1 != c_rarg2, "smashed arg")); 6035 pass_arg2(this, arg_2); 6036 LP64_ONLY(assert(arg_0 != c_rarg1, "smashed arg")); 6037 pass_arg1(this, arg_1); 6038 pass_arg0(this, arg_0); 6039 call_VM_leaf(entry_point, 3); 6040 } 6041 6042 void MacroAssembler::check_and_handle_earlyret(Register java_thread) { 6043 } 6044 6045 void MacroAssembler::check_and_handle_popframe(Register java_thread) { 6046 } 6047 6048 void MacroAssembler::cmp32(AddressLiteral src1, int32_t imm) { 6049 if (reachable(src1)) { 6050 cmpl(as_Address(src1), imm); 6051 } else { 6052 lea(rscratch1, src1); 6053 cmpl(Address(rscratch1, 0), imm); 6054 } 6055 } 6056 6057 void MacroAssembler::cmp32(Register src1, AddressLiteral src2) { 6058 assert(!src2.is_lval(), "use cmpptr"); 6059 if (reachable(src2)) { 6060 cmpl(src1, as_Address(src2)); 6061 } else { | 6022 } 6023 6024 void MacroAssembler::call_VM_leaf(address entry_point, Register arg_0, Register arg_1) { 6025 6026 LP64_ONLY(assert(arg_0 != c_rarg1, "smashed arg")); 6027 pass_arg1(this, arg_1); 6028 pass_arg0(this, arg_0); 6029 call_VM_leaf(entry_point, 2); 6030 } 6031 6032 void MacroAssembler::call_VM_leaf(address entry_point, Register arg_0, Register arg_1, Register arg_2) { 6033 LP64_ONLY(assert(arg_0 != c_rarg2, "smashed arg")); 6034 LP64_ONLY(assert(arg_1 != c_rarg2, "smashed arg")); 6035 pass_arg2(this, arg_2); 6036 LP64_ONLY(assert(arg_0 != c_rarg1, "smashed arg")); 6037 pass_arg1(this, arg_1); 6038 pass_arg0(this, arg_0); 6039 call_VM_leaf(entry_point, 3); 6040 } 6041 6042 void MacroAssembler::super_call_VM_leaf(address entry_point, Register arg_0) { 6043 pass_arg0(this, arg_0); 6044 MacroAssembler::call_VM_leaf_base(entry_point, 1); 6045 } 6046 6047 void MacroAssembler::super_call_VM_leaf(address entry_point, Register arg_0, Register arg_1) { 6048 6049 LP64_ONLY(assert(arg_0 != c_rarg1, "smashed arg")); 6050 pass_arg1(this, arg_1); 6051 pass_arg0(this, arg_0); 6052 MacroAssembler::call_VM_leaf_base(entry_point, 2); 6053 } 6054 6055 void MacroAssembler::super_call_VM_leaf(address entry_point, Register arg_0, Register arg_1, Register arg_2) { 6056 LP64_ONLY(assert(arg_0 != c_rarg2, "smashed arg")); 6057 LP64_ONLY(assert(arg_1 != c_rarg2, "smashed arg")); 6058 pass_arg2(this, arg_2); 6059 LP64_ONLY(assert(arg_0 != c_rarg1, "smashed arg")); 6060 pass_arg1(this, arg_1); 6061 pass_arg0(this, arg_0); 6062 MacroAssembler::call_VM_leaf_base(entry_point, 3); 6063 } 6064 6065 void MacroAssembler::super_call_VM_leaf(address entry_point, Register arg_0, Register arg_1, Register arg_2, Register arg_3) { 6066 LP64_ONLY(assert(arg_0 != c_rarg3, "smashed arg")); 6067 LP64_ONLY(assert(arg_1 != c_rarg3, "smashed arg")); 6068 LP64_ONLY(assert(arg_2 != c_rarg3, "smashed arg")); 6069 pass_arg3(this, arg_3); 6070 LP64_ONLY(assert(arg_0 != c_rarg2, "smashed arg")); 6071 LP64_ONLY(assert(arg_1 != c_rarg2, "smashed arg")); 6072 pass_arg2(this, arg_2); 6073 LP64_ONLY(assert(arg_0 != c_rarg1, "smashed arg")); 6074 pass_arg1(this, arg_1); 6075 pass_arg0(this, arg_0); 6076 MacroAssembler::call_VM_leaf_base(entry_point, 4); 6077 } 6078 6079 void MacroAssembler::check_and_handle_earlyret(Register java_thread) { 6080 } 6081 6082 void MacroAssembler::check_and_handle_popframe(Register java_thread) { 6083 } 6084 6085 void MacroAssembler::cmp32(AddressLiteral src1, int32_t imm) { 6086 if (reachable(src1)) { 6087 cmpl(as_Address(src1), imm); 6088 } else { 6089 lea(rscratch1, src1); 6090 cmpl(Address(rscratch1, 0), imm); 6091 } 6092 } 6093 6094 void MacroAssembler::cmp32(Register src1, AddressLiteral src2) { 6095 assert(!src2.is_lval(), "use cmpptr"); 6096 if (reachable(src2)) { 6097 cmpl(src1, as_Address(src2)); 6098 } else { |