class Rubinius::Coverage::CFG::BasicBlock

Attributes

count[RW]
enter_ip[RW]
exit_ip[RW]
left[RW]
lines[RW]
right[RW]

Public Class Methods

new(enter_ip) click to toggle source
# File lib/rubinius/coverage.rb, line 110
def initialize(enter_ip)
  @enter_ip = @exit_ip = enter_ip
  @lines = []
  @count = 0
end

Public Instance Methods

coverage(code, call_sites) click to toggle source
# File lib/rubinius/coverage.rb, line 116
def coverage(code, call_sites)
  total = code.lines.size - 2
  i = 0

  while i < total
    if (@enter_ip < code.lines[i+2] and @exit_ip >= code.lines[i]) or
       (code.lines[i+2] == 0 and @enter_ip == 0)
      line = code.lines[i+1]
      @lines << line unless @lines.include? line
    end

    i += 2
  end

  call_sites.each do |cs|
    if cs.ip >= @enter_ip and cs.ip <= @exit_ip
      cs_count = cs.invokes + cs.hits + cs.misses
      @count = cs_count if cs_count > @count
    end
  end
end