hotspot/src/cpu/x86/vm/interpreterRT_x86_64.cpp
Print this page
rev 611 : Merge
@@ -1,10 +1,7 @@
-#ifdef USE_PRAGMA_IDENT_SRC
-#pragma ident "@(#)interpreterRT_x86_64.cpp 1.27 07/09/17 09:26:03 JVM"
-#endif
/*
- * Copyright 2003-2005 Sun Microsystems, Inc. All Rights Reserved.
+ * Copyright 2003-2008 Sun Microsystems, Inc. All Rights Reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -94,53 +91,53 @@
const Address src(from(), Interpreter::local_offset_in_bytes(offset() + 1));
#ifdef _WIN64
switch (_num_args) {
case 0:
- __ movq(c_rarg1, src);
+ __ movptr(c_rarg1, src);
_num_args++;
break;
case 1:
- __ movq(c_rarg2, src);
+ __ movptr(c_rarg2, src);
_num_args++;
break;
case 2:
- __ movq(c_rarg3, src);
+ __ movptr(c_rarg3, src);
_num_args++;
break;
case 3:
default:
- __ movq(rax, src);
- __ movq(Address(to(), _stack_offset), rax);
+ __ movptr(rax, src);
+ __ movptr(Address(to(), _stack_offset), rax);
_stack_offset += wordSize;
break;
}
#else
switch (_num_int_args) {
case 0:
- __ movq(c_rarg1, src);
+ __ movptr(c_rarg1, src);
_num_int_args++;
break;
case 1:
- __ movq(c_rarg2, src);
+ __ movptr(c_rarg2, src);
_num_int_args++;
break;
case 2:
- __ movq(c_rarg3, src);
+ __ movptr(c_rarg3, src);
_num_int_args++;
break;
case 3:
- __ movq(c_rarg4, src);
+ __ movptr(c_rarg4, src);
_num_int_args++;
break;
case 4:
- __ movq(c_rarg5, src);
+ __ movptr(c_rarg5, src);
_num_int_args++;
break;
default:
- __ movq(rax, src);
- __ movq(Address(to(), _stack_offset), rax);
+ __ movptr(rax, src);
+ __ movptr(Address(to(), _stack_offset), rax);
_stack_offset += wordSize;
break;
}
#endif
}
@@ -172,20 +169,20 @@
#ifdef _WIN64
if (_num_args < Argument::n_float_register_parameters_c-1) {
__ movdbl(as_XMMRegister(++_num_args), src);
} else {
- __ movq(rax, src);
- __ movq(Address(to(), _stack_offset), rax);
+ __ movptr(rax, src);
+ __ movptr(Address(to(), _stack_offset), rax);
_stack_offset += wordSize;
}
#else
if (_num_fp_args < Argument::n_float_register_parameters_c) {
__ movdbl(as_XMMRegister(_num_fp_args++), src);
} else {
- __ movq(rax, src);
- __ movq(Address(to(), _stack_offset), rax);
+ __ movptr(rax, src);
+ __ movptr(Address(to(), _stack_offset), rax);
_stack_offset += wordSize;
}
#endif
}
@@ -194,77 +191,77 @@
#ifdef _WIN64
switch (_num_args) {
case 0:
assert(offset() == 0, "argument register 1 can only be (non-null) receiver");
- __ leaq(c_rarg1, src);
+ __ lea(c_rarg1, src);
_num_args++;
break;
case 1:
- __ leaq(rax, src);
+ __ lea(rax, src);
__ xorl(c_rarg2, c_rarg2);
- __ cmpq(src, 0);
- __ cmovq(Assembler::notEqual, c_rarg2, rax);
+ __ cmpptr(src, 0);
+ __ cmov(Assembler::notEqual, c_rarg2, rax);
_num_args++;
break;
case 2:
- __ leaq(rax, src);
+ __ lea(rax, src);
__ xorl(c_rarg3, c_rarg3);
- __ cmpq(src, 0);
- __ cmovq(Assembler::notEqual, c_rarg3, rax);
+ __ cmpptr(src, 0);
+ __ cmov(Assembler::notEqual, c_rarg3, rax);
_num_args++;
break;
default:
- __ leaq(rax, src);
+ __ lea(rax, src);
__ xorl(temp(), temp());
- __ cmpq(src, 0);
- __ cmovq(Assembler::notEqual, temp(), rax);
- __ movq(Address(to(), _stack_offset), temp());
+ __ cmpptr(src, 0);
+ __ cmov(Assembler::notEqual, temp(), rax);
+ __ movptr(Address(to(), _stack_offset), temp());
_stack_offset += wordSize;
break;
}
#else
switch (_num_int_args) {
case 0:
assert(offset() == 0, "argument register 1 can only be (non-null) receiver");
- __ leaq(c_rarg1, src);
+ __ lea(c_rarg1, src);
_num_int_args++;
break;
case 1:
- __ leaq(rax, src);
+ __ lea(rax, src);
__ xorl(c_rarg2, c_rarg2);
- __ cmpq(src, 0);
- __ cmovq(Assembler::notEqual, c_rarg2, rax);
+ __ cmpptr(src, 0);
+ __ cmov(Assembler::notEqual, c_rarg2, rax);
_num_int_args++;
break;
case 2:
- __ leaq(rax, src);
+ __ lea(rax, src);
__ xorl(c_rarg3, c_rarg3);
- __ cmpq(src, 0);
- __ cmovq(Assembler::notEqual, c_rarg3, rax);
+ __ cmpptr(src, 0);
+ __ cmov(Assembler::notEqual, c_rarg3, rax);
_num_int_args++;
break;
case 3:
- __ leaq(rax, src);
+ __ lea(rax, src);
__ xorl(c_rarg4, c_rarg4);
- __ cmpq(src, 0);
- __ cmovq(Assembler::notEqual, c_rarg4, rax);
+ __ cmpptr(src, 0);
+ __ cmov(Assembler::notEqual, c_rarg4, rax);
_num_int_args++;
break;
case 4:
- __ leaq(rax, src);
+ __ lea(rax, src);
__ xorl(c_rarg5, c_rarg5);
- __ cmpq(src, 0);
- __ cmovq(Assembler::notEqual, c_rarg5, rax);
+ __ cmpptr(src, 0);
+ __ cmov(Assembler::notEqual, c_rarg5, rax);
_num_int_args++;
break;
default:
- __ leaq(rax, src);
+ __ lea(rax, src);
__ xorl(temp(), temp());
- __ cmpq(src, 0);
- __ cmovq(Assembler::notEqual, temp(), rax);
- __ movq(Address(to(), _stack_offset), temp());
+ __ cmpptr(src, 0);
+ __ cmov(Assembler::notEqual, temp(), rax);
+ __ movptr(Address(to(), _stack_offset), temp());
_stack_offset += wordSize;
break;
}
#endif
}