-
Notifications
You must be signed in to change notification settings - Fork 65
/
VMJITVMPrimitiveTest.class.st
109 lines (76 loc) · 3.54 KB
/
VMJITVMPrimitiveTest.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
Class {
#name : #VMJITVMPrimitiveTest,
#superclass : #VMSimpleStackBasedCogitAbstractTest,
#category : #'VMMakerTests-JitTests'
}
{ #category : #'tests - primitiveMethodXray' }
VMJITVMPrimitiveTest >> setUp [
super setUp.
self setUpTrampolines.
self setUpCogMethodEntry.
self createBaseFrame
]
{ #category : #'tests - primitiveMethodXray' }
VMJITVMPrimitiveTest >> testPrimitiveMethodXRayPreviouslyCompiledFramelessMethod [
| methodToXray target |
"This test is only valid as far as the method is the same.
It should be a method with so many literals that the compiler does not even try to compile it."
target := (SlangBasicTranslationTestClass>>#first:second:).
self assert: target bytecodes hash equals: 245997176.
methodToXray := self jitMethod: target.
interpreter push: methodToXray methodObject.
interpreter primitiveMethodXray.
"Are the third lowest bits turned on?"
self assert: ((memory integerValueOf: interpreter stackTop) anyMask: 2r0111)
]
{ #category : #'tests - primitiveMethodXray' }
VMJITVMPrimitiveTest >> testPrimitiveMethodXRayShouldCompile [
| methodToXray target |
"This test is only valid as far as the method is the same.
It should be a method with so many literals that the compiler does not even try to compile it."
target := (SlangBasicTranslationTestClass>>#methodDefiningSingleExternVariable).
self assert: target bytecodes hash equals: 222697369.
methodToXray := self createMethodOopFromHostMethod: target.
interpreter push: methodToXray.
interpreter primitiveMethodXray.
"Is the lowest bit turned on?"
self assert: ((memory integerValueOf: interpreter stackTop) anyMask: 2r0001)
]
{ #category : #'tests - primitiveMethodXray' }
VMJITVMPrimitiveTest >> testPrimitiveMethodXRayShouldNotCompile [
| methodToXray target |
"This test is only valid as far as the method is the same.
It should be a method with so many literals that the compiler does not even try to compile it."
target := (CogARMv8Compiler class>>#initialize).
self assert: target bytecodes hash equals: 129771193.
methodToXray := self createMethodOopFromHostMethod: target.
interpreter push: methodToXray.
interpreter primitiveMethodXray.
self assert: interpreter stackTop equals: (memory integerObjectOf: 0)
]
{ #category : #'tests - primitiveMethodXray' }
VMJITVMPrimitiveTest >> testPrimitiveMethodXRayWasCompiled [
| methodToXray target |
"This test is only valid as far as the method is the same.
It should be a method with so many literals that the compiler does not even try to compile it."
target := (SlangBasicTranslationTestClass>>#methodDefiningSingleExternVariable).
self assert: target bytecodes hash equals: 222697369.
methodToXray := self jitMethod: target.
interpreter push: methodToXray methodObject.
interpreter primitiveMethodXray.
"Is the second lowest bit turned off"
self assert: ((memory integerValueOf: interpreter stackTop) anyMask: 2r0010)
]
{ #category : #'tests - primitiveMethodXray' }
VMJITVMPrimitiveTest >> testPrimitiveMethodXRayWasNotCompiled [
| methodToXray target |
"This test is only valid as far as the method is the same.
It should be a method with so many literals that the compiler does not even try to compile it."
target := (SlangBasicTranslationTestClass>>#methodDefiningSingleExternVariable).
self assert: target bytecodes hash equals: 222697369.
methodToXray := self createMethodOopFromHostMethod: target.
interpreter push: methodToXray.
interpreter primitiveMethodXray.
"Is the second lowest bit turned off"
self deny: ((memory integerValueOf: interpreter stackTop) anyMask: 2r0010)
]