author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Wed, 26 Aug 2015 23:01:00 +0100 | |
changeset 532 | 132d7898a2a1 |
child 534 | a949c4fe44df |
permissions | -rw-r--r-- |
532
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
1 |
"{ Package: 'stx:goodies/petitparser/compiler' }" |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
2 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
3 |
"{ NameSpace: Smalltalk }" |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
4 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
5 |
PPCNodeVisitor subclass:#PPCPass |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
6 |
instanceVariableNames:'context' |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
7 |
classVariableNames:'' |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
8 |
poolDictionaries:'' |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
9 |
category:'PetitCompiler-Visitors' |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
10 |
! |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
11 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
12 |
!PPCPass class methodsFor:'running'! |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
13 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
14 |
run: ir in: context |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
15 |
"Run the pass on passed IR in given compilation context. |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
16 |
Return (possibly transformed or completely new) IR." |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
17 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
18 |
^ self new run: ir in: context |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
19 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
20 |
"Created: / 26-08-2015 / 22:31:53 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
21 |
! ! |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
22 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
23 |
!PPCPass methodsFor:'accessing'! |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
24 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
25 |
context: aPPCCompilationContext |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
26 |
context := aPPCCompilationContext. |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
27 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
28 |
"Created: / 26-08-2015 / 22:05:38 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
29 |
! ! |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
30 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
31 |
!PPCPass methodsFor:'running'! |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
32 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
33 |
run: ir |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
34 |
"Actually run the pass on given IR (tree of PPCNode) and return |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
35 |
(possibly transformed or completely new) another IR." |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
36 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
37 |
context isNil ifTrue:[ |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
38 |
PPCCompilationError new signal: 'oops, no context set, use #context: before running a pass!!'. |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
39 |
]. |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
40 |
^ self visit: ir. |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
41 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
42 |
"Created: / 26-08-2015 / 22:30:21 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
43 |
! |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
44 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
45 |
run: ir in: ctx |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
46 |
"Actually run the pass on given IR (tree of PPCNode) in given |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
47 |
compilation context and return (possibly transformed or completely |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
48 |
new) another IR." |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
49 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
50 |
context := ctx. |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
51 |
^ self run: ir. |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
52 |
|
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
53 |
"Created: / 26-08-2015 / 22:33:27 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
54 |
! ! |
132d7898a2a1
PPCConfiguration refactoring: [4/10]: introduced a class - PPCPass
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff
changeset
|
55 |