VMData.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 29 Aug 2018 21:32:19 +0100
changeset 50 7f439240d923
parent 45 0904c2157ddf
permissions -rw-r--r--
UDIS86: fixed crash caused by keeping `ud_t` structure on smalltalk heap ...and this the structure may move. Thisx resulted on hard-to-debug heap corruptions because `ud_t.asm_buf` is initializad to a pointer to `ud_t.asm_buf_int`. Therefore when the bytearray moved, the pointer become invalid and subsequent call to `ud_disassemble()` smashed whatever object happened to be where the bytearray were. The fix is straigtforward, use `ExternalBytes`! Sigh.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     1
"
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     2
    Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     3
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     4
    Permission is hereby granted, free of charge, to any person obtaining a copy
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     5
    of this software and associated documentation files (the 'Software'), to deal
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     6
    in the Software without restriction, including without limitation the rights
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     7
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     8
    copies of the Software, and to permit persons to whom the Software is
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
     9
    furnished to do so, subject to the following conditions:
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    10
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    11
    The above copyright notice and this permission notice shall be included in all
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    12
    copies or substantial portions of the Software.
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    13
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    14
    THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    15
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    16
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    17
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    18
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    19
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    20
    SOFTWARE.
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    21
"
13
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
"{ Package: 'jv:dragonfly' }"
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
"{ NameSpace: Smalltalk }"
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
SharedPool subclass:#VMData
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
	instanceVariableNames:''
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
	classVariableNames:'ADDR___VMDATA__ ADDR___stackTop__ ADDR___newNextPtr__
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
		ADDR___newEndPtr__ ADDR___newSpace__ ADDR___thisContext ADDR_true
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
		ADDR_false ADDR_Float ADDR_SmallInteger ADDR_UndefinedObject
45
0904c2157ddf C1: Emit interrupt check on backward branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    31
		ADDR_Context ADDR_BlockContext ADDR_InterruptPending'
13
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
	poolDictionaries:'VMOffsets'
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
	category:'System-Compiler-Interface'
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
!
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
23
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    36
!VMData class methodsFor:'documentation'!
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    37
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    38
copyright
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    39
"
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    40
    Copyright (c) 2016-now Jan Vrany <jan.vrany [at] fit . cvut . cz>
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    41
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    42
    Permission is hereby granted, free of charge, to any person obtaining a copy
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    43
    of this software and associated documentation files (the 'Software'), to deal
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    44
    in the Software without restriction, including without limitation the rights
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    45
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    46
    copies of the Software, and to permit persons to whom the Software is
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    47
    furnished to do so, subject to the following conditions:
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    48
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    49
    The above copyright notice and this permission notice shall be included in all
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    50
    copies or substantial portions of the Software.
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    51
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    52
    THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    53
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    54
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    55
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    56
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    57
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    58
    SOFTWARE.
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    59
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    60
"
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    61
! !
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    62
13
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!VMData class methodsFor:'class initialization'!
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
initialize
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    | base handle|
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
    handle := ObjectFileLoader loadDynamicObject: nil.  
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
    base := ObjectFileLoader getSymbol: '__vmDataPtr__' function: false from: handle.
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    base := ExternalBytes address: base size: ExternalAddress pointerSize.
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
    ADDR___VMDATA__ := (base pointerAt: 1) address.
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    ADDR___stackTop__ := ADDR___VMDATA__ + OFFS___stackTop__.
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
    ADDR___newNextPtr__ := ADDR___VMDATA__ + OFFS___newNextPtr__.
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    ADDR___newEndPtr__ := ADDR___VMDATA__ + OFFS___newEndPtr__.
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    ADDR___newSpace__ := ADDR___VMDATA__ + OFFS___newSpace__ .
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
    ADDR___thisContext := ADDR___VMDATA__ + OFFS___thisContext .
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    ADDR_true := ADDR___VMDATA__ +  OFFS_true .
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    ADDR_false := ADDR___VMDATA__ +  OFFS_false.
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    ADDR_Float := ADDR___VMDATA__ +  OFFS_Float .
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
    ADDR_SmallInteger := ADDR___VMDATA__ + OFFS_SmallInteger .
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
    ADDR_UndefinedObject := ADDR___VMDATA__ + OFFS_UndefinedObject .
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
    ADDR_Context := ADDR___VMDATA__ +  OFFS_Context.
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
    ADDR_BlockContext := ADDR___VMDATA__ + OFFS_BlockContext.
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
45
0904c2157ddf C1: Emit interrupt check on backward branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    90
%{
0904c2157ddf C1: Emit interrupt check on backward branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    91
    @global(VMData:ADDR_InterruptPending) = __MKINT(&InterruptPending);	
0904c2157ddf C1: Emit interrupt check on backward branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    92
%}.
0904c2157ddf C1: Emit interrupt check on backward branch
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 23
diff changeset
    93
13
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
    "Created: / 25-01-2016 / 14:45:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
! !
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
23
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    97
!VMData class methodsFor:'documentation'!
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    98
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
    99
version_HG
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   100
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   101
    ^ '$Changeset: <not expanded> $'
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   102
! !
d2d9a2d4d6bf Added README, licenses and copyright notices.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13
diff changeset
   103
13
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
b3d0f59702b7 Added VMData and VMOffsets shared pools.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
VMData initialize!