Re: Is't wrong to store a GC thing on a map JSObject *

Steve Fink <[email protected]> Thu, 11 Apr 2019 10:50:51 -0700
Newsgroups gmane.comp.mozilla.devel.jseng
Message-ID <[email protected]>
T24gNC8xMS8xOSA5OjA5IEFNLCBCb3JpcyBaYmFyc2t5IHdyb3RlOgo+IE9uIDQvMTEvMTkgOTox
MyBBTSwgbXNhbWkgd3JvdGU6Cj4+IEkgd2FudCB0byBoYXZlIGEgbWFwIHRoYXQgY2FycmllcyBy
b290ZWRPYmplY3QgaXMgdGhhdCBhY2hpZXZhYmxlPwo+Cj4gUm9vdGVkT2JqZWN0IGlzIG9ubHkg
YWxsb3dlZCB0byBiZSB1c2VkIG9uIHRoZSBzdGFjay7CoCBTbyB5b3UgY2FuJ3QgCj4gc3RvcmUg
aXQgaW4gYSBtYXAsIG5vLgo+Cj4gRGVwZW5kaW5nIG9uIHRoZSByb290aW5nIGJlaGF2aW9yIHlv
dSB3YW50LCB5b3UgY291bGQgdHJ5IHRvIHVzZSBhIAo+IFBlcnNpc3RlbnRSb290ZWQgZm9yIHRo
ZSB2YWx1ZSwgb3IgdXNlIGEgSGVhcDxKU09iamVjdCo+IGFuZCB0cmFjZSAKPiB5b3VyIG1hcC4K
Pgo+IEluIHRoZSBmb3JtZXIgY2FzZSwgb2YgY291cnNlLCB5b3Ugd2lsbCBuZWVkIHRvIGRlYWwg
d2l0aCB0aGUgZmFjdCAKPiB0aGF0IGEgUGVyc2lzdGVudFJvb3RlZCBuZWVkcyBhIEpTQ29udGV4
dCBvciBKU1J1bnRpbWUgdG8gYmUgaW5pdGlhbGl6ZWQuCgpCZWZvcmUgSSByZWFsaXplZCB0aGF0
IFBlcnNpc3RlbnRSb290ZWQgd2FzIGZpbmUgZm9yIHRoaXMsIEkgd2VudCAKdGhyb3VnaCB0aGVz
ZSBvdGhlciBvcHRpb25zLiBQb3N0aW5nIGhlcmUgZm9yIHBvc3Rlcml0eS4gSSBzaG91bGQgCnBy
b2JhYmx5IGFkZCB0aGVtIHRvIHRoZSBlbWJlZGRpbmcgZXhhbXBsZXMuCgotLS0tCgpUaGVyZSBh
cmUgYSBjb3VwbGUgb2Ygb3B0aW9ucy4KCk9uZSB3b3VsZCBiZSB0byBzcGVjaWFsaXplIHRlbXBs
YXRlcyBhcHByb3ByaWF0ZWx5IHRvIHVuZGVyc3RhbmQgaG93IHRvIAp0cmFjZSBhbmQgc3dlZXAg
c3RkOjptYXAuIFRoZW4geW91IGNvdWxkIHVzZSAKUGVyc2lzdGVudFJvb3RlZDxzdGQ6Om1hcDxz
dGQ6OnN0cmluZywgSlM6OkhlYXA8SlNPYmplY3QqPj4+OgoKIMKgwqDCoCBuYW1lc3BhY2UgSlMg
ewogwqDCoMKgIHRlbXBsYXRlIDx0eXBlbmFtZSBOb25HQ0tleVQsIHR5cGVuYW1lIEdDVmFsdWVU
PgogwqDCoMKgIHN0cnVjdCBHQ1BvbGljeTxzdGQ6Om1hcDxOb25HQ0tleVQsIEdDVmFsdWVUPj4g
ewogwqDCoMKgwqDCoCB1c2luZyBNYXAgPSBzdGQ6Om1hcDxOb25HQ0tleVQsIEdDVmFsdWVUPjsK
IMKgwqDCoMKgwqAgc3RhdGljIHZvaWQgdHJhY2UoSlNUcmFjZXIqIHRyYywgTWFwKiBtYXAsIGNv
bnN0IGNoYXIqIG5hbWUpIHsKIMKgwqDCoMKgwqDCoMKgIGZvciAoYXV0byYgZW50IDogKm1hcCkg
ewogwqDCoMKgwqDCoMKgwqDCoMKgIEdDUG9saWN5PEdDVmFsdWVUPjo6dHJhY2UodHJjLCAmZW50
LnNlY29uZCwgIm1hcCB2YWx1ZSIpOwogwqDCoMKgwqDCoMKgwqAgfQogwqDCoMKgwqDCoCB9CiDC
oMKgwqDCoMKgIHN0YXRpYyB2b2lkIHN3ZWVwKE1hcCogbWFwKSB7CiDCoMKgwqDCoMKgwqDCoCBh
dXRvIGl0ZXIgPSBtYXAtPmJlZ2luKCk7CiDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoaXRlciAhPSBt
YXAtPmVuZCgpKSB7CiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKEdDUG9saWN5PEdDVmFsdWVUPjo6
bmVlZHNTd2VlcCgmaXRlci0+c2Vjb25kKSkKIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaXRlciA9
IG1hcC0+ZXJhc2UoaXRlcik7CiDCoMKgwqDCoMKgwqDCoMKgwqAgZWxzZQogwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCArK2l0ZXI7CiDCoMKgwqDCoMKgwqDCoCB9CiDCoMKgwqDCoMKgIH0KIMKgwqDC
oMKgwqAgc3RhdGljIGJvb2wgbmVlZHNTd2VlcChNYXAqIG1hcCkgewogwqDCoMKgwqDCoMKgwqAg
cmV0dXJuICFtYXAtPmVtcHR5KCk7CiDCoMKgwqDCoMKgIH0KIMKgwqDCoMKgwqAgc3RhdGljIGJv
b2wgaXNWYWxpZChNYXAqIG1hcCkgeyByZXR1cm4gdHJ1ZTsgfQogwqDCoMKgIH07CiDCoMKgwqAg
fSAvKiBuYW1lc3BhY2UgSlMgKi8KCiDCoMKgwqAgdXNpbmcgT2JqTWFwID0gc3RkOjptYXA8c3Rk
OjpzdHJpbmcsIEpTOjpIZWFwPEpTT2JqZWN0Kj4+OwogwqDCoMKgIHN0YXRpYyBKUzo6UGVyc2lz
dGVudFJvb3RlZDxPYmpNYXA+IHJvb3RlZE9iamVjdHNNYXA7CgpOb3RlIHRoYXQgdGhpcyBvbmx5
IHN1ZmZpY2VzIGZvciBtYXBzIHdpdGggbm9uLUdDIHR5cGVzIGFzIGtleXMuIElmIHlvdSAKd2Vy
ZSBtYXBwaW5nIGZyb20gYSBKU09iamVjdCosIGZvciBleGFtcGxlLCB0aGVuIG91ciBtb3Zpbmcg
R0MgY291bGQgCmludmFsaWRhdGUgdGhlIHBvaW50ZXIgYW5kIGNvcnJ1cHQgeW91ciBzdGQ6Om1h
cCAoYW5kIHlvdSBjYW4ndCBqdXN0IAp1cGRhdGUgdGhlIHBvaW50ZXIgdGhlcmUsIGJlY2F1c2Ug
aXQnbGwgaGFzaCBkaWZmZXJlbnRseSwgYW5kIGFueXdheSBTVEwgCm1ha2VzIHRoZSBrZXkgY29u
c3Qgc28geW91IGRvbid0IGRvIHRoYXQuKSBUaGUgSGVhcDxUPiBpcyBvbiB0aGUga2V5IGZvciAK
dGhlIHBvc3Qtd3JpdGUgYmFycmllcjogaWYgeW91IHB1dCBhIG51cnNlcnkgcG9pbnRlciBpbnRv
IHRoaXMgbWFwLCB3ZSAKbmVlZCB0byByZW1lbWJlciB3aGVyZSBpdCBpcyBzbyB3ZSBjYW4gdXBk
YXRlIGl0IHdoZW4gdGhlIG9iamVjdCBtb3Zlcy4gCkFuZCBpZiB5b3UncmUgdXNpbmcgaW5jcmVt
ZW50YWwgR0MsIGl0J2xsIGFsc28gZ2l2ZSBhIHByZS13cml0ZSBiYXJyaWVyIAp0byBwcmV2ZW50
IGFueSBwb2ludGVycyBmcm9tIGhpZGluZyBpbiB0aGUgYmFzZW1lbnQgd2hpbGUgdGhlIG1hcmtp
bmcgCnN0b3JtIHBhc3NlcyBieSBvdmVyaGVhZC4KClRoZSBzd2VlcCgpIGltcGxlbWVudGF0aW9u
IHVwIHRoZXJlIGlzIG5vdCB1c2VkIGluIHlvdXIgY2FzZSwgc2luY2UgdGhlIApvbmx5IGluc3Rh
bmNlIGlzIHJvb3RlZCBhbmQgdGh1cyBldmVyeXRoaW5nIHdpbGwgYWx3YXlzIGJlIGFsaXZlLiBC
dXQgaXQgCnNlZW1lZCBsaWtlIGEgZm9vdGd1biB0byBsZWF2ZSBpdCBvdXQsIGFuZCBoYXZpbmcg
aXQgd2lsbCBhbGxvdyAKSlM6OkhlYXA8c3RkOjptYXA8Li4uPj4gKHN0aWxsIGZvciBub24tR0Mg
a2V5cyBvbmx5LCB0aG91Z2guKQoKUGVyc2lzdGVudFJvb3RlZCBpcyBhIHRyaWNreSBiZWFzdC4g
WW91J2xsIG5lZWQgdG8gaW5pdGlhbGl6ZSBpdCBpbiBzb21lIApzdGFydHVwIGNvZGUsIGFmdGVy
IHlvdSd2ZSBjb25zdHJ1Y3RlZCB0aGUgcnVudGltZSBhbmQgZXZlcnl0aGluZywgYW5kIAp5b3Ug
bmVlZCB0byBlbnN1cmUgdGhhdCB5b3UgcmVzZXQoKSBpdCBiZWZvcmUgc2h1dHRpbmcgZG93biBv
ciB3ZSdsbCAKYXNzZXJ0IGluIGEgZGVidWcgYnVpbGQgKHlvdSdkIGJlIGtlZXBpbmcgb2JqZWN0
cyBsaXZlIGF0IHNodXRkb3duLCAKbGVha2luZyByYW5kb20gc3R1ZmYgYW5kIHBvc3NpYmx5IHBy
ZXZlbnRpbmcgZmluYWxpemVycyBmcm9tIHJ1bm5pbmcuKQoKRHVyaW5nIGluaXRpYWx6aWF0aW9u
OgoKIMKgwqDCoCByb290ZWRPYmplY3RzTWFwLmluaXQoY3gpOwoKYW5kIGJlZm9yZSBldmVyeXRo
aW5nIHNodXRzIGRvd246CgogwqDCoMKgIHJvb3RlZE9iamVjdHNNYXAucmVzZXQoKTsKClVzaW5n
IGl0IHdvdWxkIGp1c3QgYmUgd2hhdCB5b3UncmUgdXNlZCB0bzoKCiDCoCByb290ZWQuZ2V0KCku
aW5zZXJ0KE9iak1hcDo6dmFsdWVfdHlwZShzdGQ6OnN0cmluZygiZm9vIiksIG9iaikpOwogwqAg
ZnByaW50ZihzdGRlcnIsICJmb28gLT4gJXBcbiIsICh2b2lkKikgcm9vdGVkLmdldCgpW3N0ZDo6
c3RyaW5nKCJmb28iKV0pOwoKQW5vdGhlciBvcHRpb24gd291bGQgYmUgdG8gdXNlIG91ciBHQy1h
d2FyZSBtYXAgQVBJLCBHQ0hhc2hNYXAuIEJ1dCAKYWdhaW4sIHlvdSdkIGhhdmUgdG8gZG8gdGVt
cGxhdGUgc3R1ZmYgYmVjYXVzZSB3ZSBkb24ndCBuYXRpdmVseSBrbm93IApob3cgdG8gaGFzaCBz
dGQ6OnN0cmluZywgbm9yIGRvIHdlIGtub3cgdGhhdCBpdCdzIG5vdCBhIEdDIHBvaW50ZXIgdHlw
ZSAKc28gaXQgZG9lc24ndCBuZWVkIHRvIGJlIHRyYWNlZCBvciBkaWUgZHVyaW5nIEdDOgoKIMKg
wqDCoCBuYW1lc3BhY2UgbW96aWxsYSB7CiDCoMKgwqAgdGVtcGxhdGUgPD4KIMKgwqDCoCBzdHJ1
Y3QgRGVmYXVsdEhhc2hlcjxzdGQ6OnN0cmluZz4gewogwqDCoMKgwqDCoCB1c2luZyBLZXkgPSBz
dGQ6OnN0cmluZzsKIMKgwqDCoMKgwqAgdXNpbmcgTG9va3VwID0gS2V5OwoKIMKgwqDCoMKgwqAg
c3RhdGljIEhhc2hOdW1iZXIgaGFzaChjb25zdCBMb29rdXAmIGFMb29rdXApIHsKIMKgwqDCoMKg
wqDCoMKgIHJldHVybiBIYXNoU3RyaW5nKGFMb29rdXAuY19zdHIoKSk7CiDCoMKgwqDCoMKgIH0K
CiDCoMKgwqDCoMKgIHN0YXRpYyBib29sIG1hdGNoKGNvbnN0IEtleSYgYUtleSwgY29uc3QgTG9v
a3VwJiBhTG9va3VwKSB7CiDCoMKgwqDCoMKgwqDCoCByZXR1cm4gYUtleSA9PSBhTG9va3VwOwog
wqDCoMKgwqDCoCB9CiDCoMKgwqAgfTsKIMKgwqDCoCB9IC8qIG5hbWVzcGFjZSBtb3ppbGxhICov
CgogwqDCoMKgIG5hbWVzcGFjZSBKUyB7CiDCoMKgwqAgdGVtcGxhdGUgPD4KIMKgwqDCoCBzdHJ1
Y3QgR0NQb2xpY3k8c3RkOjpzdHJpbmc+IDogcHVibGljIElnbm9yZUdDUG9saWN5PHN0ZDo6c3Ry
aW5nPiB7fTsKIMKgwqDCoCB9IC8qIG5hbWVzcGFjZSBKUyAqLwoKIMKgwqDCoCB1c2luZyBPYmpN
YXAgPSBKUzo6R0NIYXNoTWFwPHN0ZDo6c3RyaW5nLCBKUzo6SGVhcDxKU09iamVjdCo+LCAKanM6
OkRlZmF1bHRIYXNoZXI8c3RkOjpzdHJpbmc+LCBqczo6U3lzdGVtQWxsb2NQb2xpY3k+OwoKVGhl
IEFQSSBpcyB2ZXJ5IGRpZmZlcmVudCBmcm9tIHN0ZDo6bWFwLCB0aG91Z2g6CgogwqAgcm9vdGVk
LnB1dChzdGQ6OnN0cmluZygiZm9vIiksIG9iaik7CiDCoCBmcHJpbnRmKHN0ZGVyciwgImZvbyAt
PiAlcFxuIiwgKHZvaWQqKSAKcm9vdGVkLmxvb2t1cChzdGQ6OnN0cmluZygiZm9vIikpLT52YWx1
ZSgpKTsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRl
di10ZWNoLWpzLWVuZ2luZSBtYWlsaW5nIGxpc3QKZGV2LXRlY2gtanMtZW5naW5lQGxpc3RzLm1v
emlsbGEub3JnCmh0dHBzOi8vbGlzdHMubW96aWxsYS5vcmcvbGlzdGluZm8vZGV2LXRlY2gtanMt
ZW5naW5lCg==