JavaNativeMemory.st
author hlopkmar
Fri, 30 Nov 2012 20:52:11 +0000
branchdevelopment
changeset 1844 7f4dd9a13c2c
parent 1818 2e5ed72e7dfd
child 1864 60a8dc26c8c6
permissions -rw-r--r--
disabling multibyte char disassempler test as stderr cannot write multibyte chars and hudson reports error
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     1
"
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     2
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
     3
1155
vranyj1
parents: 1152
diff changeset
     4
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
     5
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     6
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     7
                            SWING Research Group, Czech Technical University in Prague
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     8
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
     9
 This software is furnished under a license and may be used
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    10
 only in accordance with the terms of that license and with the
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    11
 inclusion of the above copyright notice.   This software may not
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    12
 be provided or otherwise made available to, or used by, any
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    13
 other person.  No title to or ownership of the software is
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    14
 hereby transferred.
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    15
1155
vranyj1
parents: 1152
diff changeset
    16
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    17
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    18
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
    19
     as of 1.9.2010
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    20
"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    21
"{ Package: 'stx:libjava' }"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    22
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    23
Object subclass:#JavaNativeMemory
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    24
	instanceVariableNames:'chunks defaultMallocatedMemoryChunkSize'
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    25
	classVariableNames:'DefaultMallocatedMemoryChunkSize'
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    26
	poolDictionaries:''
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    27
	category:'Languages-Java-Support'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    28
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    29
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    30
Object subclass:#MallocatedMemoryChunk
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    31
	instanceVariableNames:'base size data flist alist'
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    32
	classVariableNames:''
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    33
	poolDictionaries:''
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    34
	privateIn:JavaNativeMemory
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    35
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    36
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    37
Link subclass:#FreeListEntry
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
    38
	instanceVariableNames:'start stop'
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
    39
	classVariableNames:''
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
    40
	poolDictionaries:''
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    41
	privateIn:JavaNativeMemory::MallocatedMemoryChunk
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
    42
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
    43
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    44
!JavaNativeMemory class methodsFor:'documentation'!
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    45
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    46
copyright
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    47
"
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    48
 COPYRIGHT (c) 1996-2011 by Claus Gittinger
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
    49
1155
vranyj1
parents: 1152
diff changeset
    50
 New code and modifications done at SWING Research Group [1]:
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
    51
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    52
 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    53
                            SWING Research Group, Czech Technical University in Prague
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    54
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    55
 This software is furnished under a license and may be used
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    56
 only in accordance with the terms of that license and with the
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    57
 inclusion of the above copyright notice.   This software may not
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    58
 be provided or otherwise made available to, or used by, any
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    59
 other person.  No title to or ownership of the software is
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    60
 hereby transferred.
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    61
1155
vranyj1
parents: 1152
diff changeset
    62
 [1] Code written at SWING Research Group contains a signature
vranyj1
parents: 1152
diff changeset
    63
     of one of the above copright owners. For exact set of such code,
vranyj1
parents: 1152
diff changeset
    64
     see the differences between this version and version stx:libjava
1152
040cba55a7d2 Copyright fixes
vranyj1
parents: 877
diff changeset
    65
     as of 1.9.2010
877
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    66
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    67
"
f5a5b93e1c78 Cleanup phase 1
vranyj1
parents: 752
diff changeset
    68
! !
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    69
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    70
!JavaNativeMemory class methodsFor:'initialization'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    71
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    72
initialize
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    73
    "Invoked at system start or when the class is dynamically loaded."
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    74
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    75
    "/ please change as required (and remove this comment)
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    76
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    77
    DefaultMallocatedMemoryChunkSize := 1024 * 1024"1MB"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    78
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    79
    "Modified: / 10-07-2012 / 18:54:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    80
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    81
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    82
!JavaNativeMemory class methodsFor:'instance creation'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    83
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    84
new
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    85
    "return an initialized instance"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    86
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    87
    ^ self basicNew initialize.
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    88
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    89
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    90
!JavaNativeMemory methodsFor:'accessing'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
    91
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    92
defaultMallocatedMemoryChunkSize
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    93
    ^ defaultMallocatedMemoryChunkSize
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    94
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    95
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    96
defaultMallocatedMemoryChunkSize:something
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    97
    defaultMallocatedMemoryChunkSize := something.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    98
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
    99
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   100
!JavaNativeMemory methodsFor:'accessing-tests'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   101
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   102
chunks
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   103
    "For tests only!!!!!!"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   104
    ^chunks
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   105
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   106
    "Created: / 11-07-2012 / 09:13:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   107
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   108
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   109
!JavaNativeMemory methodsFor:'allocation'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   110
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   111
free: address
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   112
    (self chunkFor: address) free: address
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   113
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   114
    "Created: / 10-07-2012 / 18:57:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   115
