Nicholas Clark: # > +Objects in all pools not alive are considered dead therefore. # # I find the order of that sentence slightly confusing - # therefore is quite an important word, yet it's the end (just # like a perl5 regexp flag).
Beyond that, I believe it's bad grammar. I've never seen a word order like that, and it sets off alarm bells in my mind, but I can't tell you exactly *why* it's bad. # I'm not sure which of these I find clearer: # # Objects in all pools not alive are therefore considered dead. # Therefore objects in all pools not alive are considered dead. Why not just drop the 'therefore'? Objects in all pools not alive are considered dead. Are the objects not alive or the pools? If it's the objects, is the "in all pools" necessary? # > +I<Memory_pool> and I<header_pool> are variable and fixed # sized pool # > +pointers respectively. # # Likewise, I find that I reach "respectively" at the end of # that sentence and have to scan back over it to re-comprehend it I disagree. That's a very common word order. Furthermore, it doesn't require a rescan, because "respectively" is just confirming a default. An analogy would be if an assignment like ($a, $b)=($c, $d) defaulted to $a = $c, $b = $d but there was a way to say you wanted it in the opposite order: ($a, $b)=($c, $d); ($a, $b)=($c, $d) : normal; #same as the first ($a, $b)=($c, $d) : reversed; #reversed Seeing the "normal" doesn't make you reinterpret the rest of the statement, because it's just confirming an assumption you already made. # > +All fixed sized objects are allocated with # alloc_objects(), and first # > +put onto the pool's free_list. When there is need for a new object # > +it's taken off the free_list and when it's unused # (detected during a # > +DOD run), it will be put back on the free list again. # > + # > +If the free_list is empty, first a DOD run is started, # which may put # > +dead objects there, or if not, a new pool is allocated to # hold more # > +objects. # # I'd pull the bit out of the brackets and make it into a new # sentence. Currently I was a bit unsure about what was going # on. I think I'd write it as # # All fixed sized objects are allocated with # alloc_objects(), and first put # onto the pool's free_list. When there is need for a new # object it is taken # off the free_list, and when it stops being used it will # be put back on the # free list again. DOD runs detect which objects are no # longer being used. # # I'm trying hard not to use the verb "used" twice, in two # different contexts; firstly to describe the state of the # objects themselves, and secondly to describe the purpose of # the DOD run. I don't like the "DOD runs detect which objects are no longer being used" sentence--at first read, I interpret 'runs' as a verb and 'detect' as the beginning of a noun phrase, which yields a meaningless sentence. Is there a problem with the sentence "DOD detects which objects are no longer being used"? # > +Using this allocator, all variable sized items are just # allocated via # > +a plain malloc() call, or resized with realloc(), and # after they lost # > +there existence, this is, when DOD detected, that the # managing buffer # # lose their? # # > +header is not used anymore, they are free()ed. That's all. The # > +underlaying allocator collect's this pieces, does coalesce them to # > +bigger parts - if possible, keeps them on free lists, # sorted by their # > +sizes, and when a new malloc() arrives, eventually gives # them back to # > +parrot. # # # underlying allocator collects these pieces, where # possible coalesces them # to form bigger pieces, and then puts them on free lists, # sorted by their # sizes. Eventually, when a new malloc() arrives, it gives # them back to # parrot. There isn't really anything *wrong* with that fragment, but it could be (IMHO) better: underlying allocator collects these pieces, coalesces them if possible to form bigger pieces, and then puts them on free lists, sorted by size. Eventually, when a new allocation request arrives, it may give them back to Parrot. --Brent Dax <[EMAIL PROTECTED]> @roles=map {"Parrot $_"} qw(embedding regexen Configure) Wire telegraph is a kind of a very, very long cat. You pull his tail in New York and his head is meowing in Los Angeles. And radio operates exactly the same way. The only difference is that there is no cat. --Albert Einstein (explaining radio)