Cees De Groot wrote:
I'm hardly a VM hacker, but:
On 6/6/06, Andreas Raab andreas.raab@gmx.de wrote:
sqInt addToVmRoots(sqInt *newArray, sqInt newCount, sqInt *oldArray);
why not oldCount as an argument? Or zero-terminated arrays for that matter?
oldCount is irrelevant since the VM won't copy the contents of newArray; it will merely keep a reference to it (the array really is under control of the plugin). Therefore all we need is the reference to oldArray (this also goes for reallocating via realloc() - just remember the old pointer before you do that and pass it into the above to update the oop array).
Why not NULL terminated? I'm planning on using NULL as the "undefined entry" in the oop array. Since this code is managed by some other C code that seems preferrable to nil (although the plugin could store nil just as well). But it probably will be valuable for the C code to be able to say "clear this entry" via storing NULL and having the VM skip this is fairly simple.
Cheers, - Andreas