!
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   116
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   117
malloc: size
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   118
    | address chunk |
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   119
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   120
    chunks do:[:each|
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   121
        address := each malloc: size.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   122
        address notNil ifTrue:[ ^ address ]
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   123
    ].
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   124
    size > defaultMallocatedMemoryChunkSize ifTrue:[
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   125
        self breakPoint: #jv.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   126
        chunk := MallocatedMemoryChunk new: size.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   127
    ] ifFalse:[
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   128
        chunk := MallocatedMemoryChunk new: defaultMallocatedMemoryChunkSize
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   129
    ].
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   130
    chunk base: (chunks isEmpty ifTrue:[0] ifFalse:[chunks last base + chunks last size]).
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   131
    chunks add: chunk.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   132
    address := chunk malloc: size.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   133
    ^address
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   134
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   135
    "Created: / 10-07-2012 / 18:45:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   136
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   137
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   138
!JavaNativeMemory methodsFor:'byte access'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   139
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   140
byteAt:address
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   141
    ^(self chunkFor: address) byteAt: address
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   142
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   143
    "Created: / 09-12-2010 / 17:32:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   144
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   145
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   146
byteAt:address put: value
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   147
    (self chunkFor: address) byteAt: address put: value
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   148
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   149
    "Created: / 10-07-2012 / 19:01:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   150
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   151
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   152
doubleAt:address
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   153
    ^(self chunkFor: address) doubleAt: address
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   154
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   155
    "Created: / 11-07-2012 / 10:13:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   156
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   157
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   158
doubleAt:address put: value
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   159
    (self chunkFor: address) doubleAt: address put: value
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   160
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   161
    "Created: / 11-07-2012 / 10:13:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   162
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   163
1525
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   164
sint64At:address
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   165
    "Returns signed 64bit integer at given address"
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   166
    ^(self chunkFor: address) sint64At: address
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   167
1525
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   168
    "Created: / 16-07-2012 / 16:00:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   169
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   170
1525
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   171
sint64At:address put: value
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   172
    "Stores signed 64bit integer at given address"
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   173
    ^(self chunkFor: address) sint64At: address put: value
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   174
1525
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   175
    "Created: / 16-07-2012 / 16:00:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   176
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   177
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   178
!JavaNativeMemory methodsFor:'byte transfer'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   179
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   180
bcopy: dstAddr length: length from: bytearray offset: offset
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   181
    (self chunkFor: dstAddr) bcopy: dstAddr length: length from: bytearray offset: offset
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   182
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   183
    "Created: / 11-07-2012 / 10:34:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   184
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   185
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   186
bcopy: srcAddr length: length into: bytearray offset: offset
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   187
    (self chunkFor: srcAddr) bcopy: srcAddr length: length into: bytearray offset: offset
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   188
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   189
    "Created: / 11-07-2012 / 10:32:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   190
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   191
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   192
bcopy: srcAddr to: dstAddr length: length
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   193
    "The bcopy... method copies n bytes from src to dest.  The result is correct, 
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   194
      even when both areas overlap."
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   195
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   196
    | srcChunk dstChunk |
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   197
    srcChunk := self chunkFor: srcAddr.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   198
    dstChunk := self chunkFor: dstAddr.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   199
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   200
    srcChunk == dstChunk ifTrue:[
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   201
        "/Easy, same chunk
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   202
        srcChunk bcopy: srcAddr to: dstAddr length: length.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   203
        ^self.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   204
    ].
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   205
    "/ Worse, different chunks...
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   206
    self breakPoint: #jv.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   207
    self shouldImplement.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   208
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   209
    "Created: / 11-07-2012 / 10:21:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   210
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   211
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   212
memset: s value: c length: n
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   213
    "The memset() function fills the first n bytes of the memory area pointed to by s with 
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   214
     the constant byte c"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   215
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   216
     (self chunkFor: s) memset: s value: c length: n
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   217
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   218
    "Created: / 11-07-2012 / 10:27:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   219
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   220
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   221
!JavaNativeMemory methodsFor:'error reporting'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   222
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   223
errorSegmentationViolation: message
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   224
    self error: message
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   225
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   226
    "Created: / 10-07-2012 / 18:59:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   227
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   228
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   229
!JavaNativeMemory methodsFor:'initialization'!
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   230
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   231
initialize
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   232
    "Invoked when a new instance is created."
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   233
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   234
    "/ please change as required (and remove this comment)
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   235
    chunks := OrderedCollection new.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   236
    defaultMallocatedMemoryChunkSize := DefaultMallocatedMemoryChunkSize
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   237
    "/ super initialize.   -- commented since inherited method does nothing
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   238
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   239
    "Modified: / 11-07-2012 / 09:11:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   240
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   241
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   242
!JavaNativeMemory methodsFor:'private'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   243
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   244
chunkFor: address
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   245
    ^chunks 
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   246
        detect:[:chunk|address between: chunk base + 1 and: chunk base + chunk size]
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   247
        ifNone:[ self errorSegmentationViolation: 'No chunk for address ', address printString ].
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   248
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   249
    "Created: / 10-07-2012 / 18:57:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   250
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   251
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   252
!JavaNativeMemory::MallocatedMemoryChunk class methodsFor:'instance creation'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   253
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   254
new
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   255
    "return an initialized instance"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   256
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   257
    ^ self new: 1024 * 1024"1MB"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   258
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   259
    "Modified: / 10-07-2012 / 18:36:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   260
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   261
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   262
new: size
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   263
    "return an initialized instance"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   264
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   265
    ^ self basicNew initializeWithSize: size
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   266
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   267
    "Created: / 10-07-2012 / 18:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   268
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   269
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   270
!JavaNativeMemory::MallocatedMemoryChunk methodsFor:'accessing'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   271
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   272
base
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   273
    ^ base
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   274
!
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   275
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   276
base:something
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   277
    base := something.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   278
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   279
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   280
size
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   281
    ^ size
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   282
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   283
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   284
size:something
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   285
    size := something.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   286
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   287
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   288
!JavaNativeMemory::MallocatedMemoryChunk methodsFor:'accessing-tests'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   289
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   290
data
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   291
    "For tests only!!!!!!"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   292
    ^ data
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   293
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   294
    "Modified (comment): / 11-07-2012 / 10:01:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   295
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   296
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   297
!JavaNativeMemory::MallocatedMemoryChunk methodsFor:'allocation'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   298
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   299
free: gaddress
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   300
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   301
    "Frees the memory"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   302
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   303
    | address aentry aentryPrev |
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   304
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   305
    address := gaddress - base.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   306
    aentry := alist.
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   307
    aentryPrev := nil.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   308
    [ aentry notNil and:[aentry start ~~ address ] ] whileTrue:[
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   309
        aentryPrev := aentry.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   310
        aentry := aentry next.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   311
    ].
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   312
    aentry isNil ifTrue:[
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   313
        self errorFreeingUnallocatedMemory: 'Never allocated'.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   314
        ^self.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   315
    ].
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   316
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   317
    "/Remove from allocated list
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   318
    aentryPrev notNil ifTrue:[
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   319
        aentryPrev next: aentry next.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   320
    ] ifFalse:[
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   321
        alist := aentry next.
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   322
    ].
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   323
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   324
    flist := self insert: aentry into: flist join: true.
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   325
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   326
    "/Insert free entry
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   327
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   328
    "Created: / 07-12-2010 / 23:33:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   329
