src/cpu/mips/vm/mips_64.ad

changeset 8862
fd13a567f179
parent 8861
2a33b32dd03c
child 8863
5376ce0dc552
     1.1 --- a/src/cpu/mips/vm/mips_64.ad	Thu May 24 19:24:53 2018 +0800
     1.2 +++ b/src/cpu/mips/vm/mips_64.ad	Thu May 24 19:26:50 2018 +0800
     1.3 @@ -654,7 +654,8 @@
     1.4  bool Matcher::is_short_branch_offset(int rule, int br_size, int offset) {
     1.5    int offs = offset - br_size + 4;
     1.6    // To be conservative on MIPS
     1.7 -  return Assembler::is_simm16((offs + 4) >> 2) && Assembler::is_simm16((offs - 4) >> 2);
     1.8 +  const int safety_zone = 3 * BytesPerInstWord;
     1.9 +  return Assembler::is_simm16((offs<0 ? offs-safety_zone : offs+safety_zone) >> 2);
    1.10  }
    1.11  
    1.12  
    1.13 @@ -1562,7 +1563,7 @@
    1.14      // Materialize the constant table base.
    1.15      address baseaddr = consts_section->start() + -(constant_table.table_base_offset());
    1.16      // RelocationHolder rspec = internal_word_Relocation::spec(baseaddr);
    1.17 -    __ relocate(relocInfo::internal_pc_type);
    1.18 +    __ relocate(relocInfo::internal_word_type);
    1.19      __ patchable_set48(Rtoc, (long)baseaddr);
    1.20    }
    1.21  }
    1.22 @@ -6698,17 +6699,12 @@
    1.23    format %{ "JMP    $labl #@jmpDir_long" %}
    1.24  
    1.25    ins_encode %{
    1.26 -    Label &L = *($labl$$label);
    1.27 -    if(&L)
    1.28 -       __ b(L);
    1.29 -    else
    1.30 -         __ b(int(0));
    1.31 -    __ nop();
    1.32 -    __ nop();
    1.33 -  %}
    1.34 -
    1.35 -    ins_pipe( pipe_jump );
    1.36 -    ins_pc_relative(1);
    1.37 +    Label* L = $labl$$label;
    1.38 +    __ jmp_far(*L);
    1.39 +  %}
    1.40 +
    1.41 +  ins_pipe( pipe_jump );
    1.42 +  //ins_pc_relative(1);
    1.43  %}
    1.44  
    1.45  // Jump Direct Conditional - Label defines a relative address from Jcc+1
    1.46 @@ -6721,55 +6717,35 @@
    1.47    ins_encode %{
    1.48      Register op1 = $src1$$Register;
    1.49      Register op2 = $src2$$Register;
    1.50 -    Label     &L = *($labl$$label);
    1.51 +    Label*     L = $labl$$label;
    1.52      int     flag = $cop$$cmpcode;
    1.53  
    1.54      switch(flag) {
    1.55        case 0x01: //equal
    1.56 -        if (&L)
    1.57 -          __ beq(op1, op2, L);
    1.58 -        else
    1.59 -          __ beq(op1, op2, (int)0);
    1.60 +        __ beq_long(op1, op2, *L);
    1.61          break;
    1.62        case 0x02: //not_equal
    1.63 -        if (&L)
    1.64 -          __ bne(op1, op2, L);
    1.65 -        else
    1.66 -          __ bne(op1, op2, (int)0);
    1.67 +        __ bne_long(op1, op2, *L);
    1.68          break;
    1.69        case 0x03: //above
    1.70          __ slt(AT, op2, op1);
    1.71 -        if(&L)
    1.72 -          __ bne(AT, R0, L);
    1.73 -        else
    1.74 -          __ bne(AT, R0, (int)0);
    1.75 +        __ bne_long(AT, R0, *L);
    1.76          break;
    1.77        case 0x04: //above_equal
    1.78          __ slt(AT, op1, op2);
    1.79 -        if(&L)
    1.80 -          __ beq(AT, R0, L);
    1.81 -        else
    1.82 -          __ beq(AT, R0, (int)0);
    1.83 +        __ beq_long(AT, R0, *L);
    1.84          break;
    1.85        case 0x05: //below
    1.86          __ slt(AT, op1, op2);
    1.87 -        if(&L)
    1.88 -          __ bne(AT, R0, L);
    1.89 -        else
    1.90 -          __ bne(AT, R0, (int)0);
    1.91 +        __ bne_long(AT, R0, *L);
    1.92          break;
    1.93        case 0x06: //below_equal
    1.94          __ slt(AT, op2, op1);
    1.95 -        if(&L)
    1.96 -          __ beq(AT, R0, L);
    1.97 -        else
    1.98 -          __ beq(AT, R0, (int)0);
    1.99 +        __ beq_long(AT, R0, *L);
   1.100          break;
   1.101        default:
   1.102          Unimplemented();
   1.103      }
   1.104 -    __ nop();
   1.105 -    __ nop();
   1.106    %}
   1.107    ins_pipe( pipe_jump );
   1.108    ins_pc_relative(1);
   1.109 @@ -6784,57 +6760,37 @@
   1.110    ins_encode %{
   1.111      Register op1 = $src1$$Register;
   1.112      Register op2 = AT;
   1.113 -    Label     &L = *($labl$$label);
   1.114 +    Label*     L = $labl$$label;
   1.115      int     flag = $cop$$cmpcode;
   1.116  
   1.117      __ move(op2, $src2$$constant);
   1.118  
   1.119      switch(flag) {
   1.120        case 0x01: //equal
   1.121 -        if (&L)
   1.122 -          __ beq(op1, op2, L);
   1.123 -        else
   1.124 -          __ beq(op1, op2, (int)0);
   1.125 +        __ beq_long(op1, op2, *L);
   1.126          break;
   1.127        case 0x02: //not_equal
   1.128 -        if (&L)
   1.129 -          __ bne(op1, op2, L);
   1.130 -        else
   1.131 -          __ bne(op1, op2, (int)0);
   1.132 +        __ bne_long(op1, op2, *L);
   1.133          break;
   1.134        case 0x03: //above
   1.135          __ slt(AT, op2, op1);
   1.136 -        if(&L)
   1.137 -          __ bne(AT, R0, L);
   1.138 -        else
   1.139 -          __ bne(AT, R0, (int)0);
   1.140 +        __ bne_long(AT, R0, *L);
   1.141          break;
   1.142        case 0x04: //above_equal
   1.143          __ slt(AT, op1, op2);
   1.144 -        if(&L)
   1.145 -          __ beq(AT, R0, L);
   1.146 -        else
   1.147 -          __ beq(AT, R0, (int)0);
   1.148 +        __ beq_long(AT, R0, *L);
   1.149          break;
   1.150        case 0x05: //below
   1.151          __ slt(AT, op1, op2);
   1.152 -        if(&L)
   1.153 -          __ bne(AT, R0, L);
   1.154 -        else
   1.155 -          __ bne(AT, R0, (int)0);
   1.156 +        __ bne_long(AT, R0, *L);
   1.157          break;
   1.158        case 0x06: //below_equal
   1.159          __ slt(AT, op2, op1);
   1.160 -        if(&L)
   1.161 -          __ beq(AT, R0, L);
   1.162 -        else
   1.163 -          __ beq(AT, R0, (int)0);
   1.164 +        __ beq_long(AT, R0, *L);
   1.165          break;
   1.166        default:
   1.167          Unimplemented();
   1.168      }
   1.169 -    __ nop();
   1.170 -    __ nop();
   1.171    %}
   1.172    ins_pipe( pipe_jump );
   1.173    ins_pc_relative(1);
   1.174 @@ -6850,25 +6806,17 @@
   1.175    format %{ "J$cop    $labl  #mips uses AT as eflag @jmpCon_flags_long" %}
   1.176  
   1.177    ins_encode %{
   1.178 -    Label    &L =  *($labl$$label);
   1.179 +    Label*    L =  $labl$$label;
   1.180      switch($cop$$cmpcode) {
   1.181        case 0x01: //equal
   1.182 -        if (&L)
   1.183 -          __ bne(AT, R0, L);
   1.184 -        else
   1.185 -          __ bne(AT, R0, (int)0);
   1.186 +        __ bne_long(AT, R0, *L);
   1.187          break;
   1.188        case 0x02: //not equal
   1.189 -        if (&L)
   1.190 -          __ beq(AT, R0, L);
   1.191 -        else
   1.192 -          __ beq(AT, R0, (int)0);
   1.193 +        __ beq_long(AT, R0, *L);
   1.194          break;
   1.195        default:
   1.196          Unimplemented();
   1.197      }
   1.198 -    __ nop();
   1.199 -    __ nop();
   1.200    %}
   1.201  
   1.202    ins_pipe( pipe_jump );
   1.203 @@ -6886,27 +6834,19 @@
   1.204    ins_encode %{
   1.205      Register op1 = $op1$$Register;
   1.206      Register op2 = R0;
   1.207 -    Label    &L  = *($labl$$label);
   1.208 +    Label*    L  = $labl$$label;
   1.209      int     flag = $cmp$$cmpcode;
   1.210  
   1.211      switch(flag) {
   1.212        case 0x01: //equal
   1.213 -        if (&L)
   1.214 -          __ beq(op1, op2, L);
   1.215 -        else
   1.216 -          __ beq(op1, op2, (int)0);
   1.217 +        __ beq_long(op1, op2, *L);
   1.218          break;
   1.219        case 0x02: //not_equal
   1.220 -        if (&L)
   1.221 -          __ bne(op1, op2, L);
   1.222 -        else
   1.223 -          __ bne(op1, op2, (int)0);
   1.224 +        __ bne_long(op1, op2, *L);
   1.225          break;
   1.226        default:
   1.227          Unimplemented();
   1.228      }
   1.229 -    __ nop();
   1.230 -    __ nop();
   1.231    %}
   1.232  
   1.233    ins_pc_relative(1);
   1.234 @@ -6924,28 +6864,20 @@
   1.235    ins_encode %{
   1.236      Register op1 = $op1$$Register;
   1.237      Register op2 = R0;
   1.238 -    Label    &L  = *($labl$$label);
   1.239 +    Label*    L  = $labl$$label;
   1.240      int     flag = $cmp$$cmpcode;
   1.241  
   1.242      switch(flag)
   1.243      {
   1.244        case 0x01: //equal
   1.245 -        if (&L)
   1.246 -          __ beq(op1, op2, L);
   1.247 -        else
   1.248 -          __ beq(op1, op2, (int)0);
   1.249 +        __ beq_long(op1, op2, *L);
   1.250          break;
   1.251        case 0x02: //not_equal
   1.252 -        if (&L)
   1.253 -          __ bne(op1, op2, L);
   1.254 -        else
   1.255 -          __ bne(op1, op2, (int)0);
   1.256 +        __ bne_long(op1, op2, *L);
   1.257          break;
   1.258        default:
   1.259          Unimplemented();
   1.260      }
   1.261 -    __ nop();
   1.262 -    __ nop();
   1.263    %}
   1.264  
   1.265    ins_pc_relative(1);
   1.266 @@ -6964,55 +6896,35 @@
   1.267    ins_encode %{
   1.268      Register op1 = $op1$$Register;
   1.269      Register op2 = $op2$$Register;
   1.270 -    Label    &L  = *($labl$$label);
   1.271 +    Label*    L  = $labl$$label;
   1.272      int     flag = $cmp$$cmpcode;
   1.273  
   1.274      switch(flag) {
   1.275        case 0x01: //equal
   1.276 -        if (&L)
   1.277 -          __ beq(op1, op2, L);
   1.278 -        else
   1.279 -          __ beq(op1, op2, (int)0);
   1.280 +        __ beq_long(op1, op2, *L);
   1.281          break;
   1.282        case 0x02: //not_equal
   1.283 -        if (&L)
   1.284 -          __ bne(op1, op2, L);
   1.285 -        else
   1.286 -          __ bne(op1, op2, (int)0);
   1.287 +        __ bne_long(op1, op2, *L);
   1.288          break;
   1.289        case 0x03: //above
   1.290          __ sltu(AT, op2, op1);
   1.291 -        if(&L)
   1.292 -          __ bne(R0, AT, L);
   1.293 -        else
   1.294 -                __ bne(R0, AT, (int)0);
   1.295 +        __ bne_long(R0, AT, *L);
   1.296          break;
   1.297        case 0x04: //above_equal
   1.298          __ sltu(AT, op1, op2);
   1.299 -        if(&L)
   1.300 -                 __ beq(AT, R0, L);
   1.301 -        else
   1.302 -                 __ beq(AT, R0, (int)0);
   1.303 +        __ beq_long(AT, R0, *L);
   1.304          break;
   1.305        case 0x05: //below
   1.306          __ sltu(AT, op1, op2);
   1.307 -        if(&L)
   1.308 -           __ bne(R0, AT, L);
   1.309 -        else
   1.310 -           __ bne(R0, AT, (int)0);
   1.311 +        __ bne_long(R0, AT, *L);
   1.312          break;
   1.313        case 0x06: //below_equal
   1.314          __ sltu(AT, op2, op1);
   1.315 -        if(&L)
   1.316 -          __ beq(AT, R0, L);
   1.317 -        else
   1.318 -          __ beq(AT, R0, (int)0);
   1.319 +        __ beq_long(AT, R0, *L);
   1.320         break;
   1.321        default:
   1.322            Unimplemented();
   1.323      }
   1.324 -    __ nop();
   1.325 -    __ nop();
   1.326    %}
   1.327  
   1.328    ins_pc_relative(1);
   1.329 @@ -7029,27 +6941,19 @@
   1.330    ins_encode %{
   1.331      Register op1 = $op1$$Register;
   1.332      Register op2 = R0;
   1.333 -    Label    &L  = *($labl$$label);
   1.334 +    Label*    L  = $labl$$label;
   1.335      int     flag = $cmp$$cmpcode;
   1.336  
   1.337      switch(flag) {
   1.338      case 0x01: //equal
   1.339 -      if (&L)
   1.340 -        __ beq(op1, op2, L);
   1.341 -      else
   1.342 -        __ beq(op1, op2, (int)0);
   1.343 +      __ beq_long(op1, op2, *L);
   1.344        break;
   1.345      case 0x02: //not_equal
   1.346 -      if (&L)
   1.347 -        __ bne(op1, op2, L);
   1.348 -      else
   1.349 -        __ bne(op1, op2, (int)0);
   1.350 +      __ bne_long(op1, op2, *L);
   1.351        break;
   1.352      default:
   1.353            Unimplemented();
   1.354      }
   1.355 -    __ nop();
   1.356 -    __ nop();
   1.357    %}
   1.358  //TODO: pipe_branchP or create pipe_branchN LEE
   1.359    ins_pc_relative(1);
   1.360 @@ -7066,55 +6970,35 @@
   1.361    ins_encode %{
   1.362      Register op1_reg = $op1$$Register;
   1.363      Register op2_reg = $op2$$Register;
   1.364 -    Label    &L  = *($labl$$label);
   1.365 +    Label*    L  = $labl$$label;
   1.366      int     flag = $cmp$$cmpcode;
   1.367  
   1.368      switch(flag) {
   1.369      case 0x01: //equal
   1.370 -      if (&L)
   1.371 -        __ beq(op1_reg, op2_reg, L);
   1.372 -      else
   1.373 -        __ beq(op1_reg, op2_reg, (int)0);
   1.374 +      __ beq_long(op1_reg, op2_reg, *L);
   1.375        break;
   1.376      case 0x02: //not_equal
   1.377 -      if (&L)
   1.378 -        __ bne(op1_reg, op2_reg, L);
   1.379 -      else
   1.380 -        __ bne(op1_reg, op2_reg, (int)0);
   1.381 +      __ bne_long(op1_reg, op2_reg, *L);
   1.382        break;
   1.383      case 0x03: //above
   1.384        __ sltu(AT, op2_reg, op1_reg);
   1.385 -      if(&L)
   1.386 -        __ bne(R0, AT, L);
   1.387 -      else
   1.388 -        __ bne(R0, AT, (int)0);
   1.389 +      __ bne_long(R0, AT, *L);
   1.390        break;
   1.391      case 0x04: //above_equal
   1.392        __ sltu(AT, op1_reg, op2_reg);
   1.393 -      if(&L)
   1.394 -        __ beq(AT, R0, L);
   1.395 -      else
   1.396 -        __ beq(AT, R0, (int)0);
   1.397 +      __ beq_long(AT, R0, *L);
   1.398        break;
   1.399      case 0x05: //below
   1.400        __ sltu(AT, op1_reg, op2_reg);
   1.401 -      if(&L)
   1.402 -        __ bne(R0, AT, L);
   1.403 -      else
   1.404 -        __ bne(R0, AT, (int)0);
   1.405 +      __ bne_long(R0, AT, *L);
   1.406        break;
   1.407      case 0x06: //below_equal
   1.408        __ sltu(AT, op2_reg, op1_reg);
   1.409 -      if(&L)
   1.410 -        __ beq(AT, R0, L);
   1.411 -      else
   1.412 -        __ beq(AT, R0, (int)0);
   1.413 +      __ beq_long(AT, R0, *L);
   1.414        break;
   1.415      default:
   1.416        Unimplemented();
   1.417      }
   1.418 -    __ nop();
   1.419 -    __ nop();
   1.420    %}
   1.421    ins_pc_relative(1);
   1.422    ins_pipe( pipe_alu_branch );
   1.423 @@ -7128,55 +7012,35 @@
   1.424    ins_encode %{
   1.425      Register op1 = $src1$$Register;
   1.426      Register op2 = $src2$$Register;
   1.427 -    Label     &L = *($labl$$label);
   1.428 +    Label*     L = $labl$$label;
   1.429      int     flag = $cmp$$cmpcode;
   1.430  
   1.431      switch(flag) {
   1.432        case 0x01: //equal
   1.433 -        if (&L)
   1.434 -          __ beq(op1, op2, L);
   1.435 -        else
   1.436 -          __ beq(op1, op2, (int)0);
   1.437 +        __ beq_long(op1, op2, *L);
   1.438          break;
   1.439        case 0x02: //not_equal
   1.440 -        if (&L)
   1.441 -          __ bne(op1, op2, L);
   1.442 -        else
   1.443 -          __ bne(op1, op2, (int)0);
   1.444 +        __ bne_long(op1, op2, *L);
   1.445          break;
   1.446        case 0x03: //above
   1.447          __ sltu(AT, op2, op1);
   1.448 -        if(&L)
   1.449 -          __ bne(AT, R0, L);
   1.450 -        else
   1.451 -                __ bne(AT, R0, (int)0);
   1.452 +        __ bne_long(AT, R0, *L);
   1.453          break;
   1.454        case 0x04: //above_equal
   1.455          __ sltu(AT, op1, op2);
   1.456 -        if(&L)
   1.457 -          __ beq(AT, R0, L);
   1.458 -        else
   1.459 -                __ beq(AT, R0, (int)0);
   1.460 +        __ beq_long(AT, R0, *L);
   1.461          break;
   1.462        case 0x05: //below
   1.463          __ sltu(AT, op1, op2);
   1.464 -        if(&L)
   1.465 -           __ bne(AT, R0, L);
   1.466 -        else
   1.467 -           __ bne(AT, R0, (int)0);
   1.468 +        __ bne_long(AT, R0, *L);
   1.469          break;
   1.470        case 0x06: //below_equal
   1.471          __ sltu(AT, op2, op1);
   1.472 -        if(&L)
   1.473 -          __ beq(AT, R0, L);
   1.474 -        else
   1.475 -          __ beq(AT, R0, (int)0);
   1.476 +        __ beq_long(AT, R0, *L);
   1.477          break;
   1.478        default:
   1.479          Unimplemented();
   1.480      }
   1.481 -    __ nop();
   1.482 -    __ nop();
   1.483    %}
   1.484  
   1.485    ins_pc_relative(1);
   1.486 @@ -7192,56 +7056,36 @@
   1.487    ins_encode %{
   1.488      Register op1 = $src1$$Register;
   1.489      int      val = $src2$$constant;
   1.490 -    Label     &L = *($labl$$label);
   1.491 +    Label*     L = $labl$$label;
   1.492      int     flag = $cmp$$cmpcode;
   1.493  
   1.494      __ move(AT, val);
   1.495      switch(flag) {
   1.496        case 0x01: //equal
   1.497 -        if (&L)
   1.498 -          __ beq(op1, AT, L);
   1.499 -        else
   1.500 -          __ beq(op1, AT, (int)0);
   1.501 +        __ beq_long(op1, AT, *L);
   1.502          break;
   1.503        case 0x02: //not_equal
   1.504 -        if (&L)
   1.505 -          __ bne(op1, AT, L);
   1.506 -        else
   1.507 -          __ bne(op1, AT, (int)0);
   1.508 +        __ bne_long(op1, AT, *L);
   1.509          break;
   1.510        case 0x03: //above
   1.511          __ sltu(AT, AT, op1);
   1.512 -        if(&L)
   1.513 -          __ bne(R0, AT, L);
   1.514 -        else
   1.515 -                __ bne(R0, AT, (int)0);
   1.516 +        __ bne_long(R0, AT, *L);
   1.517          break;
   1.518        case 0x04: //above_equal
   1.519          __ sltu(AT, op1, AT);
   1.520 -        if(&L)
   1.521 -          __ beq(AT, R0, L);
   1.522 -        else
   1.523 -                __ beq(AT, R0, (int)0);
   1.524 +        __ beq_long(AT, R0, *L);
   1.525          break;
   1.526        case 0x05: //below
   1.527          __ sltu(AT, op1, AT);
   1.528 -        if(&L)
   1.529 -           __ bne(R0, AT, L);
   1.530 -        else
   1.531 -           __ bne(R0, AT, (int)0);
   1.532 +        __ bne_long(R0, AT, *L);
   1.533          break;
   1.534        case 0x06: //below_equal
   1.535          __ sltu(AT, AT, op1);
   1.536 -        if(&L)
   1.537 -          __ beq(AT, R0, L);
   1.538 -        else
   1.539 -          __ beq(AT, R0, (int)0);
   1.540 +        __ beq_long(AT, R0, *L);
   1.541         break;
   1.542        default:
   1.543          Unimplemented();
   1.544      }
   1.545 -    __ nop();
   1.546 -    __ nop();
   1.547    %}
   1.548  
   1.549    ins_pc_relative(1);
   1.550 @@ -7256,55 +7100,35 @@
   1.551    ins_encode %{
   1.552      Register op1 = $src1$$Register;
   1.553      Register op2 = $src2$$Register;
   1.554 -    Label     &L = *($labl$$label);
   1.555 +    Label*     L = $labl$$label;
   1.556      int     flag = $cmp$$cmpcode;
   1.557  
   1.558      switch(flag) {
   1.559        case 0x01: //equal
   1.560 -        if (&L)
   1.561 -          __ beq(op1, op2, L);
   1.562 -        else
   1.563 -          __ beq(op1, op2, (int)0);
   1.564 +        __ beq_long(op1, op2, *L);
   1.565          break;
   1.566        case 0x02: //not_equal
   1.567 -        if (&L)
   1.568 -          __ bne(op1, op2, L);
   1.569 -        else
   1.570 -          __ bne(op1, op2, (int)0);
   1.571 +        __ bne_long(op1, op2, *L);
   1.572          break;
   1.573        case 0x03: //above
   1.574          __ slt(AT, op2, op1);
   1.575 -        if(&L)
   1.576 -          __ bne(R0, AT, L);
   1.577 -        else
   1.578 -                __ bne(R0, AT, (int)0);
   1.579 +        __ bne_long(R0, AT, *L);
   1.580          break;
   1.581        case 0x04: //above_equal
   1.582          __ slt(AT, op1, op2);
   1.583 -        if(&L)
   1.584 -          __ beq(AT, R0, L);
   1.585 -        else
   1.586 -                __ beq(AT, R0, (int)0);
   1.587 +        __ beq_long(AT, R0, *L);
   1.588          break;
   1.589        case 0x05: //below
   1.590          __ slt(AT, op1, op2);
   1.591 -        if(&L)
   1.592 -           __ bne(R0, AT, L);
   1.593 -        else
   1.594 -           __ bne(R0, AT, (int)0);
   1.595 +        __ bne_long(R0, AT, *L);
   1.596          break;
   1.597        case 0x06: //below_equal
   1.598          __ slt(AT, op2, op1);
   1.599 -        if(&L)
   1.600 -          __ beq(AT, R0, L);
   1.601 -        else
   1.602 -          __ beq(AT, R0, (int)0);
   1.603 -       break;
   1.604 +        __ beq_long(AT, R0, *L);
   1.605 +        break;
   1.606        default:
   1.607          Unimplemented();
   1.608      }
   1.609 -    __ nop();
   1.610 -    __ nop();
   1.611    %}
   1.612  
   1.613    ins_pc_relative(1);
   1.614 @@ -7319,58 +7143,41 @@
   1.615  
   1.616    ins_encode %{
   1.617      Register op1 = $src1$$Register;
   1.618 -    Label     &L =  *($labl$$label);
   1.619 +    Label*     L =  $labl$$label;
   1.620      int     flag = $cmp$$cmpcode;
   1.621  
   1.622      switch(flag) {
   1.623        case 0x01: //equal
   1.624 -        if (&L)
   1.625 -          __ beq(op1, R0, L);
   1.626 -        else
   1.627 -          __ beq(op1, R0, (int)0);
   1.628 +        __ beq_long(op1, R0, *L);
   1.629          break;
   1.630        case 0x02: //not_equal
   1.631 -        if (&L)
   1.632 -          __ bne(op1, R0, L);
   1.633 -        else
   1.634 -          __ bne(op1, R0, (int)0);
   1.635 +        __ bne_long(op1, R0, *L);
   1.636          break;
   1.637        case 0x03: //greater
   1.638 -        if(&L)
   1.639 -               __ bgtz(op1, L);
   1.640 -        else
   1.641 -               __ bgtz(op1, (int)0);
   1.642 +        __ slt(AT, R0, op1);
   1.643 +        __ bne_long(R0, AT, *L);
   1.644          break;
   1.645        case 0x04: //greater_equal
   1.646 -        if(&L)
   1.647 -               __ bgez(op1, L);
   1.648 -        else
   1.649 -               __ bgez(op1, (int)0);
   1.650 +        __ slt(AT, op1, R0);
   1.651 +        __ beq_long(AT, R0, *L);
   1.652          break;
   1.653        case 0x05: //less
   1.654 -        if(&L)
   1.655 -                __ bltz(op1, L);
   1.656 -        else
   1.657 -                __ bltz(op1, (int)0);
   1.658 +        __ slt(AT, op1, R0);
   1.659 +        __ bne_long(R0, AT, *L);
   1.660          break;
   1.661        case 0x06: //less_equal
   1.662 -        if(&L)
   1.663 -               __ blez(op1, L);
   1.664 -        else
   1.665 -               __ blez(op1, (int)0);
   1.666 -       break;
   1.667 +        __ slt(AT, R0, op1);
   1.668 +        __ beq_long(AT, R0, *L);
   1.669 +        break;
   1.670        default:
   1.671          Unimplemented();
   1.672      }
   1.673 -    __ nop();
   1.674 -    __ nop();
   1.675    %}
   1.676  
   1.677    ins_pc_relative(1);
   1.678    ins_pipe( pipe_alu_branch );
   1.679  %}
   1.680  
   1.681 -
   1.682  instruct branchConI_reg_imm_long(cmpOp cmp, mRegI src1, immI src2, label labl) %{
   1.683    match( If cmp (CmpI src1 src2) );
   1.684    effect(USE labl);
   1.685 @@ -7380,56 +7187,36 @@
   1.686    ins_encode %{
   1.687      Register op1 = $src1$$Register;
   1.688      int      val = $src2$$constant;
   1.689 -    Label     &L =  *($labl$$label);
   1.690 +    Label*     L =  $labl$$label;
   1.691      int     flag = $cmp$$cmpcode;
   1.692  
   1.693      __ move(AT, val);
   1.694      switch(flag) {
   1.695        case 0x01: //equal
   1.696 -        if (&L)
   1.697 -          __ beq(op1, AT, L);
   1.698 -        else
   1.699 -          __ beq(op1, AT, (int)0);
   1.700 +        __ beq_long(op1, AT, *L);
   1.701          break;
   1.702        case 0x02: //not_equal
   1.703 -        if (&L)
   1.704 -          __ bne(op1, AT, L);
   1.705 -        else
   1.706 -          __ bne(op1, AT, (int)0);
   1.707 +        __ bne_long(op1, AT, *L);
   1.708          break;
   1.709        case 0x03: //greater
   1.710          __ slt(AT, AT, op1);
   1.711 -        if(&L)
   1.712 -          __ bne(R0, AT, L);
   1.713 -        else
   1.714 -                __ bne(R0, AT, (int)0);
   1.715 +        __ bne_long(R0, AT, *L);
   1.716          break;
   1.717        case 0x04: //greater_equal
   1.718          __ slt(AT, op1, AT);
   1.719 -        if(&L)
   1.720 -          __ beq(AT, R0, L);
   1.721 -        else
   1.722 -                __ beq(AT, R0, (int)0);
   1.723 +        __ beq_long(AT, R0, *L);
   1.724          break;
   1.725        case 0x05: //less
   1.726          __ slt(AT, op1, AT);
   1.727 -        if(&L)
   1.728 -           __ bne(R0, AT, L);
   1.729 -        else
   1.730 -           __ bne(R0, AT, (int)0);
   1.731 +        __ bne_long(R0, AT, *L);
   1.732          break;
   1.733        case 0x06: //less_equal
   1.734          __ slt(AT, AT, op1);
   1.735 -        if(&L)
   1.736 -          __ beq(AT, R0, L);
   1.737 -        else
   1.738 -          __ beq(AT, R0, (int)0);
   1.739 +        __ beq_long(AT, R0, *L);
   1.740         break;
   1.741        default:
   1.742            Unimplemented();
   1.743      }
   1.744 -    __ nop();
   1.745 -    __ nop();
   1.746    %}
   1.747  
   1.748    ins_pc_relative(1);
   1.749 @@ -7443,49 +7230,32 @@
   1.750  
   1.751    ins_encode %{
   1.752      Register op1 = $src1$$Register;
   1.753 -    Label     &L = *($labl$$label);
   1.754 +    Label*     L = $labl$$label;
   1.755      int     flag = $cmp$$cmpcode;
   1.756  
   1.757      switch(flag) {
   1.758        case 0x01: //equal
   1.759 -        if (&L)
   1.760 -          __ beq(op1, R0, L);
   1.761 -        else
   1.762 -          __ beq(op1, R0, (int)0);
   1.763 +        __ beq_long(op1, R0, *L);
   1.764          break;
   1.765        case 0x02: //not_equal
   1.766 -        if (&L)
   1.767 -          __ bne(op1, R0, L);
   1.768 -        else
   1.769 -          __ bne(op1, R0, (int)0);
   1.770 +        __ bne_long(op1, R0, *L);
   1.771          break;
   1.772        case 0x03: //above
   1.773 -        if(&L)
   1.774 -          __ bne(R0, op1, L);
   1.775 -        else
   1.776 -          __ bne(R0, op1, (int)0);
   1.777 +        __ bne_long(R0, op1, *L);
   1.778          break;
   1.779        case 0x04: //above_equal
   1.780 -        if(&L)
   1.781 -          __ beq(R0, R0, L);
   1.782 -        else
   1.783 -          __ beq(R0, R0, (int)0);
   1.784 +        __ beq_long(R0, R0, *L);
   1.785          break;
   1.786        case 0x05: //below
   1.787          return;
   1.788          break;
   1.789        case 0x06: //below_equal
   1.790 -        if(&L)
   1.791 -          __ beq(op1, R0, L);
   1.792 -        else
   1.793 -          __ beq(op1, R0, (int)0);
   1.794 +        __ beq_long(op1, R0, *L);
   1.795          break;
   1.796        default:
   1.797          Unimplemented();
   1.798      }
   1.799 -    __ nop();
   1.800 -    __ nop();
   1.801 -    %}
   1.802 +  %}
   1.803  
   1.804    ins_pc_relative(1);
   1.805    ins_pipe( pipe_alu_branch );
   1.806 @@ -7501,59 +7271,39 @@
   1.807    ins_encode %{
   1.808      Register op1 = $src1$$Register;
   1.809      int      val = $src2$$constant;
   1.810 -    Label     &L = *($labl$$label);
   1.811 +    Label*     L = $labl$$label;
   1.812      int     flag = $cmp$$cmpcode;
   1.813  
   1.814      switch(flag) {
   1.815        case 0x01: //equal
   1.816          __ move(AT, val);
   1.817 -        if (&L)
   1.818 -          __ beq(op1, AT, L);
   1.819 -        else
   1.820 -          __ beq(op1, AT, (int)0);
   1.821 +        __ beq_long(op1, AT, *L);
   1.822          break;
   1.823        case 0x02: //not_equal
   1.824          __ move(AT, val);
   1.825 -        if (&L)
   1.826 -          __ bne(op1, AT, L);
   1.827 -        else
   1.828 -          __ bne(op1, AT, (int)0);
   1.829 +        __ bne_long(op1, AT, *L);
   1.830          break;
   1.831        case 0x03: //above
   1.832          __ move(AT, val);
   1.833          __ sltu(AT, AT, op1);
   1.834 -        if(&L)
   1.835 -          __ bne(R0, AT, L);
   1.836 -        else
   1.837 -          __ bne(R0, AT, (int)0);
   1.838 +        __ bne_long(R0, AT, *L);
   1.839          break;
   1.840        case 0x04: //above_equal
   1.841          __ sltiu(AT, op1, val);
   1.842 -        if(&L)
   1.843 -          __ beq(AT, R0, L);
   1.844 -        else
   1.845 -          __ beq(AT, R0, (int)0);
   1.846 +        __ beq_long(AT, R0, *L);
   1.847          break;
   1.848        case 0x05: //below
   1.849          __ sltiu(AT, op1, val);
   1.850 -        if(&L)
   1.851 -          __ bne(R0, AT, L);
   1.852 -        else
   1.853 -          __ bne(R0, AT, (int)0);
   1.854 +        __ bne_long(R0, AT, *L);
   1.855          break;
   1.856        case 0x06: //below_equal
   1.857          __ move(AT, val);
   1.858          __ sltu(AT, AT, op1);
   1.859 -        if(&L)
   1.860 -          __ beq(AT, R0, L);
   1.861 -        else
   1.862 -          __ beq(AT, R0, (int)0);
   1.863 +        __ beq_long(AT, R0, *L);
   1.864          break;
   1.865        default:
   1.866          Unimplemented();
   1.867      }
   1.868 -    __ nop();
   1.869 -    __ nop();
   1.870    %}
   1.871  
   1.872    ins_pc_relative(1);
   1.873 @@ -7571,70 +7321,41 @@
   1.874      Register opr1_reg = as_Register($src1$$reg);
   1.875      Register opr2_reg = as_Register($src2$$reg);
   1.876  
   1.877 -    Label   &target = *($labl$$label);
   1.878 +    Label*   target = $labl$$label;
   1.879      int     flag = $cmp$$cmpcode;
   1.880  
   1.881      switch(flag) {
   1.882        case 0x01: //equal
   1.883 -        if (&target)
   1.884 -          __ beq(opr1_reg, opr2_reg, target);
   1.885 -        else
   1.886 -          __ beq(opr1_reg, opr2_reg, (int)0);
   1.887 -        __ delayed()->nop();
   1.888 +        __ beq_long(opr1_reg, opr2_reg, *target);
   1.889          break;
   1.890  
   1.891        case 0x02: //not_equal
   1.892 -        if(&target)
   1.893 -          __ bne(opr1_reg, opr2_reg, target);
   1.894 -        else
   1.895 -          __ bne(opr1_reg, opr2_reg, (int)0);
   1.896 -        __ delayed()->nop();
   1.897 +        __ bne_long(opr1_reg, opr2_reg, *target);
   1.898          break;
   1.899  
   1.900        case 0x03: //greater
   1.901          __ slt(AT, opr2_reg, opr1_reg);
   1.902 -        if(&target)
   1.903 -          __ bne(AT, R0, target);
   1.904 -        else
   1.905 -          __ bne(AT, R0, (int)0);
   1.906 -        __ delayed()->nop();
   1.907 +        __ bne_long(AT, R0, *target);
   1.908          break;
   1.909  
   1.910        case 0x04: //greater_equal
   1.911          __ slt(AT, opr1_reg, opr2_reg);
   1.912 -        if(&target)
   1.913 -          __ beq(AT, R0, target);
   1.914 -        else
   1.915 -          __ beq(AT, R0, (int)0);
   1.916 -        __ delayed()->nop();
   1.917 -
   1.918 +        __ beq_long(AT, R0, *target);
   1.919          break;
   1.920  
   1.921        case 0x05: //less
   1.922          __ slt(AT, opr1_reg, opr2_reg);
   1.923 -        if(&target)
   1.924 -          __ bne(AT, R0, target);
   1.925 -        else
   1.926 -          __ bne(AT, R0, (int)0);
   1.927 -        __ delayed()->nop();
   1.928 -
   1.929 +        __ bne_long(AT, R0, *target);
   1.930          break;
   1.931  
   1.932        case 0x06: //less_equal
   1.933          __ slt(AT, opr2_reg, opr1_reg);
   1.934 -
   1.935 -        if(&target)
   1.936 -          __ beq(AT, R0, target);
   1.937 -        else
   1.938 -          __ beq(AT, R0, (int)0);
   1.939 -        __ delayed()->nop();
   1.940 -
   1.941 +        __ beq_long(AT, R0, *target);
   1.942          break;
   1.943  
   1.944        default:
   1.945          Unimplemented();
   1.946      }
   1.947 -    __ nop();
   1.948    %}
   1.949  
   1.950  
   1.951 @@ -7642,7 +7363,6 @@
   1.952    ins_pipe( pipe_alu_branch );
   1.953  %}
   1.954  
   1.955 -
   1.956  instruct branchConL_regL_immL0_long(cmpOp cmp, mRegL src1, immL0 zero, label labl) %{
   1.957    match( If cmp (CmpL src1 zero) );
   1.958    effect(USE labl);
   1.959 @@ -7651,58 +7371,43 @@
   1.960  
   1.961    ins_encode %{
   1.962      Register opr1_reg = as_Register($src1$$reg);
   1.963 -    Label   &target = *($labl$$label);
   1.964 +    Register opr2_reg = R0;
   1.965 +
   1.966 +    Label*   target = $labl$$label;
   1.967      int     flag = $cmp$$cmpcode;
   1.968  
   1.969      switch(flag) {
   1.970        case 0x01: //equal
   1.971 -        if (&target)
   1.972 -           __ beq(opr1_reg, R0, target);
   1.973 -        else
   1.974 -           __ beq(opr1_reg, R0, int(0));
   1.975 +        __ beq_long(opr1_reg, opr2_reg, *target);
   1.976          break;
   1.977  
   1.978        case 0x02: //not_equal
   1.979 -        if(&target)
   1.980 -           __ bne(opr1_reg, R0, target);
   1.981 -        else
   1.982 -           __ bne(opr1_reg, R0, (int)0);
   1.983 +        __ bne_long(opr1_reg, opr2_reg, *target);
   1.984          break;
   1.985  
   1.986        case 0x03: //greater
   1.987 -        if(&target)
   1.988 -           __ bgtz(opr1_reg, target);
   1.989 -        else
   1.990 -           __ bgtz(opr1_reg, (int)0);
   1.991 -       break;
   1.992 +        __ slt(AT, opr2_reg, opr1_reg);
   1.993 +        __ bne_long(AT, R0, *target);
   1.994 +        break;
   1.995  
   1.996        case 0x04: //greater_equal
   1.997 -        if(&target)
   1.998 -           __ bgez(opr1_reg, target);
   1.999 -        else
  1.1000 -           __ bgez(opr1_reg, (int)0);
  1.1001 +        __ slt(AT, opr1_reg, opr2_reg);
  1.1002 +        __ beq_long(AT, R0, *target);
  1.1003          break;
  1.1004  
  1.1005        case 0x05: //less
  1.1006 -        __ slt(AT, opr1_reg, R0);
  1.1007 -        if(&target)
  1.1008 -           __ bne(AT, R0, target);
  1.1009 -        else
  1.1010 -           __ bne(AT, R0, (int)0);
  1.1011 +        __ slt(AT, opr1_reg, opr2_reg);
  1.1012 +        __ bne_long(AT, R0, *target);
  1.1013          break;
  1.1014  
  1.1015        case 0x06: //less_equal
  1.1016 -        if (&target)
  1.1017 -           __ blez(opr1_reg, target);
  1.1018 -        else
  1.1019 -           __ blez(opr1_reg, int(0));
  1.1020 +        __ slt(AT, opr2_reg, opr1_reg);
  1.1021 +        __ beq_long(AT, R0, *target);
  1.1022          break;
  1.1023  
  1.1024        default:
  1.1025 -          Unimplemented();
  1.1026 -    }
  1.1027 -    __ delayed()->nop();
  1.1028 -    __ nop();
  1.1029 +        Unimplemented();
  1.1030 +    }
  1.1031    %}
  1.1032  
  1.1033  
  1.1034 @@ -7720,63 +7425,43 @@
  1.1035      Register opr1_reg = as_Register($src1$$reg);
  1.1036      Register opr2_reg = AT;
  1.1037  
  1.1038 -    Label   &target = *($labl$$label);
  1.1039 +    Label*   target = $labl$$label;
  1.1040      int     flag = $cmp$$cmpcode;
  1.1041  
  1.1042      __ set64(opr2_reg, $src2$$constant);
  1.1043  
  1.1044      switch(flag) {
  1.1045        case 0x01: //equal
  1.1046 -        if (&target)
  1.1047 -          __ beq(opr1_reg, opr2_reg, target);
  1.1048 -        else
  1.1049 -          __ beq(opr1_reg, opr2_reg, (int)0);
  1.1050 +        __ beq_long(opr1_reg, opr2_reg, *target);
  1.1051          break;
  1.1052  
  1.1053        case 0x02: //not_equal
  1.1054 -        if(&target)
  1.1055 -          __ bne(opr1_reg, opr2_reg, target);
  1.1056 -        else
  1.1057 -          __ bne(opr1_reg, opr2_reg, (int)0);
  1.1058 +        __ bne_long(opr1_reg, opr2_reg, *target);
  1.1059          break;
  1.1060  
  1.1061        case 0x03: //greater
  1.1062          __ slt(AT, opr2_reg, opr1_reg);
  1.1063 -        if(&target)
  1.1064 -          __ bne(AT, R0, target);
  1.1065 -        else
  1.1066 -          __ bne(AT, R0, (int)0);
  1.1067 +        __ bne_long(AT, R0, *target);
  1.1068          break;
  1.1069  
  1.1070        case 0x04: //greater_equal
  1.1071          __ slt(AT, opr1_reg, opr2_reg);
  1.1072 -        if(&target)
  1.1073 -          __ beq(AT, R0, target);
  1.1074 -        else
  1.1075 -          __ beq(AT, R0, (int)0);
  1.1076 +        __ beq_long(AT, R0, *target);
  1.1077          break;
  1.1078  
  1.1079        case 0x05: //less
  1.1080          __ slt(AT, opr1_reg, opr2_reg);
  1.1081 -        if(&target)
  1.1082 -          __ bne(AT, R0, target);
  1.1083 -        else
  1.1084 -          __ bne(AT, R0, (int)0);
  1.1085 +        __ bne_long(AT, R0, *target);
  1.1086          break;
  1.1087  
  1.1088        case 0x06: //less_equal
  1.1089          __ slt(AT, opr2_reg, opr1_reg);
  1.1090 -        if(&target)
  1.1091 -          __ beq(AT, R0, target);
  1.1092 -        else
  1.1093 -          __ beq(AT, R0, (int)0);
  1.1094 +        __ beq_long(AT, R0, *target);
  1.1095          break;
  1.1096  
  1.1097        default:
  1.1098          Unimplemented();
  1.1099      }
  1.1100 -    __ nop();
  1.1101 -    __ nop();
  1.1102    %}
  1.1103  
  1.1104  
  1.1105 @@ -7794,57 +7479,37 @@
  1.1106    ins_encode %{
  1.1107      FloatRegister reg_op1 = $src1$$FloatRegister;
  1.1108      FloatRegister reg_op2 = $src2$$FloatRegister;
  1.1109 -    Label     &L =  *($labl$$label);
  1.1110 +    Label*     L =  $labl$$label;
  1.1111      int     flag = $cmp$$cmpcode;
  1.1112  
  1.1113      switch(flag) {
  1.1114        case 0x01: //equal
  1.1115          __ c_eq_s(reg_op1, reg_op2);
  1.1116 -        if (&L)
  1.1117 -          __ bc1t(L);
  1.1118 -        else
  1.1119 -          __ bc1t((int)0);
  1.1120 +        __ bc1t_long(*L);
  1.1121          break;
  1.1122        case 0x02: //not_equal
  1.1123          __ c_eq_s(reg_op1, reg_op2);
  1.1124 -        if (&L)
  1.1125 -          __ bc1f(L);
  1.1126 -        else
  1.1127 -          __ bc1f((int)0);
  1.1128 +        __ bc1f_long(*L);
  1.1129          break;
  1.1130        case 0x03: //greater
  1.1131          __ c_ule_s(reg_op1, reg_op2);
  1.1132 -        if(&L)
  1.1133 -          __ bc1f(L);
  1.1134 -        else
  1.1135 -          __ bc1f((int)0);
  1.1136 +        __ bc1f_long(*L);
  1.1137          break;
  1.1138        case 0x04: //greater_equal
  1.1139          __ c_ult_s(reg_op1, reg_op2);
  1.1140 -        if(&L)
  1.1141 -          __ bc1f(L);
  1.1142 -        else
  1.1143 -          __ bc1f((int)0);
  1.1144 +        __ bc1f_long(*L);
  1.1145          break;
  1.1146        case 0x05: //less
  1.1147          __ c_ult_s(reg_op1, reg_op2);
  1.1148 -        if(&L)
  1.1149 -          __ bc1t(L);
  1.1150 -        else
  1.1151 -          __ bc1t((int)0);
  1.1152 +        __ bc1t_long(*L);
  1.1153          break;
  1.1154        case 0x06: //less_equal
  1.1155          __ c_ule_s(reg_op1, reg_op2);
  1.1156 -        if(&L)
  1.1157 -          __ bc1t(L);
  1.1158 -        else
  1.1159 -          __ bc1t((int)0);
  1.1160 +        __ bc1t_long(*L);
  1.1161          break;
  1.1162        default:
  1.1163          Unimplemented();
  1.1164      }
  1.1165 -    __ nop();
  1.1166 -    __ nop();
  1.1167    %}
  1.1168  
  1.1169    ins_pc_relative(1);
  1.1170 @@ -7859,58 +7524,38 @@
  1.1171    ins_encode %{
  1.1172      FloatRegister reg_op1 = $src1$$FloatRegister;
  1.1173      FloatRegister reg_op2 = $src2$$FloatRegister;
  1.1174 -    Label     &L =  *($labl$$label);
  1.1175 +    Label*     L =  $labl$$label;
  1.1176      int     flag = $cmp$$cmpcode;
  1.1177  
  1.1178      switch(flag) {
  1.1179        case 0x01: //equal
  1.1180          __ c_eq_d(reg_op1, reg_op2);
  1.1181 -        if (&L)
  1.1182 -          __ bc1t(L);
  1.1183 -        else
  1.1184 -          __ bc1t((int)0);
  1.1185 +        __ bc1t_long(*L);
  1.1186          break;
  1.1187        case 0x02: //not_equal
  1.1188          //2016/4/19 aoqi: c_ueq_d cannot distinguish NaN from equal. Double.isNaN(Double) is implemented by 'f != f', so the use of c_ueq_d causes bugs.
  1.1189          __ c_eq_d(reg_op1, reg_op2);
  1.1190 -        if (&L)
  1.1191 -          __ bc1f(L);
  1.1192 -        else
  1.1193 -          __ bc1f((int)0);
  1.1194 +        __ bc1f_long(*L);
  1.1195          break;
  1.1196        case 0x03: //greater
  1.1197          __ c_ule_d(reg_op1, reg_op2);
  1.1198 -        if(&L)
  1.1199 -          __ bc1f(L);
  1.1200 -        else
  1.1201 -          __ bc1f((int)0);
  1.1202 +        __ bc1f_long(*L);
  1.1203          break;
  1.1204        case 0x04: //greater_equal
  1.1205          __ c_ult_d(reg_op1, reg_op2);
  1.1206 -        if(&L)
  1.1207 -          __ bc1f(L);
  1.1208 -        else
  1.1209 -          __ bc1f((int)0);
  1.1210 +        __ bc1f_long(*L);
  1.1211          break;
  1.1212        case 0x05: //less
  1.1213          __ c_ult_d(reg_op1, reg_op2);
  1.1214 -        if(&L)
  1.1215 -          __ bc1t(L);
  1.1216 -        else
  1.1217 -          __ bc1t((int)0);
  1.1218 +        __ bc1t_long(*L);
  1.1219          break;
  1.1220        case 0x06: //less_equal
  1.1221          __ c_ule_d(reg_op1, reg_op2);
  1.1222 -        if(&L)
  1.1223 -          __ bc1t(L);
  1.1224 -        else
  1.1225 -          __ bc1t((int)0);
  1.1226 +        __ bc1t_long(*L);
  1.1227          break;
  1.1228        default:
  1.1229          Unimplemented();
  1.1230      }
  1.1231 -    __ nop();
  1.1232 -    __ nop();
  1.1233    %}
  1.1234  
  1.1235    ins_pc_relative(1);
  1.1236 @@ -7934,7 +7579,7 @@
  1.1237      if(&L)
  1.1238         __ b(L);
  1.1239      else
  1.1240 -         __ b(int(0));
  1.1241 +       __ b(int(0));
  1.1242      __ nop();
  1.1243    %}
  1.1244  

mercurial