src/cpu/x86/vm/assembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 7009361 Sdiff src/cpu/x86/vm

src/cpu/x86/vm/assembler_x86.cpp

Print this page




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 {


src/cpu/x86/vm/assembler_x86.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File