module Builtin module Kernel module ClassMethods # this is the really really first place the machine starts. # it isn't really a function, ie it is jumped to (not called), exits and may not return # so it is responsible for initial setup (and relocation) def __init__ context function = Virtual::CompiledMethodInfo.create_method("Kernel","__init__" , []) function.info.return_type = Virtual::Integer main = Virtual::Machine.instance.space.get_main me = Virtual::Self.new(Virtual::Reference) code = Virtual::Set.new(Virtual::Self.new(me.type), me) function.info.add_code(code) function.info.add_code Virtual::MethodCall.new(main) return function end def putstring context function = Virtual::CompiledMethodInfo.create_method("Kernel" , "putstring" , [] ) return function ret = Virtual::RegisterMachine.instance.write_stdout(function) function.set_return ret function end def exit context function = Virtual::CompiledMethodInfo.create_method("Kernel","exit" , []) function.info.return_type = Virtual::Integer return function ret = Virtual::RegisterMachine.instance.exit(function) function.set_return ret function end def __send context function = Virtual::CompiledMethodInfo.create_method("Kernel" ,"__send" , [] ) function.info.return_type = Virtual::Integer return function end end extend ClassMethods end end