class Crokus::BasicBlock

Attributes

id[RW]
infos[RW]
label[RW]
stmts[RW]
succs[RW]

Public Class Methods

new(infos={}) click to toggle source
# File lib/crokus/cfg.rb, line 50
def initialize infos={}
  @@id+=1
  @id="L"+@@id.to_s
  @stmts=[]
  @succs=[]
  @infos=infos
end

Public Instance Methods

<<(e) click to toggle source
# File lib/crokus/cfg.rb, line 58
def <<(e)
  @stmts << e
end
code4dot() click to toggle source
# File lib/crokus/cfg.rb, line 80
def code4dot
  @ppr||=PrettyPrinter.new
  @stmts.compact.collect{|stmt| stmt.accept(@ppr)}.join("\n")
end
falseBranch() click to toggle source
# File lib/crokus/cfg.rb, line 73
def falseBranch
  unless @succs.size==2
    raise "request for falseBranch failed because #{@succs.size} branch(es) found. Strange."
  end
  return @succs.last
end
nextBranch() click to toggle source
# File lib/crokus/cfg.rb, line 85
def nextBranch
  @succs.first
end
size() click to toggle source
# File lib/crokus/cfg.rb, line 89
def size
  @stmts.size
end
to(bb) click to toggle source
# File lib/crokus/cfg.rb, line 62
def to bb
  @succs << bb
end
trueBranch() click to toggle source
# File lib/crokus/cfg.rb, line 66
def trueBranch
  unless @succs.size==2
    raise "request for trueBranch failed because #{@succs.size} branch(es) found. Strange."
  end
  return @succs.first
end