instructionPointer offsets in #primitiveBlockCopy

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

instructionPointer offsets in #primitiveBlockCopy

Rob Withers
 
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