jdk/src/share/classes/java/util/concurrent/atomic/Striped64.java
changeset 16011 890a7ed97f6c
parent 15283 e331a847ff27
child 18576 7a5c231327af
equal deleted inserted replaced
16010:2727163b5df5 16011:890a7ed97f6c
   251                     collide = false;
   251                     collide = false;
   252                 }
   252                 }
   253                 else if (!wasUncontended)       // CAS already known to fail
   253                 else if (!wasUncontended)       // CAS already known to fail
   254                     wasUncontended = true;      // Continue after rehash
   254                     wasUncontended = true;      // Continue after rehash
   255                 else if (a.cas(v = a.value, ((fn == null) ? v + x :
   255                 else if (a.cas(v = a.value, ((fn == null) ? v + x :
   256                                              fn.operateAsLong(v, x))))
   256                                              fn.applyAsLong(v, x))))
   257                     break;
   257                     break;
   258                 else if (n >= NCPU || cells != as)
   258                 else if (n >= NCPU || cells != as)
   259                     collide = false;            // At max size or stale
   259                     collide = false;            // At max size or stale
   260                 else if (!collide)
   260                 else if (!collide)
   261                     collide = true;
   261                     collide = true;
   289                 }
   289                 }
   290                 if (init)
   290                 if (init)
   291                     break;
   291                     break;
   292             }
   292             }
   293             else if (casBase(v = base, ((fn == null) ? v + x :
   293             else if (casBase(v = base, ((fn == null) ? v + x :
   294                                         fn.operateAsLong(v, x))))
   294                                         fn.applyAsLong(v, x))))
   295                 break;                          // Fall back on using base
   295                 break;                          // Fall back on using base
   296         }
   296         }
   297     }
   297     }
   298 
   298 
   299     /**
   299     /**
   342                 else if (a.cas(v = a.value,
   342                 else if (a.cas(v = a.value,
   343                                ((fn == null) ?
   343                                ((fn == null) ?
   344                                 Double.doubleToRawLongBits
   344                                 Double.doubleToRawLongBits
   345                                 (Double.longBitsToDouble(v) + x) :
   345                                 (Double.longBitsToDouble(v) + x) :
   346                                 Double.doubleToRawLongBits
   346                                 Double.doubleToRawLongBits
   347                                 (fn.operateAsDouble
   347                                 (fn.applyAsDouble
   348                                  (Double.longBitsToDouble(v), x)))))
   348                                  (Double.longBitsToDouble(v), x)))))
   349                     break;
   349                     break;
   350                 else if (n >= NCPU || cells != as)
   350                 else if (n >= NCPU || cells != as)
   351                     collide = false;            // At max size or stale
   351                     collide = false;            // At max size or stale
   352                 else if (!collide)
   352                 else if (!collide)
   385             else if (casBase(v = base,
   385             else if (casBase(v = base,
   386                              ((fn == null) ?
   386                              ((fn == null) ?
   387                               Double.doubleToRawLongBits
   387                               Double.doubleToRawLongBits
   388                               (Double.longBitsToDouble(v) + x) :
   388                               (Double.longBitsToDouble(v) + x) :
   389                               Double.doubleToRawLongBits
   389                               Double.doubleToRawLongBits
   390                               (fn.operateAsDouble
   390                               (fn.applyAsDouble
   391                                (Double.longBitsToDouble(v), x)))))
   391                                (Double.longBitsToDouble(v), x)))))
   392                 break;                          // Fall back on using base
   392                 break;                          // Fall back on using base
   393         }
   393         }
   394     }
   394     }
   395 
   395