!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   330
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   331
malloc: sz
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   332
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   333
    "Allocate new chunk of memory, size bytes long"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   334
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   335
    | fentry aentry |
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   336
    fentry := flist.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   337
    [ fentry notNil and:[fentry size < sz] ] whileTrue:[
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   338
        fentry := fentry next.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   339
    ].
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   340
    fentry isNil ifTrue:[
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   341
        ^nil "Not enough memory in this chunk or too fragmented"
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   342
    ].
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   343
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   344
    "/ create allocation entry
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   345
    aentry := FreeListEntry new 
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   346
                start: fentry start;
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   347
                stop:  fentry start + sz - 1.
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   348
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   349
    "/Update free entry
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   350
    (fentry start + sz) > size ifTrue:[
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   351
        "No more free memory in this chunk"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   352
        flist := nil
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   353
    ] ifFalse:[
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   354
        fentry start: fentry start + sz.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   355
    ].
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   356
    alist := self insert: aentry into: alist join: false.
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   357
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   358
    ^aentry start + base
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   359
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   360
    "Created: / 07-12-2010 / 23:25:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   361
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   362
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   363
!JavaNativeMemory::MallocatedMemoryChunk methodsFor:'byte access'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   364
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   365
byteAt:address
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   366
    ^data at: address - base
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   367
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   368
    "Created: / 09-12-2010 / 17:32:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   369
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   370
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   371
byteAt:address put: value
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   372
    data at: address - base put: value
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   373
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   374
    "Created: / 10-07-2012 / 19:01:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   375
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   376
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   377
doubleAt:address 
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   378
    ^data doubleAt: address - base
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   379
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   380
    "Created: / 11-07-2012 / 10:12:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   381
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   382
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   383
doubleAt:address put: value
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   384
    data doubleAt: address - base put: value
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   385
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   386
    "Created: / 11-07-2012 / 10:12:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   387
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   388
1525
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   389
sint64At:address
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   390
    "Returns signed 64bit integer at given address"
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   391
1525
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   392
    ^data longLongAt: address
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   393
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   394
    "Created: / 16-07-2012 / 16:00:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   395
