Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mu-impl-ref2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
5
Issues
5
List
Board
Labels
Milestones
Merge Requests
2
Merge Requests
2
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mu
mu-impl-ref2
Commits
57d9be2c
Commit
57d9be2c
authored
Jun 02, 2016
by
Kunshan Wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
irbuilder functions
parent
8c5043b9
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
311 additions
and
35 deletions
+311
-35
controlFlow.scala
src/main/scala/uvm/controlFlow.scala
+2
-3
UIRTextReader.scala
src/main/scala/uvm/ir/textinput/UIRTextReader.scala
+3
-5
IRBuilder.scala
src/main/scala/uvm/refimpl/IRBuilder.scala
+304
-25
ssavariables.scala
src/main/scala/uvm/ssavariables/ssavariables.scala
+2
-2
No files found.
src/main/scala/uvm/controlFlow.scala
View file @
57d9be2c
...
...
@@ -23,8 +23,7 @@ class Function extends GlobalVariable {
/**
* A version of a function. Also known as a "control flow graph".
*/
class
FuncVer
extends
IdentifiedSettable
{
var
func
:
Function
=
null
class
FuncVer
(
val
func
:
Function
)
extends
IdentifiedSettable
{
var
bbs
:
ArrayBuffer
[
BasicBlock
]
=
null
def
entry
:
BasicBlock
=
bbs
.
head
...
...
@@ -33,7 +32,7 @@ class FuncVer extends IdentifiedSettable {
var
bbNs
:
NestedNamespace
[
BasicBlock
]
=
null
// sub-namespace of allNs
}
class
BasicBlock
extends
IdentifiedSettable
{
class
BasicBlock
(
val
funcVer
:
FuncVer
)
extends
IdentifiedSettable
{
var
norParams
:
ArrayBuffer
[
NorParam
]
=
null
var
excParam
:
Option
[
ExcParam
]
=
null
var
insts
:
ArrayBuffer
[
Instruction
]
=
null
...
...
src/main/scala/uvm/ir/textinput/UIRTextReader.scala
View file @
57d9be2c
...
...
@@ -311,14 +311,12 @@ private[textinput] class InstanceUIRTextReader(idFactory: IDFactory, source: Str
logger
.
debug
(
"Phase 3"
)
def
defFunc
(
func
:
Function
,
fDefCtx
:
FuncDefContext
)
{
logger
.
trace
(
"Visiting function %s"
.
format
(
func
.
name
))
val
ver
=
new
FuncVer
()
val
ver
=
new
FuncVer
(
func
)
val
verName
=
globalize
(
fDefCtx
.
ver
,
func
.
name
.
get
)
ver
.
id
=
idFactory
.
getID
()
ver
.
name
=
Some
(
verName
)
addFuncVer
(
ver
,
toSourceInfo
(
fDefCtx
.
ver
))
ver
.
func
=
func
ver
.
bbNs
=
bundle
.
allNs
.
makeSubSpace
[
BasicBlock
](
"basic block"
)
def
addBB
(
bb
:
BasicBlock
,
sourceInfo
:
SourceInfo
)
:
Unit
=
addWithSourceInfo
(
ver
.
bbNs
,
bb
,
sourceInfo
)
...
...
@@ -340,7 +338,7 @@ private[textinput] class InstanceUIRTextReader(idFactory: IDFactory, source: Str
def
makeBB
(
bbCtx
:
BasicBlockContext
)
:
BasicBlock
=
{
val
label
=
bbCtx
.
label
()
val
bbName
=
globalize
(
label
.
name
(),
verName
)
val
bb
=
new
BasicBlock
()
val
bb
=
new
BasicBlock
(
ver
)
bb
.
id
=
idFactory
.
getID
()
bb
.
name
=
Some
(
bbName
)
addBB
(
bb
,
toSourceInfo
(
bbCtx
))
...
...
@@ -469,7 +467,7 @@ private[textinput] class InstanceUIRTextReader(idFactory: IDFactory, source: Str
case
ii
:
InstSwitchContext
=>
InstSwitch
(
ii
.
`type`
,
null
,
null
,
null
).
later
(
phase4
)
{
i
=>
i
.
opnd
=
ii
.
opnd
;
i
.
defDest
=
ii
.
defDest
i
.
cases
=
for
((
v
,
d
)
<-
ii
.
caseVal
.
zip
(
ii
.
caseDest
))
yield
(
resVar
(
v
),
resDestClause
(
d
))
i
.
cases
=
(
for
((
v
,
d
)
<-
ii
.
caseVal
.
zip
(
ii
.
caseDest
))
yield
(
resVar
(
v
),
resDestClause
(
d
))).
to
[
ArrayBuffer
]
}
case
ii
:
InstCallContext
=>
InstCall
(
null
,
null
,
null
,
null
,
null
).
later
(
phase4
)
{
i
=>
...
...
src/main/scala/uvm/refimpl/IRBuilder.scala
View file @
57d9be2c
This diff is collapsed.
Click to expand it.
src/main/scala/uvm/ssavariables/ssavariables.scala
View file @
57d9be2c
...
...
@@ -118,7 +118,7 @@ trait CallLike extends HasArgList {
case
class
DestClause
(
val
bb
:
BasicBlock
,
val
args
:
Seq
[
SSAVariable
])
case
class
ExcClause
(
va
l
nor
:
DestClause
,
val
exc
:
DestClause
)
case
class
ExcClause
(
va
r
nor
:
DestClause
,
var
exc
:
DestClause
)
trait
HasExcClause
extends
Instruction
with
MaybeTerminator
{
var
excClause
:
Option
[
ExcClause
]
...
...
@@ -185,7 +185,7 @@ case class InstBranch(var dest: DestClause) extends Instruction with Terminator
case
class
InstBranch2
(
var
cond
:
SSAVariable
,
var
ifTrue
:
DestClause
,
var
ifFalse
:
DestClause
)
extends
Instruction
with
Terminator
case
class
InstSwitch
(
var
opndTy
:
Type
,
var
opnd
:
SSAVariable
,
var
defDest
:
DestClause
,
var
cases
:
Seq
[(
SSAVariable
,
DestClause
)])
extends
Instruction
with
Terminator
var
cases
:
ArrayBuffer
[(
SSAVariable
,
DestClause
)])
extends
Instruction
with
Terminator
case
class
InstCall
(
var
sig
:
FuncSig
,
var
callee
:
SSAVariable
,
var
argList
:
Seq
[
SSAVariable
],
var
excClause
:
Option
[
ExcClause
],
var
keepAlives
:
Seq
[
LocalVariable
])
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment