-
Notifications
You must be signed in to change notification settings - Fork 68
/
BrokenPlugin.class.st
67 lines (53 loc) · 1.62 KB
/
BrokenPlugin.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
"
A test plugin to exercise imbalanced stack access.
"
Class {
#name : #BrokenPlugin,
#superclass : #InterpreterPlugin,
#category : #'VMMaker-Plugins'
}
{ #category : #tests }
BrokenPlugin class >> testNoPopButPush [
"BrokenPlugin testNoPopButPush"
<primitive: 'primitiveNoPopButPush' module: 'BrokenPlugin'>
]
{ #category : #tests }
BrokenPlugin class >> testPopAndFail [
"BrokenPlugin testPopAndFail"
<primitive: 'primitivePopAndFail' module: 'BrokenPlugin'>
]
{ #category : #tests }
BrokenPlugin class >> testPopLessThanExpected: arg1 with: arg2 [
"BrokenPlugin testPopLessThanExpected: 3 with: 4"
<primitive: 'primitivePopLessThanExpected' module: 'BrokenPlugin'>
]
{ #category : #tests }
BrokenPlugin class >> testPopMoreThanExpected [
"BrokenPlugin testPopMoreThanExpected"
<primitive: 'primitivePopMoreThanExpected' module: 'BrokenPlugin'>
]
{ #category : #primitives }
BrokenPlugin >> primitiveNoPopButPush [
"Doesn't pop anything but pushes return value"
<export: true>
interpreterProxy pushBool: true.
]
{ #category : #primitives }
BrokenPlugin >> primitivePopAndFail [
"Pops in a failing primitive"
<export: true>
interpreterProxy pop: interpreterProxy methodArgumentCount + 1.
interpreterProxy primitiveFail.
]
{ #category : #primitives }
BrokenPlugin >> primitivePopLessThanExpected [
"Pops less than expected; call this with two arguments."
<export: true>
interpreterProxy pop: interpreterProxy methodArgumentCount - 1.
]
{ #category : #primitives }
BrokenPlugin >> primitivePopMoreThanExpected [
"Pops more than expected"
<export: true>
interpreterProxy pop: interpreterProxy methodArgumentCount + 4.
]