-
Notifications
You must be signed in to change notification settings - Fork 65
/
VMTStackFrame.class.st
68 lines (58 loc) · 1.37 KB
/
VMTStackFrame.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
Class {
#name : #VMTStackFrame,
#superclass : #Object,
#instVars : [
'memory',
'framePointer'
],
#category : #'VMMaker-Tools'
}
{ #category : #accessing }
VMTStackFrame >> callerFP [
^ self interpreter frameCallerFP: framePointer
]
{ #category : #accessing }
VMTStackFrame >> callerIP [
^ self interpreter frameCallerSavedIP: framePointer
]
{ #category : #accessing }
VMTStackFrame >> descriptors [
^ OrderedCollection new
add: #callerIP -> self callerIP ;
add: #callerFP -> self callerFP;
add: #method -> self method;
yourself
]
{ #category : #accessing }
VMTStackFrame >> framePointer [
^ framePointer
]
{ #category : #accessing }
VMTStackFrame >> framePointer: anObject [
framePointer := anObject
]
{ #category : #debugging }
VMTStackFrame >> gtStackFrameInspector: composite [
<gtInspectorPresentationOrder: 0>
^ composite fastTable
title: 'StackFrame';
display: [ :anObject | self descriptors ];
column: 'Name' evaluated: [ :descriptor | descriptor name ];
column: 'Value' evaluated: [ :descriptor | descriptor value ]
]
{ #category : #accessing }
VMTStackFrame >> interpreter [
^ memory coInterpreter
]
{ #category : #accessing }
VMTStackFrame >> memory [
^ memory
]
{ #category : #accessing }
VMTStackFrame >> memory: anObject [
memory := anObject
]
{ #category : #accessing }
VMTStackFrame >> method [
^ self interpreter iframeMethod: framePointer
]