Class: Gisele::VM::Kernel

Inherits:
Component show all
Includes:
Robustness
Defined in:
lib/gisele/vm/kernel.rb,
lib/gisele/vm/kernel/runner.rb,
lib/gisele/vm/kernel/opcodes.rb

Defined Under Namespace

Modules: Opcodes Classes: Runner

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Component

#connect, #connected!, #connected?, #disconnect, #initialize, #registered, #registered!, #registered?, #unregistered, #vm

Constructor Details

This class inherits a constructor from Gisele::VM::Component

Class Method Details

.bytecodeObject



6
7
8
# File 'lib/gisele/vm/kernel.rb', line 6

def self.bytecode
  @kernelbc ||= Bytecode.parse(Path.dir/'kernel/macros.gvm')
end

Instance Method Details

#progress(puid) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/gisele/vm/kernel.rb', line 35

def progress(puid)
  prog = valid_prog!(puid, :enacter)

  runner(prog) do |k|
    k.run(:progress, [ ])
  end
end

#resume(puid, input) ⇒ Object



25
26
27
28
29
30
31
32
33
# File 'lib/gisele/vm/kernel.rb', line 25

def resume(puid, input)
  prog  = Prog===puid ? puid : fetch(puid)
  prog  = valid_prog!(puid, :world)
  input = valid_input!(input)

  runner(prog) do |k|
    k.run(:resume, [ input ])
  end
end

#start(at, input) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/gisele/vm/kernel.rb', line 15

def start(at, input)
  at    = valid_label!(at)
  input = valid_input!(input)

  runner(nil) do |k|
    stack = k.run(:start, [ input, at ])
    stack.first
  end
end