diff options
Diffstat (limited to 'src/pkg/runtime/hashmap.c')
| -rw-r--r-- | src/pkg/runtime/hashmap.c | 45 |
1 files changed, 9 insertions, 36 deletions
diff --git a/src/pkg/runtime/hashmap.c b/src/pkg/runtime/hashmap.c index 410ce53c73..101c4281f6 100644 --- a/src/pkg/runtime/hashmap.c +++ b/src/pkg/runtime/hashmap.c @@ -998,10 +998,7 @@ runtime·mapaccess1(MapType *t, Hmap *h, byte *ak, byte *av) { if(raceenabled && h != nil) { runtime·racereadpc(h, runtime·getcallerpc(&t), runtime·mapaccess1); - if(t->key->kind == KindArray || t->key->kind == KindStruct) - runtime·racereadrangepc(ak, t->key->size, runtime·getcallerpc(&t), runtime·mapaccess1); - else - runtime·racereadpc(ak, runtime·getcallerpc(&t), runtime·mapaccess1); + runtime·racereadobjectpc(ak, t->key, runtime·getcallerpc(&t), runtime·mapaccess1); } if(h == nil || h->count == 0) { av = t->elem->zero; @@ -1032,10 +1029,7 @@ runtime·mapaccess2(MapType *t, Hmap *h, byte *ak, byte *av, bool pres) { if(raceenabled && h != nil) { runtime·racereadpc(h, runtime·getcallerpc(&t), runtime·mapaccess2); - if(t->key->kind == KindArray || t->key->kind == KindStruct) - runtime·racereadrangepc(ak, t->key->size, runtime·getcallerpc(&t), runtime·mapaccess2); - else - runtime·racereadpc(ak, runtime·getcallerpc(&t), runtime·mapaccess2); + runtime·racereadobjectpc(ak, t->key, runtime·getcallerpc(&t), runtime·mapaccess2); } if(h == nil || h->count == 0) { @@ -1073,10 +1067,7 @@ reflect·mapaccess(MapType *t, Hmap *h, byte *key, byte *val) { if(raceenabled && h != nil) { runtime·racereadpc(h, runtime·getcallerpc(&t), reflect·mapaccess); - if(t->key->kind == KindArray || t->key->kind == KindStruct) - runtime·racereadrangepc(key, t->key->size, runtime·getcallerpc(&t), reflect·mapaccess); - else - runtime·racereadpc(key, runtime·getcallerpc(&t), reflect·mapaccess); + runtime·racereadobjectpc(key, t->key, runtime·getcallerpc(&t), reflect·mapaccess); } val = hash_lookup(t, h, &key); FLUSH(&val); @@ -1092,14 +1083,8 @@ runtime·mapassign1(MapType *t, Hmap *h, byte *ak, byte *av) if(raceenabled) { runtime·racewritepc(h, runtime·getcallerpc(&t), runtime·mapassign1); - if(t->key->kind == KindArray || t->key->kind == KindStruct) - runtime·racereadrangepc(ak, t->key->size, runtime·getcallerpc(&t), runtime·mapassign1); - else - runtime·racereadpc(ak, runtime·getcallerpc(&t), runtime·mapassign1); - if(t->elem->kind == KindArray || t->elem->kind == KindStruct) - runtime·racereadrangepc(av, t->elem->size, runtime·getcallerpc(&t), runtime·mapassign1); - else - runtime·racereadpc(av, runtime·getcallerpc(&t), runtime·mapassign1); + runtime·racereadobjectpc(ak, t->key, runtime·getcallerpc(&t), runtime·mapassign1); + runtime·racereadobjectpc(av, t->elem, runtime·getcallerpc(&t), runtime·mapassign1); } hash_insert(t, h, ak, av); @@ -1125,10 +1110,7 @@ runtime·mapdelete(MapType *t, Hmap *h, byte *ak) if(raceenabled) { runtime·racewritepc(h, runtime·getcallerpc(&t), runtime·mapdelete); - if(t->key->kind == KindArray || t->key->kind == KindStruct) - runtime·racereadrangepc(ak, t->key->size, runtime·getcallerpc(&t), runtime·mapdelete); - else - runtime·racereadpc(ak, runtime·getcallerpc(&t), runtime·mapdelete); + runtime·racereadobjectpc(ak, t->key, runtime·getcallerpc(&t), runtime·mapdelete); } hash_remove(t, h, ak); @@ -1151,14 +1133,8 @@ reflect·mapassign(MapType *t, Hmap *h, byte *key, byte *val) runtime·panicstring("assignment to entry in nil map"); if(raceenabled) { runtime·racewritepc(h, runtime·getcallerpc(&t), reflect·mapassign); - if(t->key->kind == KindArray || t->key->kind == KindStruct) - runtime·racereadrangepc(key, t->key->size, runtime·getcallerpc(&t), reflect·mapassign); - else - runtime·racereadpc(key, runtime·getcallerpc(&t), reflect·mapassign); - if(t->elem->kind == KindArray || t->elem->kind == KindStruct) - runtime·racereadrangepc(val, t->elem->size, runtime·getcallerpc(&t), reflect·mapassign); - else - runtime·racereadpc(val, runtime·getcallerpc(&t), reflect·mapassign); + runtime·racereadobjectpc(key, t->key, runtime·getcallerpc(&t), reflect·mapassign); + runtime·racereadobjectpc(val, t->elem, runtime·getcallerpc(&t), reflect·mapassign); } hash_insert(t, h, key, val); @@ -1183,10 +1159,7 @@ reflect·mapdelete(MapType *t, Hmap *h, byte *key) runtime·panicstring("delete from nil map"); if(raceenabled) { runtime·racewritepc(h, runtime·getcallerpc(&t), reflect·mapdelete); - if(t->key->kind == KindArray || t->key->kind == KindStruct) - runtime·racereadrangepc(key, t->key->size, runtime·getcallerpc(&t), reflect·mapdelete); - else - runtime·racereadpc(key, runtime·getcallerpc(&t), reflect·mapdelete); + runtime·racereadobjectpc(key, t->key, runtime·getcallerpc(&t), reflect·mapdelete); } hash_remove(t, h, key); |
