-
Notifications
You must be signed in to change notification settings - Fork 64
/
VMPermanentSpacePrimitiveTest.class.st
145 lines (97 loc) · 3.26 KB
/
VMPermanentSpacePrimitiveTest.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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
Class {
#name : #VMPermanentSpacePrimitiveTest,
#superclass : #VMAbstractPrimitiveTest,
#pools : [
'VMBasicConstants',
'VMBytecodeConstants',
'VMObjectIndices'
],
#category : #'VMMakerTests-PermSpace'
}
{ #category : #configuring }
VMPermanentSpacePrimitiveTest >> configureEnvironmentBuilder [
super configureEnvironmentBuilder.
environmentBuilder permSpaceSize: 10*1024*1024.
]
{ #category : #initialization }
VMPermanentSpacePrimitiveTest >> setUp [
super setUp.
self createEphemeronClass.
self createWeakArrayClass.
]
{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testIsInmmediateInPermSpace [
interpreter push: (memory integerObjectOf: 42).
interpreter argumentCount: 0.
interpreter primitiveIsInPermSpace.
self assert: interpreter stackTop equals: memory falseObject
]
{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testIsNewObjectInPermSpace [
interpreter push: (self newZeroSizedObject).
interpreter argumentCount: 0.
interpreter primitiveIsInPermSpace.
self assert: interpreter stackTop equals: memory falseObject
]
{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testIsOldObjectInPermSpace [
interpreter push: (self newOldSpaceObjectWithSlots: 0).
interpreter argumentCount: 0.
interpreter primitiveIsInPermSpace.
self assert: interpreter stackTop equals: memory falseObject
]
{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testIsPermObjectInPermSpace [
| oldObj permObject |
oldObj := self newOldSpaceObjectWithSlots: 0.
permObject := memory moveToPermSpace: oldObj.
interpreter push: permObject.
interpreter argumentCount: 0.
interpreter primitiveIsInPermSpace.
self assert: interpreter stackTop equals: memory trueObject
]
{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testMoveToPermSpaceFailsOnEphemeron [
| oldObject |
oldObject := self newEphemeronObject.
interpreter push: oldObject.
interpreter argumentCount: 0.
interpreter primitiveMoveToPermSpace.
self assert: interpreter primFailCode equals: PrimErrBadReceiver
]
{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testMoveToPermSpaceFailsOnWeakObject [
| oldObject |
oldObject := self newWeakObjectOfSize: 2.
interpreter push: oldObject.
interpreter argumentCount: 0.
interpreter primitiveMoveToPermSpace.
self assert: interpreter primFailCode equals: PrimErrBadReceiver
]
{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testMoveToPermSpaceWorksOnNewPointerObject [
| newObject |
newObject := self newObjectWithSlots: 2.
interpreter push: newObject.
interpreter argumentCount: 0.
interpreter primitiveMoveToPermSpace.
self assert: interpreter primFailCode equals: 0
]
{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testMoveToPermSpaceWorksOnOldPointerObject [
| oldObject |
oldObject := self newOldSpaceObjectWithSlots: 2.
interpreter push: oldObject.
interpreter argumentCount: 0.
interpreter primitiveMoveToPermSpace.
self assert: interpreter primFailCode equals: 0
]
{ #category : #tests }
VMPermanentSpacePrimitiveTest >> testMoveToPermSpaceWorksWithByteArray [
| oldObject |
oldObject := self newOldByteObjectOfSize: 67.
interpreter push: oldObject.
interpreter argumentCount: 0.
interpreter primitiveMoveToPermSpace.
self assert: interpreter primFailCode equals: 0
]