1.1 --- a/src/cpu/mips/vm/macroAssembler_mips.cpp Mon Jun 11 17:42:16 2018 +0800 1.2 +++ b/src/cpu/mips/vm/macroAssembler_mips.cpp Tue Jun 12 13:58:17 2018 +0800 1.3 @@ -125,7 +125,7 @@ 1.4 MacroAssembler masm(&cb); 1.5 #define __ masm. 1.6 __ b(target); 1.7 - __ nop(); 1.8 + __ delayed()->nop(); 1.9 __ nop(); 1.10 __ nop(); 1.11 __ nop(); 1.12 @@ -188,11 +188,11 @@ 1.13 void MacroAssembler::general_jump(address target) { 1.14 if (reachable_from_cache(target)) { 1.15 j(target); 1.16 - nop(); 1.17 + delayed()->nop(); 1.18 } else { 1.19 set64(T9, (long)target); 1.20 jr(T9); 1.21 - nop(); 1.22 + delayed()->nop(); 1.23 } 1.24 } 1.25 1.26 @@ -216,11 +216,11 @@ 1.27 nop(); 1.28 nop(); 1.29 j(target); 1.30 - nop(); 1.31 + delayed()->nop(); 1.32 } else { 1.33 patchable_set48(T9, (long)target); 1.34 jr(T9); 1.35 - nop(); 1.36 + delayed()->nop(); 1.37 } 1.38 } 1.39 1.40 @@ -231,11 +231,11 @@ 1.41 void MacroAssembler::general_call(address target) { 1.42 if (reachable_from_cache(target)) { 1.43 jal(target); 1.44 - nop(); 1.45 + delayed()->nop(); 1.46 } else { 1.47 set64(T9, (long)target); 1.48 jalr(T9); 1.49 - nop(); 1.50 + delayed()->nop(); 1.51 } 1.52 } 1.53 1.54 @@ -259,11 +259,11 @@ 1.55 nop(); 1.56 nop(); 1.57 jal(target); 1.58 - nop(); 1.59 + delayed()->nop(); 1.60 } else { 1.61 patchable_set48(T9, (long)target); 1.62 jalr(T9); 1.63 - nop(); 1.64 + delayed()->nop(); 1.65 } 1.66 } 1.67 1.68 @@ -347,7 +347,7 @@ 1.69 Label not_taken; 1.70 1.71 bne(rs, rt, not_taken); 1.72 - nop(); 1.73 + delayed()->nop(); 1.74 1.75 jmp_far(L); 1.76 1.77 @@ -358,7 +358,7 @@ 1.78 Label not_taken; 1.79 1.80 beq(rs, rt, not_taken); 1.81 - nop(); 1.82 + delayed()->nop(); 1.83 1.84 jmp_far(L); 1.85 1.86 @@ -369,7 +369,7 @@ 1.87 Label not_taken; 1.88 1.89 bc1f(not_taken); 1.90 - nop(); 1.91 + delayed()->nop(); 1.92 1.93 jmp_far(L); 1.94 1.95 @@ -380,7 +380,7 @@ 1.96 Label not_taken; 1.97 1.98 bc1t(not_taken); 1.99 - nop(); 1.100 + delayed()->nop(); 1.101 1.102 jmp_far(L); 1.103 1.104 @@ -819,7 +819,7 @@ 1.105 } 1.106 1.107 jr(T9); 1.108 - nop(); 1.109 + delayed()->nop(); 1.110 } 1.111 void MacroAssembler::mov_metadata(Address dst, Metadata* obj) { 1.112 int oop_index; 1.113 @@ -1591,7 +1591,7 @@ 1.114 lb(AT, in_progress); 1.115 } 1.116 beq(AT, R0, done); 1.117 - nop(); 1.118 + delayed()->nop(); 1.119 1.120 // Do we need to load the previous value? 1.121 if (obj != noreg) { 1.122 @@ -1600,7 +1600,7 @@ 1.123 1.124 // Is the previous value null? 1.125 beq(pre_val, R0, done); 1.126 - nop(); 1.127 + delayed()->nop(); 1.128 1.129 // Can we store original value in the thread's buffer? 1.130 // Is index == 0? 1.131 @@ -1608,7 +1608,7 @@ 1.132 1.133 ld(tmp, index); 1.134 beq(tmp, R0, runtime); 1.135 - nop(); 1.136 + delayed()->nop(); 1.137 1.138 daddiu(tmp, tmp, -1 * wordSize); 1.139 sd(tmp, index); 1.140 @@ -1618,7 +1618,7 @@ 1.141 // Record the previous value 1.142 sd(pre_val, tmp, 0); 1.143 beq(R0, R0, done); 1.144 - nop(); 1.145 + delayed()->nop(); 1.146 1.147 bind(runtime); 1.148 // save the live input values 1.149 @@ -1692,12 +1692,12 @@ 1.150 xorr(AT, store_addr, new_val); 1.151 dsrl(AT, AT, HeapRegion::LogOfHRGrainBytes); 1.152 beq(AT, R0, done); 1.153 - nop(); 1.154 + delayed()->nop(); 1.155 1.156 1.157 // crosses regions, storing NULL? 1.158 beq(new_val, R0, done); 1.159 - nop(); 1.160 + delayed()->nop(); 1.161 1.162 // storing region crossing non-NULL, is card already dirty? 1.163 const Register card_addr = tmp; 1.164 @@ -1713,13 +1713,13 @@ 1.165 lb(AT, card_addr, 0); 1.166 daddiu(AT, AT, -1 * (int)G1SATBCardTableModRefBS::g1_young_card_val()); 1.167 beq(AT, R0, done); 1.168 - nop(); 1.169 + delayed()->nop(); 1.170 1.171 sync(); 1.172 lb(AT, card_addr, 0); 1.173 daddiu(AT, AT, -1 * (int)(int)CardTableModRefBS::dirty_card_val()); 1.174 beq(AT, R0, done); 1.175 - nop(); 1.176 + delayed()->nop(); 1.177 1.178 1.179 // storing a region crossing, non-NULL oop, card is clean. 1.180 @@ -1729,7 +1729,7 @@ 1.181 1.182 lw(AT, queue_index); 1.183 beq(AT, R0, runtime); 1.184 - nop(); 1.185 + delayed()->nop(); 1.186 daddiu(AT, AT, -1 * wordSize); 1.187 sw(AT, queue_index); 1.188 ld(tmp2, buffer); 1.189 @@ -1743,7 +1743,7 @@ 1.190 sw(card_addr, tmp2, 0); 1.191 #endif 1.192 beq(R0, R0, done); 1.193 - nop(); 1.194 + delayed()->nop(); 1.195 1.196 bind(runtime); 1.197 // save the live input values 1.198 @@ -4031,10 +4031,10 @@ 1.199 1.200 if (peel) { 1.201 beq(intf_klass, method_result, found_method); 1.202 - nop(); 1.203 + delayed()->nop(); 1.204 } else { 1.205 bne(intf_klass, method_result, search); 1.206 - nop(); 1.207 + delayed()->nop(); 1.208 // (invert the test to fall through to found_method...) 1.209 } 1.210 1.211 @@ -4046,7 +4046,7 @@ 1.212 // the receiver class doesn't implement the interface, and wasn't the 1.213 // same as when the caller was compiled. 1.214 beq(method_result, R0, L_no_such_interface); 1.215 - nop(); 1.216 + delayed()->nop(); 1.217 daddiu(scan_temp, scan_temp, scan_step); 1.218 } 1.219