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