This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
---559023410-2022861571-11912674431425
Content-Type: TEXT/PLAIN; charset=US-ASCII
The attached patch passes all tests in gmake check.
Its intent is to clarify the code a little, and reduce repetition.
* The "magic number" 1.8 gets a #define.
* A for(;;) with break and continue is replaced by a smaller while loop.
* The repeated case where objects are tested in 3 ways to see if they
should not be marked is taken out to a function.
Unfortunately, none of this helps with the memory leak I've been
investigating.
It is offered in the hope it of some use.
I have found out over the weekend that realloc should act as malloc when
given a null pointer, according to ANSI C. The 'if' test I originally
wrote about could possibly be avoided if the heap is passed to realloc
whether or not the heap size is zero, provided the heap pointer is null
at initialization and whenever heap size gets to zero. However, given
the backwards compatibility issues this could raise on older systems, I
have not implemented this. Maybe someone with more experience of portability
issues may like to examine this?
Thank you,
Hugh
---559023410-2022861571-11912674431425
Content-Type: TEXT/PLAIN; charset=US-ASCII; name=gc_c_refactor
Content-Transfer-Encoding: BASE64
Content-Description:
Content-Disposition: attachment; filename=gc_c_refactor
LS0tIC4vZ2MuYy5vcmlnCTIwMDctMDMtMDMgMDc6MzA6NDYuMDAwMDAwMDAw
ICswMDAwDQorKysgLi9nYy5jCTIwMDctMTAtMDEgMjA6MDQ6MjcuMzEyODQy
MDAwICswMTAwDQpAQCAtMzEzLDYgKzMxMyw3IEBADQogc3RhdGljIGludCBo
ZWFwX3Nsb3RzID0gSEVBUF9NSU5fU0xPVFM7DQogDQogI2RlZmluZSBGUkVF
X01JTiAgNDA5Ng0KKyNkZWZpbmUgSEVBUF9TTE9UX1NDQUxJTkcgMS44DQog
DQogc3RhdGljIFJWQUxVRSAqaGltZW0sICpsb21lbTsNCiANCkBAIC0zMzks
MjkgKzM0MCwyNiBAQA0KIAlpZiAocCA9PSAwKSByYl9tZW1lcnJvcigpOw0K
ICAgICB9DQogDQotICAgIGZvciAoOzspIHsNCi0JUlVCWV9DUklUSUNBTChw
ID0gKFJWQUxVRSopbWFsbG9jKHNpemVvZihSVkFMVUUpKihoZWFwX3Nsb3Rz
KzEpKSk7DQotCWlmIChwID09IDApIHsNCi0JICAgIGlmIChoZWFwX3Nsb3Rz
ID09IEhFQVBfTUlOX1NMT1RTKSB7DQotCQlyYl9tZW1lcnJvcigpOw0KLQkg
ICAgfQ0KLQkgICAgaGVhcF9zbG90cyA9IEhFQVBfTUlOX1NMT1RTOw0KLQkg
ICAgY29udGludWU7DQotCX0NCi0gICAgICAgIGhlYXBzW2hlYXBzX3VzZWRd
Lm1lbWJhc2UgPSBwOw0KLSAgICAgICAgaWYgKChWQUxVRSlwICUgc2l6ZW9m
KFJWQUxVRSkgPT0gMCkNCi0gICAgICAgICAgICBoZWFwX3Nsb3RzICs9IDE7
DQotICAgICAgICBlbHNlDQotICAgICAgICAgICAgcCA9IChSVkFMVUUqKSgo
VkFMVUUpcCArIHNpemVvZihSVkFMVUUpIC0gKChWQUxVRSlwICUgc2l6ZW9m
KFJWQUxVRSkpKTsNCi0gICAgICAgIGhlYXBzW2hlYXBzX3VzZWRdLnNsb3Qg
PSBwOw0KLSAgICAgICAgaGVhcHNbaGVhcHNfdXNlZF0ubGltaXQgPSBoZWFw
X3Nsb3RzOw0KLQlicmVhazsNCisgICAgUlVCWV9DUklUSUNBTChwID0gKFJW
QUxVRSopbWFsbG9jKHNpemVvZihSVkFMVUUpKihoZWFwX3Nsb3RzKzEpKSk7
DQorICAgIHdoaWxlIChwID09IDApIHsNCisgICAgICAgIGlmIChoZWFwX3Ns
b3RzID09IEhFQVBfTUlOX1NMT1RTKSB7DQorICAgICAgICAgICAgcmJfbWVt
ZXJyb3IoKTsNCisgICAgICAgIH0NCisgICAgICAgIGhlYXBfc2xvdHMgPSBI
RUFQX01JTl9TTE9UUzsNCisgICAgICAgIFJVQllfQ1JJVElDQUwocCA9IChS
VkFMVUUqKW1hbGxvYyhzaXplb2YoUlZBTFVFKSooaGVhcF9zbG90cysxKSkp
Ow0KICAgICB9DQorICAgIGhlYXBzW2hlYXBzX3VzZWRdLm1lbWJhc2UgPSBw
Ow0KKyAgICBpZiAoKFZBTFVFKXAgJSBzaXplb2YoUlZBTFVFKSA9PSAwKQ0K
KyAgICAgICAgaGVhcF9zbG90cyArPSAxOw0KKyAgICBlbHNlDQorICAgICAg
ICBwID0gKFJWQUxVRSopKChWQUxVRSlwICsgc2l6ZW9mKFJWQUxVRSkgLSAo
KFZBTFVFKXAgJSBzaXplb2YoUlZBTFVFKSkpOw0KKyAgICBoZWFwc1toZWFw
c191c2VkXS5zbG90ID0gcDsNCisgICAgaGVhcHNbaGVhcHNfdXNlZF0ubGlt
aXQgPSBoZWFwX3Nsb3RzOw0KICAgICBwZW5kID0gcCArIGhlYXBfc2xvdHM7
DQogICAgIGlmIChsb21lbSA9PSAwIHx8IGxvbWVtID4gcCkgbG9tZW0gPSBw
Ow0KICAgICBpZiAoaGltZW0gPCBwZW5kKSBoaW1lbSA9IHBlbmQ7DQogICAg
IGhlYXBzX3VzZWQrKzsNCi0gICAgaGVhcF9zbG90cyAqPSAxLjg7DQorICAg
IGhlYXBfc2xvdHMgKj0gSEVBUF9TTE9UX1NDQUxJTkc7DQogICAgIGlmICho
ZWFwX3Nsb3RzIDw9IDApIGhlYXBfc2xvdHMgPSBIRUFQX01JTl9TTE9UUzsN
CiANCiAgICAgd2hpbGUgKHAgPCBwZW5kKSB7DQpAQCAtNTU5LDYgKzU1Nyw3
IEBADQogICAgIH0NCiB9DQogDQorUlZBTFVFICpnY19ub3RfbWFya2FibGUo
VkFMVUUgcHRyKTsNCiBzdGF0aWMgdm9pZCBnY19tYXJrIF8oKFZBTFVFIHB0
ciwgaW50IGxldikpOw0KIHN0YXRpYyB2b2lkIGdjX21hcmtfY2hpbGRyZW4g
XygoVkFMVUUgcHRyLCBpbnQgbGV2KSk7DQogDQpAQCAtNzA0LDYgKzcwMywy
MyBAQA0KICAgICB9DQogfQ0KIA0KKy8qIA0KKyAqIGRldGVybWluZSBpZiBh
biBvYmplY3Qgc2hvdWxkIGJlIG1hcmtlZC4gSWYgaXQgc2hvdWxkLA0KKyAq
IHJldHVybiB0aGUgcG9pbnRlciB0byBpdCwgZWxzZSByZXR1cm4gTlVMTA0K
KyAqLw0KK1JWQUxVRSAqDQorZ2Nfbm90X21hcmthYmxlKHB0cikNCisgICAg
VkFMVUUgcHRyOw0KK3sNCisgICAgUlZBTFVFICpvYmogPSBSQU5ZKHB0cik7
DQorDQorICAgIGlmIChyYl9zcGVjaWFsX2NvbnN0X3AocHRyKSkgcmV0dXJu
KE5VTEwpOyAvKiBzcGVjaWFsIGNvbnN0IG5vdCBtYXJrZWQgKi8NCisgICAg
aWYgKG9iai0+YXMuYmFzaWMuZmxhZ3MgPT0gMCkgcmV0dXJuKE5VTEwpOyAg
ICAgICAvKiBmcmVlIGNlbGwgKi8NCisgICAgaWYgKG9iai0+YXMuYmFzaWMu
ZmxhZ3MgJiBGTF9NQVJLKSByZXR1cm4oTlVMTCk7ICAvKiBhbHJlYWR5IG1h
cmtlZCAqLw0KKyAgICByZXR1cm4gb2JqOw0KK30NCisNCisNCiAjZGVmaW5l
IEdDX0xFVkVMX01BWCAyNTANCiANCiBzdGF0aWMgdm9pZA0KQEAgLTcxMywx
MCArNzI5LDggQEANCiB7DQogICAgIHJlZ2lzdGVyIFJWQUxVRSAqb2JqOw0K
IA0KLSAgICBvYmogPSBSQU5ZKHB0cik7DQotICAgIGlmIChyYl9zcGVjaWFs
X2NvbnN0X3AocHRyKSkgcmV0dXJuOyAvKiBzcGVjaWFsIGNvbnN0IG5vdCBt
YXJrZWQgKi8NCi0gICAgaWYgKG9iai0+YXMuYmFzaWMuZmxhZ3MgPT0gMCkg
cmV0dXJuOyAgICAgICAvKiBmcmVlIGNlbGwgKi8NCi0gICAgaWYgKG9iai0+
YXMuYmFzaWMuZmxhZ3MgJiBGTF9NQVJLKSByZXR1cm47ICAvKiBhbHJlYWR5
IG1hcmtlZCAqLw0KKyAgICBvYmogPSBnY19ub3RfbWFya2FibGUocHRyKTsN
CisgICAgaWYgKG9iaiA9PSBOVUxMKSByZXR1cm47DQogICAgIG9iai0+YXMu
YmFzaWMuZmxhZ3MgfD0gRkxfTUFSSzsNCiANCiAgICAgaWYgKGxldiA+IEdD
X0xFVkVMX01BWCB8fCAobGV2ID09IDAgJiYgcnVieV9zdGFja19jaGVjaygp
KSkgew0KQEAgLTc1MSwxMCArNzY1LDggQEANCiAgICAgZ290byBtYXJraW5n
OwkJLyogc2tpcCAqLw0KIA0KICAgYWdhaW46DQotICAgIG9iaiA9IFJBTlko
cHRyKTsNCi0gICAgaWYgKHJiX3NwZWNpYWxfY29uc3RfcChwdHIpKSByZXR1
cm47IC8qIHNwZWNpYWwgY29uc3Qgbm90IG1hcmtlZCAqLw0KLSAgICBpZiAo
b2JqLT5hcy5iYXNpYy5mbGFncyA9PSAwKSByZXR1cm47ICAgICAgIC8qIGZy
ZWUgY2VsbCAqLw0KLSAgICBpZiAob2JqLT5hcy5iYXNpYy5mbGFncyAmIEZM
X01BUkspIHJldHVybjsgIC8qIGFscmVhZHkgbWFya2VkICovDQorICAgIG9i
aiA9IGdjX25vdF9tYXJrYWJsZShwdHIpOw0KKyAgICBpZiAob2JqID09IE5V
TEwpIHJldHVybjsNCiAgICAgb2JqLT5hcy5iYXNpYy5mbGFncyB8PSBGTF9N
QVJLOw0KIA0KICAgbWFya2luZzoNCg
---559023410-2022861571-11912674431425--