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
vm-dev@lists.squeakfoundation.org