!
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   396
1525
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   397
sint64At:address put: value
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   398
    "Stores signed 64bit integer at given address"
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   399
1525
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   400
    ^ data longLongAt: address put: value.
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   401
4463b11f29f4 - JavaNativeMemory
vranyj1
parents: 1524
diff changeset
   402
    "Created: / 16-07-2012 / 16:00:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   403
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   404
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   405
!JavaNativeMemory::MallocatedMemoryChunk methodsFor:'byte transfer'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   406
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   407
bcopy: dstAddr length: length from: bytearray offset: offset
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   408
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   409
    data replaceBytesFrom: dstAddr - base to: dstAddr - base + length - 1 with: bytearray startingAt: offset + 1
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   410
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   411
    "Created: / 11-07-2012 / 10:36:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   412
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   413
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   414
bcopy: srcAddr length: length into: bytearray offset: offset
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   415
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   416
    bytearray replaceBytesFrom: offset + 1 to: offset + length with: data startingAt: srcAddr - base
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   417
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   418
    "Created: / 11-07-2012 / 10:33:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   419
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   420
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   421
bcopy: srcAddr to: dstAddr length: length
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   422
    "The bcopy... method copies n bytes from src to dest.  The result is correct, 
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   423
      even when both areas overlap."
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   424
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   425
    srcAddr == dstAddr ifTrue:[ ^ self ].
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   426
    srcAddr < dstAddr ifTrue:[
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   427
        (srcAddr + length - 1) < dstAddr ifTrue:[
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   428
            "/No overlap"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   429
            data replaceBytesFrom: dstAddr - base to: dstAddr - base + length - 1
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   430
                            with: data
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   431
                      startingAt: srcAddr - base.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   432
        ] ifFalse:[
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   433
            "/Overlap
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   434
            self breakPoint: #jv.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   435
            self shouldImplement
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   436
        ].
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   437
    ] ifFalse:[
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   438
        data replaceBytesFrom: dstAddr - base to: dstAddr - base + length - 1
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   439
                        with: data
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   440
                  startingAt: srcAddr - base.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   441
    ]
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   442
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   443
    "Created: / 11-07-2012 / 10:22:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   444
!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   445
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   446
memset: s value: c length: n
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   447
    "The memset() function fills the first n bytes of the memory area pointed to by s with 
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   448
     the constant byte c"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   449
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   450
     data from: s - base to: s - base + n - 1  put: c
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   451
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   452
    "Created: / 11-07-2012 / 10:27:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   453
! !
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   454
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   455
!JavaNativeMemory::MallocatedMemoryChunk methodsFor:'error reporting'!
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   456
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   457
errorFreeingUnallocatedMemory: message
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   458
    self error: message
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   459
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   460
    "Created: / 10-07-2012 / 18:40:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   461
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   462
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   463
errorOutOfMemory: message
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   464
    JavaVM throwOutOfMemoryError: message
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   465
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   466
    "Created: / 10-07-2012 / 18:38:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   467
