Skip to content

Commit 3a94541

Browse files
author
Joshua Warner
committed
use setters in util.cpp
1 parent 07a9599 commit 3a94541

File tree

1 file changed

+40
-39
lines changed

1 file changed

+40
-39
lines changed

src/util.cpp

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ setTreeNodeValue(Thread* t, GcTreeNode* n, object value)
6767
{
6868
intptr_t red = alias(n, TreeNodeValue) & (~PointerMask);
6969

70-
set(t, reinterpret_cast<object>(n), TreeNodeValue, value);
70+
n->setValue(t, value);
7171

7272
alias(n, TreeNodeValue) |= red;
7373
}
@@ -142,12 +142,12 @@ treeFind(Thread* t, TreeContext* c, GcTreeNode* old, intptr_t key, GcTreeNode* n
142142
if (difference < 0) {
143143
old = old->left();
144144
GcTreeNode* n = cloneTreeNode(t, old);
145-
set(t, new_, TreeNodeLeft, n);
145+
new_->setLeft(t, n);
146146
new_ = n;
147147
} else if (difference > 0) {
148148
old = old->right();
149149
GcTreeNode* n = cloneTreeNode(t, old);
150-
set(t, new_, TreeNodeRight, n);
150+
new_->setRight(t, n);
151151
new_ = n;
152152
} else {
153153
c->fresh = false;
@@ -179,8 +179,8 @@ leftRotate(Thread* t, GcTreeNode* n)
179179
PROTECT(t, n);
180180

181181
GcTreeNode* child = cloneTreeNode(t, n->right());
182-
set(t, n, TreeNodeRight, child->left());
183-
set(t, child, TreeNodeLeft, n);
182+
n->setRight(t, child->left());
183+
child->setLeft(t, n);
184184
return child;
185185
}
186186

@@ -190,8 +190,8 @@ rightRotate(Thread* t, GcTreeNode* n)
190190
PROTECT(t, n);
191191

192192
GcTreeNode* child = cloneTreeNode(t, n->left());
193-
set(t, n, TreeNodeLeft, child->right());
194-
set(t, child, TreeNodeRight, n);
193+
n->setLeft(t, child->right());
194+
child->setRight(t, n);
195195
return child;
196196
}
197197

@@ -218,7 +218,7 @@ treeAdd(Thread* t, TreeContext* c)
218218
GcTreeNode* n = cloneTreeNode
219219
(t, c->ancestors->next->item->right());
220220

221-
set(t, c->ancestors->next->item, TreeNodeRight, n);
221+
c->ancestors->next->item->setRight(t, n);
222222

223223
setTreeNodeRed(t, c->ancestors->next->item->right(), false);
224224

@@ -234,9 +234,9 @@ treeAdd(Thread* t, TreeContext* c)
234234
GcTreeNode* n = leftRotate(t, new_);
235235

236236
if (new_ == c->ancestors->item->right()) {
237-
set(t, c->ancestors->item, TreeNodeRight, n);
237+
c->ancestors->item->setRight(t, n);
238238
} else {
239-
set(t, c->ancestors->item, TreeNodeLeft, n);
239+
c->ancestors->item->setLeft(t, n);
240240
}
241241
c->ancestors = path(c, n, c->ancestors);
242242
}
@@ -249,9 +249,9 @@ treeAdd(Thread* t, TreeContext* c)
249249
} else if (c->ancestors->next->next->item->right()
250250
== c->ancestors->next->item)
251251
{
252-
set(t, c->ancestors->next->next->item, TreeNodeRight, n);
252+
c->ancestors->next->next->item->setRight(t, n);
253253
} else {
254-
set(t, c->ancestors->next->next->item, TreeNodeLeft, n);
254+
c->ancestors->next->next->item->setLeft(t, n);
255255
}
256256
// done
257257
}
@@ -265,7 +265,7 @@ treeAdd(Thread* t, TreeContext* c)
265265
GcTreeNode* n = cloneTreeNode
266266
(t, c->ancestors->next->item->left());
267267

268-
set(t, c->ancestors->next->item, TreeNodeLeft, n);
268+
c->ancestors->next->item->setLeft(t, n);
269269

270270
setTreeNodeRed(t, c->ancestors->next->item->left(), false);
271271

@@ -281,9 +281,9 @@ treeAdd(Thread* t, TreeContext* c)
281281
GcTreeNode* n = rightRotate(t, new_);
282282

283283
if (new_ == c->ancestors->item->left()) {
284-
set(t, c->ancestors->item, TreeNodeLeft, n);
284+
c->ancestors->item->setLeft(t, n);
285285
} else {
286-
set(t, c->ancestors->item, TreeNodeRight, n);
286+
c->ancestors->item->setRight(t, n);
287287
}
288288
c->ancestors = path(c, n, c->ancestors);
289289
}
@@ -296,9 +296,9 @@ treeAdd(Thread* t, TreeContext* c)
296296
} else if (c->ancestors->next->next->item->left()
297297
== c->ancestors->next->item)
298298
{
299-
set(t, c->ancestors->next->next->item, TreeNodeLeft, n);
299+
c->ancestors->next->next->item->setLeft(t, n);
300300
} else {
301-
set(t, c->ancestors->next->next->item, TreeNodeRight, n);
301+
c->ancestors->next->next->item->setRight(t, n);
302302
}
303303
// done
304304
}
@@ -383,14 +383,14 @@ hashMapResize(Thread* t, GcHashMap* map, uint32_t (*hash)(Thread*, object),
383383

384384
unsigned index = hash(t, k) & (newLength - 1);
385385

386-
set(t, reinterpret_cast<object>(p), TripleThird, newArray->body()[index]);
387-
set(t, newArray, ArrayBody + (index * BytesPerWord), p);
386+
p->setThird(t, newArray->body()[index]);
387+
newArray->setBodyElement(t, index, reinterpret_cast<object>(p));
388388
}
389389
}
390390
}
391391
}
392392

