-
Notifications
You must be signed in to change notification settings - Fork 65
/
CogPrimitiveCallState.class.st
103 lines (78 loc) · 2.56 KB
/
CogPrimitiveCallState.class.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
Class {
#name : #CogPrimitiveCallState,
#superclass : #VMStructType,
#instVars : [
'jmpToFallbackCode',
'jmpSamplePrim',
'continuePostSamplePrim',
'jmpSampleNonPrim',
'continuePostSampleNonPrim'
],
#category : #'VMMaker-JIT'
}
{ #category : #'simulation only' }
CogPrimitiveCallState class >> byteSizeForSimulator: aCogit [
"Answer an approximation of the byte size of an AbstractInstruction struct.
This is for estimating the alloca in allocateOpcodes:bytecodes:ifFail:"
^self instSize * (aCogit sizeof: #'void *')
]
{ #category : #translation }
CogPrimitiveCallState class >> instVarNamesAndTypesForTranslationDo: aBinaryBlock [
"enumerate aBinaryBlock with the names and C type strings for the inst vars to include in a struct of this type."
<var: #jmpToFallbackCode type: #'AbstractInstruction *'>
<var: #jmpSamplePrim type: #'AbstractInstruction *'>
<var: #jmpSampleNonPrim type: #'AbstractInstruction *'>
<var: #continuePostSamplePrim type: #'AbstractInstruction *'>
<var: #continuePostSampleNonPrim type: #'AbstractInstruction *'>
self filteredInstVarNames do:
[:ivn|
aBinaryBlock
value: ivn
value: (ivn caseOf: {
['jmpToFallbackCode'] -> [#'AbstractInstruction *'].
['jmpSamplePrim'] -> [#'AbstractInstruction *'].
['jmpSampleNonPrim'] -> [#'AbstractInstruction *'].
['continuePostSamplePrim'] -> [#'AbstractInstruction *'].
['continuePostSampleNonPrim'] -> [#'AbstractInstruction *'].
} otherwise: [ self halt ])]
]
{ #category : #accessing }
CogPrimitiveCallState >> continuePostSampleNonPrim [
^ continuePostSampleNonPrim
]
{ #category : #accessing }
CogPrimitiveCallState >> continuePostSampleNonPrim: anObject [
continuePostSampleNonPrim := anObject
]
{ #category : #accessing }
CogPrimitiveCallState >> continuePostSamplePrim [
^ continuePostSamplePrim
]
{ #category : #accessing }
CogPrimitiveCallState >> continuePostSamplePrim: anObject [
continuePostSamplePrim := anObject
]
{ #category : #accessing }
CogPrimitiveCallState >> jmpSampleNonPrim [
^ jmpSampleNonPrim
]
{ #category : #accessing }
CogPrimitiveCallState >> jmpSampleNonPrim: anObject [
jmpSampleNonPrim := anObject
]
{ #category : #accessing }
CogPrimitiveCallState >> jmpSamplePrim [
^ jmpSamplePrim
]
{ #category : #accessing }
CogPrimitiveCallState >> jmpSamplePrim: anObject [
jmpSamplePrim := anObject
]
{ #category : #accessing }
CogPrimitiveCallState >> jmpToFallbackCode [
^ jmpToFallbackCode
]
{ #category : #accessing }
CogPrimitiveCallState >> jmpToFallbackCode: anObject [
jmpToFallbackCode := anObject
]