VMData.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 25 Jan 2016 14:59:48 +0000
changeset 13 b3d0f59702b7
child 23 d2d9a2d4d6bf
permissions -rw-r--r--
Added VMData and VMOffsets shared pools. VMData does not contain all the required things. More will be added as required.

"{ Package: 'jv:dragonfly' }"

"{ NameSpace: Smalltalk }"

SharedPool subclass:#VMData
	instanceVariableNames:''
	classVariableNames:'ADDR___VMDATA__ ADDR___stackTop__ ADDR___newNextPtr__
		ADDR___newEndPtr__ ADDR___newSpace__ ADDR___thisContext ADDR_true
		ADDR_false ADDR_Float ADDR_SmallInteger ADDR_UndefinedObject
		ADDR_Context ADDR_BlockContext'
	poolDictionaries:'VMOffsets'
	category:'System-Compiler-Interface'
!

!VMData class methodsFor:'class initialization'!

initialize
    | base handle|

    handle := ObjectFileLoader loadDynamicObject: nil.  
    base := ObjectFileLoader getSymbol: '__vmDataPtr__' function: false from: handle.
    base := ExternalBytes address: base size: ExternalAddress pointerSize.
    ADDR___VMDATA__ := (base pointerAt: 1) address.

    ADDR___stackTop__ := ADDR___VMDATA__ + OFFS___stackTop__.

    ADDR___newNextPtr__ := ADDR___VMDATA__ + OFFS___newNextPtr__.
    ADDR___newEndPtr__ := ADDR___VMDATA__ + OFFS___newEndPtr__.
    ADDR___newSpace__ := ADDR___VMDATA__ + OFFS___newSpace__ .

    ADDR___thisContext := ADDR___VMDATA__ + OFFS___thisContext .

    ADDR_true := ADDR___VMDATA__ +  OFFS_true .
    ADDR_false := ADDR___VMDATA__ +  OFFS_false.

    ADDR_Float := ADDR___VMDATA__ +  OFFS_Float .
    ADDR_SmallInteger := ADDR___VMDATA__ + OFFS_SmallInteger .
    ADDR_UndefinedObject := ADDR___VMDATA__ + OFFS_UndefinedObject .
    ADDR_Context := ADDR___VMDATA__ +  OFFS_Context.
    ADDR_BlockContext := ADDR___VMDATA__ + OFFS_BlockContext.

    "Created: / 25-01-2016 / 14:45:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !


VMData initialize!