Class: Kumi::IR::Base::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/kumi/ir/base/builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ir_module:, function:) ⇒ Builder

Returns a new instance of Builder.



9
10
11
12
13
# File 'lib/kumi/ir/base/builder.rb', line 9

def initialize(ir_module:, function:)
  @ir_module = ir_module
  @function = function
  @current_block = function.entry_block
end

Instance Attribute Details

#current_blockObject (readonly)

Returns the value of attribute current_block.



7
8
9
# File 'lib/kumi/ir/base/builder.rb', line 7

def current_block
  @current_block
end

#functionObject (readonly)

Returns the value of attribute function.



7
8
9
# File 'lib/kumi/ir/base/builder.rb', line 7

def function
  @function
end

#ir_moduleObject (readonly)

Returns the value of attribute ir_module.



7
8
9
# File 'lib/kumi/ir/base/builder.rb', line 7

def ir_module
  @ir_module
end

Instance Method Details

#emit(opcode, **kwargs) ⇒ Object



25
26
27
28
29
# File 'lib/kumi/ir/base/builder.rb', line 25

def emit(opcode, **kwargs)
  ensure_block!
  instr = instruction_class.new(**{ opcode: }.merge(kwargs))
  @current_block.append(instr)
end

#new_block(name) ⇒ Object



19
20
21
22
23
# File 'lib/kumi/ir/base/builder.rb', line 19

def new_block(name)
  block = Block.new(name:)
  function.append_block(block)
  block
end

#set_block(block) ⇒ Object



15
16
17
# File 'lib/kumi/ir/base/builder.rb', line 15

def set_block(block)
  @current_block = block
end