more booting

This commit is contained in:
Torsten Ruger
2015-05-24 13:53:49 +03:00
parent e64733d72b
commit 3c0022191b
7 changed files with 24 additions and 27 deletions

View File

@ -22,7 +22,7 @@ module Virtual
class_mappings = {} #will later become instance variable
values = [ "Value" , "Integer" , "Kernel" , "Object"].collect {|cl| Virtual.new_word(cl) }
value_classes = values.collect { |cl| @space.create_class(cl) }
value_classes = values.collect { |cl| @space.create_class(cl,nil) }
layouts = { "Word" => [] ,
"List" => [] ,
"Space" => ["classes","objects"],
@ -33,10 +33,11 @@ module Virtual
"Module" => ["name" , "instance_methods", "super_class", "meta_class"]
}
layouts.each do |name , layout|
class_mappings[name] = @space.create_class(Virtual.new_word(name))
class_mappings[name] = @space.create_class(Virtual.new_word(name) , nil)
end
value_classes[1].set_super_class( value_classes[0] ) # #set superclass (value) for integer
value_classes[3].set_super_class( value_classes[0] ) # and object
value_classes[2].set_super_class( value_classes[0] ) # and kernel (TODO is module)
value_classes[3].set_super_class( value_classes[2] ) # and object (TODO hacked to kernel)
class_mappings.each do |name , clazz| # and the rest
clazz.set_super_class(value_classes[3]) # superclasses are object
end
@ -78,7 +79,6 @@ module Virtual
obj = @class_mappings["Object"]
[:index_of , :_get_instance_variable , :_set_instance_variable].each do |f|
obj.add_instance_method Builtin::Object.send(f , nil)
puts "Object add #{f}"
end
obj = @class_mappings["Kernel"]
# create main first, __init__ calls it

View File

@ -20,7 +20,8 @@ module Virtual
end
new_method = CompiledMethodInfo.create_method(class_name, expression.name.to_s , args )
new_method.info.receiver = r
new_method.for_class.add_instance_method new_method
#frame = frame.new_frame
return_type = nil
expression.body.each do |ex|