/
Array.extension.st
60 lines (48 loc) · 1.41 KB
/
Array.extension.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Extension { #name : #Array }
{ #category : #'*VMMaker-interpreter simulator' }
Array >> addBreakpoint: address [
^self, {address}
]
{ #category : #'*VMMaker-plugin generation' }
Array class >> ccg: cg prolog: aBlock expr: aString index: anInteger [
^cg
ccgLoad: aBlock
expr: aString
asOopPtrFrom: anInteger
andThen: (cg ccgValBlock: 'isIndexable')
]
{ #category : #'*VMMaker-plugin generation' }
Array class >> ccgDeclareCForVar: aSymbolOrString [
^'sqInt *', aSymbolOrString
]
{ #category : #'*VMMaker-interpreter simulator' }
Array >> coerceTo: cTypeString sim: interpreterSimulator [
^ self
]
{ #category : #'*VMMaker-interpreter simulator' }
Array >> isActiveBreakpoint [
^self size > 0
]
{ #category : #'*VMMaker-interpreter simulator' }
Array >> isBreakpointFor: address [
1 to: self size do:
[:i| (self at: i) = address ifTrue: [^true]].
^false
]
{ #category : #'*VMMaker-interpreter simulator' }
Array >> menuPrompt [
^String streamContents:
[:s|
s space; nextPut: $(.
self do: [:address| s nextPutAll: address hex]
separatedBy: [s space].
s nextPut: $)]
]
{ #category : #'*VMMaker-interpreter simulator' }
Array >> removeBreakpoint: address [
^(self copyWithout: address) ifEmpty: nil
]
{ #category : #'*VMMaker-interpreter simulator' }
Array >> singleStepRequiredToTriggerIn: aCogit [
^self anySatisfy: [:address| address between: aCogit cogCodeBase and: aCogit methodZone limitZony]
]