!
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   468
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   469
errorSegmentationViolation: message
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   470
    self error: message
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   471
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   472
    "Created: / 10-07-2012 / 19:00:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   473
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   474
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   475
!JavaNativeMemory::MallocatedMemoryChunk methodsFor:'initialization'!
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   476
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   477
initializeWithSize: sz
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   478
    "Invoked when a new instance is created."
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   479
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   480
    size := sz.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   481
    data:= ByteArray new: sz.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   482
    flist := FreeListEntry new start: 1; stop: sz.
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   483
    alist := nil.
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   484
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   485
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   486
    "/ super initialize.   -- commented since inherited method does nothing
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   487
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   488
    "Created: / 10-07-2012 / 18:37:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   489
! !
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   490
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   491
!JavaNativeMemory::MallocatedMemoryChunk methodsFor:'private'!
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   492
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   493
insert: entry into: list join: join
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   494
    "Inserts an entry into given list. Returns new
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   495
    list. If join is true, possibly adjacent entries are joined"
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   496
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   497
    | current prev |
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   498
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   499
    list isNil ifTrue:[ ^ entry ].
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   500
    current := list.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   501
    prev := nil.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   502
    [ current notNil and:[ current stop < entry start ] ] whileTrue:[
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   503
        prev := current.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   504
        current := current next.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   505
    ].
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   506
    prev isNil ifTrue:[
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   507
        entry next: current join: join.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   508
        ^entry.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   509
    ].
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   510
    prev next: entry join: join.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   511
    entry next: current join: join.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   512
    ^list
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   513
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   514
    "Created: / 09-07-2012 / 11:29:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   515
! !
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   516
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   517
!JavaNativeMemory::MallocatedMemoryChunk::FreeListEntry methodsFor:'accessing'!
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   518
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   519
next
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   520
    ^nextLink
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   521
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   522
    "Created: / 09-07-2012 / 11:57:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   523
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   524
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   525
next: next
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   526
    self next: next join: false.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   527
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   528
    "Created: / 09-07-2012 / 11:58:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   529
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   530
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   531
size
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   532
    ^stop
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   533
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   534
    "Created: / 09-07-2012 / 10:49:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   535
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   536
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   537
start
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   538
    ^ start
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   539
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   540
    "Created: / 09-07-2012 / 11:23:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   541
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   542
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   543
start:something
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   544
    start := something.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   545
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   546
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   547
stop
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   548
    ^ stop
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   549
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   550
    "Created: / 09-07-2012 / 11:23:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   551
!
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   552
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   553
stop:something
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   554
    stop := something.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   555
! !
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   556
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   557
!JavaNativeMemory::MallocatedMemoryChunk::FreeListEntry methodsFor:'printing & storing'!
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   558
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   559
printOn:aStream
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   560
    "append a printed representation if the receiver to the argument, aStream"
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   561
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   562
    super printOn:aStream.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   563
    aStream nextPutAll:'('.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   564
    start printOn:aStream.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   565
    aStream nextPutAll:'..'.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   566
    stop printOn:aStream.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   567
    aStream nextPutAll:')'.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   568
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   569
    "Modified: / 09-07-2012 / 11:54:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   570
! !
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   571
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   572
!JavaNativeMemory::MallocatedMemoryChunk::FreeListEntry methodsFor:'utilities'!
1520
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   573
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   574
next: next join: join
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   575
    (join and:[next notNil]) ifTrue:[
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   576
        stop + 1 == next start ifTrue:[
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   577
            stop := next stop.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   578
            (nextLink notNil and:[stop + 1 == nextLink start]) ifTrue:[
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   579
                stop := nextLink stop.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   580
                nextLink := nextLink next.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   581
            ].
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   582
            ^self
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   583
        ].
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   584
    ].
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   585
    nextLink := next.
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   586
94915020b92b Native memory refactored to support NIO
vranyj1
parents: 1516
diff changeset
   587
    "Created: / 09-07-2012 / 11:49:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
752
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   588
! !
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   589
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   590
!JavaNativeMemory class methodsFor:'documentation'!
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   591
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   592
version_SVN
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   593
    ^ '$Id$'
ff7bc6428c9c branch jk_new_structure resurrected
vranyj1
parents:
diff changeset
   594
! !
1524
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   595
b74a62ba8cc1 JavaNativeMemory refactored
vranyj1
parents: 1520
diff changeset
   596
JavaNativeMemory initialize!