[Vm-dev] instructionPointer offsets in #primitiveBlockCopy

Rob Withers reefedjib at yahoo.com
Thu Nov 8 18:44:24 UTC 2007


I am trying to understand the offsets with the instructionPointer when 
computing the initialIP for the new block being created in 
#primitiveBlockCopy.   I have a couple of questions that hopefully someone 
can help me answer.

Here is the code:
    initialIP := self integerObjectOf: (instructionPointer+1+3) - 
(method+BaseHeaderSize).
    "Was instructionPointer + 3, but now it's greater by 1 due to 
preIncrement"

Of the +1+3 adjustment being made to the IP, the +1 is for preIncrement.  Is 
the IP pointing to the current byte or the one before?  I don't understand 
how preIncrement is affecting things.

Of the +3 part, is it skipping 1 byte for the
    <C8> send: blockCopy:
and 2 bytes for the long jump?

I have introduce an extra long jump and some blocks are big enough to use 
them with my macro changes.  I need to account for a possible 4 byte extra 
long jump in block creation.

thank you,
Rob 



More information about the Vm-dev mailing list