97 |
97 |
98 #ifdef ASSERT |
98 #ifdef ASSERT |
99 // On RISC, there's no benefit to verifying instruction boundaries. |
99 // On RISC, there's no benefit to verifying instruction boundaries. |
100 bool AbstractAssembler::pd_check_instruction_mark() { return false; } |
100 bool AbstractAssembler::pd_check_instruction_mark() { return false; } |
101 #endif |
101 #endif |
102 |
|
103 |
|
104 void MacroAssembler::print_instruction(int inst) { |
|
105 const char* s; |
|
106 switch (inv_op(inst)) { |
|
107 default: s = "????"; break; |
|
108 case call_op: s = "call"; break; |
|
109 case branch_op: |
|
110 switch (inv_op2(inst)) { |
|
111 case fb_op2: s = "fb"; break; |
|
112 case fbp_op2: s = "fbp"; break; |
|
113 case br_op2: s = "br"; break; |
|
114 case bp_op2: s = "bp"; break; |
|
115 case cb_op2: s = "cb"; break; |
|
116 case bpr_op2: { |
|
117 if (is_cbcond(inst)) { |
|
118 s = is_cxb(inst) ? "cxb" : "cwb"; |
|
119 } else { |
|
120 s = "bpr"; |
|
121 } |
|
122 break; |
|
123 } |
|
124 default: s = "????"; break; |
|
125 } |
|
126 } |
|
127 ::tty->print("%s", s); |
|
128 } |
|
129 |
|
130 |
102 |
131 // Patch instruction inst at offset inst_pos to refer to dest_pos |
103 // Patch instruction inst at offset inst_pos to refer to dest_pos |
132 // and return the resulting instruction. |
104 // and return the resulting instruction. |
133 // We should have pcs, not offsets, but since all is relative, it will work out |
105 // We should have pcs, not offsets, but since all is relative, it will work out |
134 // OK. |
106 // OK. |