< prev index next >

src/hotspot/cpu/ppc/assembler_ppc.inline.hpp

Print this page
@@ -452,10 +452,16 @@
  inline void Assembler::bclr(  int boint, int biint, int bhint, relocInfo::relocType rt) { emit_data(BCLR_OPCODE | bo(boint) | bi(biint) | bh(bhint) | aa(0) | lk(0), rt); }
  inline void Assembler::bclrl( int boint, int biint, int bhint, relocInfo::relocType rt) { emit_data(BCLR_OPCODE | bo(boint) | bi(biint) | bh(bhint) | aa(0) | lk(1), rt); }
  inline void Assembler::bcctr( int boint, int biint, int bhint, relocInfo::relocType rt) { emit_data(BCCTR_OPCODE| bo(boint) | bi(biint) | bh(bhint) | aa(0) | lk(0), rt); }
  inline void Assembler::bcctrl(int boint, int biint, int bhint, relocInfo::relocType rt) { emit_data(BCCTR_OPCODE| bo(boint) | bi(biint) | bh(bhint) | aa(0) | lk(1), rt); }
  
+ inline bool Assembler::is_branch(address a) {
+   int32_t instr = *(int32_t*) a;
+   int op = inv_op_ppc(instr);
+   return op == b_op || op == bc_op;
+ }
+ 
  // helper function for b
  inline bool Assembler::is_within_range_of_b(address a, address pc) {
    // Guard against illegal branch targets, e.g. -1 (see CompiledDirectCall and ad-file).
    if ((((uint64_t)a) & 0x3) != 0) return false;
  
< prev index next >