956 |
|
while (p != null) { |
957 |
|
Node n = p.getLinkage(); |
958 |
|
if (p.get() != null && p.getValue() != null) { |
959 |
+ |
pred = p; |
960 |
+ |
p = n; |
961 |
+ |
} |
962 |
+ |
else { |
963 |
|
if (pred == null) |
964 |
|
tab[i] = n; |
965 |
|
else |
967 |
|
seg.decrementCount(); |
968 |
|
p = n; |
969 |
|
} |
966 |
– |
else { |
967 |
– |
pred = p; |
968 |
– |
p = n; |
969 |
– |
} |
970 |
|
} |
971 |
|
} |
972 |
|
} finally { |
3031 |
|
// Fenced store into segment table array. Unneeded when we have Fences |
3032 |
|
static final void storeNode(Node[] table, |
3033 |
|
int i, Node r) { |
3034 |
< |
_unsafe.putOrderedObject(table, (i << tableShift) + tableBase, r); |
3034 |
> |
long nodeOffset = ((long) i << tableShift) + tableBase; |
3035 |
> |
_unsafe.putOrderedObject(table, nodeOffset, r); |
3036 |
|
} |
3037 |
|
|
3038 |
|
static final void storeSegment(Segment[] segs, |
3039 |
|
int i, Segment s) { |
3040 |
< |
_unsafe.putOrderedObject(segs, (i << segmentsShift) + segmentsBase, s); |
3040 |
> |
long segmentOffset = ((long) i << segmentsShift) + segmentsBase; |
3041 |
> |
_unsafe.putOrderedObject(segs, segmentOffset, s); |
3042 |
|
} |
3043 |
|
|
3044 |
|
|