< prev index next >
src/cpu/sparc/vm/nativeInst_sparc.hpp
Print this page
@@ -51,10 +51,11 @@
nop_instruction_size = 4
};
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); }
bool sets_cc() {
// conservative (returns true for some instructions that do not set the
@@ -413,10 +414,23 @@
call->verify();
#endif
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.
#ifndef _LP64
< prev index next >