8075930: AARCH64: Use FP Register in C2
Summary: modify to allow C2 to allocate FP (R29) as a general register
Reviewed-by: aph, kvn, dlong
--- a/hotspot/src/cpu/aarch64/vm/aarch64.ad Thu Apr 23 17:53:38 2015 +0100
+++ b/hotspot/src/cpu/aarch64/vm/aarch64.ad Fri Apr 24 11:01:37 2015 +0000
@@ -449,7 +449,7 @@
R26
/* R27, */ // heapbase
/* R28, */ // thread
- /* R29, */ // fp
+ R29, // fp
/* R30, */ // lr
/* R31 */ // sp
);
@@ -483,7 +483,7 @@
R26, R26_H,
/* R27, R27_H, */ // heapbase
/* R28, R28_H, */ // thread
- /* R29, R29_H, */ // fp
+ R29, R29_H, // fp
/* R30, R30_H, */ // lr
/* R31, R31_H */ // sp
);
@@ -2538,7 +2538,7 @@
}
const RegMask Matcher::method_handle_invoke_SP_save_mask() {
- return RegMask();
+ return FP_REG_mask();
}
// helper for encoding java_to_runtime calls on sim
--- a/hotspot/src/cpu/aarch64/vm/frame_aarch64.inline.hpp Thu Apr 23 17:53:38 2015 +0100
+++ b/hotspot/src/cpu/aarch64/vm/frame_aarch64.inline.hpp Fri Apr 24 11:01:37 2015 +0000
@@ -77,12 +77,6 @@
inline frame::frame(intptr_t* sp, intptr_t* unextended_sp, intptr_t* fp, address pc) {
intptr_t a = intptr_t(sp);
intptr_t b = intptr_t(fp);
-#ifndef PRODUCT
- if (fp)
- if (sp > fp || (fp - sp > 0x100000))
- for(;;)
- asm("nop");
-#endif
_sp = sp;
_unextended_sp = unextended_sp;
_fp = fp;
@@ -104,12 +98,6 @@
inline frame::frame(intptr_t* sp, intptr_t* fp) {
intptr_t a = intptr_t(sp);
intptr_t b = intptr_t(fp);
-#ifndef PRODUCT
- if (fp)
- if (sp > fp || (fp - sp > 0x100000))
- for(;;)
- asm("nop");
-#endif
_sp = sp;
_unextended_sp = sp;
_fp = fp;