aboutsummaryrefslogtreecommitdiff
path: root/src/cpu/sparc/vm/c1_FrameMap_sparc.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/sparc/vm/c1_FrameMap_sparc.hpp')
-rw-r--r--src/cpu/sparc/vm/c1_FrameMap_sparc.hpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/cpu/sparc/vm/c1_FrameMap_sparc.hpp b/src/cpu/sparc/vm/c1_FrameMap_sparc.hpp
index 592d30b41..10dfbcead 100644
--- a/src/cpu/sparc/vm/c1_FrameMap_sparc.hpp
+++ b/src/cpu/sparc/vm/c1_FrameMap_sparc.hpp
@@ -103,6 +103,7 @@
static LIR_Opr in_long_opr;
static LIR_Opr out_long_opr;
+ static LIR_Opr g1_long_single_opr;
static LIR_Opr F0_opr;
static LIR_Opr F0_double_opr;
@@ -113,18 +114,25 @@
private:
static FloatRegister _fpu_regs [nof_fpu_regs];
+ static LIR_Opr as_long_single_opr(Register r) {
+ return LIR_OprFact::double_cpu(cpu_reg2rnr(r), cpu_reg2rnr(r));
+ }
+ static LIR_Opr as_long_pair_opr(Register r) {
+ return LIR_OprFact::double_cpu(cpu_reg2rnr(r->successor()), cpu_reg2rnr(r));
+ }
+
public:
#ifdef _LP64
static LIR_Opr as_long_opr(Register r) {
- return LIR_OprFact::double_cpu(cpu_reg2rnr(r), cpu_reg2rnr(r));
+ return as_long_single_opr(r);
}
static LIR_Opr as_pointer_opr(Register r) {
- return LIR_OprFact::double_cpu(cpu_reg2rnr(r), cpu_reg2rnr(r));
+ return as_long_single_opr(r);
}
#else
static LIR_Opr as_long_opr(Register r) {
- return LIR_OprFact::double_cpu(cpu_reg2rnr(r->successor()), cpu_reg2rnr(r));
+ return as_long_pair_opr(r);
}
static LIR_Opr as_pointer_opr(Register r) {
return as_opr(r);