hotspot/src/cpu/sparc/vm/nativeInst_sparc.hpp
changeset 33160 c59f1676d27e
parent 28947 2ea471384931
child 33632 038347770a9e
--- 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.