--- a/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp Thu Oct 08 10:25:45 2015 +0000
+++ b/hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp Thu Oct 08 12:49:30 2015 -1000
@@ -53,6 +53,7 @@
bool is_nop() { return long_at(0) == nop_instruction(); }
bool is_call() { return is_op(long_at(0), Assembler::call_op); }
+ bool is_call_reg() { return is_op(long_at(0), Assembler::arith_op); }
bool is_sethi() { return (is_op2(long_at(0), Assembler::sethi_op2)
&& inv_rd(long_at(0)) != G0); }
@@ -415,6 +416,19 @@
return call;
}
+class NativeCallReg: public NativeInstruction {
+ public:
+ enum Sparc_specific_constants {
+ instruction_size = 8,
+ return_address_offset = 8,
+ instruction_offset = 0
+ };
+
+ address next_instruction_address() const {
+ return addr_at(instruction_size);
+ }
+};
+
// The NativeFarCall is an abstraction for accessing/manipulating native call-anywhere
// instructions in the sparcv9 vm. Used to call native methods which may be loaded
// anywhere in the address space, possibly out of reach of a call instruction.