Skip to content

Commit 07600c8

Browse files
committed
Avoid recalculating .ValueIndex/.ValueBitOffset
1 parent 978c7d9 commit 07600c8

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

Orm/Xtensive.Orm/Tuples/Packed/PackedFieldAccessor.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,24 +242,27 @@ private void SetNullableValue(PackedTuple tuple, ref PackedFieldDescriptor descr
242242

243243
private void Store(PackedTuple tuple, ref PackedFieldDescriptor d, T value)
244244
{
245+
var valueIndex = d.ValueIndex;
245246
if (Rank > 6) {
246-
Encode(value, tuple.Values, d.ValueIndex);
247+
Encode(value, tuple.Values, valueIndex);
247248
return;
248249
}
249250

250251
var encoded = Encode(value);
251-
var block = tuple.Values[d.ValueIndex];
252-
var mask = ValueBitMask << d.ValueBitOffset;
253-
tuple.Values[d.ValueIndex] = (block & ~mask) | ((encoded << d.ValueBitOffset) & mask);
252+
var block = tuple.Values[valueIndex];
253+
var valueBitOffset = d.ValueBitOffset;
254+
var mask = ValueBitMask << valueBitOffset;
255+
tuple.Values[valueIndex] = (block & ~mask) | ((encoded << valueBitOffset) & mask);
254256
}
255257

256258
private T Load(PackedTuple tuple, ref PackedFieldDescriptor d)
257259
{
260+
var valueIndex = d.ValueIndex;
258261
if (Rank > 6) {
259-
return Decode(tuple.Values, d.ValueIndex);
262+
return Decode(tuple.Values, valueIndex);
260263
}
261264

262-
var encoded = (tuple.Values[d.ValueIndex] >> d.ValueBitOffset) & ValueBitMask;
265+
var encoded = (tuple.Values[valueIndex] >> d.ValueBitOffset) & ValueBitMask;
263266
return Decode(encoded);
264267
}
265268

0 commit comments

Comments
 (0)