[Vm-dev] Re: localIP, instructionPointer, currentBytecode data size

John M McIntosh johnmci at smalltalkconsulting.com
Tue Mar 2 17:21:39 UTC 2010


On 2010-03-02, at 12:41 AM, Ang BeePeng wrote:

> Is it true that char* in bold explain difference in both version? 

> localIP = pointerForOop(instructionPointer); instead of 

This moves the global variable instructionPointer OOPS value into localIP and makes it a memory address.   

> localIP = pointerForOop(foo->instructionPointer);

This move the element instructionPointer from foo into localIP, and makes it a memory address. On the PowerPC 
this form takes one less assembler instruction than referencing a  global.  On Intel depending on the compiler it may take less 
assembler instructions. 

> 
> 
> In the bluebook, for example 
> 
>     pushReceiverVariableBytecode
>          | fieldIndex |
>          fieldIndex := self extractBits: 12 to: 15 of: currentBytecode.
> 
> I thought bytecode should be one byte, 8 bits. Why extracting from the
> second byte?

That is implementation. Take a look at 
http://ftp.squeak.org/docs/OOPSLA.Squeak.html
and 
http://stephane.ducasse.free.fr/FreeBooks/CollectiveNBlueBook/Rowledge-Final.pdf

> 
> Thanks.
> 
> Ang Beepeng
> 
> -- 
> View this message in context: http://n4.nabble.com/localIP-instructionPointer-currentBytecode-data-size-tp1574626p1574737.html
> Sent from the Squeak - VM mailing list archive at Nabble.com.

--
===========================================================================
John M. McIntosh <johnmci at smalltalkconsulting.com>   Twitter:  squeaker68882
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com
===========================================================================






More information about the Vm-dev mailing list