On Fri, 29 Dec 2000 20:22:48 -0500 (EST) "Matthew S. Davis" mdavis@cse.psu.edu wrote:
I've determined the following header format from the Interpreter
methods:
bit 0 : constant 1 to indicate SmallInteger bits 1-9 : primitive index bits 10-17 : literal count bit 18 : not used? bits 19-25 : temporary count bits 25-28 : argument count bits 29-31 : primitive index
Could someone please explain why bit 25 is shared between two
fields? I'm not clear why this is the case. Should the temporary count really be in bit positions 18-24? If so, it does not look like they are.
Matthew,
Temporary count is definitely 6 bits in the header. Where did you see an indication that it was 7?
And the bit you have marked as unused is the Large/Small context flag.
Cheers, Bob
Hi Bob (and everyone else who responded - thanks!),
Boy I feel stupid. The mask that I "saw" in the bitAnd: message sent in Interpreter>>bytecodeActivateNewMethod was 16r7F. It's clearly 16r3F which is 6 bits.
Thanks for the help!
-Matthew
On Fri, 29 Dec 2000, Bob Arning wrote:
On Fri, 29 Dec 2000 20:22:48 -0500 (EST) "Matthew S. Davis" mdavis@cse.psu.edu wrote:
I've determined the following header format from the Interpreter
methods:
bit 0 : constant 1 to indicate SmallInteger bits 1-9 : primitive index bits 10-17 : literal count bit 18 : not used? bits 19-25 : temporary count bits 25-28 : argument count bits 29-31 : primitive index
Could someone please explain why bit 25 is shared between two
fields? I'm not clear why this is the case. Should the temporary count really be in bit positions 18-24? If so, it does not look like they are.
Matthew,
Temporary count is definitely 6 bits in the header. Where did you see an indication that it was 7?
And the bit you have marked as unused is the Large/Small context flag.
Cheers, Bob
squeak-dev@lists.squeakfoundation.org