393-
set(t, map, HashMapArray, newArray);
393+
map->setArray(t, newArray);
394394
}
395395

396396
void
@@ -427,8 +427,9 @@ hashMapInsert(Thread* t, GcHashMap* map, object key, object value,
427427
PROTECT(t, value);
428428

429429
GcWeakReference* r = makeWeakReference(t, 0, 0, 0, 0);
430-
r->target() = key;
431-
r->vmNext() = reinterpret_cast<object>(t->m->weakReferences);
430+
431+
r->setTarget(t, key);
432+
r->setVmNext(t, reinterpret_cast<object>(t->m->weakReferences));
432433
t->m->weakReferences = r->as<GcJreference>(t);
433434
k = reinterpret_cast<object>(r);
434435

@@ -441,8 +442,8 @@ hashMapInsert(Thread* t, GcHashMap* map, object key, object value,
441442

442443
unsigned index = h & (array->length() - 1);
443444

444-
set(t, reinterpret_cast<object>(n), TripleThird, array->body()[index]);
445-
set(t, array, ArrayBody + (index * BytesPerWord), n);
445+
n->setThird(t, array->body()[index]);
446+
array->setBodyElement(t, index, reinterpret_cast<object>(n));
446447

447448
if (map->size() <= array->length() / 3) {
448449
// this might happen if nodes were removed during GC in which case
@@ -452,13 +453,12 @@ hashMapInsert(Thread* t, GcHashMap* map, object key, object value,
452453
}
453454

454455
GcTriple*
455-
hashMapRemoveNode(Thread* t, GcHashMap* map, unsigned index, object p, GcTriple* n)
456+
hashMapRemoveNode(Thread* t, GcHashMap* map, unsigned index, GcTriple* p, GcTriple* n)
456457
{
457458
if (p) {
458-
set(t, p, TripleThird, n->third());
459+
p->setThird(t, n->third());
459460
} else {
460-
set(t, reinterpret_cast<object>(map->array()), ArrayBody + (index * BytesPerWord),
461-
n->third());
461+
map->array()->setBodyElement(t, index, n->third());
462462
}
463463
-- map->size();
464464
return n;
@@ -475,7 +475,7 @@ hashMapRemove(Thread* t, GcHashMap* map, object key,
475475
object o = 0;
476476
if (array) {
477477
unsigned index = hash(t, key) & (array->length() - 1);
478-
object p = 0;
478+
GcTriple* p = 0;
479479
for (GcTriple* n = cast<GcTriple>(t, array->body()[index]); n;) {
480480
object k = n->first();
481481
if (weak) {
@@ -490,7 +490,7 @@ hashMapRemove(Thread* t, GcHashMap* map, object key,
490490
o = hashMapRemoveNode(t, map, index, p, n)->second();
491491
break;
492492
} else {
493-
p = reinterpret_cast<object>(n);
493+
p = n;
494494
n = cast<GcTriple>(t, n->third());
495495
}
496496
}
@@ -515,11 +515,11 @@ listAppend(Thread* t, GcList* list, object value)
515515

516516
object p = reinterpret_cast<object>(makePair(t, value, 0));
517517
if (list->front()) {
518-
set(t, list->rear(), PairSecond, p);
518+
cast<GcPair>(t, list->rear())->setSecond(t, p);
519519
} else {
520-
set(t, reinterpret_cast<object>(list), ListFront, p);
520+
list->setFront(t, p);
521521
}
522-
set(t, reinterpret_cast<object>(list), ListRear, p);
522+
list->setRear(t, p);
523523
}
524524

525525
GcVector*
@@ -533,15 +533,15 @@ vectorAppend(Thread* t, GcVector* vector, object value)
533533
(t, vector->size(), max(16, vector->size() * 2));
534534

535535
if (vector->size()) {
536-
memcpy(newVector->body().begin(),
537-
vector->body().begin(),
538-
vector->size() * BytesPerWord);
536+
for(size_t i = 0; i < vector->size(); i++) {
537+
newVector->setBodyElement(t, i, vector->body()[i]);
538+
}
539539
}
540540

541541
vector = newVector;
542542
}
543543

544-
set(t, reinterpret_cast<object>(vector), VectorBody + (vector->size() * BytesPerWord), value);
544+
vector->setBodyElement(t, vector->size(), value);
545545
++ vector->size();
546546
return vector;
547547
}
@@ -555,8 +555,9 @@ growArray(Thread* t, GcArray* array)
555555
(t, array == 0 ? 16 : (array->length() * 2));
556556

557557
if (array) {
558-
memcpy(newArray->body().begin(), array->body().begin(),
559-
array->length());
558+
for(size_t i = 0; i < array->length(); i++) {
559+
newArray->setBodyElement(t, i, array->body()[i]);
560+
}
560561
}
561562

562563
return newArray;

0 commit comments

Comments
 (0)