Two fields.


First is type, which is 0 for a double-precision FP

1 for a string and higher than that for a defined type in the
defined type table.


Second is the number, for type 0, and a pointer to
the beginning of the object for everything else.  Objects will
fit in contiguous memory or will take care of their own decomposition
if they are not, through allocation of additional objects within their
methods.


By outlawing any type numbers which are multiples of 256
we could even save a byte in simple storage, but we'd lose it
back to byte alignment.



THE DEFINED TYPE TABLE:

this is where the jump tables live, rather than in the objects 
themselves, so we don't have "heaviness" of C++ virtuals.

Within a perl instance, every object type must register itself on
loading.  At registration, a number is assigned, the jump table
of common functions that that object type overloads is filled, and also
a pointer to the association for uncommon methods of the object type
is filled. So the defined type table is an array of constant-sized
items.




-- 
                          David Nicol 816.235.1187 [EMAIL PROTECTED]
:wq

Reply via email to