Mercurial > hg > truffle
comparison src/cpu/sparc/vm/nativeInst_sparc.hpp @ 11233:5a9d68c3a7d7
SPARC: a lot of fixes and more
author | twisti |
---|---|
date | Mon, 05 Aug 2013 22:23:00 -0700 |
parents | 46c544b8fbfc |
children | d8041d695d19 |
comparison
equal
deleted
inserted
replaced
11232:22d3ee2fcb97 | 11233:5a9d68c3a7d7 |
---|---|
53 }; | 53 }; |
54 | 54 |
55 bool is_dtrace_trap(); | 55 bool is_dtrace_trap(); |
56 bool is_nop() { return long_at(0) == nop_instruction(); } | 56 bool is_nop() { return long_at(0) == nop_instruction(); } |
57 bool is_call() { return is_op(long_at(0), Assembler::call_op); } | 57 bool is_call() { return is_op(long_at(0), Assembler::call_op); } |
58 bool is_call_reg() { return is_op(long_at(0), Assembler::arith_op); } | |
58 bool is_sethi() { return (is_op2(long_at(0), Assembler::sethi_op2) | 59 bool is_sethi() { return (is_op2(long_at(0), Assembler::sethi_op2) |
59 && inv_rd(long_at(0)) != G0); } | 60 && inv_rd(long_at(0)) != G0); } |
60 | 61 |
61 bool sets_cc() { | 62 bool sets_cc() { |
62 // conservative (returns true for some instructions that do not set the | 63 // conservative (returns true for some instructions that do not set the |
415 call->verify(); | 416 call->verify(); |
416 #endif | 417 #endif |
417 return call; | 418 return call; |
418 } | 419 } |
419 | 420 |
421 class NativeCallReg: public NativeInstruction { | |
422 public: | |
423 enum Sparc_specific_constants { | |
424 instruction_size = 8, | |
425 return_address_offset = 8, | |
426 instruction_offset = 0 | |
427 }; | |
428 | |
429 address next_instruction_address() const { | |
430 return addr_at(instruction_size); | |
431 } | |
432 }; | |
433 | |
420 // The NativeFarCall is an abstraction for accessing/manipulating native call-anywhere | 434 // The NativeFarCall is an abstraction for accessing/manipulating native call-anywhere |
421 // instructions in the sparcv9 vm. Used to call native methods which may be loaded | 435 // instructions in the sparcv9 vm. Used to call native methods which may be loaded |
422 // anywhere in the address space, possibly out of reach of a call instruction. | 436 // anywhere in the address space, possibly out of reach of a call instruction. |
423 | 437 |
424 #ifndef _LP64 | 438 #ifndef _LP64 |